JBPM工作流引擎分析Word格式.docx

上传人:b****6 文档编号:15889010 上传时间:2022-11-16 格式:DOCX 页数:61 大小:1.30MB
下载 相关 举报
JBPM工作流引擎分析Word格式.docx_第1页
第1页 / 共61页
JBPM工作流引擎分析Word格式.docx_第2页
第2页 / 共61页
JBPM工作流引擎分析Word格式.docx_第3页
第3页 / 共61页
JBPM工作流引擎分析Word格式.docx_第4页
第4页 / 共61页
JBPM工作流引擎分析Word格式.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

JBPM工作流引擎分析Word格式.docx

《JBPM工作流引擎分析Word格式.docx》由会员分享,可在线阅读,更多相关《JBPM工作流引擎分析Word格式.docx(61页珍藏版)》请在冰豆网上搜索。

JBPM工作流引擎分析Word格式.docx

2.JBPM体系结构

JBPM工作流管理系统包含3个主要组件:

核心组件——JBPM工作流引擎,封装成Java类库,可以被方便的调用;

可视化流程定义组件——JPDLDesigner,是一个图形化工具,以Eclipse插件的形式存在,方便不懂编程的业务人员或业务分析师设计业务流程;

应用组件——JBPMWebConsole,以JSF为表示层,提供流程实例与用户的任务交互界面,同时作为流程管理和监控的控制台。

下展示了组件间的依赖关系,及其和WfCM标准工作流系统体系结构的对应关系。

图2.1JBPM工作流管理系统体系结构

作为核心的工作流引擎又可以进一步分解为以下组件:

①流程定义装载,负责流程定义的语法验证和解析;

②流程执行服务,负责流程的实例化,以及流程实例的执行调度、资源分配等;

③请求处理器,将客户端传递给流程执行服务;

④日志管理器,记录引擎运行的日志信息;

⑤状态管理器;

⑥交互服务,提供引擎与遗留系统的交互。

下图展示了组件间的依赖关系。

本文着重分析JBPM工作流引擎的核心功能:

流程解析和流程调度。

图2.2JBPM流程引擎体系结构

3.JBPM流程定义

要对流程进行解析,首先必须定义流程。

JBPM提供了可视化流程设计器方便用户进行业务流程的定义,在流程定义中借用了的UML的状态图和活动图的思想,使流程更加直观易懂。

下图展示了JBPM中的流程定义图和UML活动图的对比。

  

图3.1JBPM流程定义图和UML活动图

流程定义保存在一个XML文件中,主要由下面七个部分组成:

1.swimlane,泳道,它们被用于任务分配,一个泳道可以被视为一个参与者在这一流程中的角色名称。

2.start-state,流程的起始状态,所有的流程实例都是从这个状态开始的,没有起始状态的流程是合法的,但不能被执行;

3.node-elements,包含一系统流程定义的节点,这些节点类型包括

end-state|state|node|task-node|process-state|super-state|fork|join|decision

transition作为node-elements的一个子元素存在

4.action-elements,全局定义的动作,可以在事件和变迁中引用,为了被引用,这些动作必须被指定名称;

包括action|script|create-timer|cancel-timer

5.event,事件,服务于动作的流程事件,作为action-elements的容器;

6.task,任务,和用户交互;

7.exception-handler,异常处理器,用户定义的流程异常处理程序。

JPDL流程定义的对象及其关系

从图我们可以看出,JBPM流程定义中最基本的对象就是节点(Node)和变迁(Transition),节点表示不同的业务处理逻辑,变迁指出节点间的执行顺序。

JBPM在节点和变迁的基础上又抽象了一层,称之为图形元素(GraphElement)。

同时为了表达节点和变迁事件的具体执行逻辑,引入了动作(Action)的概念。

图形元素有5个主要属性:

名称(name)、描述(description)、所属流程定义(processDefinition)、可触发事件(events)、异常处理器(exceptionHandler)。

除了前面提到的节点和变迁,还有流程定义(ProcessDefinition)和任务(Task)也继承了图形元素。

所有在流程图上可表达的节点,如开始节点、分支节点、汇合节点等,都继承了Node对象。

下图展示了基本对象间的继承关系。

图3.2JBPM流程基本对象间的继承关系

除了基本对象外,JPDL还定义了action、event等辅助的元素,下图展示了一个流程定义中对象的关系:

图3.3JBPM流程定义中对象的关系

3.2JPDL中的主要节点类型

JPDL的主要节点类型为以下8个:

任务节点(tasknode)、自动节点(nodenode)、状态节点(statenode)、决策节点(decisionnode)、分支节点(forknode)、汇聚节点(jionnode)、开始节点(startnode)、结束节点(endnod)。

这些节点是业务流程定义中最常用的,下面分别说明不同节点的功能:

①任务节点:

一个任务节点可以包含一个或多个任务,任务的完成需要和用户进行交互(一般通过表单形式)。

当流程执行到一个任务节点的时候,任务节点上的任务被实例化并插入相应用户(组)的任务列表中。

然后,流程进入等待状态,直到用户完成任务。

任务的完成将触发流程实例的继续执行,即触发标记(token)。

表单和任务的绑定通过froms.xml文件实现。

②自动节点:

