`
geutopia
  • 浏览: 1844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

学习jpdl-2

    博客分类:
  • JBPM
阅读更多

开始状态:

<!ELEMENT start-state ( description?, transition+ ) >

<!ATTLIST start-state name  CDATA #REQUIRED

                      swimlane CDATA #IMPLIED >

dtd fragment for start-state

开始状态是一个过程中的唯一状态,所有的过程实例从这里开始,注意在过程实例开始的时刻你能够把变量放在过程当中了。另外重点的概念是你能够有多个从开始状态出发的变迁,这样的话,就需要你指定哪个变迁是你启动过程实例时候需要执行的。

milestone

<!ELEMENT milestone ( description?, action*, transition ) >

<!ATTLIST milestone name  CDATA #REQUIRED>

dtd fragment for a milestone

 

一个 milestone 是一种特殊的状态,它用来处理两个并发事件中的同步的作用。一个 milestone 可以被应用在下面情形:一条执行路径需要等待另外一个执行路径上的事件。如果 milestone 没有到达,接下来的执行就必须在 milestone 处等待,知道另外一个并发路径到达的时候,才可继续执行。如果 milestone 已经到达了(条件具备了),接下来的执行就是通过这个 milestone 状态。关于 milestone 的更多信息和图形请参看工作流模式。一个 milestone 与一或多个 actions (用信号通知 milestones 到达)相关联。那些 actions 能够用默认 ActionHandler org.jbpm.delegation.action.MilestoneReachdActionHandler 在流程中建模。所以 actions (发信号给 jbpm 引擎告诉它一个 milestone 已经到达)能够像下面这样在 processdefition.xml 中调度:

  ...

  <milestone name="theMilestone">

    <transition to="stateAfterMilestone" />

  </milestone>

  ...

  <state name="stateBeforeReachingMilestone" swimlane="initiator">

    <transition to="stateAfterReachingMilestone">

       <action>

          <delegation class="org.jbpm.delegation.action.MilestoneReachedActionHandler">theMilestone</delegation>

      </action>

    </transition>

  </state>

  ...

modelling a milestone in the processdefinition.xml

 

process-state:

<!ELEMENT process-state ( description?, delegation, action*, transition+ ) >

<!ATTLIST process-state name CDATA #REQUIRED>

dtd fragment for a process-state

一个 process-state 符合父过程的 invocation 。父过程执行到一个 procee-state 时候就开始一个子过程的执行。过程残留在 process-state 中用以子过程的持续。当一个子过程完成后,就从一个 process-state 中离开了。

Decision:

<!ELEMENT decision ( description?, delegation, action*, transition+ ) >

<!ATTLIST decision name CDATA #REQUIRED>

dtd fragment for a decision

一个 decision 用以决定在多个执行路径中哪个才可以被执行。如果你是一个程序员,把它可以理解成 if-then=else 结构即可,当然。一个 decision 能够具有许多离开的变迁。

需要注意的是一个 decision 对某个情况建模,在这里工作流引擎根据上下文( =variables )和一些其他外部资源决定哪个路由可以被接受。作为可供选择的(可以替代的做法),你设计从一个状态出发具备多个变迁。在那种情况下, jbpm 客户端必须通过调用以一个选择变迁名字作为一个参数的 endOfState 方法决定哪个变迁被执行。

Fork (分支):

<!ELEMENT fork ( description?, delegation ?, action*, transition+ ) >

<!ATTLIST fork name               CDATA #REQUIRED

               corresponding-join CDATA #IMPLIED>

dtd fragment for a fork

这个比较好理解,定义一般普通的 fork 行为一般是通过 ForkHandler 接口。但是默认行为(当在 fork 中没有 delegetion 时候)是 fork 的每个变迁都将获得一个子 token 。所以仅仅对一些高级外来的并发,你才需要实现 ForkHandler.

一般情况下,一个 fork 会有一个相关的 join 。这个 join 定义个并发的 block 。默认下 fork join 仅支持严格的嵌套,并且默认情况不支持绕过并发 block 边界的变迁。

public interface ForkHandler {

  void fork( ForkContext forkContext ) throws ExecutionException;

}

the ForkHandler interface

 

join

<!ELEMENT join ( description?, delegation?, action*, transition ) >

<!ATTLIST join name               CDATA #REQUIRED

               corresponding-fork CDATA #IMPLIED>

dtd fragment for a join

 

一个 fork joins 用于多条路径执行,用 JoinHandler 接口指定普通的 join 行为。但是默认情况下(没有 delegation )是所有 fork 上的子 token 合并。最后 token 到达 join 将会触发父 token 最后引发 join 上的离开变迁。所以仅仅高级外来的并发你才需要实现 JoinHandler.

约束:一个 join 只能有一个离开变迁。

public interface JoinHandler {

   void join( JoinContext joinContext ) throws ExecutionException;

}

the JoinHandler interface

 

结束状态:

<!ELEMENT end-state EMPTY >

<!ATTLIST end-state name CDATA #REQUIRED>

dtd fragment for end-state

一个过程定义有一个精确的结束状态。当一个过程实例执行到一个结束状态时候,这个过程实例就结束了。

 

变迁( transition ):

<!ELEMENT transition ( action* )>

<!ATTLIST transition name CDATA #IMPLIED

                      to   CDATA #REQUIRED>

dtd fragment for a transition

变迁用来指定节点之间的连接。变迁元素应该放在 node 里面,那么这个变迁就会从这个节点出离开。

 

Action

<!ELEMENT action ( delegation ) >

<!ATTLIST action event-type (process-start|process-end|

                             state-enter|state-leave|state-after-assignment|

                             milestone-enter|milestone-leave|

                             decision-enter|decision-leave|

                             fork-enter|fork-every-leave|

                             join-every-enter|join-leave|

                             transition) #IMPLIED>

dtd fragment for an action

一个 action 是一段 java 代码。在过程执行期间在一些事件基础之上 action 在工作流引擎上执行。

Action 总是被定义成一个过程定义元素( process-definition, state, transition, decision, ... )的子元素。当 action 执行的时候,父元素会在过程执行时候外加一些事件类型来定义精确时刻。可以想象得到,一个 action 的可能事件类型依赖于 action 被包含进去的元素。 事件类型名字( event-type-names )被暗示出是他们应用到的元素(理解有误)。 javadoc 中有事件类型,可以进行查看。

 

public interface ActionHandler {

  void execute( ExecutionContext executionContext );

}

the ActionHandler interface

 

delegation

<!ELEMENT delegation ( #PCDATA ) >

<!ATTLIST delegation class CDATA #REQUIRED>

dtd fragment for a delegation

解释在约束元素和 delegation 类必须实现的接口之间的关联。

四、其他 process archive 文件

当一个 process archive 被部署, processdefinition.xml 将被解析并且把信息存储到 jbpm 数据库中去。所有其他的文件或者被存储在数据库中或者文件系统,与被创建的过程定义相关联。作为一 jbpm api 的客户端你能够通过 ExecutionReadService.getFile( Long processDefinitionId, String fileName ) 访问这些文件。

一个 process archive 和一个过程定义( process definition )之间的区别参看 versioning mechanism

分享到:
评论

相关推荐

    jbpm-jpdl-designer-3.1.3.zip

    2. **Eclipse插件**:jbpm-jpdl-designer通常作为一个Eclipse插件存在,使得开发者能够在熟悉的Eclipse集成开发环境中进行流程设计。 **压缩包内的文件说明:** 1. **release.notes.html**:这是发布说明文件,通常...

    jbpm-jpdl-designer-3.0.13.zip_jbpm_jbpm design_jbpm designer_jbp

    jbpm-jpdl-designer-3.0.13 是一个与jbpm相关的软件包,主要功能是提供jbpm流程定义的图形化设计工具。...通过深入学习和使用jbpm-jpdl-designer,开发人员和业务分析师可以更好地理解和管理复杂的企业级流程。

    jbpm-jpdl-javadoc(jbpl api下载)

    在"jbpm-jpdl-javadoc"中,"javadoc"是Java开发工具包提供的一个工具,用于生成关于Java源代码的API文档。这个压缩包文件"javadoc-jpdl"包含了jbpm中JPDL相关的API文档,这些文档详细解释了JPDL库的各种类、接口、...

    jbpm-jpdl-src.rar

    在jbpm-jpdl-src.rar这个压缩包中,我们可以找到jBPM 3.2.2版本的源代码,这对于学习和理解jBPM的工作原理以及如何自定义流程非常有帮助。 在这个源码包中,"org"目录很可能是项目的核心组件,包含了以下关键部分:...

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

    下面,我们将通过学习笔记,了解jBPM-jPDL的流程设计与控制机制。 流程设计 在jBPM-jPDL中,流程设计是指定义业务流程的结构和行为。流程设计通常包括定义流程的各个节点、 переход和操作。jPDL(Java ...

    jbpm-jpdl 学习笔记

    入门材料 jbpm-jpdl 学习笔记 jbpm-jpdl 学习笔记 jbpm-jpdl 学习笔记

    jBPM-jPDL学习笔记

    在开始jBPM-jPDL的学习之前,首先要搭建一个合适的运行环境。系统平台通常要求Java运行环境(JRE或JDK),因为jBPM是基于Java的。安装包通常包括jBPM的核心库、示例项目以及相关的开发工具。对于部署,可以将jBPM...

    jBPM-jPDL学习笔记—框架设计简介

    jPDL-identity.jar是jBPM的轻量级扩展,实现了基础的用户认证和权限管理功能,适用于需求简单的应用场景。另外,jBPM Console是一个基于JSF技术的Web应用程序,用于监控jPDL平台的执行情况,包括数据库监控、流程...

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

    《jBPM-jPDL学习笔记——流程设计与控制》 在IT行业中,流程管理和自动化是企业提升效率的关键。jBPM(Java Business Process Management)是一个开源的工作流和业务流程管理套件,它允许开发者通过定义流程定义...

    jBPM-jPDL学习笔记.zip

    **jBPM-jPDL学习笔记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,用于在Java环境中执行业务流程。它提供了一个强大的工具集,包括模型、执行和服务,帮助开发者设计、部署和执行复杂...

    jbpm jpdl 帮助文档pdf版

    根据提供的文件信息,我们可以深入探讨jbpm jpdl帮助文档中的关键知识点。该文档主要围绕jBPM(一款开源的工作流引擎)以及其图形化...通过这些内容的学习,可以帮助读者更好地理解和掌握jBPM和jpdl的相关技术细节。

    JBoss_jBPM_jPDL用户开发手册_3.2.3.pdf 中文-(转)zhangym

    **JBoss、jBPM与jPDL:工作流管理的...通过这份开发手册,开发者可以系统地学习并掌握jBPM和jPDL,从而在实际项目中有效地实现业务流程的自动化和管理。这不仅提升了开发效率,也为企业的业务流程优化提供了强大支持。

    JBoss jBPM jPDL用户开发手册1.1

    总之,《JBoss jBPM jPDL用户开发手册1.1》是一份详细的学习指南,涵盖了jBPM和jPDL的使用方法和最佳实践,对于希望深入了解和使用jBPM进行业务流程管理的开发者来说,是一份宝贵的参考资料。通过阅读这本手册,你...

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

    2. **识别节点和转换**:在JPDL文件中,你会找到诸如`&lt;action&gt;`、`&lt;event&gt;`、`&lt;condition&gt;`等节点,它们分别对应流程中的动作、事件和条件。同时,`&lt;transition&gt;`元素用于描述从一个节点到另一个节点的转换路径,...

    JBoss+jBPM+jPDL用户开发手册_3.2.3

    2. **jBPM流程模型**:理解BPMN 2.0符号,学习如何使用jPDL创建流程模型,包括任务、事件、网关和泳道等元素。 3. **流程部署**:了解如何将jPDL流程定义文件部署到JBoss服务器,以及如何在运行时启动和监控流程...

    jBPM jPDL 用户开发手册 - 第8章

    在第8章中,我们将会深入学习如何使用jPDL来创建和管理复杂的业务流程。 1. **任务(Tasks)** 在jPDL中,任务是流程的基本构建块,代表了流程中的一个操作或活动。你可以定义任务的类型、执行者、相关数据以及...

    jBPM jPDL 用户指南 (Version 3.2.3) - 第2章

    **jbPM jPDL 用户指南 (Version 3.2.3) - 第2章** jbPM(Java Business Process Management)是一种开源的工作流管理系统,专为Java开发者设计,它提供了业务流程建模、执行和监控的功能。jPDL(jBPM Process ...

Global site tag (gtag.js) - Google Analytics