基于JBPM引擎的工作流技术研究与应用优秀毕业论文 参考文献.pdf_第1页
基于JBPM引擎的工作流技术研究与应用优秀毕业论文 参考文献.pdf_第2页
基于JBPM引擎的工作流技术研究与应用优秀毕业论文 参考文献.pdf_第3页
基于JBPM引擎的工作流技术研究与应用优秀毕业论文 参考文献.pdf_第4页
基于JBPM引擎的工作流技术研究与应用优秀毕业论文 参考文献.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

基于JBPM引擎的工作流技术研究与应用优秀毕业论文 参考文献.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华中科技大学 硕士学位论文 基于jbpm引擎的工作流技术研究与应用 姓名 殷实 申请学位级别 硕士 专业 计算机应用技术 指导教师 刘宏 2011 05 28 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 i 摘摘 要要 起源于办公自动化领域的工作流技术 用计算机程序来管理企业和公司业务流 程 以达到提高组织工作效率 节省时间的目的 是计算机应用技术领域的一个热 点课题 以开源工作流引擎 jbpm java business process management 作为研究对象 从流程过程定义 流程调度机制 流程执行机制和流程实例对象四个角度论述了工 作流引擎的工作原理 在流程过程定义方面 为克服原流程定义工具与开发环境关 联紧密的弊病 运用 flex 技术和 mvc 模式设计开发了运行于浏览器的流程设计器 具备绘制流程图和生成流程定义文件的功能 该设计器独立于开发平台 并可以通 过互联网远程操控 针对 jbpm 提供的任务分派机制不够灵活的问题 提出了两种改进的任务分派 方法 基于等待队列的任务分派方法和基于直接指派的任务分配方法 并指出了这 两种方法的适用场景 提出了动态创建任务实例的方案解决实际应用中普遍存在的 会签流程 并在会签业务基础上 提出人工定向和自动定向的投票流程的实现办法 这些改进和扩展丰富了 jbpm 工作流引擎的业务功能 使其能够在更多实际的工作 流程中发挥作用 在这些研究工作的基础上 设计和实现一个基于 jbpm 引擎和 j2ee java 2 platform enterprise edition 框架的科研工作流应用系统 实践证明 该系统运用的 技术能够满足绝大部分业务流程的需求 具有很好的通用性 关键词 关键词 工作流 业务流程管理 流程建模 流程设计器 任务分派 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 ii abstract workflow technology originated in the field of office automation use computer program to manage a variety of business processes to improve efficiency save time and turn into a hot topic in the field of computer technology select the open source workflow engine jbpm java business process management as the research object and describe the workflow engine how to works form four perspectives the process definition process scheduling process execution mechanisms and process instance objects in the aspect of process definition in order to overcome the problem that associating with the development environment too closely of the original process definition tool design and develop a process designer which can run flash player in browsers and has the basic ability to draw process graph and generate the process definition file by using flex technology and mvc design pattern it is independent of any develop platforms can be operated remotely via the internet in order to solve the problem that jbpm task assignment mechanism is not flexible enough raise two improving methods the waiting queue based task assignment and the direct assignment based and point out the scenes that the two methods can perform well raise the scheme based creating task instances dynamically which can resolve countersigned process give two approaches to implement the vote process on the basis of the creating task instances dynamically these improvements and expansion enrich the business functions of the jbpm workflow engine enable it to play a role in more practical projects design and implement a workflow system based on jbpm engine in the j2ee framework practices has proved that the technology using in the system can satisfy the requirements of most actual projects has good versatility key words workflow jbpm process model process designer task assignment 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果 尽我所知 除文中已经标明引用的内容外 本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果 对本文的研究做出贡献的个人和集体 均已在 文中以明确方式标明 本人完全意识到 本声明的法律结果由本人承担 学位论文作者签名 日期 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留 使用学位论文的规定 即 学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版 允许论文被查阅和借阅 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索 可以采用影印 缩印或扫描等复制手段保存和汇编本学位论文 保密 在 年解密后适用本授权书 不保密 请在以上方框内打 学位论文作者签名 指导教师签名 日期 年 月 日 日期 年 月 日 本论文属于 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1 1 绪绪 论论 1 1 课题的背景及意义课题的背景及意义 工作流的概念起源于办公自动化领域 通过将一个完整的工作流分解成多个良 好定义的任务 角色并按照规定的规则和过程来执行这些任务并对整个流程的执行 进行监控 从而提高工作的效率 降低管理和经营的成本 增强企业的核心竞争力 是工作流的主要目的 工作流技术出现后 得到了充分的重视 各类工作流管理系 统被广泛地应用在企业 医院 银行 图书馆等行业机构 随着计算机网络技术和 分布式技术的迅速发展 对工作流技术的研究成为了计算机应用领域兴起的一个研 究热点 工作流管理联盟 workflow management coalition wfmc 是一个由多家公司 联合成立的国际标准组织 于 1993 年成立 其目的就是通过协商制定工作流技术标 准 提高不同工作流产品之间的连通性和协同工作能力 改善工作流产品同其他软 件服务之间的集成 成为关于工作流技术的权威组织 工作流管理联盟给出的工作 流定义是 工作流是将一类能够完全或者部分自动执行的经营过程 他根据一系列 过程规则 文档 信息或任务能够在不同的执行者之间进行传递与执行 1 工作流管 理联盟的成立标志着工作流技术在计算机应用领域中被单独划分出来 成为一个独 立完整的研究领域 使用工作流应用系统来管理监控公司和事业单位的业务流程不仅高效准确 提 高了公司好事业单位的管理水平 并且在业务流程发生变动的情况下能够迅速调整 提高了软件开发的速度 工作流引擎能够精确的定义流程 调度流程的执行和转换 是整个工作流系统的核心 目前开源的工作流引擎由于开放源代码 可免费使用 能够灵活地定制符合自身需求的业务流程等优点 被大量应用在系统的开发上 jbpm java business process management java 业务流程管理 就是其中的杰出代 表 它是一个轻量级的框架 方便与广泛运用在企业级系统开发中的 j2ee java 2 platform enterprise edition 项目集成整合 开展基于 jbpm 引擎的工作流技术的研究工作 并在研究的基础上改进和扩展 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 2 jbpm 引擎的业务功能 使其能够满足多种常见复杂的业务流程 提高 jbpm 工作流 引擎的通用性 对于快速开发符合各种需求的工作流应用系统 提高开发效率 节 约经费 时间 人力等各项开发成本都具有十分显著的意义 1 2 国内外研究概况国内外研究概况 工作流是一个年轻却又具有良好发展前景的研究方向 自上世纪 80 年代初期起 步以来 工作流管理系统从最初运行在数台小型机上实现日常表单处理自动化的表 单传递应用系统 发展到现今集成容纳了文件管理系统 互联网服务 电子邮件 数据库 甚至还包括移动式计算等新技术的大型工作流管理系统 作为其核心的工 作流技术取得了长足的进步 国内外许多大学和研究机构都致力于工作流的进一步 发展 开展了许多研究项目 并取得了显著成果 对工作流课题的研究主要集中在 工作流体系结构 模型与定义语言 事物特性 实现技术 仿真分析 集成互操作 与经营过程重组等七个方向 2 可以进一步归纳为三个方面 工作流的理论基础 工 作流的实现技术和工作流技术的应用 3 工作流技术在商业上也很成功 早在 1997 年工作流管理系统产品的市场增长率就超过了 35 根据任务传递机制的差异形成 四个种类 4 基于文件的工作流系统 基于消息的工作流系统 基于 web 的工作流 系统 群件与套件系统 随着计算机技术的发展 工作流产品的供应商不断地将新 技术融入工作流中 促进了工作流技术的完善 1 2 1 工作流的理论研究状况工作流的理论研究状况 工作流源于计算机软件的商业应用 是一个多学科交叉的新领域 涉及计算机 科学与管理科学的多种原则 方法与技术 因此工作流技术的理论研究在计算机软 件技术更为先进和商业社会更加成熟的西方发达国家里受到了足够的重视 很多商 业机构和大学科研组织从不同方面开展了研究工作 giga group 5 almaden 研究中 心 6 amit sheth 7 van der aalst 8 等机构和研究者根据各自对工作流的研究对工作 流的概念进行了介绍和解释 这些定义从不同的侧重点展示了他们的研究成果 工 作流管理联盟成立以后 承担起了指导工作流技术研究的职责 它给出了工作流技 术和工作流管理系统的确切定义和开发规范 为工作流的理论研究做出了突出贡献 工作流的理论核心是对工作流程的建模 理想的工作流模型应该能够完全支持 工作流的定义 为使用者提供所需的主要组件或者元素来描述工作流程 并具有较 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 3 强的描述能力 评判工作流模型的优劣有四条标准 9 表达能力丰富 容易理解 最 小化和形式化 常用的工作流建模方法有 基于活动网络的过程模型 事件驱动的 过程链模型 基于语言行为理论的工作流模型 10 11 和基于 petri 网 12 的工作流模型 13 15 等 基于活动网络的过程模型具有直观明了 容易理解的优点 特别适合建立 生产型工作流系统时采用 因为此类系统流程固定 异常较少 这样有利于规范企 业自身的内部流程 其缺点是不过灵活 无法及时应变迎合经营过程中的特殊情况 事件驱动的过程链模型的最大优点在于兼顾了模型描述能力和模型可读性这两个方 面 没有接受过过专业建模顺利的普通用户也能轻易看懂流程内容 经过改进和提 炼后 能够适应很多公司定义企业信息系统的需要 基于语音行为理论的建模方法 被一些公司采用并开发了相应的工作流产品 有些大学也利用来它改进安排课程表 的流程 但是由于缺少支持层次化建模能力 该模型不适合企业经营过程的描述 petri 网兼顾了严格语义与图形语言两个方面 是一种基于状态的建模方法 对比基 于事件的建模方法能够实现更加灵活和丰富的功能 此外 petri 网还具有各种分析技 术能够用来评估计算模型的各种性能 然而 基于 petri 网的建模方法并非十全十美 的 它存在两个缺点 其一是组成模型的元素过多 导致流程的模型过于复杂 其 二是在 petri 网中无法体现出数据的流动 1 2 2 工作流的实现技术工作流的实现技术 ibm 公司作为计算机业界巨头和技术领跑者 在工作流技术方向也进行了深入 的研究 其旗下的 almaden 研究中心研究开发了分布式工作流管理系统 exotica fmqm 16 flowmark on message queue manager 由于现代企业的业务流程 本身具有分布式的特性 传统的集中式的管理结构存在着单点失败和性能瓶颈这两 种问题 单点失败是指一个活动实例失败导致整个工作流进入瘫痪状态 无法正常 工作 性能瓶颈是指海量的应用和数据都要访问一个集中式的服务器 致使网络和 服务器成为整个系统性能的瓶颈 exotica fmqm 扩展了 ibm 的原有工作流管理系 统 flowmark 是一个能够支持大规模复杂应用的高性能分布式工作流管理系统 整 个系统是由多个节点组成 这些节点具有自治能力 在执行期间相互独立 工作流 过程的执行不以某一个节点为中心 实现了完全分布 节点间通过持久消息 persistent message 的方式来实现工作流程执行情况等相关信息的传递 该系统的体系结构提 高了鲁棒性 避免单点失败的严重问题 系统的运行机制克服了在过程运行中不断 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 4 与服务器通信造成的瓶颈 美国佐治亚大学 university of georgia 计算机系的 lsdis 实验室 large scale distributed information system lab 开发了一套名为 meteor managing end to end operations 的工作流管理原型系统 该系统的主要特点是具有自适应能力 能够支 持大规模复杂应用 并保证这些应用在异构企业环境中正常运行 该系统采用了完 全分布的体系系统 设计并实现了分布调度模块来达到工作流任务的调度最优化 meteor 原型系统支持 windows nt sun solaris 等多种操作系统 并采用了 web 和 corba common object request broker architecture 通用对象请求代理体系结构 等技术 为分布式环境下的互操作提供了良好的支持 meteor 项目组开发的基于 corba 规范的完全分布式工作流执行系统 orbwork 17 使用 corba 规范中对象和 idl 接口定义来实现系统中对象间的互操作和数据源的封装 系统的所有组成部分 都是一个 corba 对象的方式实现的 一些原有的应用都被封装成 corba 对象 在执行时当作任务调用 18 考虑到很多企业由于价格高昂 系统维护困难等原因不 会购买 corba 产品 而是使用企业自己的 web 服务器 meteor 的研究人员开发了 基于 web 的工作流管理系统 名为 webwork 19 德国萨尔兰大学 university of saarland 苏黎世联合银行 the union bank of zurich 和苏黎世工程研究院 eth zurich 合作研制开发了 mentor 20 middleware for enterprise wide workflow management 工作流管理系统 采用状态和活动图作为 建立模型的规范 活动图反映了系统功能的分解 每个活动代表了一个功能 状态 图反映了活动之间控制信息的流动 此系统为工作流模型的定义 执行和控制提供 了一个功能强大的中间件平台 苏黎世大学 university of zurich 计算机系提出了 一种基于事件驱动的分布式工作流执行系统 eve 21 event engine 该系统的核心是 eve 服务器 它能够检测事件的发生 并由分布在整个网络中的代理来响应事件完 成工作流的执行 代理相应事件的同时也产生了新事件 eve 系统的主要功能是用 于集成分布式功能组件 达特茅斯大学 dartmouth college 计算机系开发了工作流 系统 dartflow 22 该系统最大的特点是基于可移动代理 具有减少网络流量的优点 受到移动用户的欢迎 由西班牙 意大利和荷兰等国家合作开发的基于分布式主动 数据库技术的工作流管理系统 wide 23 workflow on intelligent and distributed database environment 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 5 1 2 3 工作流技术的应用工作流技术的应用 工作流技术的应用主要体现在工作流管理系统的开发上 目前普遍使用开源的 工作流引擎来开发应用系统 利用工作流引擎可以根据企业实际工作业务流程的需 要量身定做自己的工作流管理系统 这样的产品比较知名的有 shark osworkflow jbpm 等 lutris 发布的 shark 是用 java 语言实现的开源工作流系统框架 完全基于 wfmc 和omg规范 过程定义语言使用的是xpdl 流程和活动的存储使用enhydra dods shark 中的持久层 事务管理器 脚本引擎 流程库等组件 都可以按照标准实施运 用 还可以被具体项目的模块扩展和替换 很多工作流系统使用 shark 作为引擎 24 osworkflow 是一个用纯 java 语言编写的开源工作流引擎 主要基于有限状态机 管理工作流 每个工作流实例在生存周期中都处于一种状态下 通过执行动作来完 成一种状态到另一种状态的转移 动作执行产生结果实现工作的流转 osworkflow 最大的特点就是灵活性 技术人员能够方便对其进行二次开发 实现系统需求的独 特功能 25 jbpm 是一个基于 j2ee 的轻量级开源工作流管理系统 具有灵活 易扩展的特 点 2004 年 jboss 将 jbpm 纳入其中 成为 jboss 企业中间件平台的一个组成部分 并且集成了很多 jboss 的其他服务 不仅是一个强大的工作流引擎 还能更够胜任更 为复杂的业务流程管理 26 在国内工作流技术也被广泛地应用在多种领域的公司和大型事业单位 清华大 学的范玉顺教授等人一直致力于工作流将技术引进到现代集成制造系统中 27 不少 的软件厂商也在从事工作流管理系统的研究和开发 比较知名的有以下这些 杭州信达雅系统工程股份有限公司研制的 sunflow 工作流软件 sunflow 基于 j2ee 技术规范 以 wfmc 为标准开发 是一个分布式的工作流管理系统 可支持海 量数据处理 具备良好的稳定性 扩展性 安全性与灵活的业务流程变动功能 通 过 iconnetor 应用集成服务器可方便地整合企业现有系统 中间件和各种应用 提供 了一套完整的企业业务流程管理解决方案 为企业的业务流程自动化以及企业流程 再造提供基础平台 北京世纪金政信息技术研制的 koof metalogic 工作流软件 koof metalogic 主 要定位于办公自动化和电子政务平台 支持 tomcat weblogic 等 j2ee 应用服务器 支持 windows nt linux solaris 操作系统和各类关系型数据库 是一个款跨平台 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 6 的开发工具 容易与其他产品集成 上海携创软件技术有限公司研制的 joinwork 工作流软件 joinwork 是针对 j2ee 应用开发人员 主要以嵌入上层业务应用的方式部署使用的工作流软件 能够快速 实现复杂工作流程 功能菜单层次和权限控制 具有架构清晰开放 功能完整 模 型简单 使用灵活等特点 并且是轻量级可移植的 1 3 论文主要研究内容论文主要研究内容 本文主要的内容和研究的问题有以下几点 1 首先通过对 jbpm 引擎源代码的研究 了解其工作的机制 2 针对 jbpm 流程设计器存在的问题 选取合适的技术设计和实现一个独立 于开发平台的流程设计器 3 研究 jbpm 引擎在业务流程的实现上存在的不足之处 提出解决方案 并 扩展实现较为复杂的业务 4 最后将对 jbpm 引擎研究运用到一个工作流系统中 检验效果 1 4 论文的组织结构论文的组织结构 本文的正文部分分为六个章节 组织结构安排如下 第一章介绍工作流技术的起源 背景及国内外研究状况 介绍论文研究的问题 和组织结构 第二章阐述了 jbpm 工作流引擎运作机制 包括流程定义 流程调度 流程执 行 对象定义和持久化 第三章介绍利用 flex 技术和 mvc 设计模式实现一个独立于开发环境 可运行 在浏览器上的流程设计器 第四章研究 jbpm 引擎中任务分派机制 针对其不足提出了两种改进的分派方 案 实现了会签和投票的复杂业务流程 第五章介绍一个基于 jbpm 引擎的工作流应用系统的设计和实现过程 其中运 用了前文中的解决方案 第六章回顾本文的研究内容和所做的工作 并根据其不足提出下一阶段的研究 方向 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 7 2 jbpm 工作流引擎的研究工作流引擎的研究 jbpm 全称 java business process management java 业务流程管理 是一个基 于 j2ee 技术规范的开源工作流引擎 由于 jbpm 是轻量级的 容易与 j2ee 企业级 应用系统集成 并且开放源代码 具有了良好的可扩展性 非常适合用来定制个性 化的流程管理系统 目前已成为最受欢迎工作流引擎之一 本文选取 jbpm 引擎作 为研究的对象 对其工作原理的分析是开展课题的基础 2 1 jbpm 工作流引擎的架构和设计工作流引擎的架构和设计 为了指导工作流管理系统的开发 工作流管理联盟给出了工作流的参考模型 如图 2 1 所示 过程定义工具 工作流引擎 工作流api与交换格式 工作流执行服务 接口1 工作流管理 工具 接口2 工作流客户 应用 工作流引擎直接调 用的应用 工作流引擎 其他工作流执行 服务 接口5 接口3 接口4 图 2 1 工作流参考模型 从图 2 1 中可以看出 整个工作流管理系统是围绕着工作流引擎来工作的 一个 完整的工作流管理系统提供了五种接口来实现其各种功能 这些功能的实现都依靠 工作流引擎提供各种服务 工作流引擎在管理系统中占据着核心的位置 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 8 如果将整个工作流管理系统比作一台汽车 工作流引擎就是这辆汽车的发动机 它的表现直接决定了系统的整体性能 根据工作流参考模型归纳出工作流引擎应该 具有的五项基本功能 1 将根据工作流建模方法对经营过程的描述定义转换为计算机能够理解的形 式 2 控制经营过程的执行 经营过程中的每个活动都从属于该过程的一个执行 实例中 工作流引擎要控制过程实例从创建到终止 同时还要控制过程实例中的活 动实例间的转换 主要包括活动的走向操作 相关数据的处理等 3 提供接口 工作流引擎应该提供支持使用者操作的用户接口 用于执行外 部程序的接口以及数据访问接口 4 维护控制流和数据流 工作流引擎应该能够保证经营流程按照定义受控制 地流转 并且将使用者输入的信息按照规定传递给其他使用者 5 监控功能 工作流引擎能够提供给使用者监控流程走向和执行情况的功能 并能对系统中的流程定义进行管理 2 1 1 jbpm 引擎的整体架构引擎的整体架构 在jboss的官方网站www jboss org上可以下载到不同版本的jbpm开发套件包 本文选取的是 jbpm jpdl suite 3 2 3 zip 该文件解压缩后 包括了 jboss 的服务器 编译后的 jar 文件 源文件 用于在 eclipse 开发环境下绘制流程的 designer 插件以及 供学习参考的例子程序 适合开展对 jbpm 工作流引擎的研究 jbpm 工作流引擎的整体架构 28 如图 2 2 所示 jbpm 并没有完全依照工作流管理联盟提出的流程定义语言 wpdl 29 workflow process definition language 的规范来进行流程定义 而是使用了自己定义的 jpdl jbpm process definition language 语言来定义业务流程 将实际的业务流程以工作 流引擎可以理解的计算机化的语言描述出来 当流程发布成功后 jbpm 工作流引擎 将解析流程定义文件中的各类信息 并根据流程定义文件中的内容和一定的规则提 供流程调度服务 选取流程中的任务交由对应的参与者执行完成 与此同时 工作 流引擎还进行流程实例的管理 保存了流程进行中的各种信息 在状态发生变化时 通过 hibernate 框架进行数据的持久化 将信息保存到数据库中 hibernate 是 jboss 下开放源代码的对象关系映射框架 jbpm 组件依赖性小 非常方便集成到其他 j2ee 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 9 的项目中 流 程 定 义 服 务 流 程 调 度 服 务 任务管理 上下文管理 定时器管理 jbpm工作流引擎 工作流实例管理 hibernate数据持久层 数据库 流 程 执 行 服 务 图 2 2 jpbm 工作流的整体架构图 2 1 2 jbpm 引擎的总体设计需求引擎的总体设计需求 jbpm 是基于活动图 activity diagram 建立流程模型的 并在引擎的设计上吸 收了有限状态机 30 finite state machine fsm 和 petri 网 31 的思想 确保流程按照既有的定义 从一个节点运行到另一个节点 并正确执行当前节点 是一个工作流引擎的最主要任务 总体上 引擎要关注下面几个问题 1 工作流程过程的定义 如何用以一套精确完整的定义对象 在表示所定义 的工作流程 2 工作流程的调度 如何提供一种机制 能够保证流程处理复杂的流程图结 构 比如串行 并行 分支 聚合等 同时还要保证流程从一个节点运行到下一个节 点 3 工作流程的执行 当流程运行到某一个节点时 如何解决是否执行此节点 如何执行此节点 并维护和更新节点状态的信息 4 工作流程的实例对象 如何实现流程实例对象来描述模拟流程实例在实际 运行中的状态和结果 下一节将从这四个方面详细介绍 jbpm 工作流引擎的运作机制 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 10 2 2 jbpm 工作流引擎的运作机制工作流引擎的运作机制 2 2 1 jbpm 引擎的流程过程定义引擎的流程过程定义 jbpm 是基于 uml 活动图的方法建立流程模型的 同时也具备了有限状态机和 petri 网的特点 jbpm 使用 jpdl 作为流程定义语言 并在此基础上设计了各个层次 的对象类 jpdl 把经营过程各种情况提炼成七种元素 32 33 分别是 节点 node 转换 transition 动作 action 事件 event 任务 task 泳道 swimlane 和异常处理 exception handler 具体描述如下 1 节点 节点是 jbpm 流程建模语言中最主要也是种类最多的一种元素 节 点元素的主要职能有两种 一种是实现流程的执行功能 通常是在节点内部调用处 理业务逻辑的代码段 另一种是实现流程的调度功能 控制流程的走向 节点根据 不同的类型可以分为九种 34 start state 节点 end state 节点 task node 节点 node 节点 state 节点 decision 节点 fork 节点 join 节点和 process state 节点 各个节 点都有独特的功能意义 start state 节点表示流程的开始状态 每个流程只有唯一的 start state 流程开始 时 表示当前任务的 token 令牌就指向该节点 该节点只能触发执行事件和离开事件 无法触发进入事件 end state 节点表示流程的结束状态 与 start state 不同 每个流程可以有若干个 结束状态 token 令牌进入到 end state 时 当前的流程实例结束 该节点只能触发进 入事件和执行事件 无法触发离开事件 task node 节点表示流程中的任务 即实际工作流程中具体工作 每个 task node 节点能由若干个任务 task 当 token 进入到 task node 时 每个任务生成一个任务 实例 taskinstance 可以分派给指定的参与者 state 节点表示一种等待状态 进入等待状态时流程中断 不会创建任务实例 而是等待当前的 token 收到一个 signal 信号时才继续执行 主要适用于系统在某些环 节上需要等待外部操作命令的情况 decision 节点用来选择流程推进的路径 该节点会通过对条件的判断情况来选取 不同的执行方向 有两种方式来执行条件判断 一种是通过 beanshell script 编写的条 件表达式来判定 另一种是通过实现特定的 decisionhandler 接口 以具体代码的方 式来选择流程走向 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 11 fork 节点用来实现工作流程的并发执行 它将工作流程分解到多个路径上 这 些路径上会拥有自己的 token 令牌 以标记本路径上的执行情况 join 节点用来将工作流中的由 fork 节点 分 出去的路径 合 起来 缺省状 态下 join 节点会在所有分支路径上 token 到达本节点时 激活这些 token 节点的父 token 使得流程可以继续向后推进 node 节点是一个自动节点 该节点的 action 子元素指向一个类名 该类中应该 实现了 actionhandler 接口 系统会自动执行该类中的 execute 方法 实现相应的业 务功能 process state 节点表示该节点是一个子流程 token 到达 process state 节点时 系 统会创建一个子流程 子流程结束后 token 指向下一个节点 2 转换 转换在活动图中连接着两个节点 由源节点指向目标节点 transition 类中有两个属性 from 和 to 分别表示源节点和目标节点 系统会根据 to 属性标明的 名称 选择下一个执行的节点 3 动作 动作表示指向的特定的操作 这些操作以代码的形式分布在系统内 通常是由应用系统的开发者根据业务逻辑所编写 当流程的执行触发了在流程定义 文件中指定的事件 就会执行相应的动作 4 事件 事件某种程度上是节点的一种状态 例如当 token 进入到某一节点 时就会触发一个进入 enter 事件 start state 节点除外 事件和动作相绑定 触发 事件时 就会执行相应的动作 5 任务 任务表示工作流程中的某项具体的工作 比如填写表单 审批请求 等 jbpm 将任务独立出节点来管理 在 task node 节点中可以创建一个或多个任务 实例 分派给指定的参与者来执行 6 泳道 泳道主要是一种确保在一个流程实例中的某些任务必须由相同的参 与者完成的机制 7 异常处理 流程定义的过程中会生成很多代理类 异常处理主要是用来处 理它们抛出的异常情况 2 2 2 jbpm 引擎的流程调度机制引擎的流程调度机制 jbpm 工作流引擎在流程的调度方面借鉴了 petri 网中有关令牌的思想 它是采 用令牌 token 在表示当前流程实例执行到的具体位置 而流程的推进是以令牌在 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 12 不同的节点间转移来代表的 当一个业务流程开始执行时 jbpm 工作流引擎会根据流程定义 process definition 文件创建该流程的一个流程实例 process instance 流程实例具有一个指 向流程开始节点的根令牌 root token 流程的调度就是发生在该流程实例上的一些 操作 有两种操作可以促使流程向下执行 第一种是流程实例调用 signal 方法 第二 种是执行当前任务实例的 end 方法 这两种方法本质上都是调用了当前令牌的 signal 方法来完成的 当前令牌调用 signal 方法后 将信号传给令牌指向的当前节点 并由 当前节点确定离开的转换 并将令牌传递给这个转换 转换将令牌迅速传递给自己 的目的节点 此时 令牌的位置已经发生了变化 实现了流程的调度过程 图 2 3 描 述了 jbpm 引擎的流程调度过程 token signal 确定转向的transition 确定移交的executioncontext 对象 离开当前节点node leave transition接受 executioncontext 把executioncontext对象转移到 transition对象上 把executioncontext对象移交 给下个一个node token绑定当前节点 执行节点node execute 执行完节点 继续往下推进 图 2 3 jbpm 引擎流程调度示意图 2 2 3 jbpm 引擎的流程执行机制引擎的流程执行机制 jbpm 引擎的流程执行机制用来确保流程被正确的执行 流程的执行也是通过调 用节点的 signal 方法完成的 其中包括了确定转向的 transition 确定移交的 executioncontext 对象 执行离开当前节点的 node leave 事件 transition 接受 executioncontext 对象 最后执行节点的 execute 方法 jbpm 为了实现各种功能定义 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 13 了具有不同执行方法的对象 这些对象都继承自 node 对象 并复写了 execute 方法 在实际运行中由于 java 语言面向对象的多态机制 会根据不同的对象执行各自代码 之后 token 指向下一个节点对象 图 2 4 描述了 jbpm 引擎的流程执行过程 token signal 确定转向的transition 确定移交的executioncontext对象 离开当前节点node leave transition接受executioncontext 执行节点node execute startstate execute tasknode execute fork execute join execute decision execute endstate execute 后续 transition 满足条件 transition 执行完节点 继续往下推进 图 2 4 jbpm 引擎的流程执行示意图 2 2 4 jbpm 引擎的流程实例对象引擎的流程实例对象 jbpm 用来描述流程的对象主要定义在 org jbpm graph def 和 org jbpm graph exe 两个包中 一个流程 process 主要是的各种节点 node 和转移 transition 组 成 jbpm 中的 node 类和 transition 类都继承自一个抽象类 graphelemenet graphelemenet 还派生了用来描述整个流程定义的 processdefinition 类和表示任务的 task 类 node 类派生了各种子类表示不同的节点类型 除此之外 还有表示一个流 程执行实例的 processinstance 类和用来保存执行环境的 executioncontext 对象 主要 的实例对象如图 2 5 所示 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 14 class class model graphelement events map exceptionhandlers list name string processdefinition processdefinition transition from node to node node arrivingtransitions set leavingtransitions list task description string name string to node processdefinition actions map definitions map nodes list startstate endstate joinforkdecisiontasknode taskinstance description string name string task task processinstance name string processdefiniton processdefinition 图 2 5 jbpm 引擎的实例主要对象关系图 2 3 jbpm 工作流引擎的持久化工作流引擎的持久化 实际中的很多大型工程的工作流程结构复杂任务繁多 不可能在短时间内完成 因此 jbpm 必须具备对流程执行情况持久化的功能 就是要将流程执行的状态保存 在数据库中 图 2 6 流程定义的数据转换图 同一个工作流程定义在不同运行时期数据表现形式不同 可以分为三个阶段 在流程设计阶段 工作流程以 xml 文件形式定义 在流程运行阶段 jbpm 引擎将 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 15 流程定义从 xml 文件的形式解析为组成流程的实例对象 这些对象都是 java 类 在流程保存阶段 jbpm 引擎根据流程执行中的实际数据信息将实例对象通过 hibernate 映射到数据库中 整个过程如图 2 6 所示 jbpm 使用 hibernate 框架来管理数据的持久化过程 自身更关注流程建模定义 方面的设计 35 jbpm 提供了一系列的基于 hibernate 的访问数据库的接口 利用这 些接口可以很容易地实现对流程数据的读写和查找等操作 jbpm 持久化接口的结构 如图 2 7 所示 service factories hibernate sessionfactory dbpersistenceservicefactory jbpmconfiguration jbpm xml cfg配置 线程共享 创建 jbpmcontext 线程独享 service dbpersistenceservice hibernate session 图 2 7 jbpm 持久化接口结构图 jbpmconfiguration 维护一个 servicefactory 的集合 这些服务工厂都配置在 jbpm cfg xml文 件 中 并 且 都 是 延 时 实 例 化 其 中 的 一 个 服 务 工 程 dbpersistenceservicefactory 管理着一个 hibernate sessinonfactory 这个工厂在第一 次请求时才被延迟创建 这些对象都是单件模式 36 为所有线程共享 jbpmconfiguration 调用 createjbpmcontext 方法时 创建一个线程独有的 jbpmcontext 对象 但是它管理的服务对象在第一次使用时才延迟实例化 其中的 dbpersistenceservice管理hibernate session对象 利用该对象进行持久化的具体操作 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 16 2 4 本章小结本章小结 本章主要结合工作流管理联盟提出的工作流参考模型 介绍了 jbpm 引擎的整 体架构 分析了 jbpm 引擎的功能需求 并从流程过程的定义 流程的调动机制 流程的执行机制和流程实例对象四个方面详细介绍了jbpm工作流引擎的工作原理 最后介绍了 jbpm 引擎的持久化的实现 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 17 3 基于基于 flex 的流程设计器的设计与实现的流程设计器的设计与实现 在工作流技术的研究和开发中 最初的步骤就是将工作流程转换为工作流引擎 可以识别解析的流程定义语言 流程设计器就是用来完成这一过程的工具 流程设 计器普遍是具有良好用户交互功能的图形绘制工具 并将流程图信息自动转换为目 标文件 本章分析了 jbpm 开发包中自带的流程设计器的不足 并介绍使用 flex 技 术 设计和实现了一个流程设计器的过程 3 1 流程设计器的研究和技术选型流程设计器的研究和技术选型 3 1 1 jbpm 流程设计器的问题分析流程设计器的问题分析 在 jbpm jpdl suite 3 2 3 zip 开发包解压缩后的文件中 designer 目录下是一个自 带的 eclipse 开发环境下的流程设计器插件 将该插件安装到 eclipse 开发环境后 就 能够在新建选项中选择新建 jboss jbpm 工作流项目 在工程目录 src main jpdl 下可 以对流程定义文件 processdefinition xml 以图形化界面的方式进行编辑 其操作界面 如图 3 1 所示 图中的流程为开发包中 bussinesstrip 样例中的流程 图 3 1 jbpm designer 使用界面图 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 18 jbpm 流程设计器功能丰富 能够淋漓尽致地表现出 jbpm 引擎用来定义流程的 jpdl 的各种元素 属性的特点 最大限度地发挥 jbpm 引擎的设计优势 同时它也 具有非常良好的用户体验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论