`
wangyisong
  • 浏览: 238121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JBPM基于Spring系统工作流平台整合3------JBPM(原创)

阅读更多

JBPM基于Spring系统工作流平台整合3------JBPM

 

声明:该文系作者原创,如您用于商业用途或者论文发表,请您一定要通知作者本人同意方可引用。

基本概念

令牌token表示了一个执行的路径,它是运行时产生的。令牌代表一个流程执行的路径,它维护着流程定义中各个结点的指针,同时记录了流程当前执行的位置。

        jBpm采用Token来表示当前实例运行的位置,也利用token在流程各个点之间的转移来表示流程的推进。JBpm没有节点实例NodeInstance这个概念。利用TokenTaskInstanceJBpm足以持久化足够的信息,能够让流程实例迅速定位到当前运行的状态。

节点node表示流程中的一个节点1.实现某个指定行为,在JBPM中就是执行一段指定的Java代码;2.转递、维持流程的延续,直至达到最终结点。

转移transition关联两个节点,用于表示节点的走向。当一个Node中存在有多个同名的transition的时候,第一个transition将会被选中。

发信号signal让一个token执行下一步。当token进入到一个node时,node会被执行,并产生一些事件,比如进入、离开节点等,这也是执行业务逻辑的地方。事件由action来表示。

任务Task任务作为流程定义中的一部分,定义了如何创建任务实例(Task instances)以及任务分配。任务可以在任务结点(Task-Node)和流程定义(process-definition)两个地方定义。在整个的流程定义中,任务名必须是唯一的。可以给任务设定优先级,任务实例可以在之后的运行中改变优先级。

任务实例Task Instance一个任务实例对象可以分配给指定操作者处理,完成后,触发流程继续下行。任务实例生命周期:生成实例-->开始处理-->任务结束。任务实例记录着任务创建的时间、结束时间,这些信息可以通过TaskInstance对象中的getter方法获取。

 节点定义

1node(自动节点)

这种节点和State相反,也称自动节点。当业务程序实例执行到这个节点不会停止执行。而是会继续往下执行。如果该节点存在多个离开转向。那么,就会执行其中的第一个离开转向,在Node状态中,不需要外部参与者的参与,业务流程的这个部分是自动的、即时完成的。

2state(状态)
    State
节点也叫手工节点,进入到这种节点,整个流程的执行就会中断。直到系统外参与者发起继续执行的命令,即调用signalend方法,业务程序实例的执行才能够继续下去。
    3
task-node (任务节点) 

其性质和node节点一样,在没有task的时候,也都是自动执行,不等待。task-node被归类为一个等待节点,是指在task-node中的task列表中的task没有全部执行完之前,它会一直等待。Task可以在task-node节点下定义,也可以在process-definition节点下。

<task-node name='a'>
<task name='laundry' />
<task name='dishes' />
<task name='change nappy' />
<transition to='b' />
</task-node>
    a)
这里没有定义signal属性的值,这就表明当节点中的三个任务都完成后,流程才进入后面的节点
    b)
<task-node name='a' signal='unsynchronized'>表明token不会在本节点停留,而是直接到后面的节点
    c)
<task-node name='a' signal='never'>表明三个任务都完成后,token仍然不会指向后面的节点;需要自己手动调用processInstance.signal()才会驱动流程到下面的节点
    d)
<task-node name='a' signal='first'>表明只要有一个任务完成后,token就指向后面的节点
    e)
<task-node name='a' signal='first-wait'>表明当第一个任务实例完成时继续执行;当在a节点入口处没有任务创建时,tokena任务节点处等待,直到任务被创建或完成。
    f)
<task-node name='a' signal='last'>时,这是默认值,和不设置signal属性的情况相同。
    g)
<task-node name='a' signal='last-wait'>时,当最后一个任务实例完成时候继续执行下去。 a这个任务节点没有任务被建立时,任务节点等待直到任务被建立。
    4
fork(分支

一个fork把一个执行路线分割成多个执行路线. 默认分支的行为是为每个离开分支转换建立一个子令牌,在令牌要到达的分支之间建立一个父母-子女关系

一般来说,forkjoin需要一起配对使用,一个fork对应一个join,否则流程执行会有问题
    5
join(联合)

在上使用fork(分支)这个情形就出现了并且所有令牌分支建立,并且到达同一个联合(join)。当全部令牌都进入联合的时候联合就结束了, 然后联合将检查父母-子女,当所有兄弟令牌到达联合(join),父母令牌将传播(唯一的)离开转换,当还有兄弟令牌活动时,联合的行为将作为等待状态。

6decision(决策
   
一个decision用以决定在多个执行路径中哪个才可以被执行。一个decision能够具有许多离开的transitionHandler所指定的DecisionHandler的实现类里的decide方法返回一个字符串,表示要执行哪个transition
    7
Superstate

是用来对node进行分组的. 而且可以被嵌套使用, 一般在复杂的流程设计中使用(比如流程中的node有一定的层次关系), 其好处能对进入Superstate中的任意的一个node进行统一的控制(通过独有的两个事件superstate-enter and superstate-leave)

8transition(转换)
   
转换用来指定节点之间的连接。transition元素放在node里面,那么这个transition就会从这个节点出离开。
    9
event(事件)
    JBPM
定义了一系列与工作流节点元素相关联的事件,流程实例运行过程中,可以触发节点进入(node-enter)、节点离开 node-leave)、流程启动(process-start)、流程结束(process-end)、任务创建(task-create)、 任务分派(task-assign)、任务启动(task-start)等事件。

10action(动作)
   
一个action是一段java代码。在流程执行期间在一些事件之上定义,这样会在相关事件触发时自动在工作流引擎上执行。

11script(脚本)
    Script
里是动作执行的beanshell脚本. 更多有关beanshell的的信息请参考Beanshell的网站:http://www.beanshell.org

12expression(表达式)
    Expression
里可书写Beanshell脚本
    13
variable(变量)

一个是变量是一种key-value对。它与过程实例(一次过程执行)相关联。

 14handler(句柄) 
    Handler
是在定义一个decision时需要为其定义一个DecisionHandler时才用。
    15timer(定时器)
   
定时器以设置开始时间duedate和频率repeat。

分享到:
评论

相关推荐

    JBPM基于Spring系统工作流平台整合(一)

    1-版本以及系统配置jbpm版本3.2.3http://www.jboss.com/products/jbpm下载后的文件是jbpm-jpdl-suite-3.2.3.zip,解压缩,可以直接通过JBOSS方式启动。http://localhost:XXXX/jbpm-console。jbpm-jpdl-3.2.3下各...

    jbpm工作流整合

    jbpm工作流整合是一个关键的主题,它涉及到企业级业务流程管理(BPM)系统的实施与集成。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和框架,用于设计、执行、监控和优化业务流程。这个压缩包可能包含...

    基于JBPM工作流的OA办公系统

    **基于JBPM工作流的OA办公系统** JBPM(Java Business Process Management)是Talend公司推出的一款开源的工作流管理系统,主要用于实现业务流程自动化。它提供了全面的工作流解决方案,包括流程设计、执行、监控和...

    jbpm-2.0-beta1.zip_java 工作流引擎_jbpm_jbpm-demo_工作流_工作流引擎

    jbpm-2.0-beta1是该系统的早期版本,其核心功能包括工作流引擎、流程建模工具以及一系列示例项目,如jbpm-demo,用于帮助用户更好地理解和应用jbpm。 工作流引擎是jbpm的核心组件,它负责解析和执行工作流定义...

    jbpm4.3-spring2.5整合

    jbpm4.3-spring2.5整合是一个关键的话题,涉及到企业级工作流管理系统Jbpm与Spring框架的集成。Jbpm是一个开源的工作流程管理(BPM)和业务规则管理系统,它允许开发者设计、执行、管理和监控业务流程。而Spring是...

    JBPM4.4+spring+ext整合

    JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程自动化。版本4.4是JBPM的一个重要里程碑,它提供了强大的工作流设计、执行和监控能力。Spring框架则是Java开发中的核心...

    JBPM4与Spring整合例子代码

    将JBPM4与Spring进行整合,可以充分利用Spring的灵活性和JBPM4的流程管理能力,构建高效且可扩展的OA(Office Automation)工作流系统。 在"风中叶老师讲的JBPM4与Spring整合例子代码"中,我们可以了解到如何将这两...

    struts+hibernate+spring+jbpm智能工作流系统

    Struts、Hibernate、Spring 和 jBPM 是四个在企业级应用开发中广泛使用的开源框架,它们结合在一起可以构建出高效且灵活的智能工作流系统。下面将分别介绍这些技术及其在工作流系统中的作用。 **Struts** Struts 是...

    基于struts+spring+hibernate+jbpm的工作流系统

    基于Struts、Spring和Hibernate的集成框架SSH,加上流程管理工具jbpm,构建出的工作流系统是一种高效、灵活的企业级应用解决方案。这种系统主要用于实现业务流程自动化,提升企业的运营效率。 **Struts**:Struts是...

Global site tag (gtag.js) - Google Analytics