JBPM4.4_jBPM4.4的流程定义语言(设计流程)
1. jBPM4.4的流程定义语言(设计流程)
1.1. process(流程)
是.jpdl.xml的根元素,可以指定的属性有:
|
属性名 |
作用说明 |
|
name |
流程定义的名称,用于显示。 |
|
key |
流程定义的key,用于查询。 如未指定,则默认为name的值。 |
|
version |
版本,如果指定,则不能与已有的流程定义的版本重复;如未指定,则此key的流程定义的第1个为版本1,以后的是版本递增(每次加1) |
1.2. Transition(连线、转移、流转)
1, 一个活动中可以指定0个或多个Transition。
a) Start活动中只能有一个Transition。
b) End活动中没有Transition。
c) 其他活动中有1条或多条Transition
2, 如果只有一个,则可以不指定名称(名称是null);如果有多个,则要分别指定唯一的名称。
1.3. 流转控制活动
1.3.1. start(开始活动)
代表流程的开始边界,一个流程有且只能有一个Start活动。开始活动只能指定一个Transition。在流程实例启动后,会自动的使用这个唯一的Transition离开开始活动,到一下个活动。
不能有Transition指向开始活动。
1.3.2. end、end-error、end-cancel(结束活动)
代表流程的结束边界,可以有多个,也可以没有。如果有多个,则到达任一个结束活动,整个流程就都结束了;如果没有,则到达最后那个没有Transition的活动,流程就结束了。
1.3.3. state(状态活动)
功能:等待。
1.3.4. task(任务活动)
分配任务:
1, actor=#{String型的变量}
2, AssignmentHandler,需要在<task>元素中写<assignment-handler class="AssignmentHandlerImpl"/>子元素。
a) 指定的类要实现AssignmentHandler接口
b) 在其中可以使用Assignable.setAssignee(String),分配个人任务。
1.3.5. decision(判断活动)
1,使用expression,如:expr="#{'to state2'}"
2,使用Handler,要实现DecisionHandler接口
3,如果同时配置了expression与Handler,则expression有效,忽略Handler。
1.3.6. fork、join(分支/聚合活动)
这是多个分支并行(同时)执行的,并且所有的分支Execution都到Join活动后才离向后执行。
1.4. 自定义活动(Custom)
1,在<custom>元素中指定class属性为指定的类。
2,这个类要实现ExternalActivityBehaviour接口,其中有两个方法:
1,execute(ActivityExecution),节点的功能代码
2,signal(ActivityExecution, String, Map),在当前节点等待时,外部发信号时的行为
3,在execute()方法中,可以调用以下方法对流程进行控制
1,ActivityExecution.waitForSignal(),在当前节点等待。
2,ActivityExecution.takeDefaultTransition(),使用默认的Transition离开,当前节点中定义的第一个为默认的。
3,ActivityExecution.take(String transitionName),使用指定的Transition离开
4,ActivityExecution.end(),结束流程实例
4,也可以实现ActivityBehaviour接口,只有一个方法execute(ActivityExecution),这样就不能等待,否则signal时会有类转换异常。
1.5. 事件
1, 在根元素中,或在节点元素中,使用<on event="">元素指定事件,其中event属性代表事件的类型。
2, 在<on>中用子元素<event-listener class="EventListenerImpl" />,指定处理的类,要求指定的类要实现EventListener接口
3, 事件类型:
a) <on>元素放在根元素(<process>)中,可以指定event为start或end,表示流程的开始与结束。
b) <on>元素放在节点元素中,可以指定event为start或end,表示节点的进入与离开
c) 在Start节点中只有end事件,在End节点中只有start事件。
d) 在<transition>元素中直接写<event-listener class="">,就是配置事件。(因为在这里只有一个事件,所以不用写on与类型)
e) 在<task>元素中还可以配置assign事件,是在分配任务时触发的。
JBPM4.4_jBPM4.4的流程定义语言(设计流程)的更多相关文章
- (五)Activiti之获取流程定义图片和流程定义删除
一.获取流程定义图片 /** * 通过流程部署ID获取流程图图片 */ @Test public void getImageById()throws Exception{ InputStream in ...
- JBPM表达业务流程(流程定义语言)
业务流程包括三部分: 活动 Activity / 节点 Node (有很多种,不同的类型有不同的功能,必须要有一个Start Activity) 连线 Transition / 转移 (从一个Acti ...
- Activiti流程定义语言
1.流程(process) bpmn文件一个流程的根元素.一个流程就代表一个工作流. 2.顺序流(sequenceFlow) 顺序流是连接两个流程节点的连线,代表一个节点的出口.流程执行完一个节点后, ...
- Sql Server数据库之流程定义变量和流程控制语句
一.局部变量和全局变量 1.声明局部变量 语法:declare @变量名 变量类型 2.给局部变量赋值 语法:set @变量名=值, select @变量名=值 区别:第一种方式用于普 ...
- JBPM4.4_jBPM4.4应用(与Spring集成&自行控制事务等)
1. jBPM4.4应用 1.1. 与Spring集成(jBPM4.4 Developers Guide, Chapter 17. Spring Integration) 1.1.1. 在jbpm.c ...
- Activiti 删除流程定义
package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...
- 工作流学习——Activiti流程定义管理三步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46602419 ***************************************** ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
随机推荐
- linux oracle 查看版本
1.查找 which sqlplus /u01/app/oracle/product/10.2.0/db_1/bin/sqlplus 可以带出 oracle 安装地址 2.登录 sqlplus 输入 ...
- 内存单元,CPU对存储器的读写,三大总线
.存储单元 存储器被分成若干个存储单元,每个存储单元从0开始顺序编号.电子计算机的最小信息单位是bit.8个bit组成一个Byte(虽然现在一个字节可能不是8位,有宽字符出现了,但是一般我们的机器都是 ...
- 实战入侵(突破FCK+安全狗上传)
PS:有点尴尬,二次上传突破FCK,免杀马儿过狗. 刚开始和超霸一起弄,TMDGB.弄到四点多,早上尼玛七点多的又去考试,虽然考试还是睡着了,但是TMDGB感觉日子好充实啊! FCK上传地址如下所示: ...
- hbase中double类型数据做累加
public static Result incr(String tableFullName, String rowKey, String family, String qualifier, long ...
- Java并发(二)多线程的好处
即使编写多线程程序具有挑战性,但它仍在使用中,是因为它可以带来如下的好处: 更好的资源利用 在某些场景下程序的设计会更简单 提升程序的响应性 更好的资源利用 假设一个应用会从本地文件系统中读取和处理文 ...
- Android各版本重要变动记录
本文来自同步博客. Android M:运行时权限 运行时权限属于比较熟悉的话题不深入展开.除了support包可以让应用完成运行时权限,github上也有好多扩展.用得比较多的是Google官方的E ...
- datagrid中reoload提交时如何批量提交表单中的查询条件
看标题描述有点复杂,看下图: 直接将手工添加的一个个字段直接用一句代码完成. $('#dg_sub').datagrid("reload",$('#searchForm').ser ...
- Python中的字符串操作总结(Python3.6.1版本)
Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...
- unarchive模块
unarchive模块 用于解压文件,模块包含如下选项: copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes.若为no,则要求目标主机上压缩包必须存在. creates:指定一个文件名 ...
- Spring - BeanFactory 新旧工厂差异
在将要被加入到spring容器中的service中,添加static静态代码块(加载类时被调用),用于判断spring中新旧bean工厂的加载性质. package com.witwicky.serv ...