OoAD大报告jBPM开源项目介绍 1/20 OBJECT ORIENTED ANALYSIS AND DESIGN OPEN SOURCE PROJECT iBPM FINAL REPORT 面向对象分析与设计-开源项目jBPM期终报告 2008年1月3日 0461014张昀,0461016朱亦奇,0461059顾致安,0461061符瑞杰,0461105王谐,072053033金祖旭 1.开源项目简介 11jBPM简介 12工作流简介 1.3工作流管理系统简介 14工作流系统的前景… 2.小组成员介绍 2 3.jBPM核心流程引擎… 3.1核心流程定义 4.jBPM过程调度机制-…… 4.1过程调度的思想 3555 42jBPM流程启动 4.3流程调度过程 5.jBPM数据库与持久层 51会话模式 11 52工厂方法 6.jBPM流程动态显示机制… 6.1流程显示的重要意义… 12 62流程图生成 13 63图形动态显示 7.面向图的编程( Graph Oriented Programming) 71简介 72面向图编程的特点 8.jBPM与面向对象设计(设计实例) 16 实例1:电子支付系统…… 实例2:地方性法规制定流程 9.总结 19
OOAD 大报告 jBPM 开源项目介绍 1/20 OBJECT ORIENTED ANALYSIS AND DESIGN OPEN SOURCE PROJECT jBPM FINAL REPORT 面向对象分析与设计 – 开源项目 jBPM 期终报告 2008 年 1 月 3 日 0461014 张昀, 0461016 朱亦奇, 0461059 顾致安, 0461061 符瑞杰, 0461105 王谐, 072053033 金祖旭 1. 开源项目简介..........................................................................................................................................................2 1.1 jBPM 简介 ...............................................................................................................................................................2 1.2 工作流简介..............................................................................................................................................................2 1.3 工作流管理系统简介..............................................................................................................................................2 1.4 工作流系统的前景..................................................................................................................................................2 2. 小组成员介绍..........................................................................................................................................................2 3. jBPM 核心流程引擎 ...............................................................................................................................................3 3.1 核心流程定义..........................................................................................................................................................3 4. jBPM 过程调度机制 ...............................................................................................................................................5 4.1 过程调度的思想......................................................................................................................................................5 4.2 jBPM 流程启动........................................................................................................................................................5 4.3 流程调度过程..........................................................................................................................................................6 5. jBPM 数据库与持久层 .........................................................................................................................................10 5.1 会话模式................................................................................................................................................................11 5.2 工厂方法................................................................................................................................................................11 6. jBPM 流程动态显示机制 .....................................................................................................................................12 6.1 流程显示的重要意义............................................................................................................................................12 6.2 流程图生成............................................................................................................................................................13 6.3 图形动态显示........................................................................................................................................................14 7. 面向图的编程(Graph Oriented Programming).................................................................................................15 7.1 简介........................................................................................................................................................................15 7.2 面向图编程的特点................................................................................................................................................16 8. jBPM 与面向对象设计(设计实例).......................................................................................................................16 实例 1:电子支付系统 ...............................................................................................................................................17 实例 2:地方性法规制定流程 ...................................................................................................................................18 9. 总结........................................................................................................................................................................19
OOAD大报告jBPM开源项目介绍 2/20 1.开源项目简介 11jBPM简介 jBPM是 JBoss Java Business Process Management的简称。作为JBos旗下的开源工作流管理系 统,jBPM正在被越来越多的人所熟悉。相对于许多其他工作流系统而言,jBPM有其独特的优势所 在,易于部署、兼容性出众、相对低廉的搭建成本和较大的弹性空间,这些优点也都正是工作流管理 系统发展方向 12工作流简介 工作流( Workflow)的严格定义如下:为了实现组织目标,有关业务活动依时序或逻辑关系相互连 接构成业务流程。在业务开展过程中,文档、信息或任务,依据组织规范在参与者之间传递、处理 或执行。业务流程中,实现了基于计算机自动化的全部或部分称为工作流25]。简单地讲,工作流是 指整个或部分经营过程在计算机支持下的全自动或半自动化。在实际情况中可以更广泛地把凡是由计 算机软件系统(工作流管理系统)控制其执行的过程都称为工作流。一个工作流包括一组活动及它们 的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述。 13工作流管理系统简介 工作流管理系统的定义:工作流管理系统( Workflow Management System,MFMS)是定义、创 建、执行工作流的系统。在最高层上,WFMS应能提供以下三个方面的功能支持:建造功能:对工 作流过程及其组成活动定义和建模;运行控制功能:在运行环境中管理工作流过程,对工作流过程中 的活动进行调度:运行交互功能:指在工作流运行中,WMS与用户(业务工作的参与者或控制 者)及外部应用程序工具交互的功能。 据WFMC的定义,工作流管理系统( Workflow Management System)通过软件定义、创建工作 流并管理其执行。它运行在一个或多个工作流引擎上,这些引擎解释对过程的定义,与工作流的参与 者(包括人或软件)相互作用,并根据需要调用其他的「工具或应用。 总体来说,实际企业中运作的工作流管理系统,是一个“人-电脑”结合的系统。它的基本功能体现 在几个方面 定义工作流,包括具体 规则等,这些定义是同时被人以及电脑所“理解”的。 遵循定义创建和运行实际的工作 监察、控制、管理运行中的业务(工作流),例如任务、工作量与进度的检察、平衡等。 业务流程( business process)就是活动的集合,这些活动均关联于特定的托付事项( commitmen 为流程的产出增值。相对于“工作流”,业务流程是一个更一般化的统称,而工作流这个词,则已经 不能仅从字面含义或原理上去理解,它已经被赋予了更深一层的特定含义一一专指基于信息技术規 划、运作、管理的业务流程。 14工作流系统的前景 作为一个新兴的管理系统,业务流程系统还不能像数据库系统应用得如此广泛。但是,两者有着非常 相似的地方。DBMS的关注点在数据持久层,而在业务逻辑层方面,业界至今还未有一套统一的定 义标准。而作为业务逻辑层的重要解决方案之一,工作流系统有定义灵活,易于修改,重用性强,逻 辑结构严谨等众多优点,所以相信若干年以后,业务流程系统也会像数据库管理系统一样,在业务逻 辑层的实现中占有领导地位。 2.小组成员介绍 我们开源项目小组共有6名成员,在学期中我们组进行了7次演讲。安排如 演讲日期 演讲内容 演讲者 2007年9月16日 BPM简介 0461014张昀 2007年9月23日 M流程核心引擎 461014张 2007年9月30日 jDL流程定义语言 0461059顾致安 007年10月7日 iBPM持久化与 Hibernate 0461061符瑞杰 007年10月28日 BPM过程调度机制 072053033金祖旭
OOAD 大报告 jBPM 开源项目介绍 2/20 1. 开源项目简介 1.1 jBPM 简介 jBPM 是 JBoss Java Business Process Management 的简称。作为 JBoss 旗下的开源工作流管理系 统,jBPM 正在被越来越多的人所熟悉。相对于许多其他工作流系统而言,jBPM 有其独特的优势所 在,易于部署、兼容性出众、相对低廉的搭建成本和较大的弹性空间,这些优点也都正是工作流管理 系统发展方向。 1.2 工作流简介 工作流(Workflow)的严格定义如下:为了实现组织目标,有关业务活动依时序或逻辑关系相互连 接构成业务流程。在 业务开展过程中,文档、信息或任务,依据组织规范在参与者之间传递、处理 或执行。业务流程中,实现了基于计算机自动化的全部或部分称为工作流[25]。简单地讲,工作流是 指整个或部分经营过程在计算机支持下的全自动或半自动化。在实际情况中可以更广泛地把凡是由计 算机软件系统(工作流管理系统)控制其执行的过程都称为工作流。一个工作流包括一组活动及它们 的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述。 1.3 工作流管理系统简介 工作流管理系统的定义:工作流管理系统(Workflow Management System,WFMS)是定义、创 建、执行工作流的系统。在最高层上,WFMS 应能提供以下三个方面的功能支持:建造功能:对工 作流过程及其组成活动定义和建模;运行控制功能:在运行环境中管理工作流过程,对工作流过程中 的活动进行调度;运行交互功能:指在工作流运行中,WFMS 与用户(业务工作的参与者或控制 者)及外部应用程序工具交互的功能。 根据 WFMC 的定义,工作流管理系统(Workflow Management System)通过软件定义、创建工作 流并管理其执行。它运行在一个或多个工作流引擎上,这些引擎解释对过程的定义,与工作流的参与 者(包括人或软件)相互作用,并根据需要调用其他的 IT 工具或应用。 总体来说,实际企业中运作的工作流管理系统,是一个“人-电脑”结合的系统。它的基本功能体现 在几个方面: • 定义工作流,包括具体的活动、规则等,这些定义是同时被人以及电脑所“理解”的。 • 遵循定义创建和运行实际的工作流。 • 监察、控制、管理运行中的业务(工作流),例如任务、工作量与进度的检察、平衡等。 业务流程(business process)就是活动的集合,这些活动均关联于特定的托付事项(commitment), 为流程的产出增值。相对于“工作流”,业务流程是一个更一般化的统称,而工作流这个词,则已经 不能仅从字面含义或原理上去理解,它已经被赋予了更深一层的特定含义——专指基于信息技术规 划、运作、管理的业务流程。 1.4 工作流系统的前景 作为一个新兴的管理系统,业务流程系统还不能像数据库系统应用得如此广泛。但是,两者有着非常 相似的地方。DBMS 的关注点在数据持久层,而在业务逻辑层方面,业界至今还未有一套统一的定 义标准。而作为业务逻辑层的重要解决方案之一,工作流系统有定义灵活,易于修改,重用性强,逻 辑结构严谨等众多优点,所以相信若干年以后,业务流程系统也会像数据库管理系统一样,在业务逻 辑层的实现中占有领导地位。 2. 小组成员介绍 我们开源项目小组共有 6 名成员,在学期中我们组进行了 7 次演讲。安排如下: 演讲日期 演讲内容 演讲者 2007 年 9 月 16 日 jBPM 简介 0461014 张昀 2007 年 9 月 23 日 jBPM 流程核心引擎 0461014 张昀 2007 年 9 月 30 日 jPDL 流程定义语言 0461059 顾致安 2007 年 10 月 7 日 jBPM 持久化与 Hibernate 0461061 符瑞杰 2007 年 10 月 28 日 jBPM 过程调度机制 072053033 金祖旭
OOAD大报告jBPM开源项目介绍 3/20 2007年11月25日 jBPM与面向对象流程设计 0461016朱亦奇0461105王谐 2007年12月16日 BPM与流程动态显示 61014张昀 在大报告中,各个相关模块也是每个演讲者根据自己的演讲内容分别撰写的,最后由0461014张昀同学 完成整理和总结工作。安排如下: 相关章节 编写人员 」jBPM核心流程引擎 04610144张昀 jBPM过程调度机制 072053033金祖旭 BPM持久化与 Hibernate 0461061符瑞杰 BPM与流程动态显示 0461014张昀 jBPM与面向对象流程设计 0461016朱亦奇 向图编程简介 0461105王谐 3.jBPM核心流程引擎 0o关键词: abstract抽象,消息传递 31核心流程定义 在jBPM工作流系统中,最重要的部分就是对工作流的定义。也就是在面向对象思想中,人们所说的 问题的关键抽象。工作流系统中最重要的4个关键抽象分别是:流程定义,流程分派,流程执行,流 程实例。定义了这4种关键抽象,一个核心的工作流引擎就定义完成了。虽然每个工作流系统解决 方案都会在这个核心引擎的基础上再为人们提供各种其他相关服务,例如流程的图形化显示,流程持 久化等,但是只有完整定义了以上4个关键抽象的系统才算是一个完成的工作流系统。下面,让我 们分别来介绍一下这4个流程关键抽象 Instance bject Execution process(Definition) Dispatch 流程定义包括定义工作流系统的节点(Node)和调转( Transition),节点负责接收输入调转上的 消息,完成内部的相关功能与业务,并且向输入调转发送消息,调转负责把从节点上接收的 消息分发到另一个节点上。我们可以通过流水线的例子来直观的想象这两个概念。工作流节 点就是在一条流水线的不同地方工作的工作人员,他们负责从传送带上取出一件产品,进行
OOAD 大报告 jBPM 开源项目介绍 3/20 2007 年 11 月 25 日 jBPM 与面向对象流程设计 0461016 朱亦奇 0461105 王谐 2007 年 12 月 16 日 jBPM 与流程动态显示 0461014 张昀 在大报告中,各个相关模块也是每个演讲者根据自己的演讲内容分别撰写的,最后由 0461014 张昀同学 完成整理和总结工作。安排如下: 相关章节 编写人员 jBPM 核心流程引擎 0461014 张昀 jBPM 过程调度机制 072053033 金祖旭 jBPM 持久化与 Hibernate 0461061 符瑞杰 jBPM 与流程动态显示 0461014 张昀 jBPM 与面向对象流程设计 0461016 朱亦奇 面向图编程简介 0461105 王谐 3. jBPM 核心流程引擎 OO 关键词: abstract 抽象,消息传递 3.1 核心流程定义 在 jBPM 工作流系统中,最重要的部分就是对工作流的定义。也就是在面向对象思想中,人们所说的 问题的关键抽象。工作流系统中最重要的 4 个关键抽象分别是: 流程定义,流程分派,流程执行,流 程实例。定义了这 4 种关键抽象,一个核心的工作流引擎就定义完成了。虽然每个工作流系统解决 方案都会在这个核心引擎的基础上再为人们提供各种其他相关服务,例如流程的图形化显示,流程持 久化等,但是只有完整定义了以上 4 个关键抽象的系统才算是一个完成的工作流系统。下面,让我 们分别来介绍一下这 4 个流程关键抽象。 流程定义 流程定义包括定义工作流系统的节点(Node)和调转(Transition),节点负责接收输入调转上的 消息,完成内部的相关功能与业务,并且向输入调转发送消息,调转负责把从节点上接收的 消息分发到另一个节点上。我们可以通过流水线的例子来直观的想象这两个概念。工作流节 点就是在一条流水线的不同地方工作的工作人员,他们负责从传送带上取出一件产品,进行
OOAD大报告jBPM开源项目介绍 4/20 某一项加工,再放回到传送带上。而跳转就是传送带本身,他负责把产品传送给不同的工作 人员,并接受不同工作人员的劳动产品 State Stare a→○ State Transition 流程分派 仅仅有了节点和跳转的定义,我们还不能保证一个工作流系统的正确执行。我们还需要定义 一个机制能够显式的告诉这些节点和跳转,他们在何时开始工作。前面说过,Jbpm通过消 息发送的方法进行流程分派,而他们发送的消息,则是一个令牌 token。每一个流程中的实 例都产生一个令牌,令牌在不同的节点之间传递,令牌处于哪一个节点或跳转,就表示该节 点或跳转被唤醒,并开始执行他们预定义的动作。 Token Tr ansition 程执行 流程执行定义了每个节点和跳转需要执行的任务。这个定义很好理解,比如当 token走到某 个节点时,该节点被预定义的执行动作是向某些邮箱发送emal,那么该节点的执行就是
OOAD 大报告 jBPM 开源项目介绍 4/20 某一项加工,再放回到传送带上。而跳转就是传送带本身,他负责把产品传送给不同的工作 人员,并接受不同工作人员的劳动产品。 流程分派 仅仅有了节点和跳转的定义,我们还不能保证一个工作流系统的正确执行。我们还需要定义 一个机制能够显式的告诉这些节点和跳转,他们在何时开始工作。前面说过,Jbpm 通过消 息发送的方法进行流程分派,而他们发送的消息,则是一个令牌 token。每一个流程中的实 例都产生一个令牌,令牌在不同的节点之间传递,令牌处于哪一个节点或跳转,就表示该节 点或跳转被唤醒,并开始执行他们预定义的动作。 流程执行 流程执行定义了每个节点和跳转需要执行的任务。这个定义很好理解,比如当 token 走到某 一个节点时,该节点被预定义的执行动作是向某些邮箱发送 email,那么该节点的执行就是
OOAD大报告jBPM开源项目介绍 5/20 向某些邮箱发送emai,邮件发送完成后,该节点的动作也就执行完了。流程的执行是与某 个节点绑定的,而不是与某一个具体的流程实例绑定 流程实例 流程实例就是运行在一个流程定义上的所有实例。流程实例的概念与系统进程的概念非常相 似。所以,流程实例也有与进程类似的定义方式。每一个流程实例都有一个运行时环境,环 境里保存了该实例的令牌环(用于识别实例执行状态)和其他一些必要信息,运行时环境这个 概念与进程的PCB非常相似,都是为了确保流程在被重新唤起时,原来的环境能够重现, 作为一个过程化的系统,一种直观地解决方案就是过程化的实现。不过作为Java实现的工作流系统 BPM当然也采用了面向对象的方法。其中最重要的思想就是消息传递。在jBPM中,一个流程并不是过程式 的从头走到尾,而是通过不同流程节点与调转中通过消息发送的方式保证流程的正确执行的。我们可以简单的 把每一个流程节点都当作一个 Java class,这些类在流程被定义时就已经定义好,并且在工作流系统开始运 行时被初始化,接下来,不同的类在不同的时候被唤醒并执行相关动作,当他们的任务结束以后,就会像其他 表示工作节点的类发送消息,把另一个或一些节点唤醒。消息发送机制的好处是我们可以容易的加上或去掉某 一个节点,只要保证负责发送和接受消息的接口可以被其他类访问。因此,jBPM的引擎是面向变化、面向重 用的 4.jBPM过程调度机制 0o关键词:继承 41过程调度的思想 JBPM的过程调度机制吸纳了 Petri net的思想,JBPM采用 To ken来表示当前实例运行的位置,也利 用 to ken在流程各个点之间的转移来表示流程的推进。在真实的世界中,当一个流程经过一个fork节 点时,可能会同时跳转到2个或以上的分支,也就是说有多个节点的任务需要同时被执行,在这里 to ken就会派生出子令牌,这些子令牌继承自他们的父令牌,不同的子令牌在 merge(或join)的节点上 重新合并成一个令牌 Fork Token Shipping paren 命 children Join 上图左边是一个 to ken的UML类图,左边是一个流程中的令牌分布情况 4.2jBPM流程启动 当jPM试图去启动一个流程的时候,首先是构造一个流程实例,并为此流程实例创建一个Root Token,并把这个 Root Token放置在 Start Node上,一个流程实例在开始状态之可能拥有一个令牌,并 在一个节点上
OOAD 大报告 jBPM 开源项目介绍 5/20 向某些邮箱发送 email,邮件发送完成后,该节点的动作也就执行完了。流程的执行是与某 一个节点绑定的,而不是与某一个具体的流程实例绑定。 流程实例 流程实例就是运行在一个流程定义上的所有实例。流程实例的概念与系统进程的概念非常相 似。所以,流程实例也有与进程类似的定义方式。每一个流程实例都有一个运行时环境,环 境里保存了该实例的令牌环(用于识别实例执行状态)和其他一些必要信息,运行时环境这个 概念与进程的 PCB 非常相似,都是为了确保流程在被重新唤起时,原来的环境能够重现。 作为一个过程化的系统,一种直观地解决方案就是过程化的实现。不过作为 Java 实现的工作流系统。 jBPM 当然也采用了面向对象的方法。其中最重要的思想就是消息传递。在 jBPM 中,一个流程并不是过程式 的从头走到尾,而是通过不同流程节点与调转中通过消息发送的方式保证流程的正确执行的。我们可以简单的 把每一个流程节点都当作一个 Java Class,这些类在流程被定义时就已经定义好,并且在工作流系统开始运 行时被初始化,接下来,不同的类在不同的时候被唤醒并执行相关动作,当他们的任务结束以后,就会像其他 表示工作节点的类发送消息,把另一个或一些节点唤醒。消息发送机制的好处是我们可以容易的加上或去掉某 一个节点,只要保证负责发送和接受消息的接口可以被其他类访问。因此,jBPM 的引擎是面向变化、面向重 用的。 4. jBPM 过程调度机制 OO 关键词: 继承 4.1 过程调度的思想 JBPM 的过程调度机制吸纳了 Petri Net 的思想,JBPM 采用 Token 来表示当前实例运行的位置,也利 用 token 在流程各个点之间的转移来表示流程的推进。在真实的世界中,当一个流程经过一个 fork 节 点时,可能会同时跳转到 2 个或以上的分支,也就是说有多个节点的任务需要同时被执行,在这里, token 就会派生出子令牌,这些子令牌继承自他们的父令牌,不同的子令牌在 merge(或 join)的节点上 重新合并成一个令牌。 上图左边是一个 token 的 UML 类图,左边是一个流程中的令牌分布情况。 4.2 jBPM 流程启动 当 jBPM 试图去启动一个流程的时候,首先是构造一个流程实例,并为此流程实例创建一个 Root Token,并把这个 Root Token 放置在 Start Node 上,一个流程实例在开始状态之可能拥有一个令牌,并 处在一个节点上
OOAD大报告jBPM开源项目介绍 6/20 public ProcessInstance( ProcessDefinition processDefinition )i if (processDefinition==null) throw new JbpmException( can't create a process instance this processDefinition processDefinition this root Token new Token(this) this start= new Date 代码1 public Token(ProcessInstance processInstance)i this start new Date( this processInstance= processInstance this node processInstance getProcessDefinitiono. getstartstate O; Token lode supersTate children execute) add child Token拥有当前节点的引用,可以方便的更改当前节点的位置 43流程调度过程 调度过程主要类结构图
OOAD 大报告 jBPM 开源项目介绍 6/20 代码 1 代码 2 Token 拥有当前节点的引用,可以方便的更改当前节点的位置。 4.3 流程调度过程 调度过程主要类结构图
OOAD大报告jBPM开源项目介绍 720 Transition ExecutionContext Transition eo SupersTate paren children ◆read0 execute( na Execution Conteαt(执行上下文对象)保持当前流程状态的一个执行环境,就行函数执行中栈的 作用 当 Token已经在 Start- State节点了,我们可以开始往前推进,来促使流程实例往前运行。对于 外部操作来说,触发流程实例往下运行的操作有两个 强制执行 Processinstance的 signal操作 执行 Tas iNstance的end操作 但是,这两个操作都是通过“当前 to ken的 signal操作”来内部实现的,如下图所示 d ProcessInstance signalo) ken signalo o Taskinstance endO 松飞oken的5gna操作表示:实例需要离开当前 to ken所在的节点,转移到下一个节点上:因为Node 与Node之间是“ Transition”这个桥梁,所以,在转移过程中,会首先把 To ken放入相关联的 Transtion 象中,再由 Transition对象把 Token交给下一个节点
OOAD 大报告 jBPM 开源项目介绍 7/20 ExecutionContext(执行上下文对象)保持当前流程状态的一个执行环境,就行函数执行中栈的 作用。 当 Token 已经在 Start-State 节点了,我们可以开始往前推进,来促使流程实例往前运行。对于 外部操作来说,触发流程实例往下运行的操作有两个: • 强制执行 ProcessInstance 的 signal 操作 • 执行 TaskInstance 的 end 操作。 但是,这两个操作都是通过“当前 token 的 signal 操作”来内部实现的,如下图所示: Token 的 Signal 操作表示:实例需要离开当前 token 所在的节点,转移到下一个节点上。因为 Node 与 Node 之间是“Transition”这个桥梁,所以,在转移过程中,会首先把 Token 放入相关联的 Transtion 对象中,再由 Transition 对象把 Token 交给下一个节点
OOAD大报告jBPM开源项目介绍 public void signalo t /注意 Executioncontext对象 signal(node. getDefaultLeaving Transition(), new Execution Context(this)): void signal(Transition transition, ExecutionContext executionContext)( // start calculating the next state node. leave(executionContext, transition) 代码3 Exectuion Context Token Node 构造出 Execution Context对象 接下来,请注意 node. leave这个操作。这是一个很有意思的语义转换:我们是采用 token的 signal 操作来表示往下一个节点推进,但是实际确实执行的 node. leave)操作。 让我们来看看node对象的 leave方法 public void leave(ExecutionContext executionContext, Transition transition)t Tokentoken executionContext getToken O: token. setNode(this); executionContext. setTransition(transition) executionContext. setTransition Source(this) transition. take(executionContext): 码4 Exectuion Context Token fr rom etNode( Transition cfrom 纠ta 将 Token的Node设为 Transition的源节点 我们直接跟踪进 Transition的take操作
OOAD 大报告 jBPM 开源项目介绍 8/20 代码 3 构造出 ExecutionContext 对象 接下来,请注意 node.leave()这个操作。这是一个很有意思的语义转换:我们是采用 token 的 signal 操作来表示往下一个节点推进,但是实际确实执行的 node.leave ()操作。 让我们来看看 node 对象的 leave 方法: 代码 4 将 Token 的 Node 设为 Transition 的源节点 我们直接跟踪进 Transition 的 take 操作:
OOAD大报告jBPM开源项目介绍 9/20 public void take(ExecutionContext executionContext)i executionContext. getTokeno. setNode(null); // pass the token to the destinationNode node to enter(executionContext) } 代码5 Token的内部实际执行的是 to entero方法。 经过这么多的中间步骤,我们终于把 Execution Context对象从一个node转移到下一个node了。让 我们来看看Node对象的 enter操作 public void enter(ExecutionContext executionContext)t Token token executionContext getTokeno token. setNode( this); // remove the transition references from the runtime context executionContext. setTransition(null); executioncontext. setTransition Source (null) ∥ execute the node if (isAsync)i y else ntext) execute(executionconte 代码6 Exectuion Context Tok Transition Takeo 将 Token的Node设置为目标节点 确定转向的 Transtion 确定移交的 ExecutionContext对象 把 Execution context对象 开当前节点 node.leave) 转移到 Transtion对象上 tokensignalo o 把 Execution Cotext对象 多交给下一个Node Transition接受 ExecutionContext o oken绑定当前节点 执行节点 Node.execute() 执行完节点,继续往下推进K一
OOAD 大报告 jBPM 开源项目介绍 9/20 代码 5 Token 的内部实际执行的是 to.enter()方法。 经过这么多的中间步骤,我们终于把 ExecutionContext 对象从一个 node 转移到下一个 node 了。让 我们来看看 Node 对象的 enter 操作: 代码 6 将 Token 的 Node 设置为目标节点
OOAD大报告jBPM开源项目介绍 10/20 jBPM调度过程结构图 采用继承的方法处理多节点情况,好处就是我们可以通过继承的树状结构轻松的控制流程出处理时的fork 与join。如果我们不这样做,而是采用简单的向多个节点发送消息的方法来完成多节点处理,那么很有可能发 生的情况是原来在同一个节点派生出来的多个 to ken没有在最后join在一起,这样的混乱局面不利于流程的控 Node gal Definition 上图左边为不好的流程定义,它可以转化为右图的流程 5.jBPM数据库与持久层 oo关键词:面向对象的持久层,工厂方法,会话模式, Singleton模式,多 态,信息封装,信息隐藏 为了保证数据的持久化,过秤定义中的数据不仅仅是用Java对象来表示的,在jBPM中,流程的存储与 持久化信息保存在3个不同的层次上: XML Java对象以及数据库记录:而流程的执行信息和日志信息则 主要存储在Java对象中,并通过数据库完成持久化
OOAD 大报告 jBPM 开源项目介绍 10/20 jBPM 调度过程结构图 采用继承的方法处理多节点情况,好处就是我们可以通过继承的树状结构轻松的控制流程出处理时的 fork 与 join。如果我们不这样做,而是采用简单的向多个节点发送消息的方法来完成多节点处理,那么很有可能发 生的情况是原来在同一个节点派生出来的多个 token 没有在最后 join 在一起,这样的混乱局面不利于流程的控 制 上图左边为不好的流程定义,它可以转化为右图的流程 5. jBPM 数据库与持久层 OO 关键词: 面向对象的持久层,工厂方法,会话模式,Singleton 模式,多 态,信息封装,信息隐藏 为了保证数据的持久化,过秤定义中的数据不仅仅是用 Java 对象来表示的,在 jBPM 中,流程的存储与 持久化信息保存在 3 个不同的层次上:XML,Java 对象以及数据库记录;而流程的执行信息和日志信息则 主要存储在 Java 对象中,并通过数据库完成持久化