JBPM的时间服务
JBPM时间服务的使用主要体现在对timer节点的使用。timer节点有两种使用方式:一种是挂接到node节点下,在进入node节点时触发,在离开node节点时终止;另外一种是挂接到task节点下,在任务创建时触发,默认在任务完成后终止。下面举例说明:
一、挂接到node节点
<state name='catch crooks'>
<timer name='reminder'
duedate='3 business hours'
repeat='10 business minutes'
transition='time-out-transition' >
<action class='the-remainder-action-class-name' />
<transition name='time-out-transition' to='next' />
</timer>
</state>
解释:timer将会在流程令牌进入节点catch crooks时触发,延迟3 business hours开始执行动作,每10 business minutes重复执行一次,直到令牌离开catch crooks节点。
对time节点来说 name、repeat、transition都是可选属性。对一个流程定义来说,每一个time节点的name必须唯一,如果你不定义name属性,引擎会默认把node节点的name赋给timer。在上面这个例子里,如果你不定义timer节点的name,则它的name就会是catch crooks。说说repeat属性,如果你不定义它,则timer就会只执行一次动作不会重复执行。transition属性,如果定义了这个属性,流程令牌会在timer执行动作完毕后,顺着这个路径离开node节点。所以在上面这个例子里,尽管定义了repeat属性,action还是会只执行一次。
action节点,可选,即timer节点在时间到时执行的动作,可以是任意action类型,包括script。注意与时间有关的两种action类型:create-timer 和 cancel-timer。其实一个timer节点在被引擎解释时就是被分解为create-timer 和 cancel-timer两个action,create-timer挂接到node-enter事件中,cancel-timer挂接到node-leave事件中。action节点最多只可以挂一个。
说说整个过程:
1、令牌进入节点catch crooks
2、timer被触发(实际这时是在执行create-timer动作)
3、3 business hours后 timer 事件触发
4、定义的action被执行
5、令牌顺着time-out-transition路径离开catch crooks节点
6、cancel-timer动作被执行即timer终止(没有给repeat的机会)
二、挂接到task节点
<task-node name="Evaluate web order">
<task swimlane="salesman">
<timer duedate="20 seconds" repeat="10 seconds" cancel-event='task-start'>
<action class="org.jbpm.websale.RemindActor">
<swimlaneName>salesman</swimlaneName>
</action>
</timer>
</task>
<transition name="OK" to="salefork" />
<transition name="More info needed" to="Fix web order data" />
</task-node>
与挂接到node 的区别是:这里可以定义一个属性cancel-event,可以指定那些事件可以终止timer的执行,默认是task-end。可以指定多个事件,以','分割,任一事件触发timer即终止。
可以看到jbpm对任务实例和节点执行时的时间服务还是支持的很好,可以做出很多的扩展,但是它没有对整个流程实例本身提供更多的服务,比如说定时的流程启动和整个流程的时间控制等等。以及对精确时间点的支持还不够。
http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)
分享到:
相关推荐
8. **集成能力**:jbpm能够与其他Java应用程序、服务和数据库无缝集成,提供了丰富的API和工具,便于开发人员将工作流集成到现有系统中。 9. **监控与调试**:jbpm提供了图形化的监控工具,允许管理员查看流程实例...
- **配置jbpm服务**:通过jbpm提供的配置文件(如jbpm.conf),设置数据库连接、工作内存大小等参数。 - **启动服务**:运行jbpm的启动脚本,如jbpm-server.sh(Unix/Linux)或jbpm-server.bat(Windows)。 3. *...
5. **事件处理**:jbpm 4.4引入了对事件处理的支持,如信号事件和时间事件,这允许流程在特定条件下或在指定时间触发某些动作。 6. **任务服务**:jbpm提供了任务服务,允许用户管理任务分配、优先级设置、任务状态...
- **JBPM4_HIST_ACTINST**:历史活动实例,记录每个活动的开始和结束时间。 - **JBPM4_HIST_DETAIL**:历史详细信息,如变量变更、事件触发等。 - **JBPM4_HIST_PROCINST**:历史过程实例,保存流程实例的完整...
13. **org.jbpm.pvm.internal.job**: 包含对job、message和timer的实现,提供定时器服务,允许在特定时间或条件触发流程操作。 14. **org.jbpm.pvm.internal.jobexecutor**: 提供任务执行器,包括`...
用户可以查看流程实例的状态、进度,以及各个任务的处理时间等关键指标,从而分析流程的运行情况。 6. **集成与扩展**: jbpm4web作为演示项目,展示了如何将JBPM4与Web应用集成。实际开发中,它还可以与数据库、...
描述中提到,这个例子可以直接在Myeclipse6.0中运行,这表明它包含了一个完整的jbpm项目结构,可能包括了流程定义文件、Java服务类、测试用例以及其他必要的配置文件。在Myeclipse中,开发者可以方便地编辑、调试和...
此外,还需要创建一个表来存储业务数据,例如请假申请表(ask_for_leave),包括申请人、申请时间、假期起止时间、审批人、审批状态等字段。 jbpm的事务管理是通过JOTM(Java Open Transaction Manager)实现的,...
4. **模拟业务流程**:允许你在不同时间和变量条件下模拟流程,以便进行优化测试。 5. **表单模型器**:无需编程或模板标记技能,即可设计表单,以捕获和显示流程任务执行中的信息。 6. **数据模型器**:新的作者...
BPM 是一种管理既定工作的流程,通过服务编排,统一调控各个业务流程,以确保在正确的时间被正确的人执行,达到优化整体业务过程的目的。BPM 通过建模,自动化管理和优化流程,打破跨部门系统业务过程依赖,提高业务...
在JBPM中,我们可能需要处理流程实例的启动时间、结束时间等各种时间戳,这时`SimpleDateFormat`就显得尤为重要。通过定义特定的日期格式,我们可以将日期转换为易于读取的字符串,或者将字符串解析回日期对象,以便...
jbpm的事件处理机制允许在特定条件下触发行为,手册将阐述如何设置和使用这些事件,如信号事件、错误事件和时间事件。此外,还会涉及监听器和回调函数的配置,以便在流程运行时进行自定义操作。 jBPM4_3用户指南: ...
5. **Tomcat的准备**:将Tomcat 6.0以上版本打包并放入指定目录,目的是避免自动下载,节省时间。在build.xml文件中,需根据实际Tomcat版本调整属性值。 6. **数据库设置**:默认使用HSQLDB,但可以修改为MySQL或...
JBPM不仅包含了工作流引擎,还包括任务服务、规则服务、事件服务等组件,形成了一套完整的流程管理框架。 二、JBPM核心概念 1. 工作流模型:使用BPMN 2.0语言定义流程,包括开始事件、结束事件、任务、网关、事件等...
3. **服务API**:jbpm-services-api-7.3.0.Final.jar提供了jBPM服务的API,允许开发者与jBPM引擎进行交互,如启动流程实例、查询流程状态、干预任务处理等。 4. **审计与日志**:jbpm-audit-7.3.0.Final.jar和jbpm-...
这一步可能需要较长时间,因为Ant会自动下载并安装Eclipse、JBoss等依赖项。若安装过程中出现问题,可能是网络连接不稳定导致下载中断。此时,你可以删除未完整下载的文件,或者重新解压缩并尝试。 **三、启动jbpm ...
5. **事件处理(Event Handling)**:jbpm 5.4支持事件驱动的流程,允许在流程中定义事件监听器,如时间触发器、信号事件等。 6. **持久化(Persistence)**:jbpm使用JPA(Java Persistence API)进行持久化,确保...
用于存储代理类信息,允许将流程中的某些任务委托给其他人或服务来执行。 #### 1.7 JBPM_TASK 此表记录流程中的任务实例,包括任务的ID、描述、创建时间、结束时间和关联的参与者。 #### 1.8 JBPM_TASKCONTROLLER ...
10. **持续集成与版本控制**:jbpm-4.4支持版本控制,这意味着流程模型可以随着时间的推移进行迭代和改进,而且可以在不同的开发环境中保持一致。 以上是对jbpm-4.4部分功能和概念的概述。虽然具体的“jbpm-4.4 ...