Activiti工作流(五)连线

流程图

Activiti工作流(五)连线

如图绘制流程图 

连线属性设置

Activiti工作流(五)连线

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,并设置流程变量的值

对应:

Activiti工作流(五)连线

流程会按照指定的连线完成任务。

总结

1、一个活动中可以指定一个或多个SequenceFlow(Start中有一个,End中没有)。

  * 开始活动中有一个SequenceFlow 。

  * 结束活动中没有SequenceFlow 。

  * 其他活动中有1条或多条SequenceFlow

2、如果只有一个,则可以不使用流程变量设置codition的名称;

Activiti工作流(五)连线

如果有多个,则需要使用流程变量设置codition的名称。message表示流程变量的名称,‘不重要’表示流程变量的值,${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。

Activiti工作流(五)连线