Activiti相关技术学习记录:
Activiti
SpringSource的首席技术官Adrian Coyler说道:”这是一个对Spring开发人员和Java社区总体的发展非常令人兴奋的事情,长期以来一直需要一个Apache许可的流程引擎,这对许多应用系统非常实用的需求。我们认为,Activiti作为新的应用领域扩展到的Java和开源的发展,特别是在云架构上”。
代码部分
java代码:
public void sayHelloToLeave(){
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration().buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
String bpmnFileName = "act/sayHelloToLeave.bpmn";
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
deploymentBuilder.addInputStream("sayHelloToLeave.bpmn",this.getClass().getClassLoader().getResourceAsStream(bpmnFileName)).deploy();
/*Deployment deployment = deploymentBuilder.addClasspathResource("sayHelloToLeave").deploy();*/
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult();
assertEquals("sayHelloToLeave", processDefinition.getKey());
RuntimeService runtimeService = processEngine.getRuntimeService();
Map<String,Object> variables = new HashMap<String, Object>();
variables.put("applyUser","employee");
variables.put("days","3");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("sayHelloToLeave",variables);
assertNotNull(processInstance);
System.out.print("pid" + processInstance.getId() + "pid" + processInstance.getProcessDefinitionId());
TaskService taskService = processEngine.getTaskService();
Task taskOfDeptLeader = taskService.createTaskQuery().taskCandidateGroup("deptLeader").singleResult();
assertNotNull(taskOfDeptLeader);
assertEquals("审批", taskOfDeptLeader.getName());
taskService.claim(taskOfDeptLeader.getId(),"leaderUser");
variables = new HashMap<String, Object>();
variables.put("approved",true);
taskService.complete(taskOfDeptLeader.getId(),variables);
taskOfDeptLeader = taskService.createTaskQuery().taskCandidateGroup("deptLeader").singleResult();
assertNotNull(taskOfDeptLeader);
HistoryService historyService = processEngine.getHistoryService();
long count = historyService.createHistoricActivityInstanceQuery().finished().count();
assertEquals(1,count);
}
流程图: