毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc

上传人:来看看 文档编号:3283102 上传时间:2019-08-07 格式:DOC 页数:58 大小:2.63MB
返回 下载 相关 举报
毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc_第1页
第1页 / 共58页
毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc_第2页
第2页 / 共58页
毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc_第3页
第3页 / 共58页
毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc_第4页
第4页 / 共58页
毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于JBPM的法院案件管理系统开发.doc(58页珍藏版)》请在三一文库上搜索。

1、 毕业设计(论文)毕业设计(论文) 题 目 基于基于 jBPM 的法院案件管理系统开发的法院案件管理系统开发 姓 名 学 号 专业班级 0404 信息与计算科学信息与计算科学 1 1 班班 指导教师 分 院 信息科学与工程分院信息科学与工程分院 完成日期 20082008 年年 6 6 月月 0606 日日 宁波理工学院宁波理工学院 毕业设计(论文)任务书毕业设计(论文)任务书 一、题目 基于 jBPM 的法院案件管理系统开发 二、分院 信息科学与工程分院 学生姓名 专业班级 04 信息与计算科学 1 班 学号 发放日期 2007 年 12 月 25 日 三、指导教师对毕业设计(论文)的进度安

2、排及任务要求 1主要任务与目标 设计一个基于 jBPM 的法院案件管理系统,目标是要使其应用在法院办 案网中,方便办案人员办案和减少纸张文档的传递,实现案件管理信息化。 2主要内容与基本要求 研究 jBPM 的工作原理、系统结构和实现机制,以及 jBPM 工作流引擎 的关键技术如流程定义语言,流程定义的永久化,上下文存取变量等,在此 基础上结合法院案件管理的特性设计和实现一个基于 jBPM 的案件管理系统。 3计划进度 2007.12.252008.03.10查阅文献,撰写文献综述 2008.03.102008.03.25确定系统方案,撰写开题报告,外文翻译 2008.03.262008.04

3、.30完成系统分析设计和原型开发 2008.05.012008.05.15系统实现与集成,建立完整、详细的技术文 档 2008.05.162008.06.12论文的撰写与整理,提交毕业论文,答辩 4主要参考文献 1 Will van der Aailst,Kees van Hee工作流管理模型、方 法和系统M北京市:清华大学出版社,2004 2 单维锋,李忠华基于工作流技术的管理信息系统集成与应用 J防灾科技学院学报,2007,9(1):120124 起讫日期: 2007 年 12 月 25 日 至 2008 年 06 月 12 日 指导教师签名 职称 2007 年 12 月 25 日 四、分

4、院审核意见 负责人签名 年 月 日 毕业设计(论文)工作记录卡毕业设计(论文)工作记录卡 姓 名: 蒋叶敏 日 期写 作 环 节主 要 工 作 内 容 指导教师 签字 2007.12.05 2007.12.25 选 题 (任务下达) 选定研究课题及研究方向,明确毕 业设计任务 2007.12.26 2008.03.25 开题报告 (搜集整理资料) 查阅文献,撰写文献综述,确定课 题所要解决的问题及思路,开题报 告 2008.03.26 2008.04.30 系统设计开发 (系统初步设计实现) 搜集相关资料,系统设计,代码编 写,系统整合 2008.05.01 2008.05.15 初 稿 (总

5、体方案设计分析) 系统实现与测试,撰写论文初稿 2008.05.16 2008.05.30 二 稿 (设计计算和工作图) 系统完善,论文修改,建立完整、 详细的技术文档 2008.06.01 2008.06.11 定 稿 (说明书撰写) 提交毕业论文,制作 PPT,准备答 辩 注:设计类工作记录卡写作环节一栏按括号内要求填写 毕业设计(论文)工作指导卡毕业设计(论文)工作指导卡 姓 名蒋叶敏指 导 教 师刘启玉 计划进程表计划进程表 日 期工 作 内 容完 成 情 况 2007.12.25布置毕业设计任务完成 2008.03.25开题报告检查、答辩完成 2008.04.30完成系统分析设计和原

6、型开发完成 2008.06.05完成论文撰写,修改定稿完成 指指 导导 教教 师师 检检 查查 答答 疑疑 记记 录录 日 期检 查 答 疑 内 容指导教师签字 2007.12.28指导文献查阅方向,解答关于文献阅读中的疑问 2008.03.24讨论系统设计方案,检查开题报告 2008.04.25讲解 jBPM 的原理和机制和开发方法 2008.05.30检查系统开发完成情况,讨论索引技术的应用 学学 生生 请请 假假 记记 录录 日 期请 假 原 因指导教师签字 无请假 I 摘 要 随着社会主义市场经济的不断发展,法院运用法律手段调节的各种社会关系 日益增多,法院受理的各类案件大幅度增加,因

7、此,建设以信息技术为基础的法 院案件工作流管理系统非常必要。 本文介绍了工作流管理系统的理论知识,在此基础上深入研究了基于 jBPM 的工作流引擎机制、流程定义语言及其应用方法。然后,本文分析了法院案件管 理的需求和主要流程,给出了系统的设计过程,并基于 J2EE 平台、应用 jBPM 引擎进行了实现,该系统通过工作流技术实现了对设计流程的动态管理。论文详 细论述了系统的开发过程和 jBPM 流程定义语言(JPDL)在系统开发中的应用方 法和技巧。最后,结合法院工作的特殊要求,阐述了系统中应用的关键技术和解 决的关键问题,如权限管理、法律文书自动生成、数据库的设计优化等等。 关键词:关键词:工

8、作流;管理系统;jBPM;工作流引擎 II Abstract With continuous development of the socialist market economy, the court increasingly use legal means to regulate the social relations, and the various accepted cases also increase rapidly. Therefore, it is very necessary to build workflow management system for court cas

9、es on the base of information technology. This pape introduces theories and knowledge of workflow management system, and on this fundament, it deeply study workflow engine mechanism, process definition language and its application methods based on the jBPM. Then, the paper analysis the needs and maj

10、or processes of the court case management, and give out the systemetic design process, and it makes realization based on J2EE platform and applying jBPM engines. This system achieves the dynamic management of design process through the workflow technology. The paper states in detail the development

11、process of the system, and the applying methods and technology of jBPM process definition language (JPDL) in the system development. Finally, considered the special requirements of the work in court, the paper states key technologies to be applied in the system, and the key issues to be solved, such

12、 as rights management, legal writ automatically generation, database design optimization, and so on. Keywords: Workflow;Management System;jBPM;Workflow Engine III 目 录 摘 要I ABSTRACT.II 第 1 章绪论1 1.1研究背景1 1.2研究现状1 1.3研究内容及其意义2 第 2 章基于 JBPM 的工作流技术研究4 2.1工作流技术概述4 2.2工作流管理系统概述5 2.3JBPM 工作流引擎.6 2.3.1jBPM 的

13、概述 6 2.3.2jBPM 整合 Eclipse 开发平台.8 2.3.3JPDL 流程定义语言分析.10 2.3.4通过 jBPM 的 API 来执行流程.14 第 3 章系统分析与流程设计17 3.1法院案件管理概述17 3.2法院案件管理系统需求分析18 3.2.1案件基本流程.18 3.2.2立案.19 3.2.3审前准备.20 3.2.4审理结案.21 3.3基于JBPM 的案件管理系统设计22 3.3.1系统结构.22 3.3.2案件管理系统工作流建模.24 3.3.3系统类设计.25 第 4 章基于 JBPM 的系统的实现26 4.1基于JBPM 的流程设计与定义26 4.2部

14、署流程定义30 4.3系统功能的实现31 4.4关键技术的实现37 4.4.1权限与系统安全性问题.37 4.4.2法律文书的自动生成.39 4.4.3数据库设计优化问题.39 第 5 章总结与展望42 参考文献.43 致 谢.45 1 第 1 章 绪论 1.1 研究背景 法院执行工作是社会各界关注的热点和焦点,直接影响着法律的尊严、司 法的权威和人民法院的形象。改革开放以来,我国社会主义法制建设得到了迅 猛发展,法律体系日臻完善,公民法律意识日益加强,运用法律手段来解决纠 纷、保护自己的合法利益己变得越来越普遍。同时社会主义市场经济的发展也 对法院审判工作提出了新的挑战,各种纠纷的数量大幅度

15、上升,涉及的领域范 围不断增加,案件数量的日益增多和案件复杂程度的日益增加,以及各种新类 型、疑难案件的出现使案件审理工作趋于复杂,法官的工作也日益繁重。 1.2 研究现状 工作流的概念起源于生产组织和办公自动化领域。它所关注的问题是处理 过程的自动化,根据一系列定义的规则,把文档、信息或任务在参与者之间传 递,以达到某种目的。工作流技术已成为企业信息化建设方案中必不可少的内 容之一。从简单的办公自动化系统的开发,到企业 ERP 系统的实施,再到为提 高企业运营效率而出现的 BPR 及 BPM 系统,工作流技术都发挥了相当重要的 甚至是关键的作用。随着 EAI 的兴起,EAI 所涉及的各种支撑

16、技术也在快速的 发展,工作流技术为实现应用层而的集成提供了有力的支撑。 另一方面,随着个人计算机、网络技术的普及和推广,以及信息化建设的日 益完善,使得工作流技术的研究与开发进入了一个新的热潮1。目前工作流技术 在电子政务、协同办公、分销管理、项目管理、销售管理等领域和各个行业广泛 应用。协同工作流管理系统(SynchroFLOW)成功应用于电信、政府、企业等大 型行业。在电子政务领域为解决电子政务系统的多版本、异构、分布、松散耦合 等问题,提出了一种基于工作流技术的电子政务支撑系统框架。 目前,工作流技术的研究正日益受到人们的重视,许多大学和研究机构都 2 开展了研究项目,取得了众多的研究成

17、果。国内外有关工作流的研究方向大致 可以归纳为以下三个方面: (1) 工作流的理论基础:包括工作流管理系统的体系结构、模型、定义语言 等。 (2) 工作流的实现技术:包括工作流的事务特性、先进的软件技术的应用、 工作流仿真等。 (3) 工作流技术的应用:工作流实施技术在不同应用领域的应用方法、应用 软件集成等。 国内市场的工作流软件可以上分为以下五种主要类型: (1) 是开源软件厂商及其产品。其代表性产品包括: Shark、OSworkflow、jBPM、ActiveBpel 等。其特点表现为新兴产品较 多。 (2) 是独立的、专业的工作流软件提供商。其特点是,企业规模相对较小, 品牌认知度相

18、对较低。但这些企业的独立工作流软件产品较为成熟,能 支持较为复杂的工作流。 (3) 是大型的平台软件提供商。这类厂商包括:IBM、BEA、MS、Oracle 等。 其基本特点是规模大,品牌认知度高,产品成熟度相对更高。 (4) 是中小型的平台软件及协同软件提供商,比如中间件厂商也开始推出自 己的工作流软件。 (5) 是综合的应用软件提供商,如大型的 ISV 和 SI。这类厂商包括:SAP、 东软、中软、金蝶等公司。其特点是规模较大,品牌认知度较高,其工 作流软件和自有解决方案或应用软件集成得更好。 1.3 研究内容及其意义 法院案件管理,是法院综合管理的一个重要组成部分,是实现案件受理、 立案

19、、案件审理、结案等流程为一体的综合管理。随着社会主义市场经济的不 断发展,需要法院运用法律手段调节的各种社会关系日益增多,法院受理的各 类案件大幅度增加,只靠增加办案人员不能从根本上解决问题。而建设案件工 作流管理系统,加强科学管理,提高办案、办公效率和质量是根本出路。因此, 3 建设以信息技术为基础的法院案件工作流管理系统,是法院实现装备现代化的 重要手段。 法院实施案件工作流管理可以降低案件过程处理时间,减少文档传递过程 中不必要的中间状态等,降低文档的传递和临时存储时间,实现事件的高效解 决。提高法院案件审理的柔性,及时发现业务瓶颈,减少或避免人为因素造成 的原则性错误,并能根据变化不断

20、改进其业务过程,使业务运作更顺畅。 另一方面,工作流迅速发展时至今日市场上的工作流引擎多不甚数,其中 jBPM 是一个灵活可扩展的工作流管理系统,它使用了优秀的 O/R Mapping 工 具 Hibernate,而使用 O/R Mapping 工具最大的优点是可以使用面向对象的思维 方式操作数据库,把面向对象的分析和设计贯穿软件开发过程的始终。jBPM 的整体系统结构可细分为五层,分别是浏览器层、Web 容器、Session Bean 层、 数据库映射层和数据库,它的过程建模采用的是改良了的 UML 活动图。作为 jBPM 运行时 server 输入的业务流程使用简单强大的语言表达并打包在流

