package org.jbpm.spring.web; 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.jbpm.services.api.model.VariableDesc; import org.kie.internal.query.QueryContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("/processinstance") public class ProcessInstanceController { @Autowired private RuntimeDataService runtimeDataService; @Autowired private ProcessService processService; @RequestMapping(value = "/", method = RequestMethod.GET) public String getProcessInstances(ModelMap model) { Collection<ProcessInstanceDesc> processInstances = runtimeDataService.getProcessInstances(new QueryContext(0, 100, "status", true)); model.addAttribute("processInstances", processInstances); return "processInstanceList"; } @RequestMapping(value = "/show", method = RequestMethod.GET) public String getProcessInstance(@RequestParam String id, ModelMap model) { long processInstanceId = Long.parseLong(id); ProcessInstanceDesc processInstance = runtimeDataService.getProcessInstanceById(processInstanceId); Collection<VariableDesc> variables = runtimeDataService.getVariablesCurrentState(processInstanceId); model.addAttribute("processInstance", processInstance); model.addAttribute("variables", variables); return "processInstance"; } @RequestMapping(value = "/abort", method = RequestMethod.POST) public String abortProcessInstance(@RequestParam String id, ModelMap model) { processService.abortProcessInstance(Long.parseLong(id)); model.addAttribute("message", "Instance (" + id + ") aborted successfully"); return "processInstanceStatus"; } @RequestMapping(value = "/signal", method = RequestMethod.POST) public String signalProcessInstance(@RequestParam String id, @RequestParam String signal, @RequestParam String data, ModelMap model) { processService.signalProcessInstance(Long.parseLong(id), signal, data); model.addAttribute("message", "Signal sent to instance (" + id + ") successfully"); return "processInstanceStatus"; } }