自动节点包含由计算机自动完成的任务,用于显示表达业务分析中相对重要的自动任务。

一般来说,该节点包含一个名为动作(action)的子元素,其内容是一个Java类(实现ActionHandler接口),用于实现所需的API调用。

对于那些不需要在流程中显示表达的API调用,可以把动作(acition)隐含在节点的事件(event)属性内实现。

(工作流引擎调用外部系统的API)

③状态节点:

状态节点实际上就是一个等待状态状态,与任务节点不同之处在于它不会在任何用户的任务列表插入任务实例。

状态节点用于等待外部系统的响应,例如:

当流程执行到该任务节点时,流程进入等待状态;

直到外部系统发回一个响应消息时,标记被触发,流程继续执行。

(外部系统调用工作流引擎的API,一般是触发标记)

④决策节点:

决策节点即单一选择路由节点,有3种方式指定决策标准。

最简单的是使用决策表达式,返回一个出向变迁名。

另一种方法是给决策节点的每个出向变迁附上一个布尔表达式,当流程执行到决策节点时,工作流引擎将按流程定义文件中的顺序依次计算每个变迁上的布尔表达式,选择第一个为真的变迁向下执行流程。

最后一种方式,也是最灵活的方式是使用决策处理程序:

一个实现DecisionHandler接口的java类,该类返回决策结果的变迁名,例如调用规则引擎按照事先定义好的业务规则执行决策。

这3种决策方式命名为:

表达式决策、变迁条件决策、接口决策。

⑤分支节点:

分支节点即并行路由节点,把当前流程的执行路径分为多个并行的执行路径。

当流程执行到该节点时,标记(token)停留在fork节点作为父标记,同时产生与分支数相同个数的子标记,子标记沿各自分支向下传递。

⑥汇聚节点:

汇聚节点必须与上述分支节点成对使用,所有到达汇聚节点的子标记应由同一个父标记产生。

当子标记到达汇聚节点时,子标记自动结束。

当最后一个子标记到达汇聚节点时,父标记将传递到汇聚节点,并沿汇聚节点的唯一出向迁移向下传递。

在这之前汇聚节点一直处于等待状态。

⑦开始节点:

一个流程定义只能有一个开始节点,它没有入向迁移,只有出向迁移,作为流程的开始标记。

开始节点最多只能包含一个任务。

开始节点可以不进行人员选派,默认的任务执行人为流程实例的发起者。

⑧结束节点:

结束节点表示流程的终止,它仅有入向迁移,一个流程可以有一个以上的结束节点。

3.3JPDL中的辅助节点类型

作为主要节点类型的补充,JPDL中还定义了以下4种节点:

①Email节点:

在流程中显示的表达发送Email给指定用户的节点,完全可以用自动节点加上适当的参数代替它。

②ESB服务节点:

企业服务总线(ESB,EnterpriseServiceBus)是JBoss

新推行的一个SOA平台,通过服务封装企业遗留系统的应用,达到企业应用集成的目的。

ESB服务节点就是用于调用ESB提供的服务的,可以用自动节点加上适当的参数代替它。

(注:

JBPM已经被集成到JBossESB系统中)

③流程状态节点:

调用一个子流程。

④超态节点:

超态是一组节点的集合,可以用来在流程定义中产生一些层次,例如,一个应用可能要把流程中的所有节点按阶段进行分组。

3.4JPDL流程定义文件的XML文档结构及其校验

JBPM的流程定义保存在部署包的文件中,JPDL的XMLSchema描述对该文件做了限定。

一个XMLSchema通常是一组为了描述一类给定的XML文档而预先定好的规则。

它定义了可以在指定XML文档中出现的各个元素以及和某个元素相关的若干属性。

jPDL的XMLSchema包括3个不同的版本的文件:

可以在jbpm-jpdl.jar包的org\jbpm\jpdl\xml目录下找到,其中jpdl-3.0.xsd有详细的注释。

附件的schema.rar里也有图形化的说明。

所以这里不在赘述。

JBPM对流程定义的解析是直接对文件进行解析,提取其中的元素和属性,生成一套对应的对象,这套对象的结构反映了流程定义的结构。

解析流程定义的类为org\jbpm\jpdl\xml\JpdlXmlReader.java,总体流程如下图所表示。

进行流程定义语法校验和解析时,调用的是开源XML解析包dom4j。

下面一一介绍各个部分的详细解析过程。

图4.1JPDL流程定义解析总体流程

4.1解析泳道(Swimlane)

泳道解析调用函数readSwimlanes(root),其中root是经过dom4j解析后生成的doc树根,函数声明如下:

protectedvoidreadSwimlanes(ElementprocessDefinitionElement)

该函数获取processDefinitionElement中的所有swimlane元素,按下图中的流程解析,生成对应的对象。

从下面的解析流程图中可以看出,泳道的表达式分配使用的委托程序属于identity包,这个包是独立于引擎核心的。

如果不使用identity包就无法使用表达式分配。

图JPDL泳道解析流程图

4.2解析动作(Action)

文件定义了5种默认Action类型和对应的处理类:

<

action-types>

<

action-typeelement="

action"

class="

org.jbpm.graph.def.Action"

/>

create-timer"

org.jbpm.scheduler.def.CreateTimerAction"

cancel-timer"

cl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1