21、程档 案中。jBPM 是一组 J2SE 组件,包括一个 Web 应用程序和一个日程安排程序, 可以作为 J2EE 应用集群部署。 本文主要研究 jBPM 工作流引擎机制、流程定义语言及其应用方法。然后, 分析了法院案件管理的需求和主要流程,给出系统的设计过程,并基于 J2EE 平台、应用 jBPM 引擎进行实现。主要内容如下: (1) 案件管理系统工作流模型设计。 (2) 研究工作流管理模型,并将其应用与法院案件管理系统设计结合。 (3) jBPM 工作流引擎的研究。 (4) 基于 jBPM 的法院案件管理系统的设计与实现。 4 第 2 章 基于 jBPM 的工作流技术研究 2.1 工作流技术

22、概述 工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的 自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递 文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使 此目标的实现”。一个可完整使用的工作流软件,必须给用户提供一整套定义 工作流要素和完成特定工作流程的工具组件,工作流的基本技术要求就是实现 这些工具组件功能,这些基本要求包括: (1) 基本路径定义:基本路径定义是构造复杂路径的基础。如前所述,工作 流技术不提供具体的路径安排,只提供最基本的路径行程方法。 (2) 角色框架:角色是任务执行者的逻辑代表,可以是独立的、相关的,也

23、可以是固定的、由规则临时触发的。工作流技术必须提供存储各种角色 信息的框架或数据库结构。 (3) 规则语法:规则语法类似于工作流软件自己使用的一种“程序语言”, 根据这种规则语法,可以实现逻辑条件(规则)的定义、与外部环境的 交互等复杂的操作。规则语法应该是简单的、完善的、易用的。 (4) 跟踪与监控:工作流软件应提供工稳运转状态跟踪技术,以使管理者可 实时了解工作进度,同时,工作流软件还应提供工稳运转监控技术,例 如公文流转平均时间等同级资料,以提高办公室工作效率。 (5) 模板定义:模板是脱离了具体数据的一些可重复使用的图形化界面,路 径、规则、角色等工作流的基本要素或者工作流模型等都可以

24、制成模板, 工作流技术提供各种简单、高效的模板定制功能。 (6) 再设计环境:对用户而言,工作流软件平台应该是一个简单易用的再设 计环境,用户在该平台上可以根据特定的需求设计工作流必须的所有部 分,包括角色、路径、规则、语法和模板。具有完整的再设计功能,是 工作流技术与其他软件技术的根本区别。 5 2.2 工作流管理系统概述 工作流管理系统(Workflow Management System,WfMS)是一个软件系统, 它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工 作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系 统的运行提供了一个软件的支撑环境。

25、工作流管理联盟(WfMC,Workflow Management Coalition)给出的关于工作流管理系统的定义是:工作流管理系统 是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好 的工作流逻辑推进工作流实例的执行。工作流管理系统主要内容分三部分: (1) 软件构件:完成相应功能的实现,包括流程过程定义,流程的发起、审 批、监控、结束等。 (2) 系统控制数据:存储本系统和其他系统进行逻辑处理、流程控制、规则、 约束条件、状态、结果等数据。 (3) 其他应用与应用数据:供工作流系统调用的外部应用和数据。 工作流管理联盟除了对工作流管理系统作出了定义,还对采用工作流带来

26、的好处作出了概括,工作流管理技术有如下优点: (1) 提高企业管理的规范化程度。 (2) 提高效率:业务处理的自动化可以消除不必要的步骤。 (3) 更佳的过程控制:通过标准化的工作方法和有效的审计跟踪实现业务流 程管理的提高。 (4) 提高客户服务:在响应客户能力上提高预见性。 (5) 灵活适应性:能根据变化的业务需求重新设计工作流程。 (6) 业务流程的改善:使业务流程简化和呈现流线型。 (7) 在工作人员之间更好地均衡负荷,如在工作人员缺勤的情况下,自动地 柔性分配替代人员。 因此,运用工作流管理技术能够提高整个系统的可用性,运用工作流管理 技术进行设计流程管理是大势所趋。 6 2.3 j

27、BPM 工作流引擎 2.3.1 jBPM 的概述 jBPM(Java Business Process Management)是一种基于 J2EE 的轻量级的、 灵活可扩展的工作流管理系统。jBPM 为设计及开发工作流和业务流程管理系 统提供了一个先进的平台。jBPM 实现了流程逻辑与业务逻辑的分离,能够可 视化的进行业务流程的分析、定义和业务单元的组装,从而使应用开发人员更 关注于业务逻辑的实现,降低了复杂流程应用的开发难度。jBPM 主要由工作 流引擎、流程设计器和流程监控工具三部分组成。 jBPM 最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如 WFMCS XPDL,BPML,

