//流程图的画法:鼠标放图形中间,出现大黑点时候,拖到下一个图形处,即可连线。部门审批,总经理审批,双击中间输入文字即可。
这个流程中的用户是写死的。后面会设置动态用户。
import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/activiti") public class ActivitiController { @Autowired private RepositoryService repositoryService; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @RequestMapping("hello_world") public void helloWorld() { //根据bpmn文件部署流程 Deployment deploy = repositoryService.createDeployment() .addClasspathResource("processes/leave.bpmn") .deploy(); //获取流程定义 processes/leave.bpmn ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult(); //启动流程定义,返回流程实例 ProcessInstance pi = runtimeService.startProcessInstanceById(processDefinition.getId()); String processId = pi.getId(); System.out.println("流程创建成功,当前流程实例ID:"+processId); Task task=taskService.createTaskQuery().processInstanceId(processId).singleResult(); System.out.println("执行前,任务名称:"+task.getName()); taskService.complete(task.getId()); task = taskService.createTaskQuery().processInstanceId(processId).singleResult(); System.out.println("task为null,任务执行完毕:"+task); } }
启动项目 访问:http://loaclhost:8080/acticiti/hello_world
注意:bpmn文件的路径不要错了。