package org.jbpm.spring.boot; import java.util.Collection; import org.jbpm.services.api.ProcessService; import org.jbpm.services.api.RuntimeDataService; import org.jbpm.services.api.model.ProcessInstanceDesc; import org.kie.internal.query.QueryContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/processinstance") public class ProcessInstanceController { @Autowired private RuntimeDataService runtimeDataService; @Autowired private ProcessService processService; @RequestMapping(value = "/", method = RequestMethod.GET) public Collection<ProcessInstanceDesc> getProcessInstances() { Collection<ProcessInstanceDesc> processInstances = runtimeDataService.getProcessInstances(new QueryContext(0, 100, "status", true)); return processInstances; } @RequestMapping(value = "/show", method = RequestMethod.GET) public ProcessInstanceDesc getProcessInstance(@RequestParam String id) { long processInstanceId = Long.parseLong(id); ProcessInstanceDesc processInstance = runtimeDataService.getProcessInstanceById(processInstanceId); return processInstance; } @RequestMapping(value = "/abort", method = RequestMethod.POST) public String abortProcessInstance(@RequestParam String id) { processService.abortProcessInstance(Long.parseLong(id)); return "Instance (" + id + ") aborted successfully"; } @RequestMapping(value = "/signal", method = RequestMethod.POST) public String signalProcessInstance(@RequestParam String id, @RequestParam String signal, @RequestParam String data) { processService.signalProcessInstance(Long.parseLong(id), signal, data); return "Signal sent to instance (" + id + ") successfully"; } }