JBPM与Spring集成开发指南.docx
- 文档编号:11434107
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:39
- 大小:35.72KB
JBPM与Spring集成开发指南.docx
《JBPM与Spring集成开发指南.docx》由会员分享,可在线阅读,更多相关《JBPM与Spring集成开发指南.docx(39页珍藏版)》请在冰豆网上搜索。
JBPM与Spring集成开发指南
工作流:
全部或者部分,由计算机支持或自动处理的业务过程。
工作流管理系统:
工作流管理系统是这样的一个系统,详细定义、管理并执行“workflows”,系统通过运行一些软件来执行workflows,这些软件的执行顺序由工作流逻辑的计算机表示形式(计算机化的业务规则——过程定
义)驱动。
工单:
一次申请的提交记录,该记录具有唯一性。
工单相关的概念:
--[if!
supportLists]-->l
--[endif]-->工单管理:
对投诉工单、建议工单、座席建议工单、业务受理工单等不同类型的工单进行派发、接收处理、回复等一系列工单处理操作。
--[if!
supportLists]-->l
--[endif]-->工单统计:
对各种处理工单的数量,类型进行数据统计和导出、报表打印。
--[if!
supportLists]-->l
--[endif]-->工单系统管理:
对工单系统进行管理,设置相应的处理部门、处理人员和相应的权限,规定处理流程。
--[if!
supportLists]-->l
--[endif]-->工单日志:
记录工单操作日志,有效管理日志的处理状况和责任。
--[if!
supportLists]-->2
--[endif]-->背景工作流管理系统一项快速发展的技术,各种行业渐渐的采用工作流技术。
工作流技术的主要特点是:
过程的自动化处理,这些过程包含由人与以机器为基础的活动相结合;特别是对那些与IT应用程序、工具交互的过程,进行自动化处理。
虽然,工作流技术广泛用于办公环境中,例如保险、银行、法院和行政管理等,然而工作流技术,也可以应用于一些类型的工业和制造业。
--[if!
supportLists]-->3
--[endif]-->概述在人们日常生活和工作中,都将与工作流程发生密切的关系,“工作流”干预过程、业务程序的自动化处理,文档、信息或者任务按照定义好的规则在参与者间传递,来完成整个业务目标或者对整个业务目标的完成做贡献。
应用领域广泛,比如:
--[if!
supportLists]-->l
--[endif]-->公司或组织内部请假或休假流程、通知分发流程等
--[if!
supportLists]-->l
--[endif]-->政府政策审批流程、
--[if!
supportLists]-->l
--[endif]-->网上书店图书订阅流程、发送流程等
--[if!
supportLists]-->l
--[endif]-->驾照学习流程等等。
同时,“工作流”可能由手工组织,实际上,多数“工作流”都在IT系统中进行组织的,从而对过程自动化提供计算机支持。
“工作流”采用计算机化后,可以大大提高工作和生活的效率,而信息化过程中,对于采用的技术实现方式的不同,将直接影响到信息化的质量,包括:
开发成本、维护成本等。
好的工作流解决方案,可以大大提高业务流程流转效率、容易扩展对新流程的支持等。
JBPM是当前优秀的开源工作流引擎。
本文档是关于JBPM与Spring框架集成分析文档。
包括:
基本概念、设计要点、常见问题解答、参考资源等。
本文主要介绍了集成开发的高级内容,基础知识参见:
参考资料
本文档适合所有计算机开发人员。
--[if!
supportLists]-->4
--[endif]-->基本概念
--[if!
supportLists]-->4.1
--[endif]-->什么是工作流
“工作流”干预过程、业务程序的自动化处理,文档、信息或者任务按照定义好的规则在参与者间传递,来完成整个业务目标或者对整个业务目标的完成做贡献。
同时,“工作流”可能由手工组织,实际上,多数“工作流”都在IT系统中进行组织的,从而对过程自动化提供计算机支持,WFMC把工作定位在这个方向上。
“工作流”定义:
全部或者部分,由计算机支持或自动处理的业务过程。
工作流经常与“过程重组(BPR—BusinessProcessRe-engineering)”联系在一起。
BPR是关于企业(组织)核心业务过程的评估、分析、模拟、定义以及其后的操作实现。
尽管,不是所有的BPR都是采用工作流实现的,但工作流技术是最佳的方法,主要因为,工作流技术提供了业务过程逻辑与IT操作支持的分离,从而以后可以修改过程规则来重定义业务过程。
相反,工作流技术并不只在BPR中采用,例如用于现有的业务过程中。
“工作流管理系统(WFMS—WorkflowManagementSystem)”通过管理工作活动序列,调用与各种活动步骤相关的人员、IT资源,对业务过程提供自动化处理。
“工作流管理系统”定义:
工作流管理系统是这样的一个系统,详细定义、管理并执行“workflows”,系统通过运行一些软件来执行workflows,这些软件的执行顺序由工作流逻辑的计算机表示形式(计算机化的业务规则——过程定义)驱动。
每个业务过程都有一个生命周期,从几分钟到几天(甚至数月),由过程的复杂性与组成活动的持续时间来决定。
有多种方法实现工作流管理系统,使用多种IT和通讯组件,运行环境可以从一个小的本地工作组到企业间。
因此,WFMC参考模型从各种角度考虑工作流管理系统,希望提供各种不同的实现技术、运行环境。
尽管实现的方法多种多样,但所有的WFMS都表现出某种共同的特性,这为不同产品间的集成、协同工作提供了基础。
参考模型描述了工作流系统的一个公共模型,并且指出参考模型如何能使其与其他各种不同的实现方法相关联。
在最高层,所有的WFMS都相同的特性,即为下边的3个功能提供支持:
●建立时期(Build-time)功能,定义、模拟工作流过程,及其组成活动。
●运行时期(Run-time)控制功能,在运行环境中管理工作流过程,管理不同
●运行时期与用户、IT应用程序(工具)的交互,来处理各种活动的执行。
下图描述WFMS的基本特性,以及上述功能间的关系:
--[if!
vml]-->
--[endif]-->
--[if!
supportLists]-->4.2
--[endif]-->JBPM
--[if!
supportLists]-->4.2.1
--[endif]-->介绍
jBPMisaplatformforexecutableprocesslanguagesrangingfrombusinessprocessmanagement(BPM)overworkflowtoserviceorchestration.Therearemanyprocesslanguages.Eachoneistargetedtowardsaspecificfunctionandaspecificenvironment.jBPMallowsalloftheseprocesslanguagestobebuildnativelyontopofonesingletechnology:
theProcessVirtualMachine(PVM).jBPMalreadysupports3verydifferentprocesslanguages:
jPDL,WS-BPELandSeamPageflow.Thismightexpandinthefutureasnewprocesslanguagesareaddedtoourplatform.
--[if!
vml]-->
--[endif]-->
jBPM(JBossBusinessProcessManagement业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
jPDL是构建于jBPM框架上的流程语言之一。
在jPDL中提供了任务(tasks)、待处理状态(waitstates)、计时器(timers)、自动处理(automatedactions)…等术语,并通过图型化的流程定义,很直观地描述业务流程。
jPDL可以部署于Java语言的任何应用环境下,JavaSEApplication(Swing/SWT)、JavaEEApplication(ApplicationServer)。
--[if!
supportLists]-->4.2.2
--[endif]-->jPDL分发包组成
目前jPDL的最新版本是3.2.2,您可以在以下地址:
获得官方下载包。
下载包分为两种,一种是标准包(jbpm-jpdl-3.2.2.zip)只有20M左右;一种是套件包(jbpm-jpdl-suite-3.2.2.zip)将近80M。
两者最大的区别是套装包自带一个已经配置好的jboss服务,下载解压缩后,可直接运行。
--[if!
supportLists]-->4.2.3
--[endif]-->jPDL的核心程序包(jbpm-jpdl.jar)
它是一个典型的jar文件,它涵盖对流程定义和运行时流程实例上下文环境的操作API。
在最简化的业务流程样例中,jPDL将流程定义存储与XML格式的定义文件中,在运行时载入内存,在内存里记录完整的业务实例和执行过程的环境变量,并完成全部操作。
显然,在实际应用中,流程信息必须被持久化的存储于数据库中。
jPDL使用了Hibernate作为其对象持久化的API。
--[if!
supportLists]-->4.2.4
--[endif]-->GraphicalProcessDesigner插件(jbpm-jpdl-designer-3.1.2.zip)
它是一个基于Eclipse的图型编辑插件。
使用它可以对业务流程进行可视化的定制,而无须手动编辑XML文件。
该插件还提供了流程定义上传功能,可以将新定义的流程发布到在线运行的jPDL系统上。
--[if!
supportLists]-->4.2.5
--[endif]-->jPDL身份包(jbpm-identity.jar)
它是jPDL的一个轻量级扩展包,简单实现了组Group、用户User、许可权Permission等用户身份认证和鉴权机制。
如果您的应用环境只需要简单的用户认证鉴权管理,那么它十分适合您。
--[if!
supportLists]-->4.2.6
--[endif]-->jPDLWeb控制台(jbpm-console.war)
它是一个标准Web应用(使用了JSF技术),提供了对jPDL平台执行情况的监控程序(对jPDL数据库的监控)。
管理员可以通过该程序方便的维护jPDL的数据库,管理流程定义和流程实例的执行情况。
同时,它还提供了一个简单的GettingstartedDEMO,方便初学者了解jPDL。
--[if!
supportLists]-->4.2.7
--[endif]-->静态的流程定义模型
--[if!
supportLists]-->4.2.7.1
--[endif]-->流程定义实体(ProcessDefinition)
编号
PD-001
对象
流程定义实体(ProcessDefinition)
描述
流程定义实体是对一个流程抽象的对象化定义,如图-002。
一套系统中,用户可以定义保存多个流程定义实体,如:
报销流程定义、请假流程定义、人事录用流程定义等。
每个流程定义还可以有多个不同的版本,如:
针对同样的报销流程可以有修订前和修订后的两个流程定义,同时存储于jPDL数库中。
用户可以通过流程名称和版本号获取相应的流程定义。
在默认请况下,系统启用最新的流程定义。
Java对象
org.jbpm.graph.def.ProcessDefinition
数据库表
JBPM_PROCESSDEFINITION该表存储流程定义的通用信息,如:
流程名称、版本号
表关联说明
JBPM_PROCESSDEFINITION表中,每条记录有自己的数据库流水号
ID_JBPM_PROCESSDEFINITION的外键(ForeignKeys):
startstate_同JBPM_NODE(流程结点)表关联。
此外键指向流程定义中的起始结点ID
--[if!
supportLists]-->4.2.7.2
--[endif]-->流程结点(Node)
编号
PD-002
对象
流程结点(Node)
描述
流程结点是对流程中的过程环节/行为的抽象对象化定义,如图-002中的每个方框即代表一个结点。
结点有两个主要职责:
一,实现某个指定行为,这在jBPM中就是执行一段制定的Java代码;二,转递、维持流程的延续,直至达到最终结点。
在jPDL的结点设计中,系统开放了充分的用户行为模型,程序员可以基于这些行为接口,实现自定义的业务功能。
在jPDL中,系统预定义了一系列的Node类型,同时也允许程序员开发定义自己的Node类型。
Java对象
org.jbpm.graph.def.Node
数据库表
JBPM_NODE该表存储结点的定义信息。
表关联说明
JBPM_NODE表中,每条记录有自己的数据库流水号
ID_JBPM_NODE的外键(ForeignKeys):
processdefinition_-此外键说明该Node从属的流程定义对象ID
subprocessdefinition_-此外键指定了一个由该Node发起的子流程。
在主流程离开当前结点之前,该子流程必须完成执行过程。
action_-此外键指定该结点动作类的ID
superstate_-该外键是一个自关联键,指向结点的上级父结点ID。
一个子流程中的多个结点从属于同一个父流程结点。
decisiondelegation_–该外键指定了结点委派的判定类ID(所谓委派判定类是指根据用户的业务逻辑,判定流程的下一个流向的JavaClass)
--[if!
supportLists]-->4.2.7.3
--[endif]-->流程转向(Transitions)
编号
PD-003
对象
流程转向(Transitions)
描述
流程转向是描述流程中从一个结点到另一个结点的状态转换过程,因此一个转向一定有一个源结点和一个目标结点。
在jPDL中transition的命名是通产是唯一的,结点依靠transition的命名来区别到下一结点的路径,当一个Node中存在有多个同名的transition的时候,第一个transition将会被选中。
结点转向的过程中,排在transition列表第一位置的即是默认的transition。
Java对象
org.jbpm.graph.def.Transition
数据库表
JBPM_TRANSITION该表存储流程定义中的转向对象。
表关联说明
JBPM_TRANSITION表中,每条记录有自己的数据库流水号
ID_JBPM_TRANSITION的外键(ForeignKeys):
processdefinition_-该外键指向transition所属的流程定义对象ID
from_-该外键指向transition的源结点ID
to_-该外键指向transition的目标结点ID
--[if!
supportLists]-->4.2.7.4
--[endif]-->动作(Actions)
编号
PD-004
对象
动作(Actions)
描述
Actions是指一系列的在流程事件中运行的Java代码。
流程图是软件需求的传达的重要手段,但它只是软件需求的一个投影,隐藏了很多技术实现的细节。
Actions则是向流程图添加技术实现细节的一种机制,它可以很好的补充和修饰流程图。
这意味着在不改变流程图结构的情况下,可以将Java的代码与之关联。
Actions通过事件(Events)同流程绑定,常用的主要事件包括:
进入结点、离开结点、进行转向。
请注意,同Events关联的Actions和处于Node中的Actions是有不同的。
处于Events中的Actions是通过事件触发执行的,它是典型的观察者模式,是无法影响流程控制的流向。
而处于Node中的Action则要承担起流程传递的责任。
此外,Actions是可以命名的。
可以通过Actions的命名在任何地方引用该Actions。
命名的Actions可以作为主流程定义的公用子元素。
这个功能可以提高对Actions定义的复用。
Java对象
org.jbpm.graph.def.Action
数据库表
JBPM_ACTION该表存储流程定义中的动作对象。
表关联说明
JBPM_ACTION表中,每条记录有自己的数据库流水号ID_
JBPM_ACTION的外键(ForeignKeys):
processdefinition_-指明action所属的流程定义ID
event_-指明action绑定的eventID
actiondelegation_-指明action的委派对象ID
exceptionhandler_-指定action的异常处理ID
referencedaction_-指向当前action引用的action的ID
timeraction_-指向当前action引用的计时器action
--[if!
supportLists]-->4.2.7.5
--[endif]-->事件(Events)
编号
PD-005
对象
事件(Events)
描述
事件表示流程执行中的某个特定的时刻。
在流程执行的过程中,通过jBPM的引擎触发事件,这通常发生在jbpm计算后续状态的时候。
事件总是和流程中的元素绑定,这些元素包括:
流程定义(processdefinition)、流程结点(node)、流程转向(transition)和任务(task)。
不同的元素会触发不同的事件,拿node元素来说,有node-enter事件和node-leave事件。
事件是action的钩子,一个事件可以回调一系列的action。
当jBPM引擎触发事件的时候,事件中绑定的action就会被执行。
在jBPM中,事件模型是可传播的。
一个子元素触发的事件,将逐层向上传播到顶层的流程定义元素。
这样的设计使得事件可以被集中化处理。
Java对象
org.jbpm.graph.def.Event
数据库表
JBPM_EVENT该表存储流程定义中的事件对象,这些事件与相关的action绑定。
表关联说明
JBPM_EVENT表中,每条记录有自己的数据库流水号ID_
JBPM_EVENT的外键(ForeignKeys):
processdefinition_-指向event所属的流程定义ID
node_-指向event所属的nodeID
transition_-指向event所属的transitionID
task_-指向event所属的任务ID
--[if!
supportLists]-->4.2.7.6
--[endif]-->任务(Task)
编号
PD-006
对象
任务(Task)
描述
任务作为流程定义中的一部分,定义了如何创建任务实例(Taskinstances)以及任务分配。
任务可以在任务结点(Task-Node)和流程定义(process-definition)两个地方定义。
通常会在一个任务结点中定义一个或多个的任务。
在这种情况下,任务结点表示在流程中等待用户处理的交互操作。
业务流程会停留在任务处,等待用户完成相应的操作之后继续。
任务也可在流程定义中声明。
通过任务名,可以找到相应的任务定义,并引用他们。
实际上任何有命名的任务都可以通过名字被引用。
在整个的流程定义中,任务名必须是唯一的。
此外,还可以给任务设定优先级,这些优先级属性将成为任务实例化时的默认设置。
任务实例可以在之后的运行中改变优先级。
.
Java对象
org.jbpm.taskmgmt.def.Task
数据库表
JBPM_TASK该表存储流程定义中声明的任务对象。
表关联说明
JBPM_TASK表中,每条记录有自己的数据库流水号ID_
JBPM_TASK的外键(ForeignKeys):
processdefinition_-指向task所属的流程定义ID
taskmgmtdefinition_-指向task引用的TaskMgmtDefintion对象ID
tasknode_-指向task所属的任务结点ID
startstate_-指向task所属流程的起始结点ID
assignmentdelegation_-指定task委派处理的class对象的ID
swimlane_-指定task要授权的swimlane(角色)ID
taskcontroller_-指定一个task赋值的委托类
--[if!
supportLists]-->4.2.8
--[endif]-->具体化的流程实例模型
流程实例中最重要的三个对象:
流程实例(ProcessInstance)、令牌(Token)、任务实例(TaskInstance).
--[if!
supportLists]-->4.2.8.1
--[endif]-->流程实例(ProcessInstance)
编号
PI-001
对象
流程实例(ProcessInstance)
描述
流程实例是流程定义的运行时状态,它记录了一个流程运行的起始时间、结束时间等状态信息
Java对象
org.jbpm.graph.exe.ProcessInstance
数据库表
JBPM_PROCESSINSTANCE该表存储运行时的流程对象信息。
表关联说明
JBPM_PROCESSINSTANCE表中,每条记录有自己的数据库流水号
ID_JBPM_PROCESSINSTANCE的外键(ForeignKeys):
processdefinition_-该流程实例对应的流程定义的ID
roottoken_-该流程实例引用的跟令牌
superprocesstoken_-如果当前流程是某个流程实例的子流程,则指向该父流程的ID
--[if!
supportLists]-->4.2.8.2
--[endif]-->令牌(Token)
编号
PI-002
对象
令牌(Token)
描述
令牌代表一个流程执行的路径,它维护着流程定义中各个结点的指针,同时记录了流程当前执行的位置。
Java对象
org.jbpm.graph.exe.Token
数据库表
J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JBPM Spring 集成 开发 指南