博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说 jBPM 流程定义语言(3)—— state 活动 (状态活动)
阅读量:1902 次
发布时间:2019-04-26

本文共 1582 字,大约阅读时间需要 5 分钟。

当需要使业务流程受到某些特定的外部干预处理后再继续进行,而在外部干预之前,流程会处于一个中断等待的状态,这时就使用到 state 活动。当流程运行到 state 活动时,就会自动陷入等待状态(waitting state),也就是说流程引擎在收到外部触发信号之前,会让流程实例在这个 state 活动持续等待。

state 活动除了最基本的 name 属性和 transition 等元素之外,没有其他的属性或元素。

我们设计一个 state 串行序列的流程:

state 串行序列

然后编写代码让这个流程实例运行流转起来:

//发起实例ProcessInstance processInstance = executionService.startProcessInstanceByKey                ("StateSequence");//触发流程走到下一步Execution executionInA = processInstance.findActiveExecutionIn("a");assertNotNull(executionInA);//在 a 节点//发出执行信号processInstance=executionService.signalExecutionById(executionInA.getId());Execution executionInB=processInstance.findActiveExecutionIn("b");assertNotNull(executionInB);//在 b 节点//发出执行信号processInstance=executionService.signalExecutionById(executionInB.getId());Execution executionInC=processInstance.findActiveExecutionIn("c");assertNotNull(executionInC);//在 c 节点

在 state 活动中可以定义多个 transition 元素,我们可以通过信号来传输指定转移路径的名称,这样就可以选择其中的一条 transition 来流转咯。

 选择 state 转移

对应的 XML:

测试代码:

//发起实例ProcessInstance processInstance = executionService.startProcessInstanceByKey        ("StateChoice");Set
activities=processInstance.findActiveActivityNames();//获取流程实例的 IDString executionId = processInstance.findActiveExecutionIn("等待响应").getId();//触发 accept 信号processInstance = executionService.signalExecutionById(executionId, "同意");assertTrue(processInstance.isActive("提交文档"));

如果使用 “拒绝” 作为信号传入 signalExecutionById(),那么流程将会流向 “再试一次吧” 的活动。

转载地址:http://sodcf.baihongyu.com/

你可能感兴趣的文章
使用mybatis操作MySQL中的数据库表3---使用工具类简化代码
查看>>
[需要继续修改]MongoDB的简介
查看>>
ElasticSearch简介
查看>>
Spark的安装配置(本地模式,standalone模式,standalone HA模式,on-yarn模式)
查看>>
敏捷开发(Agile),持续集成(Continuous Integration)简介
查看>>
CI环境搭建----gitlab的安装配置
查看>>
CI环境搭建----Jenkins的安装配置
查看>>
CI环境搭建----Maven的安装以及和Jenkins的集成
查看>>
CI环境搭建----Tomcat的安装配置
查看>>
Spark原理----术语
查看>>
Streaming 流式计算的模式
查看>>
Spark消费kafka数据的两种方式
查看>>
Spark中RDD,Dstream,DataSet,DataFrame简介
查看>>
Spark性能调优
查看>>
MVC简介
查看>>
Java设计模式---代理模式
查看>>
Java设计模式---代理模式(动态代理)
查看>>
zabbix简介
查看>>
zabbix的安装配置
查看>>
ELK简介
查看>>