1概述
一个流程定义是对一个业务流程的正式说明,以及它是基于有向图的。该图是结点(node)与流向(transition)的组合。图中每一个结点都是一个特殊的类型,结果的类型决定了该结点的运行时的行为。一个流程定义有且仅有一个开始状态。
一个令牌(token)是执行的轨迹。令牌是一个运行时的概念,其维护着速个图中指向结点的指针。
一个流程实例(process instance),是流程定义的一次执行过程。当流程实例被创建 ,一个令牌被创建,该令牌叫做这个流程实例的根令牌并处于这个流程实例的开始状态。
信号(signal)命令令牌继续执行,当接收到一个未命名的信号时,一个令牌将通过默认的“离开流向”离开当前结点,如果该信号有明确命名,令牌将通过指定的流向离开该结点。给流程实例发送命令是由令牌来代理。
当令牌进入结点后,结点会被执和,结点本身负页让流程继续,而让流程继续就是让令牌离开当前结点,每个结点类型可以实现不同的动作来让流程继续。一个结点如果不继续执行则可以看作是一个状态。
动作(Action)是在执行流程的时候事件触发执行的Java代码,图是软件需求的重要表达方式,但是图只是一个软件的视图,它隐藏了许多技术的细节。动作就是把技术细节隐藏在图以外的一种 机制。动作可以装饰图。主要的事件有:进入一个结点,离开一个结点,开始一个流向等。
2流程图
流程定义的基本设施是由结点及流向组成的图。那些信息是由一个叫processdefinition.xml的XML文件来定义的,每个结点有自已的类型,如状态、选择、分支、合并。每个结点有自已的流向集,每个流向有其唯一的名称。如,下面一幅图是一个JBAY拍卖流程的流程图:
下面是其对应的processdefinition.xml
代码
- <process-definition>
-
- <start-state>
- <transition to="auction" />
- </start-state>
-
- <state name="auction">
- <transition name="auction ends" to="salefork" />
- <transition name="cancel" to="end" />
- </state>
-
- <fork name="salefork">
- <transition name="shipping" to="send item" />
- <transition name="billing" to="receive money" />
- </fork>
-
- <state name="send item">
- <transition to="receive item" />
- </state>
-
- <state name="receive item">
- <transition to="salejoin" />
- </state>
-
- <state name="receive money">
- <transition to="send money" />
- </state>
-
- <state name="send money">
- <transition to="salejoin" />
- </state>
-
- <join name="salejoin">
- <transition to="end" />
- </join>
-
- <end-state name="end" />
-
- </process-definition>
<script type="text" />render_code();</script>
3结点
流和图由结点及流向组成,更多的图及执行模型,见第四章,面向图形编程。
结点有类型,结点的类型决定了在运行时,执行进入到一个结点时发生的事情。JBPM有一系列的预置结点类型供我们使用。同时,你可以自已定义自已的结点类型。
3.1结点的责任
结点有两个主要的责任,一,可以执行Java代码,通常这些Java代码与该结点的功能有点,如创建一个任务实例,发送一个通知,更新数据库,二,结点负责传播流程,即使流程可继续执行,概括地说,结点在传播流程时有下面一些选项:
* 1 不传播流程,这种情况下该结点表现为一个等待状态。
* 2 执行其中一个流向,流开当前结点。也就是说令牌在进入该结点的时候被程序要求执行一个流向流开:executionContext.leaveNode(String)。该结点表现为自动结点,它可以执行一些自定义逻辑并且继续流程而不需要等待。
*3 创建新的执行轨迹,结点可以决定创建新的令牌。每一个新令牌代表一个新的执行轨迹且可以在结点的流向中加载。一个好的示例就是分支结点。
*4 执行轨迹的结束点。结点可以决定结束一个执行轨迹。意味着令牌被终止、执行轨迹完成。
*5 通常,结点可以改变流程的整个运行时结构,运行时结构是指包括一系列的品树形分布的令牌。每个令牌代表一条执行轨迹,结点创建或结束令牌,通过流向把令牌放到一个结点
JBPM包括 -- 像所有的工作流和BPM引擎一样-- 一系列的预置的结点类型,有文档描述
它们的配置和行为。但是JBPM和面向图形编程基金会最难得的一点是我们对开发者开放模型,开发者可以自定义结点行为并易于在流程中使用。
传统的工作流和业务流程管理系统很相像的时,他们通常提供合适的结点集合(称为流程语言),他们的流程语言是封闭的,并且执行模型是隐藏在运行环境之后。查找工作流模式结果表明,光有流程语言是不足够的。我们选择一种简单的模型并允许开发者写自已的结点类型。JPDL流程语言是开放的。
分享到:
相关推荐
JBPM4 PVM的流程定义模型与过程调度
4引擎内核所关注的四个主要问题 4.1模型与定义对象 4.2调度机制与算法 4.3执行机制与状态 4.4实例对象与执行环境 5jbpm,“精简”的开源流程引擎 6jBpm流程模型与定义对象 6.1首先解决如何形式化描述一个...
流程定义jBPM流程模型定义需要用eclipse插件,必须用eclipse,不能用myeclipse插件,否则流程设计器无法使用。把\jbpm-jpdl-3.2.3\designer\designer\jbpm-gpd-feature\eclipse目录下的两个文件夹(不包括links...
对JBPM开源工作流的研究,主要对JBPM的内部构造进行了解,包括流程驱动机制即TOKEN机制、事件模型、数据库结构以及表之间的关系。 对JBPM工作流进行二次开发,主要包括对JBPM功能的扩展、流程定义工具、流程...
jBPM 即java Business Process Management,是基于java的业务流程管理系统,它是一组J2SE组件,可以作为J2EE应用集群部署。jBPM是公开源代码项目。jBPM是市面上相当流行的一款开源工作流引擎,引擎底层基于Active ...
JBPM 4.4用户手册.chm jbpm-4.4 api帮助文档.CHM jBPM-jPDL学习笔记——流程设计与控制.doc JBPM4.4之HelloWorld示例.doc jbpm4.4会签实例.doc jbpm4.4安装配置step by ...揭秘jbpm流程引擎内核设计思想及构架.doc
此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上去、使用jBPM 4 Service API控制流程、掌握jBPM流程定义...
jbpm工作流视频文件,B5实战_将复杂业务数据模型关联到流程
1.2.17 表名:ACT_RE_MODEL (流程设计模型部署表) 12 1.2.18 表名:ACT_RE_PROCDEF (流程定义表) 13 1.2.19 表名:ACT_RU_EVENT_SUBSCR (运行时事件) 14 1.2.20 表名:ACT_RU_EXECUTION (运行时流程执行实例) 14 ...
WfMC定义:工作流是一类能够完全或者部分自动执行的经营...工作流是一种反映业务流程的计算机化的模型,实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型 基本元素:任务,任务之间的关系
一种BPMN到JPDL的模型转换方法,张元青,聂兰顺,模型转换是模型驱动体系结构和模型驱动软件开发的核心技术。以流程模型为研究对象,研究了BPMN模型与JBPM模型之间的转换方法。首先�
jBPM 模型类路径 该项目用作示例和解决方案的游乐场,用于解决 jBPM 中的类路径问题。 以代表的用例为例: Maven 工件 awesome-app : 管理依赖版本的父项目 awesome-model:包含普通类的模型jar awesome-kjar :...
2.2.3 业务流程的建立需要遵循的原则 18 2.3 工作流中间件 18 2.3.1 工作流中间件的概念 18 2.3.2使用工作流中间件的目的及其组成 19 2.4 活动(ACTIVITY) 21 2.4.1概念 21 2.4.2分类 22 2.4.3前驱活动与后续活动...