`
liuruirui1986
  • 浏览: 11967 次
社区版块
存档分类
最新评论

一步一步学JBPM(2)——JPDL流程定义语言 .

    博客分类:
  • JBPM
阅读更多
什么是JPDL
jPDL(JBoss jBPMProcess Definition Language)是构建于jBPM框架上的流程语言之一。在jPDL中提供了任务(tasks)、待处理状态 (waitstates)、计时器(timers)、自动处理(automated actions)…等术语,并通过图型化的流程定义,很直观地描述业务流程。



JPDL其实是一套XML语言,这套语言有特定的节点,每个节点代表不同的流程定义规则。通过XML对流程进行描述,JBPM去解析这套XML语言,然后把得到的信息存储到数据库中。



JPDL常用结点
1. Process-definition(流程定义节点)
   它是所有节点的父节点,是流程定义的根节点,它代表了一个流程定义文件。该节点和许多xml文件一样,可以包 含子节点,可以有自己的属性,其中name属性是必须有的,它标识了流程定义的名称,是流程定义的标志,通过name来操作流程定义。其它节点比如task node event等都可以自由的添加,以让流程定义满足我们的要求。

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

task节点就是任务节点,进入这个节点,业务会继续下去。当task节点下的所有任务执行完成以后,流程才可以走下去。

为什么拿它们两个一起来说呢,因为它们有一定的可比性,state是中断任务,需要有人审批才能通过,task相当于增加一个任务,下面可以有很多的任务,也可以是java代码或者js代码。需要这些执行完成以后才可以继续。这里面的执行完成是一般情况,通过设置task的属性,可以选择任务执行的方式,和继续的条件。

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

联合(join)假设所有来自同一个父母的子令牌联合,当在上使用fork(分支)这个

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

这两个节点是一对成对的节点,有分支必然有联合。

4. Decision(决策)
个decision 用以决定在多个执行路径中哪个才可以被执行。如果你是一个程序员,把它可以理解成 switch case 结构即可,一个 decision能够具有许多离开的 transition。

decision就像是我们编程语言中的switch case一样,是一个选择路径的过程。根据不同的条件,选择任务的流向。

5. Transition(转换)
转换节点是流程中最多的节点,它在设计器中用一条有向线段表示,表示从一个节点到达另一个节点。它的to属性就是标明它的目的节点的。

    上面介绍的就是jpdl的常用节点,当然还有很多其它节点。帮助我们实现更加复杂的功能。




JPDL事件、动作、脚本
jPDL不光有节点,节点只是标明流程的流向的,那么如何控制流行,就需要jpdl的其它三个节点了。

event(事件)
BPM定义了一系列与工作流节点元素相关联的事件,例如,流程实例运行过程中,可

以触发节点进入(node-enter)、节点离开(node-leave)、流程启动(process-start)、流程结束(process-end)、任务创建(task-create)、任务分派(task-assign)、任务启动(task-start)等事件。 在流程定义时,JBPM 的事件均与 action 绑定。事件的触发将导致相应actions 的执行。

这个事件我个人感觉它就像是我们VB中经常用到的键盘事件,鼠标事件一样,其实都是一个动作触发一段代码。你可以自定义这段代码而已。

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

action会继承jbpm自定义的org.jbpm.graph.def.ActionHandler 接口。这样再触发时间的时候,就可以执行这个action动作了。

Script(脚本)
Script里是动作执行的beanshell脚本.

JBPM中使用Script的例子


[html] view plaincopyprint?
01.<event type="node-enter"> 
02.        <script> 
03.            <![CDATA[
04.     System.out.println("Hello " + name);
05.     ]]> 
06.        </script> 
07.    </event> 
   <event type="node-enter">
           <script>
               <![CDATA[
        System.out.println("Hello " + name);
        ]]>
           </script>
       </event>


脚本就相当于在xml中书写java语句。在执行过程中执行java语句。



流程设计器
上面基本上说明了jbpm基本的节点,有了这些节点就可以定义流程执行文件。这些节点都是使用xml定义的。对于开发人员来说,jBoss给我们提供了一个eclipse插件,让我们以图像的方式设计流程定义,在eclipse使用拖拽的方式就可以实现。

下面就是jbpm4.4的流程设计界面:






当然,这个节目只有程序设计人员才能接触到,这样就大大制约了对流程的不断改进,所以现在很多地方已经采取web客户端的方式设计流程,它们提供了良好的设计器,我们这次也要研究这个设计器,准备使用Flex开发设计器界面。期待中。

分享到:
评论

相关推荐

    根据jbpm4的.jpdl.xml流程定义文件,绘制出流程图

    本篇我们将聚焦于Jbpm4中的流程定义文件——jpdl.xml,以及如何根据该文件绘制出对应的流程图。 首先,我们要理解什么是JPDL(Jbpm Process Definition Language)。JPDL是一种基于XML的语言,用于描述Jbpm中的业务...

    jBPM-jPDL学习笔记——流程设计与控制(转载)

    jBPM(Java Business Process Management)是一个开源的工作流和业务流程管理套件,它允许开发者通过定义流程定义语言(jPDL)来设计和控制业务流程。这篇博文详细介绍了如何使用jPDL进行流程设计与控制,同时提供了...

    jBPM-jPDL学习笔记——流程设计与控制

    我们可以使用jPDL语言来定义这个流程,并使用jBPM-jPDL来执行和监控这个流程。 结论 jBPM-jPDL提供了一个灵活的流程设计和控制机制,允许开发者定义、执行和监控业务流程。通过学习jBPM-jPDL,我们可以更好地设计...

    jBPM-JPDL v3.2环境部署——发布到Tomcat + MySQL

    JPDL (jBPM Process Definition Language) 是jBPM使用的流程定义语言。在v3.2版本中,jBPM提供了对Tomcat应用服务器和MySQL数据库的支持。本文将详细介绍如何在Windows 2003环境下,使用SUN JDK1.6U4、Tomcat6.0.14...

    jbpm学习资料,jbpm教程

    本资料主要围绕jbpm的核心组件——jPDL进行讲解,帮助学习者深入理解jbpm的工作原理和应用。 jPDL(jBPM Process Definition Language)是jbpm使用的一种基于XML的语言,用于描述业务流程。它提供了一系列的元素和...

    jbpm开发工作流程管理

    jBPM最大的特色在于其未采用市场上现有的规范如WfMC's XPDL, BPML, ebXML, BPEL4WS等,而是选择了自己定义的一套流程定义语言——JBoss jBPM Process Definition Language (jPdl)。这种语言视一个业务流程为一个UML...

    jbpm4.3 会签的实现

    首先,我们需要了解jbpm的流程定义语言——jpdl(jBPM Process Definition Language)。`buyEquipment.jpdl.xml`就是一个使用jpdl编写的流程定义文件。这个文件中包含了流程的各个步骤、决策点以及如何在这些元素...

    OA第12天_Task后只有一条路的流程——员工请假流程

    接着,"process.jpdl.xml"文件则是JBOSS工作流定义语言(Java Process Definition Language)的XML文件,它是JBoss JBPM(Business Process Management)框架中用于描述工作流的一种格式。在这个文件中,详细定义了...

    纵观jBPM:从jBPM3到jBPM5以及Activiti5.doc

    jBPM3是一个早期版本,提供了基于Eclipse的流程设计器和用于监控流程实例及任务的Web控制台,流程定义语言为jPDL。然而,随着jBPM创始人Tom Baeyens离开JBoss,jBPM5的开发方向发生了转变,它完全放弃了jBPM4的基础...

    JBPM4工作流应用开始指南.rar

    本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上去、使用jBPM 4 Service API控制流程、掌握jBPM流程定义语言、...

    JBPM-----PPT

    - **JPDL**:JBPM的流程定义语言,用于编写流程模型,类似于XML格式。 2. **高级特性:JBPM_(2)_Advance.ppt** - **动态流程**:允许在运行时更改流程,适应变化的业务需求。 - **事件处理**:支持流程中的各种...

    J2EE工作流管理系统jBPM详解

    jBPM的核心特性之一是它的流程定义语言——jPdl。jPdl以UML状态图的形式来描述业务流程,涵盖起始、结束状态以及状态间的转换。这种自定义的语言使得jBPM区别于其他遵循WfMC XPDL、BPML、ebXML或BPEL4WS等规范的工作...

    jBPM详解_工作流管理系统详细文档

    jBPM并没有采用一些现成的流程定义标准,例如WfMC XPDL、BPML、ebXML或BPEL4WS等,而是采用了自己的流程定义语言——jPDL(jBPM Process Definition Language)。jPDL将业务流程视为一个UML状态图,通过定义状态图中...

    JPBM实战经验以及相关参考文档

    JPBM的主要特点包括灵活的流程定义语言(JPDL)、强大的事件处理机制以及与各种持久化层的集成能力。 在安装配置方面,"jBPM-jPDL学习笔记—框架设计简介.doc"和"jBPM-JPDL v3.2环境部署——发布到Tomcat + MySQL....

    两款java工作流引擎BPM领域的流行的20种模式jbpm与ccbpm的对比

    jbpm使用JPDL(Jbpm Process Definition Language)进行流程定义,这是一种基于XML的语言,允许开发者直观地设计和定义复杂的业务流程。此外,jbpm还集成了Maven和Spring框架,方便集成到各种项目环境中。 ccbpm...

Global site tag (gtag.js) - Google Analytics