package org.jbpm.spring.web;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.jbpm.services.api.DefinitionService;
import org.jbpm.services.api.ProcessService;
import org.jbpm.services.api.RuntimeDataService;
import org.jbpm.services.api.model.ProcessDefinition;
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("/processdef")
public class ProcessDefController {
@Autowired
private RuntimeDataService runtimeDataService;
@Autowired
private ProcessService processService;
@Autowired
private DefinitionService definitionService;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getProcessDef(ModelMap model) {
Collection<ProcessDefinition> processDefinitions = runtimeDataService.getProcesses(new QueryContext(0, 100));
model.addAttribute("processDefinitions", processDefinitions);
return "processDefList";
}
@RequestMapping(value = "/show", method = RequestMethod.GET)
public String getProcessDefinition(@RequestParam String deployment, @RequestParam String id, ModelMap model) {
ProcessDefinition definition = runtimeDataService.getProcessesByDeploymentIdProcessId(deployment, id);
model.addAttribute("processDefinition", definition);
return "processDef";
}
@RequestMapping(value = "/new", method = RequestMethod.POST)
public String newProcessInstance(@RequestParam String deploymentId, @RequestParam String processId,
@RequestParam Map<String,String> allRequestParams, ModelMap model) {
long processInstanceId = processService.startProcess(deploymentId, processId, new HashMap<String, Object>(allRequestParams));
model.addAttribute("processInstanceId", processInstanceId);
return "newProcessInstance";
}
}