jbpm学习四
来源:互联网 发布:域名分发系统 编辑:程序博客网 时间:2024/05/04 04:31
一.JPDL的学习
JPDL(JBoss JBPM Process Definition Language)是构建于JBPM框架上的流程语言,在实际开发jbpm流程中,就是基于JPDL语言进行描述的。
1.process元素(根节点):
任何一个流程,都必须包括开始节点和结束节点
Process有三个核心属性:
name代表流程名称,用于在系统中显示给用户(我们都是中国人,一般都爱看中文的吧,所以最好存中文)。
key代表流程关键字,用于进行jbpm代码操作(一般是英文),如果在xml描述文件不配置的话,默认就和name的值一样。
version代表流程版本号,key和name相同的流程,版本+1。
<process name="测试流程" key="myprocess" version="1" xmlns="http://jbpm.org/4.4/jpdl">
注:process节点信息存入jbpm4_deployprop表中,pdid是由pdkey + '-' + pdversion组成的(唯一性)。
2.transition节点(连线,流转,转移)
transition代表一个节点流向另一个节点,有以下几点需要说明一下:
(1)一个活动中可以指定一个或者多个transition
(2)开始活动只能有一个transition
(3)结束活动没有transition
(4)其他活动可以有一个或者多个transition
举个例子:
<task name="task1" g="231,97,92,52"> <transition name="abc" to="task2" g="-53,-17"/> <transition to="task3" g="-53,-17"/> </task>上面的xml配置文件是该流程图task1节点部分的配置文件
ExecutionService提供了两种流转方法
(1)signalExecutionById(java.lang.String executionId)
(2)signalExecutionById(java.lang.String executionId, java.lang.String signalName)
第一个方法没有指定signalName,所以使用默认transition,比如上面的xml配置文件,task1下面的task3节点就没有那么,这个就是该transition默认的流向,但是一个活动只允许有
一个不配置名字的transition(这个不用多解释吧,默认值只能有一个)。
通过代码直接结束流程:
processEngine.getExecutionService().endProcessInstance(processInstanceId, ProcessInstance.STATE_ENDED);
3.state节点(等待节点):
state节点是等待条件,环境的变化,由程序自动触发state节点向后流转,
那么问题来了,state节点和task节点有什么区别:
(1)state节点是周围环境发生变化,自动触发流程流转,无需人工进行干预。
(2)task节点需要特定的人进行办理,才能完成。
举个例子:
<?xml version="1.0" encoding="UTF-8"?><process name="demo3_state" xmlns="http://jbpm.org/4.4/jpdl"> <start name="start1" g="247,21,48,48"> <transition name="to 付款" to="付款" g="-47,-17"/> </start> <end name="end1" g="249,288,48,48"/> <task name="付款" g="225,105,92,52"> <transition name="to 付款完成" to="付款完成" g="-71,-17"/> </task> <state name="付款完成" g="228,190,92,52"> <transition name="to end1" to="end1" g="-47,-17"/> </state></process>jpdl配置文件如上所示,流程发布,启动我就不再多说,下面直接看state和task的区别:
<span style="white-space:pre"></span>@Test// 完成付款任务public void demo3() {<span style="white-space:pre"></span>// 1、 获得流程引擎ProcessEngine processEngine = new Configuration().buildProcessEngine();// 2、获得ServiceTaskService taskService = processEngine.getTaskService();// 3、完成任务taskService.completeTask("10002"); //jbpm4_task的DBID}@Test// 付款完成,回调程序public void demo4() {// 1、 获得流程引擎ProcessEngine processEngine = new Configuration().buildProcessEngine();// 2、获得ServiceExecutionService executionService = processEngine.getExecutionService();// 3、向后流转executionService.signalExecutionById("demo3_state.10001"); //jbpm4_execution表ID}先执行demo3,jbpm4_task中就没有流程demo3_state的记录了,只能在jbpm4_execution中查到记录,因为当前节点是state,并不是task,所以task节点就为空。
再接着执行demo4,jbpm4_execution表中关于流程demo3_state的记录也为空(说明state节点也之行结束了)。
- jbpm学习四
- jBPM学习(四)----体验jbpm
- JBPM学习日志(四)
- JBPM学习(四):执行流程实例
- JBPM学习(四):执行流程实例
- JBPM--四
- jBPM-jPDL学习笔记—框架设计简介(四)
- jBPM-jPDL学习笔记—框架设计简介(四)
- jBPM-jPDL学习笔记—框架设计简介(四)
- 学习JBPM
- jbpm学习
- jBPM学习
- Jbpm学习
- jbpm学习
- JBPM案例详解(四)
- JBPM总结四
- JBPM(四)---SSH框架整合JBPM
- [jbpm]jBPM(四): 部署jBPM所用表到数据库_1
- 中断控制器学习 <s3c2440>
- 事件 事件委派
- Head First---单件模式
- OC学习篇之---对象的拷贝
- EntityFrameWork实体映射
- jbpm学习四
- UINavigationController 缺点之一——【sdk缺陷】
- Python之网络爬虫(3)
- 在模式窗口中实现页面跳转 .
- centos7 grub2 引导win7
- 三角形判断
- XMemcached与Spring集成
- properties配置文件的读取和使用
- 总结了Opencv对灰度图直方化的六种方法