28、ebXML 等,而是采用了它自己定义的 JBoss jBPM Process definition Language(jPDL)。jPDL 认为一个商务流程可以被看作是一 个 UML 状态图(见图 1)。jPDL 就是详细定义了这个状态图的每个部分,如 起始、结束状态,状态之间的转换等。 jBPM 定义了使用 JBoss 流程定义语言编写的文件里面的流程定义。jPDL 是 一种面向图形编程(GOP)的语言,它基于节点、转换和动作组成的模型。在这 种模型里面,节点是在流程定义过程中彼此相遇时执行的命令。转换负责指导流 程定义的执行过程,而动作在节点或者转换事件发生时执行特定逻辑。 在 jBPM

29、中,流程定义被封装成流程档案(process archives) 。流程档案被传 送到 jPDL 流程引擎加以执行。jPDL 流程引擎负责遍历流程图、执行定义的动作、 维持流程状态,并且记录所有流程事件。jBPM 在以下组件里面进行封装: (1) 流程引擎:该组件通过下列委托组件(delegate component)来执行定义 的流程动作、维持流程状态,并记录所有流程事件:请求处理程序、状 态管理程序、日志管理程序、定义加载程序、执行服务。 (2) 流程监管器:该模块跟踪、审查及报告流程在执行时的状态。 (3) 流程语言:流程定义语言(jPDL)基于 GOP。 (4) 交互服务:这些服务把遗

30、留应用提供成流程执行时所用的功能或者数据。 7 图 2.1jBPM 的组件关系 图 2.1 表明了这些组件之间的关系,含有动作处理程序的 jBPM 流程定义由 jBPM 流程引擎加以加载及执行。如果流程引擎在流程定义过程中遇到拥有相关 动作的节点,所有相关的动作处理程序就会被调用。动作处理程序是 Java 代码的 实例,在执行时能够与外部系统进行交互。 jBPM 的另一个特色是它使用 Hibernate 来管理它的数据库。Hibernate 是目前 Java 领域最好的一种数据持久层解决方案。通过 Hibernate,jBPM 将数据的管理 职能分离出去,自己专注于商务逻辑的处理。 下面对 j

31、BPM 主要的几个组件做下简单介绍: (1) jBPM 图形化流程设计器:jBPM 包括一个图形化的流程设计工具,它是 一个 Eclipse 插件,最重要的特性是它同时支持业务分析员和技术开发人 员,这样就可以在业务流程建模和实际执行之间平滑转换。 (2) jBPM 核心组件:核心组件是纯粹的 Java 软件来处理流程定义和运行时 的流程实例执行。jBPM 是一个 Java 库,因此,它可以用在任何 java 环 境中。jBPM 库可以被打包作为无状态会话 EJB,这可以用做集群的发 布具有极高的吞吐量可伸缩性。jBPM 内部使用 hibernate,除了传统的 O/R 映射外,hiberna

32、te 也分析不同数据库系统的 SQL 方言,这使 jBPM 在当前所有的数据库上都可以移植。jBPM API 可以从项目中任意编写 的 Java 软件访问。 (3) jBPM 控制台 web 应用程序:该程序是为两个目的服务的。首先,它作 8 为流程执行运行时间任务生成的中央用户接口。其次,它也是一个管理 和监视控制台允许检查和操作运行中的流程实例。 (4) jBPM 身份组件:jBPM 可以集成进任何包含公司用户和组织信息的目录。 身份组件使用的模型比通常的 servlet、ejb 和门户模型跟富有。 (5) jBPM 调度程序:这是用来监视和运行已经计划到执行流程的定时器的 组件。定时器组

33、件被打包在核心 jBPM 库中,但是它需要被发布到环境 中。 (6) jBPM 数据库兼容包:这包括所有支持数据库的相关信息,JDBC 驱动 程序和数据库初始化脚本。 (7) jBPM BPEL 扩展:这是独立的扩展包用来支持 BPEL(Business Process Execution Language 商业流程执行语言)。BPEL 的基本要素是 xml Scripting 语言用来写其他 web server 的 web services。 2.3.2 jBPM 整合 Eclipse 开发平台 第一步:安装 jBPM 和 Eclipse 首先要环境准备 JDK 和 ant 的安装,本系统

