Activiti学习笔记第十篇:并行网关

1. 流程图

在这里插入图片描述

2. 部署流程定义+启动流程实例

// 部署流程定义,启动流程实例
@Test
public void testParallelGateWay() throws Excepiton {
	// 1 发布流程
	InputStream inputStreamBpmn = this.getClass().getResourceAsStream("paralleProcess.bpmn");
	InputStream inputStreamPng = this.getClass().getResourceAsStream("parallelProcess.png");
	processEngine.getRepositoryService()//
						.createDeployment()//
						.addInputStream("parallelProcess.bpmn", inputStreamBpmn)//
						.addInputStream("parallelProcess.png", inputStramPng)//
						.deploy();
	// 2 启动流程
	ProcessInstance pi = processEngine.getRuntimeService()//
											.startProcessInstanceByKey("parallelProcess");
	System.out.println("pid:"+pi.getId());
}

3. 查询我的个人任务

// 查询我的个人任务
@Test
public void findMyTaskLIst() {
	String userId = "商家";
	List<Task> list = processEngine.getTaskService()//
						.createTaskQuery()//
						.taskAssignee(userId)//指定个人任务查询
						.list();
	for(Task task : list){
		System.out.println("id="+task.getId());
		System.out.println("name="+task.getName());
		System.out.println("assinee="+task.getAssignee());
		System.out.println("assinee="+task.getCreateTime());
		system.out.println("executionId="+task.getExecutionId());
	}
}

4. 完成我的个人任务

// 完成任务
@Test
public void completeTask(){
	String taskId = "2502";
	processEngine.getTaskService()//
					.complete(taskId);//
	System.out.println("完成任务");
}

说明:
1) 一个流程中流程实例只有1个,执行对象有多个
2) 并行网关的功能是基于进入和外出的顺序流的:
  分支(fork): 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
  汇聚(join): 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。
3) 并行网关的进入和外出都是使用相同节点标识
4) 如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。
5) 并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。
6) 并行网关不需要是“平衡的”(比如, 对应并行网关的进入和外出节点数目不一定相等)。如图中标示是合法的:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值