Activiti工作流(五)连线
流程图
如图绘制流程图
连线属性设置
部署流程定义+启动流程实例
@Test
public void TestSequenceFlow(){
//获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("连线流程")
.addClasspathResource("diagrams/SequenceProcess.bpmn")
.addClasspathResource("diagrams/SequenceProcess.png")
.deploy();
System.out.println("部署流程:"+deployment.getId()+"||"+deployment.getName());
ProcessInstance processInstance = processEngine.getRuntimeService().
startProcessInstanceByKey("sequenceProcessID");
System.out.println("流程实例ID为:"+processInstance.getId());
}
查询个人任务
@Test
public void queryTask(){
//获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
List<Task> list = processEngine.getTaskService()
.createTaskQuery()
.taskAssignee("张三")
.list();
for (Task task : list) {
System.out.println(task.getId());
System.out.println(task.getName());
System.out.println(task.getExecutionId());
System.out.println(task.getProcessDefinitionId());
System.out.println(task.getProcessInstanceId());
}
}
完成任务
@Test
public void completeTask(){
String taskId = "62503";
//获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Map<String, Object> variables = new HashMap<>();
variables.put("message", "重要");
processEngine.getTaskService()
.complete(taskId, variables);
System.out.println("任务完成");
说明:
1)使用流程变量,设置连线需要的流程变量的名称message,并设置流程变量的值
对应:
流程会按照指定的连线完成任务。
总结
1、一个活动中可以指定一个或多个SequenceFlow(Start中有一个,End中没有)。
* 开始活动中有一个SequenceFlow 。
* 结束活动中没有SequenceFlow 。
* 其他活动中有1条或多条SequenceFlow
2、如果只有一个,则可以不使用流程变量设置codition的名称;
如果有多个,则需要使用流程变量设置codition的名称。message表示流程变量的名称,‘不重要’表示流程变量的值,${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。