34、开发采用 JDK1.5 和 ant1.7.0,安 装好 JDK 和 ant 后要把对应的环境变量设置好。然后,我们下载一个 jBPM 安装 包,本系统的开发采用的是 jbpm-starters-kit-3.1.4,下载后解压目录下含有五个子 目录:jBPM 是 jBPM 的软件包;jbpm-bpel 只含有一个网页;jbpm-db 是各种数 据库 hibernate 配置文件示例,有些还包含了相应的 jdbc 驱动程序;jbpm-designer 辅助开发 jBPM 的 Eclipse 插件,具体在 jbpm-gpd-feature 子目录中;jbpm-server 是一个已经配置好了的基于

35、JBoss 的 jBPM 示例。最后,我们把要安装的 Eclipse 覆盖掉 jbpm-designer 里 Eclipse 插件既可,Eclipse 不是开发 jBPM 必须的工具, 但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来 辅助开发 jBPM,本系统开发采用的是 Eclipse3.2。 第二步:建立系统数据库 jBPM 需要数据库支持,jBPM 会把自己的一个初始化数据存储到数据库,同 时工作流的数据也是存储到数据库中的。jBPM 使用 Hibernate 来做为自己的存储 层,因此只要是 Hibernate 支持的数据库 jBPM 也

36、就支持,本系统采用 9 MySQL5.0。 首先在 MySQL 创建一个库,然后是生成建表的 SQL 语句并建表,将 jbpm- starters-kit-3.1.4 下的子目录 jbpm 改名为 jbpm.3,否则在执行下面的 ant 命令时会 报如 jbpm.3 目录不存在的错误。在 DOS 窗下,进入安装 jbpm 目录下的 jbpm-db 目录,执行如下命令 ant mysql.scripts。执行成功后,在 jbpm-db 目录下的 buildmysqlscripts 目录里生成了四个 sql 文件。再在 MySQL 客户端中执行 mysql.create.sql 脚本,这样将在 j

37、bpm 库中创建系统所需要的数据表。 第三步:项目配置 打开 Eclipse 查看首选项里的 JBoss jBPM 里 Runtime Locations 指定 jBPM 的 安装路径如图 2.2。这个配置主要是为了找到 jbpm 下的各种 jar 包,好让 Eclipse 设置项目的库引用。 图 2.2 指定 jBPM 的安装路径 下面我们新建个 jBPM 项目,在弹出的对话框里,选“JBoss jBPM Process Project ”项,然后就生成了如图 2.3 所示的一个项目结构。 10 图 2.3 项目结构 src/main/java 存放源文件,test/main/java 存放

38、相应的 JUnit 单元测试代码, test/main/config 是存放数据库配置文件,test/main/jpdl 是存放流程配置文件的。 项目建好后我们还要对数据库配置文件进行修改,配置文件是 test/main/config 目录下的 hibernate.cfg.xm,修改如下: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:/localhost:3306/jbpm root root 在最后还要把 MySQL 的 JDBC 库、以及 Hibernate 的 hibernate3.jar 加入到

39、 项目的库引用中,mysql 的 jdbc 包,在 jbpm-dbmysqllib 目录里, Hibernate3.jar 在目录 jbpm.3libhibernate 里。 经过上面三大步骤,我们的开发平台就配置完成。 2.3.3 JPDL 流程定义语言分析 新项目建成后第一步我们要创建流程定义,通过面向图形编程(GOP)的 流程定义语言 JPDL 可以设计系统流程。本文使用可视化流程设计器来绘制流 程。 首先,我们分析 JDPL 流程定义元素: JPDL 是指定的 xml 模式和机制包装所有的流程定义相关文件到一个流程 文档。文档的中心流程是 processdefinition.xml。文

40、件中主要信息是流程图。 processdefinition.xml 也包含关于动作和任务的信息。流程文档也包括其他流程 相关文档。JPDL 的流程定义元素可分为三层。 第一层:GraphElement 这个容易理解,因为在画流程定义时,每个拖拉的对象都是一个 graph 的 元素。GraphElement 有四个属性: 11 (1) processDefine 表示当前元素属于哪个流程定义。 (2) events 表示可以接收哪些 event。 (3) name 名字。 (4) exceptionHandlers 异常处理类集合(List)。 第二层:node、processDefinitio

