Activiti工作流框架学习五:排他网关

前面提到的流程都是一条主线执行下去的,而在实际情况下一个流程出现分支是常见的情况,如图
这里写图片描述
下面就来介绍Activiti框架解决这种分支问题的方法

排他网关(ExclusiveGateway)

这里写图片描述
如图,我们可以选中分支,然后在Condition中写入该分支条件,表达式需要按照一定规范

示例代码

/**
 * 部署流程定义
 */
@Test
public void test1() {
    DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();
    deploymentBuilder.addClasspathResource("com/zyj/activiti/gateway/qjlc.bpmn");
    deploymentBuilder.addClasspathResource("com/zyj/activiti/gateway/qjlc.png");
    deploymentBuilder.deploy();
}
/**
 * 启动流程实例时设置流程变量
 */
@Test
public void test2() {
    String processDefinitionKey = "qjlc";// 流程定义key
    ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
    System.out.println(pi.getId());
}
/**
 * 办理任务时设置流程变量
 */
@Test
public void test3() {
    String taskId = "2405";//任务id
    Map<String, Object> variables = new HashMap<>();
    //设计流程时设置的第一个分支条件是qjts<3,第二个分支条件是qjts>=3
    variables.put("qjts", 1);//执行这行则会往分支1走
    //variables.put("qjts", 7);//执行这行则会往分支2走
    processEngine.getTaskService().complete(taskId, variables);
}

注意:在设置分支条件时,如果总条件不为1,即第一个分支条件为qjts<3,第二个分支条件为qjts>3,则当设置的qjts为3时,分支条件都不匹配,框架会自动选择第一个分支(id)执行

概念辨析

流程实例 act_hi_procinst 与执行对象 act_ru_execution

1.如果是单例流程,则流程实例ID与执行对象ID一致
2.如果是分支流程,则流程实例ID与执行对象ID的关系为一对多

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值