




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*大学本科毕业论文 基于j2ee的工作流引擎技术的研究与实现院(系)名 称: 专 业 名 称 : 学 生 姓 名 : 指 导 教 师 : 年 月 摘 要 工作流技术为工作流自动化和构建流程应用提供基础平台,实现了流程逻辑与业务逻辑的分离,支持业务流程的分析和规范化定义以及业务单元的自动组装,降低了复杂流程应用的开发难度,提高应用系统的管理效率。在工作流管理联盟 (workflow management coalition,wfmc) 给出的参考模型中,工作流引擎是工作流管理系统的核心,是企业经营过程的任务调度器和企业资源分配器。在采用工作流支持其经营过程的企业,工作流引擎可以看成是企业的业务操作系统,它的功能包括解析过程定义、创建过程实例并控制其执行、调度各项活动等,因此工作流引擎的性能和可靠性就直接决定了企业经营过程的运行效率和安全性。论文首先介绍了工作流相关概念、应用领域,以及工作流引擎的分析与设计;然后描述了jbpm的工作原理,详细介绍了oa系统公文流转部分的实现;最后,给出对工作流引擎开发的总结和展望。关键词:工作流;工作流引擎;oa;javaee abstract the workflow technology provides the foundation platform for the workflow automation and the construction of application. it has realized the separation of the process logic and the business logic. it supports the analysis of business process and the standardized definition as well as the automatic assembly of service unit. and it reduces difficulty of the development of the complex application. it raises managerial effectiveness of application system.according to the reference model giving by the organization of the workflow management coalition, workflow engine is the core of workflow management system, which is the task scheduler and distributor resources of the enterprise business process. in the enterprise of which business process supported by workflow, workflow engine can be seen business operating system of the enterprise, which interprets the process description, controls the instantiation of processes and sequencing of activities, and so on. therefore the performance and reliability of workflow engine determine the efficiency and security of the enterprise business process directly. this paper firstly introduces relevant theory and applied field of workflow, and the analysis and design of workflow engine. and then the paper explains the principle of the workflow engine jbpm (java business process management) and the detail implementation of the operation of the document. finally, the summary and the prospect of the workflow engine software are given. key words: workflow; workflow engine; oa ;javaee目 录第1章 绪 论11.1 研究背景和意义11.2 研究现状21.3 研究内容2第2章 工作流相关理论和技术32.1 工作流起源和发展32.2 工作流定义及相关概念42.3 工作流管理系统62.3.1工作流管理系统的基本概念及定义62.3.2工作流管理系统的体系结构72.3.3工作流管理系统的分类82.3.4当前主要的工作流管理系统介绍92.4 研究现状10第3章 工作流引擎的分析与设计113.1 工作流引擎在工作流管理系统中的作用113.2 工作流引擎体系结构的分析与设计113.3 工作流引擎分析133.3.1引擎的机构模型133.3.2引擎的过程模型143.3.3引擎的控制模型143.4 工作流引擎设计143.4.1流程定义静态模型设计143.4.2流程定义数据库结构设计153.4.3流程执行静态模型设计173.4.4流程执行数据库结构设计183.5 本章小结20第4章工作流引擎jbpm的原理214.1jbpm简介214.2jbpm的功能和组件结构214.3 jbpm的程序结构234.4 本章小结24第5章 jbpm应用于企业办公自动化系统的实现255.1 oa企业办公自动化背景介绍255.2 基于struts, hibernate, jbpm的javaee平台的搭建255.2.1 myeclipse集成开发环境255.2.2 javaee多层体系结构265.2.3 struts 1.2框架265.2.4 hibernate 3.1框架275.2.5 jbpm的引入275.3 系统公文流转的实现285.3.1 系统jbpm部分的需求分析2流程管理模块2公文管理模块325.3.2 系统jbpm部分的设计3流程管理3公文管理405.3.3 流程建模4流程的定义4流程的发布505.3.4 公文的流转5 公文的创建5 查看待审公文5 公文的审批5 查看公文的进度575.4 本章小结60第6章 总结与展望61参考文献62第1章 绪 论1.1 研究背景和意义工作流的概念起源于生产组织和办公自动化领域,提出的目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高工作效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标。工作流技术是实现企业业务过程建模、业务过程仿真分析、业务过程优化、业务过程管理与继承,从而最终实现业务过程的自动化的核心技术。对企业利用工作流方法进行业务过程的建模和深入分析不仅可以规范化企业的业务流程,发现业务流程中不合理的环节,进而对企业的业务过程进行优化重组,而且所建立的业务过程模型本身就是企业非常重要的知识库和规则库,可以成为指导企业实施计算机管理信息系统的模型。在深入分析企业需求基础上建立的企业业务模型可以在最大程度上提高企业实施erp或者其他管理信息系统的成功率。所以,大力发展并推广工作流技术对于促进我国企业管理规范化和信息化有重要的现实意义。随着世界范围内web技术和电子商务应用以及国内的政府上网的飞速发展,采用浏览器/服务器(b/s)模式的软件系统己成为当前应用软件系统发展的趋势。对web技术的支持给用户使用带来了很多方便,用户无需在客户端安装专门软件就可以调用工作流服务器端的功能,交互界面风格统一,易于使用,特别适合于跨平台的分布环境。 javaee(java enterprise edition)是j2ee的一个新的名称,是开放的、基于标准的平台,用于开发、部署和管理n层结构,面向web的、以服务器为中心的企业级应用。javaee出现以来,取代了多种专用的和非标准的技术,成为人们建立电子商务及其他基于web的企业应用程序的首选技术。正是由于javaee有这么多的优势,所以,以javaee作为开发平台和运行平台来构建工作流系统是理想的选择1。1.2 研究现状随着各种各样采用新技术的系统的推出,目前工作流系统的应用得到了越来越广泛的应用,但是总得来说工作流系统的应用还是处于一个相对拘谨的状态,根本原因就是当前的工作流系统存在着各种各样的缺陷或者说不足:1. 成本较高,需要构筑底层环境。目前能够实现分布计算环境的产品来看,他们在实际应用中仍然显得不够成熟,而且在价格上也给企业造成一定的负担。企业若想部署工作流管理系统,还必须要格外付出经费与精力去构筑底层环境,这种情况是企业所不希望的,实际上它也限制了工作流管理系统在企业的广泛应用。2. 标准化程度差,增加学习难度。不同的厂商所提供的工作流产品具有自己独立的一套工作流模型、工作流定义语言以及api函数。在缺乏标准的情况下,用户一旦选定一种产品之后,就很难再过渡到其它同类产品上了;而且不同的系统之间缺乏互操作的接口,使得用户有很多后顾之优。3. 当前工作流引擎大多集中在解决大型企业级应用的问题上,往往因追求大和全而显得笨重,因此不适用于中小型的应用。4. 工作流技术尚不成熟。目前没有一种工作流产品或原形系统能够在过程执行的可靠性达到与关系数据库管理系统同水平的功能1。1.3 研究内容基于上述考虑,本课题主要进行以下研究:1. 研究工作流相关技术和理论。2. 研究工作流引擎的常见模型与实现技术。3. 研究jbpm工作流引擎的原理和使用方法。4. 运用jbpm工作流引擎实现企业办公自动化系统的公文流转功能。第2章 工作流相关理论和技术2.1 工作流起源和发展工作流的概念最早起源于办公自动化,是人们为了提高办公效率,针对日常工作中具有固有程序的活动而提出的一个概念2。八十年代初期,在pc机尚未作为信息处理工具而出现的时候,纸张是各行各业中进行日常业务活动所不可替代的载体,但是这种古老的载体在信息处理、组织、存储以及查询检索方面都是很低效的。因此,人们希望出现一种无纸化的、计算机使能的工作环境。八十年代中期,file net和view star等公司率先开拓了工作流产品市场,成为最早的一批工作流产品供应商。它们把图像扫描、复合文档、实例跟踪、关键字检索以及光盘存储等功能结合起来,形成了一种全过程支持某些业务流程的集成化的软件(包),这便是早期的工作流管理系统。由此,我们可以看出,工作流从最初的诞生之日起就是作为一种面向过程的系统集成技术出现的,只不过限于当时的计算机技术发展水平,它所集成的功能较为简单而己3。进入九十年代,随着计算机的普及、网络的延伸,现代企业的信息资源越来越表现出一种异步、分布、松散藕合的特点,企业的分布性、决策制定的分散性、对日常业务详尽信息的需求以及client/server体系结构、分布式处理技术(corba、www、ole、ajva)的日益成熟,都说明了集中式信息处理的时代已经过去,实现大规模的异构分布式执行环境,使得相互关联的任务能够高效运转、并接受密切监控已成为一种趋势。在这种不可抗拒的技术背景下,工作流管理系统也由最初的创建无纸办公环境,转而成为同化企业复杂信息环境、实现业务流程自动执行的必要工具。这样的一个转变,把工作流技术带入了一个崭新的发展阶段,使得人们从更深的层次、更广的领域上对工作流展开了研究4。工作流技术的标准化组织工作流管理联盟(workflow management coalition, wfmc)于1993年成立。它的成立标志着工作流技术在计算机应用研究领域之中被明确地划分出了自己的一席之地,相应的概念与术语也得到人们的承认,工作流技术开始进入相对成熟的阶段。目前,在全球范围内,对工作流的技术研究以及相关的产品开发进入了更为繁荣的阶段,更多更新的技术被集成进来,文件管理系统、数据库、电子邮件、移动式计算、internet服务等都已被容纳到工作流管理系统中5。2.2 工作流定义及相关概念由于工作流技术仍在不断的发展,处于不断的完善阶段,所以到目前为止,对于工作流仍然没有完全统一的定义。工作流管理联盟(workflow management coalition, wfmc)对工作流的定义是: 工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程、规则、文档、信息或任务能够在不同的执行者之间传递、执行4。另外,不同的研究者和工作流产品供应商也从不同的角度对工作流概念进行了描述:1. georgakopoulos的定义4工作流是将一组任务(task)组织起来完成某个经营过程。在工作流中定义了任务的触发顺序和触发条件。每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。任务的触发顺序和触发条件用来定义并实现任务的触发、任务的同步和信息流(数据流)的传递。2. ibm almaden research center的定义6工作流是经营过程的一种计算机化的表示模型,定义了完成整个过程所需用的各种参数。这些参数包括对过程中每一个单独步骤的定义、步骤间的执行顺序、条件以及数据流的建立、每一步骤由谁负责以及每个活动所需要的应用程序。3. 我国清华大学范玉顺教授,吴澄院士等人的定义4工作流是一种反映业务流程的计算机化的模型,它是为了在先进计算机环境支持下实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型。以上这些对工作流的定义是用非形式化语言对工作流所进行的描述,虽然各有不同,但基本上都达成了这样的一个共识:工作流是经营过程的一个计算机实现,而工作流管理系统就是这一实现的软件环境。相对于一般流程,工作流具有以下特点5: 1. 计算机管理:工作流管理是由计算机管理的企业业务流程,而不是手工管理的流程,也不是部分步骤由计算机来完成的计算机应用。2. 自动流转:流程实现任务及任务信息在流程参与人间的自动流转,而无需手工指派任务(当然在必要时也可进行手工指派)。3. 流程有显式或隐式的计算机定义:定义明确描述了流程在计算机上执行所需的一切信息。下面简要介绍下与工作流相关的一些基本概念及其联系7,如图2-1所示。1. 流程定义(process definition):业务流程的形式化描述,用于支持系统建模和运行过程的自动化。流程可分解为一系列子流程和活动,其定义主要包括描述流程起始、终止的活动关系网络,以及一些关于个体行为的信息,如组织成员、与it相关的应用和数据等。2. 活动(activity):实现流程逻辑步骤的一项工作任务的描述,一般分为手工操作和自动处理两类,是过程执行中可被工作流引擎处理的最小工作单元。3. 工作流参与者(workflow participant):可执行流程活动实例的资源,可分为人员、组织、角色和(机器)资源四类。4. 流程/活动实例(process/activity instances):实际运行中的一个流程或活动,每个实例代表一个能独立控制执行、具有内部状态的线程。5. 工作流引擎(workflow engine):为流程/活动实例的运行提供执行环境的软件服务,提供按照流程定义来执行流程的功能。一个或多个工作流引擎构成了一个工作流域。6. 工作项(work item):被工作流参与者执行的活动实例的表示,一个活动实例通常产生一个或几个工作项,工作项通过赋予相关参与者的工作列表而被参与者所感知。7. 工作列表(work list): 流程参与者所拥有的用于感知流程工作项的列表,是工作列表处理器(worklist handler)与工作流引擎的接口。图2-1 工作流基本概念间的关系2.3 工作流管理系统2.3.1工作流管理系统的基本概念及定义wfmc对工作流管理系统的定义是:工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行1。通常,工作流管理系统指运行在一个或多个称为工作流引擎的软件上的一套软件系统,用于定义、实现和管理工作流运行,它和工作流执行者交互,推进工作流实例的执行,并监控工作流的运行状态。需要注意的是,工作流管理系统不是企业的业务系统,它是为企业的业务系统运行提供一个软件支撑环境,非常类似于在单个计算机上的操作系统。在工作流管理系统的支撑下,通过集成具体的业务应用软件和操作人员的界面操作,能够良好地完成对企业经营过程运行的支持。按照经营过程以及组成活动的复杂程度的不同,工作流管理系统可以采取许多种实施方式,在不同的实施方式中,所应用的信通信技术和支撑系统结构会有很大的差别。工作流管理系统的实际运行是在一个工作组内部或者在全企业的所有业务部门1。虽然不同的工作流管理系统具有不同的应用范围和不同的实施方式,但是具有许多共同的特性。从较高层次上来抽象地考察工作流管理系统,会发现所有的工作流管理系统都是提供了三种功能: 1. 过程定义与设计:主要考虑工作流过程和相关活动的定义和建模功能。2. 过程实例化与控制:在一定的运行环境下,执行工作流过程,并完成过程中活动的排序和调度功能。3. 机交互:实现各种活动执行过程中用户与it应用工具之间的交互。2.3.2工作流管理系统的体系结构wfmc提出的工作流管理系统的体系结构模型如图2-2所示。这个体系结构模型给出了抽象的工作流管理系统的功能组成部件和接口,它能够满足工作流管理系统和产品所应该具有的主要功能特征,可为实现工作流产品之间的互操作提供公共的基础2。需要指出,组成工作流管理系统的每个功能部件可以在不同的软硬件平台上采用不同的方法实现,同样接口也可以在不同的软硬件平台上采用不同的设计技术和编程语言进行编程4。从图2-2可以看出,工作流管理系统主要由三类构件组成,这三类构件分别是8:1. 软件构件:完成工作流管理系统不同组成部分功能的实现。2. 系统控制数据:工作流管理系统中的一个或多个软件构件使用的数据。3. 应用与应用数据:对于工作流管理系统来说,它们不是工作流管理系统的组成部分,而是属于外部系统和数据,它们被工作流系统调用来完成整个和部分工作流管理的功能。图2-2工作流管理系统的体系结构模型2.3.3工作流管理系统的分类工作流管理技术是当前的研究和开发的热点之一,并相应的产生了大量的工作流管理系统及其产品。根据所实现的业务过程,可将工作流管理系统分为四类5:1. 管理型工作流:在这类工作流中活动可以预定义,并且有一套简单的任务协调规则。2. 设定型工作流:与管理型工作流相似,但一般用来处理异常或发生机会比较小的情况,有时甚至是只出现一次的情况,这与参与的用户有关。3. 协作型工作流:参与者和协作的次数较多,在一个步骤上可能反复发生几次直到得到某种结果,甚至可能返回到前一阶段。4. 生产型工作流:实现重要的业务过程的工作流,特别是与业务组织的功能直接相关的工作流。与管理型工作流相比,生产型工作流一般应用在大规模、复杂的和异构的环境下,整个过程涉及许多人和不同的组织。 根据底层实现技术,可将工作流产品分为三类:1.以通信为中心:以电子邮件为底层的通信机制。这种类型的工作流系统适合于协作型工作流和不确定型工作流,而不适合生产型工作流。2.以文档为中心:基于文档路由,它同外界应用的交互能力有限。许多基于表的管理型工作流可以用以文档为中心的工作流实现。3.以过程为中心:这种工作流对应生产型工作流。它们一般建立在数据库之上,有自己专用的通信机制,并且提供了同外部进行交互的接口。2.3.4当前主要的工作流管理系统介绍1.jboss的jbpmjbpm是一个灵活可扩展的工作流管理系统,可以很容易的嵌入到其它系统中去。作为jbpm运行时server端输入的业务流程使用简单强大的语言表达并打包在流程档案中。jbpm将工作流应用开发的便利性和杰出的企业应用集成(eai)能力合了起来,它包括一个web应用程序和一个日程安排程序。同时jbpm是一组j2se组件,可以作为j2ee应用集群部署,jbpm的持久层采用的是jboss的hibernate。2. enhydra的sharkshark是完全基于wfmc规范的,可扩展功能的工作流管理系统,它使用xpdl作为工作流定义语言,同时还包括服务器端的用于活动节点执行的wfmc工具代理api。shark中的每个组件例如持久层、事务管理器、脚本引擎、流程库,都是可以按照标准实施运用的,而且还可以被具体项目的模块扩展和替换。shark的持久层采用的是enhydra的ods(dynamic operational data store)来实现。3.pensymphony的osworkflowosworkflow是建立在fsm(finite state machine,有限状态机)理论的上的,它的最大特点是灵活,具有相当大的韧性,可以满足大型应用的所有需求。osworkflow是只有一个workflow engine的内核体,因此非常容易扩展。osworkflow的持久层比较灵活,可以是serializable store、jdbc store和ebjstore,另外还可以自己实现。4.objectweb的bonitabonita是一个符合wfmc规范、灵活的协同工作流系统。对于各种动作如流程概念建模、定义、实例化、流程控制和用户交互等都提供了全面的集成图形工具。100%基于浏览器、使用saop和xml数据绑定技术的web services封装了己有的工作流业务方法,并可将它们己基于j2ee的web services形式发布。5.fbiz的ofbizofbiz是一个非常著名的开源项目,提供了创建基于最新j2ee/xml规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类web应用系统的框架。ofbiz最主要的特点是ofbiz提供了一整套的开发基于java的web应用程序的组件和工具,其中包括实体引擎、服务引擎、消息引擎、工作流引擎、规则引擎等。6.gbross的bossabossa是一个速度非常快、轻量级的引擎,使用富有表达能力的petri网定义工作流,不要求关系数据库,使用简单,能和java应用集成。事实上,它是按嵌入式标准设计的。7.artcomps的twistertwister的目标是提供新一代、易集成、应用java领域中最新成果、面向b2b的工作流解决方案。流程引擎基于bpel业务流程规范和web service标准。上述列出的当前主要的工作流管理系统当中,jbpm、shark和osworkflow并称为当前三大主流的工作流管理系统。通过对它们的分析比较,发现jbpm是一个非常优秀的开源项目,而且持久层用的也是当前非常流行的jboss的hibernate,与jboss应用服务器有很好的兼容性,并且更新速度很快,目前已经到达4.0版本,因此决定把jbpm作为开发的工作流管理系统。2.4 本章小结本章介绍了工作流的起源与发展、工作流的定义及相关概念、工作流管理系统的基本概念及定义、体系结构、分类,然后列举了当前主流的几种工作流管理系统。第3章 工作流引擎的分析与设计3.1工作流引擎在工作流管理系统中的作用工作流引擎是工作流管理系统的核心,它为工作流实例提供运行环境,包括流程图的解释、资源的分配,逻辑的控制等,其主要作用体现在如下两方面:一、 工作流引擎是流程的状态转换机。工作流管理系统是一个以过程为中心的系统,所有的运行都是数据驱动的。对于一个流程来说,每个逻辑单元都代表着一个流程的实际业务的逻辑功能。在流程实例的生存期内,状态是重要的控制数据。它通过改变当前的流积实例的状态,控制应用的工作状态。在工作流逻辑中,状态的转换是按照一定的规则进行。工作流引擎的任务就是按照定义的规则控制实例的状态转换。二、 工作流引擎是流程的路由控制器。一个流程对应着一条实际流转的业务,流程的流转路线受当前实例数据的控制。流程定义时就指定了流程的流转规则。一般情况下,这些规则是根据流程实例的数据制定的公式。引擎的作用是对这些公式规则进行解释,找出流程下一步的流向,进行实例逻辑处理,使流程向下流转9。3.2工作流引擎体系结构的分析与设计根据前边工作流引擎的功能,我们分析工作流引擎应该有以下几部分组成: 解析器(parser)、流程管理 (process manager)、执行器(executor)、任务分派 (task assigner)和客户端接口 (client interface),除以上基本功能模块外,柔性工作流引擎还包括动态修改模块。体系结构如图3-1所示: 图3-1工作流引擎体系结构建模工具提供引擎执行的来源xml文件格式的工作流模板,在引擎运行时系统管理员可以通过监控台与引擎进行交互,整个运行过程中所需的人员等资源信息由企业资源模块提供;在业务处理端,工作流用户具体处理引擎分派的任务。引擎访问数据库是通过单独的数据库访问接口进行。l)解析器解析器的作用是将描述工作流模板的xml文件解析成能够被引擎执行调用的模板对象,并将其持久化。模板是以xml文件的格式保存于工作流模板库中,模板对象是一个复杂的java对象,它是流程执行的基础。解析的结果最终通过数据库被持久化存储。2)流程管理模板实例化操作产生的模板实例称为流程。流程是工作流系统中一个主要概念,是引擎主要管理的对象。流程管理模块要负责流程的生命周期管理,包括对流程进行启动、挂起、恢复和停止操作。而且所有与流程相关的实例信息都由这个模块提供。根据数据局部化原则,流程管理模块还维护cache,其中存放最近使用的工作流模板。模板相对于流程来说是静态信息,所以这个cache中不会有数据不一致的问题。流程管理模块在构造实例信息时就无需从数据库中读取,直接从内存中即可获得原始信息。3)执行器执行器是引擎的核心部分,负责流程中节点实例的具体执行。它通过解析节点中定义逻辑,与外部资源交互完成具体业务,解析路由规则为流程和节点的执行进行导航。并且节点可指定不同的事务属性,执行器中有一个ejb定义了对应的j2ee事务属性的节点执行方法,实现对事务的支持。4)任务分派任务分派模块是为需要人工执行的任务节点分派合适的执行者,这是工作流的一个主要功能。如果执行器是解析具体的企业业务规则,那么任务分派则是解析企业的人力资源分派规则。任务分派所用的人员组织信息是由引擎外部的企业资源模块提供,引擎中不包含这些信息是因为实际企业的组织信息复杂多变,引擎无法抽象出统一的模型。企业根据需要定制其组织结构,引擎只需根据定义的接口获取其所需信息。5)客户端接口客户端接口是引擎与外部系统交互的中介,在wfmc定义的工作流参考模型中,工作流引擎通过5个接口为整个工作流管理系统服务。工作流引擎与外部系统交互是通过客户端接口模块中的一些ejb和预定义接口实现的。外部系统要调用引擎的功能必须通过相应ejb提供的api,如果引擎要使用外部应用,则外部系统必须实现相应的引擎预定义接口10。3.3工作流引擎分析工作流引擎在运行时的主要任务是解释流程图,负责控制流程实例、活动、工作项的状态转换,处理流程实例、活动、工作项之间逻辑关系以及负责数据在各个步骤之间的传递。下面结合工作流引擎的机构模型、过程模型和控制模型,对引擎的工作原理进行详细的分析9。3.3.1引擎的机构模型机构模型描绘的是指组织的层次结构和部门结构,也被称为组织结构模型。其中层次结构反映的是各管理层次的构成,又称组织的纵向结构,而部门结构反映的是每个管理部门的具体构成,又称组织的横向结构。 由于机构模型是对现实世界客观反映,因而通常被分为: 组织机构、岗位、角色、群组、人员等组织机构实体。但如果对现实世界的机构模型进行抽象的话,我们就会发现: 角色、岗位、群组三者反映的都是“人员的集合”这个概念,并无明显的区别。类似的抽象过程也可以运用到组织机构和组织单元一者之间的关系上面,采用嵌套式的递归过程是完全可以将二者合并为同一个概念的。这里的话我们在工作流引擎中用swimlane来表示用户角色概念。简化了的机构模型不仅可以增进用户的理解,还可以提高工作流引擎对机构模型的解析速度,提高引擎的运行效率9。3.3.2引擎的过程模型根据建模提供的流程模型,引擎支持的过程结构包括顺序,选择,并发等,实际上就是流程定义模型的实例化9。3.3.3引擎的控制模型流程实例,活动和工作项通过状态来反映业务的处理情况。而其中又包括工作流流程实例状态和各个活动实例状态9。3.4工作流引擎设计引擎主要处理的是实现流程、活动和工作项三类逻辑对象之间的逻辑关系和相互的约束。其中流程以流程定义为参照,活动以活动定义为参照,工作项以活动为参照。它们共同协作完成整个系统的逻辑功能9。3.4.1流程定义静态模型设计流程实例是流程定义的一次动态执行过程。根据流程定义的划分,活动包括开始活动,结束活动,任务活动,子流程活动,与分支活动,或分之活动。 其中与分支活动、或分之活动都是逻辑上的概念,也就是说他本身不是一个具体的执行过程,而是流程路由选择判断的依据。他们不会被持久化写入数据库中。根据上文提到的流程定义的四个层次:活动(activity)、上下文(context), 程序逻辑(programming logic)和用户界面(ui)层,在引擎类设计中也可对应为几个部分: 1)过程模型类:基类为node,这里抽象为一个接口,包括上文介绍的与节点,或节点,判断节点,原子活动节点,子活动节点和标志节点(开始,结束节点)命名为join, fork, decision, activity, startactiv, endactiv, processactiv。 2)机构模型类:swimlane,代表流程参与者的角色。 3)上下文变量类:variable,代表流程执行过程中的相关数据。 4)路由拓扑类:transition,代表活动与活动间的连接弧。 5)事件类型类:eventtype,代表流程执行中的各种类型事件,如流程启动,流程结束等9。 3.4.2流程定义数据库结构设计在部署一个流程时我们需要将transition, node, definition, swimlane等信息写入数据库,其表结构如下9。1. 流程定义表 definition:如表3-1所示,记录了一个流程定义的基本信息,描述,版本。表3-1 流程定义表 definitiondefinitionidnumber(20)pknamevarchar2(255)descriptionvarchar2(255)versionnumber(20)startstatenumber(20)2. 节点表 node:如表3-2所示,记录了节点基本信息。表3-2 节点表 nodenodeidnumber(20)pknodevarchar2(255)namevarchar2(255)descriptionvarchar2(255)assignmentrequirednumber(1)stateauthenticationvarchar2(255)3. 机构模型表swimlane:如表3-3所示,记录了模型角色基本信息,如名称,描述,属于哪个流程等。表3-3 机构模型表 swimlaneswimlaneidnumber(20)pknamevarchar2(255)descriptionvarchar2(255)definitionnumber(20)delegationnumber(20)4. 路由拓扑表transition:如表3-4所示,记录了连接弧基本信息,包括上一节点id,下一节点id,所属流程等。表3-4 路由拓扑表 transitiontransitionidnumber(20)pknamevarchar2(255)descriptionvarchar2(255)definitionnumber(20)from_number(20)to_number(20)5. actor身份表delegation:如表3-5所示,任何一个actor(或叫参与者)都需要一个delegation类判别他属于哪个actor。表3-5 actor身份表 delegationdelegationidnumber(20)pkclassnamevarchar2(255)configurationvarchar2(4000)3.4.3流程执行静态模型设计工作流的执行采用令牌(token)和信令(signal)技术,理论基础是petri网。 流程运行过程中,引擎用一个令牌(token)作为指针跟踪流程的状态。令牌记录的是一个流程实例的执行过程,当令牌到达一个活动时,它被分配给工作流系统等待的外部参与者。外部参与者可以是个人、组织或者计算机系统。我们定义流程运行的执行人或系统为“参与者”(actor)。只有在工作流系统将令牌分配给一个参与者时,才需要访问组织机构信息。token的流转如图3-2所示。图3-2 token流转示意图3.4.4流程执行数据库结构设计流程执行过程中,与流程相关的信息需要持久化,譬如流程实例,token状态等,我们设计的数据库结构大致如下所示,这里只列出部分的表结构。1. 令牌表token:如表3-6所示,记录令牌信息,主要属性包括所属流程实例,actor,处于哪个活动。表3-6 令牌表 tokentokenidnumber(20)pknamevarchar2(255)processinstancenumber(20)parentnumber(20)activitynumber(20)actoridvarchar2(255)start_dateend_datereactivationjoinnumber(20)subprocessinstancenumber(20)laststatelognumber(20)2. 流程实例表processinstance:如表3-7所示,记录流程实例信息。表3-7 流程实例表 processinstanceprocessinstanceidnumber(20)pkdefinitionnumber(20)start_dateend_date3. 变量实例表variableinstance:如表3-8所示,变量即流程相关数据,变量实例也就是变量(variable)的实例化。表3-8 变量实例表 variableinstancevariableinstanceidnumber(20)pknamevarchar2(255)serializedvaluevarchar2(4000)defaulttypevarchar2(255)4. 工作项表job:如表3-9所示,记录用户工作列表信息。表3-9 工作项表 jobjobidnumber(20)pkduedatedatereferencevarchar2(255)5. 动作表action:如表3-10所示,这里的动作指的是用户进入活动,退出活动或流程流转到一个逻辑节点。表3-10 动作表 actionactionidnumber(20)pkeventtypevarchar2(255)element_typevarchar2(255)elementnumber(20)indexnumber(20)3.5本章小结本章介绍了工作流引擎在工作流管理中的作用,工作流引擎体系结构的分析与设计,然后分类介绍了工作流引擎的三种模型,以及工作流引擎的设计,包括静态模型设计和数据库结构设计。虽然这些分析和设计并不完备,但描述了工作流引擎设计的核心思想。第4章工作流引擎jbpm的原理4.1 jbpm简介jbpm,全称是java business process management,是基于j2ee的轻量级工作流管理系统。jbpm是公开源代码项目,它的使用要遵循apache license,可以免费应用于商业开发。jbpm在2004年10月18日,发布了2.0版本,并在同一天加入了jboss,成为了jboss企业中间件平台的一个组成部分,它的名称也改成 jboss jbpm。现在的最新版本是4.0。jbpm具有以下几个特点:jbpm采用的jpdl (jbpm process definition language)流程描述语言,这种语言使用简单而功能强大,它使得业务分析人员与软件开发人员都能很直观的与软件进行交互,从而有助于获得高效的业务解决方案。jbpm采用java语言实现,其核心功能都被封装作为一个简单的java库,提供了对外交互的api,开发人员可以很方便地在其之上进行功能扩展。jbpm采用hibernate进行数据持久化操作,这使它能在不同的数据库服务器上轻松布署并方便地进行管理12。4.2 jbpm的功能和结构组件jbpm实现了wfmc提出的工作流管理系统所要求的三个基本功能,既流程的定义,流程的监控以及系统与外部交互功能。jbpm的功能组件及系统结构如图4-1所示。下面结合wfmc提出的工作流参考模型,介绍jbpm的各组件的功能图4-1 jbpm系统结构图流程执行服务: 这里就是指jbpm工作流引擎。它管理一个上下文实例,这个实例中包含了当前工作流系统运转的各种信息。流程执行服务负责解析工作流过程定义、控制流程实例、在需要时调用应用程序等一切与流程执行有关的任务。流程定义解析服务: 流程定义语言是jpdl,采用xml格式编写,jpbm在eclipse中开发了一个插件,为用户提供了可视化的面向图形的编辑流程定义的方法。流程执行服务提供了流程解析的api。调用外部应用服务:流程对外部工具或方法的调用。当用户或外部工具被调用执行操作并将结果返回后,流程执行服务将根据返回结果改应对流程状态。在wfmc为流程调用用户操作和调用外部工具分别定义了接口功能,在jbpm中,实现这种功能,是通过调用 actionhandler的excuse()方法来实现的。开发者可以轻松的扩展act1onhandler的功能。流程监控服务: 提供查看流程的状态,进行角色分配管理,日志监控等等。对与wfmc的提出的工作流参考模型,jbpm理论上讲只是实现了其中四个接口所规定的功能。对于接口的实现,jbpm也并没有遵循wfmc规定的标准。比如,在接口1,jbpm使用的是自己的定义语言jpdl,而没有实现对xpdl标准的支持12。4.3 jbpm的程序结构首先jbpm是一个标准的j2ee应用程序。采用典型的j2ee三层结构,即客户端层,应用服务器层和数据层。客户端使用的是“瘦”客户端即web浏览器。应用服务器使用的是开放源代码的jboss,这一点很重要,因为不同的应用服务器之间存在着兼容问题。数据库使用的是内存数据库场hypersonic,这主要是为了便于开发和测试,在生产环境中通常把数据库切换为mysql等。jbpm的web模块的实现使用了开放源代码的struts框架。另外jbpm使用了优秀的o/r mapping工具hibernate使用o/r mapping工具的好处有很多,但是最大的好处就是可以使用面向对象的思维方式操作数据库,把面向对象的分析和设计贯穿软件开发过程的始终。jbpm的整体系统结构可细分为五层,分别是浏览器层:通过友好的web接口,分级别地给用户提供不同的业务功能,并提供以图形化的显示来描述整个工作流以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿产勘查中的勘查方法选择与优化考核试卷
- 甘肃省2025届高三下学期4月月考(二模)英语试卷(含答案无听力原文及音频)
- 2025年瓦斯防突工职业技能鉴定参考试题库(含答案)
- 2025年合作协议:经营权转让合同书
- 《孔明借箭》课件-2
- 法律课程学习心得体会
- 剖腹产的护理诊断及措施
- 费用报销知识
- 小升初-间隔问题
- 2025年度3月份冷链车辆柴油发电机双备份协议
- 工程振动分析与控制基础 第2版 课件 第5、6章 传递矩阵法、有限元法
- 银行防抢应急预案演练方案总结
- 三亚市崖州中心渔港停泊避风水域扩建项目 环评报告
- 巴林银行倒闭案课件
- 2023年海洋运输企业风险管理与内控
- 部编版道德与法治三年级下册全册单元知识点梳理期末复习
- 儿童孤独症的诊断与康复治疗
- 发掘无限潜能成就最好的自己主题班会课件
- 中集集装箱安全培训
- 病毒感染导致的细胞周期调控异常
- 3D打印技术在航空航天领域的应用
评论
0/150
提交评论