41、n、Transition、Task 它们都继承自 GraphElement (1) processDefinition 表示流程定义(implements NodeCollection),它有下 面的属性:name、version、nodes、startState。nodes 表示流程中所有的 node,startState 用于启动流程时找到首节点。 (2) Transition 表示转移,它有三个属性:from(Node),to(Node), supportedEventTypes 表示支持的 event 类型。 (3) node 表示节点,它有四个属性:leaving transitio

42、ns、arriving transitions、action、superState。 (4) Task 定义任务。 第三层:各种不同的 node 它们都继承自 node。 Decision、EndState、Fork、Join、Merge、Milestone、 InterleaveEnd、InterleaveStart、ProcessState、State。 然后,我们对流程定义语言的使用进行分析: 基本的流程定义组成是图和节点。每个节点有一个类型 state、decision、fork、join 每个节点有一套离开转换。可以给离开节点的转换 一个名字来区别。 如图 2.4 表示一个拍卖流程的

43、流程图, 12 图 2.4 一个拍卖流程的流程 下面是图 2.4 一个拍卖流程表示的 XML: 13 在流程定义时我们还可以给自己定制动作(Action)配置。图 2.5 是添加动 作的请假审核流程例子。 标签定义了流程由一个节点转到另一个节点 时,所要执行的动作,动作封装在一个 ActionHandler 类中。比如这里当 request 到 confirm 结点时将执行 RequestAction 类的 execute 方法。 图 2.5 请假审核流程 下面是对图 2.5 中请假审核的流程定义 XML 文件: 14 在上面 processdefinition.xml 里我们定义了两个 Ac

44、tionHandler:RequestAction、ConfirmAction。其代码如下: public class RequestAction implements ActionHandler private static final long serialVersionUID = 1L; private String reason; public String getReason() return reason; public void setReason(String reason) this .reason = reason; public void execute(Executio

45、nContext context) throws Exception context.getContextInstance().setVariable(“note“, reason); public class ConfirmAction implements ActionHandler private static final long serialVersionUID = 1L; public void execute(ExecutionContext context) throws Exception context.getContextInstance().setVariable(“n

46、ote“, “ 准假 “ ); 2.3.4 通过 jBPM 的 API 来执行流程 在前面我们定义了一个名为 helloname 的请假审核流程,下面我们就要开 始执行流程。jBPM 一个基本的特性是当流程处于等待状态时候可以把流程执 行永久化到数据库中。jBPM 永久化操作可以根据名字类似 15 GraphSession,TaskMgmtSession 和 ContextSession 等来找到。从 JbpmSessionFactory 可以获得 JbpmSession,从 JbpmSession 可以获得命名的会 话,在流程执行时候流程变量包含上下文信息。流程变量同 java.util.M

47、ap 相似 映射名字到值,值可能是个 java 对象。org.jbpm.context.exe.ContextInstance 作 为提供流程变量服务的中央接口。我们可以从 ProcessInstance 获得 ContextInstance。 下面以图 2.5 中请假审核流程为例来进行实现。在执行流程之前先要通过 JbpmConfiguration.getInstance().createJbpmContext().getGraphSession().findLatestP rocessDefinition(“helloname“)打开对应的流程,helloname 对应于流程图的 name

48、 的值,也即 processdefinition.xml 的 name,这个值得取比较耗时,实际项目里 最好和“数据库的 JDBC 连接”一样从数据库中查询发布的图 2.5 流程。之后 我们通过方法 newRequest()创建一个新请假对象,方法中通过 processDefinition 创建新的流程,再用 pi.getContextInstance()取得流程的数据环境,然后 setVariable 设置上下文变量。最后根据流程定义通过 ProcessInstance 的 signal() 转到下一个流程结点,同时返回流程编号。 private long newRequest() Proc

49、essInstance pi = processDefinition.createProcessInstance(); ContextInstance ci = pi.getContextInstance(); ci.setVariable(“name“, “蒋叶敏“ ); ci.setVariable(“day“, 5); ci.setVariable (“note“,“pass“ ); pi.signal(); return pi.getId(); 流程创建后流程进入 confirm 节点,我们通过 confirmRequest(id)方法提交请 假条审批,在 confirmRequest 中先通过 loadProcessInstance(id)读取对应的流程 实例,再通过 pi.getContextInstance()取得流程的数据环境,a

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1