jBPM学习笔记

来源:互联网 发布:安庆网络广播电视台 编辑:程序博客网 时间:2024/05/13 13:24

最近通过学习JBPM4了解了JBPM的功能和设计理念,下面用笔记

概述:
jBPM4是一套提供了包括流程引擎、数据库脚本、web流程定义工具、eclipse流程定义工具以及流程操作API的工作流产品。
架构和设计理念:
jBPM4通过实现了PVM(流程引擎)的概念,使得用户可以用自定义流程语言运行在jbpm上,目前支持jpdl、bpel以及seamflow。

jBPM4的结构特点:

  • 嵌入式流程引擎
  • 可插拔的体系架构:采用模块化的架构设计,采用IOC的设计理念。各模块都可以很方便地解耦以及替换实现方式,例如持久化、事务处理、身份认证、日志服务等。
  • 易扩展的流程语言
  • jbpm仍基于uml acitvity diagram的概念
  • 提供了可定制的Event-Listener观察者模式来处理事务触发。
  • 提供了灵活的EL条件表达式机制,辅助条件解析、简单业务逻辑脚本处理。
  • 可扩展的task及任务分配机制。

jbpm的execution机制
一个流程实例在运行过程中,运动到的当前活动指针叫execution,并发时可以有多个execution


jBPM4的jpdl活动定义元素
1、只能有一个start元素,可以有多个end元素,设置end的属性ends="execution"可以设置当运行到该end活动时,其他仍活跃的并发活动也结束。设置end的state属性(string类型),可以通过获取processInstance.getState获得结束状态,另外还有end-cancel和end-error活动。
2、state类型活动,运行到该类型活动时,需要执行executionService.signalExecutionById(xxx)才能让流程继续往下跑。
3、使用decision和不使用decision都可以流出多条分支,区别在于:
如果decision后的分支没有一个得到满足,则流程实例无法运行下去,抛出异常。
如果没有使用decision,即使state后没有一个条件的分支被满足,也默认走第一条分支。
跟fork活动的区别:fork活动后可以同时运行多条分支,但使用decision只能流程一条。
4、join活动通过multiplicity设置流程多少条分支后触发汇聚活动。要动态设置只能通过赋值流程便利方式设置。
5、task活动:通过设置task活动的assignee属性设置活动的执行人(可以是用户或用户组)。也可以通过candidate-groups和candidate-users设置候选用户。但设置的用户和用户组必须通过identityService注册。
通过assignment-handler可以设置动态获取执行人。
6、流程变量有流程级别、活动级别以及event-listener级别的,活动和eventlistener级别的在流程实例是看不到的。
7、同步异步执行机制:默认方式是工作流引擎会在客户端发起的线程中同步执行流程的所有工作,直到陷入等待状态或流程结束状态。可以通过活动的continue属性(sync|async|exclusive)设置是否异步执行。流程一旦进入异步执行方式,一个异步消息(通过job机制发送消息)会被作为当前事务的一部分发送出去,然后当前事务会立即自动提交。
exclusive独占性异步执行方式:为每一个异步消息启动一个新的事务,以确保同一个流程实例中的每个“异步job”都是绝对排他的、非同时执行的。

0 0
原创粉丝点击