jbpmConfiguration对象的常用方法
public static JbpmConfigurationgetInstance()静态方法,返回一个JbpmConfiguration 对象
public JbpmContext creatJbpmContext() 创建一个新的JbpmContext对象
public JbpmContext getCurrentJbpmContext()从当前线程的局部变量(threadLocal)里获取一个Jbpmcontext对象
public void createSchema()创建JBPM数据库表
public void dropSchema()删除JBPM数据库表
任务结点<task-node>
任务结点是一个需要人工参与的结点类型。当流程进入结点时,会生成相应的任务实例(TaskInstatnce),并通过委派接口AssignmentHandler或jBPM表达式将任务委派给一个或多个特定的角色或参与者。结点自身进入等待状态,直到任务被参与者完成或者跳过,流程继续。
判定结点<decision>
判定结点的设计目标是根据上下文环境和程序逻辑,判定流程转向。通过指定一个实现DecisionHandlder接口的Java委派类或jBPM表达式,来返回转向(transition)的字符窜类型的名称(可以是中文哦),来达到决定流程方向的功能。
普通结点<node>
普通结点也可以定义相应的处理任务,通过定义相应的ActioinHandler类。同任务结点不同的是,普通结点定义的任务是由流程自动执行的,无须人工干预。
三种结点都可定义结点事件(event):
node-enter,该事件在流程进入结点时触发
node-leave,该事件在流程离开节点是触发
可以在事件上挂接ActioinHandler接口的实现类来完成一些特定的功能。
三种节点都可以定义异步处理方式(async属性):
异步处理意味着每个结点的事务处理是通过消息机制分离的,不再同一线程中统一调用执行。而是由消息监听线程从消息队列中取得消息体来运行相应得程序。
此外我们定义了结点间的转向(transition),用来记录和处理状态的变迁。每个转向中,可以委派一个或多个的ActioinHandler接口实现类,负责处理节点变迁时的上下文状态变更及回调用户定义的处理程序。
流程的程序接口说明
动作处理接口(ActioinHandler)
接口方法:void execute( ExecutionContext executionContext ) throws Exception
该接口是jPDL中最常用的一个回调接口。从它的接口方法可以发现,它仅仅暴露了流程执行上下文变量ExecutionContext。用户程序通过ExecutionContext来了解流程的执行状态,并通过改变ExecutionContext中的属性值来影响流程的执行。
ActioinHandler接口可以在所有能包含事件(event)、动作(action)元素的地方被回调。
判定处理接口(DecisionHandlder)
接口方法:String decide(ExecutionContext executionContext) throws Exception
判定接口仅适用于判定节点(decision)中。从它的接口方法可以看出,方法要返回一个字符串型的结果,这个结果必须和判定节点拥有的转向(transition)集合中的一条转向名称相匹配。
在DecisionHandlder的接口方法中一样能访问到ExecutionContext变量,这为判定提供了执行上下文的根据。当然,如果有必要,用户也可以在该接口中改变ExecutionContext中的变量值。
委派处理接口(AssignmentHandler)
接口方法:void assign(Assignable assignable, ExecutionContext executionContext) throws Exception;
委派处理接口被用户任务元素(task)的委派(assignment)子元素中,它的职责很明确,就是将任务分配给指定的人员或角色。
在AssignmentHandler接口的方法中,Assignable变量通常指任务实例(TaskInstance)。通过将ExecutionContext和TaskInstance两个变量都暴露给接口方法,用户就可以根据流程上下文情况,来决定要将指定的任务分配个谁。
流程的部署
用户使用jPDL的流程设计器定义业务流程,当然,你也可以直接用文档编辑器直接编辑processdefinition.xml定义文件。定义文档是可以直接被ProcessDefinition类载入使用的,但在正式运行的系统中,流程定义信息更多是使用关系型数据库来存储。从流程定义文件将数据导入流程数据库的过程,我们称之为流程部署。
jPDL的流程部署文件包含processdefinition.xml的定义部分和Java处理器的代码部分,这些文件可以被一起打包成.jpdl的zip格式包而后上传服务器端。这个过程可以在流程设计器界面的“deployment”标签页中操作:
分支结点(fork)
分支结点的作用是将单个执行流程分裂成多个并发的执行流程。默认的行为是为每个子流程生成一个子令牌,并建立子令牌和主流程根令牌之间的父子关系。
合并结点(join)
相对于fork结点的分支,join结点将分支收拢。默认的行为模式是当所有的分支(由同一个fork衍生出来的分支)都到达该结点的时候,join结点将结束这些分支上的子token,并通过token上的父子关系找到上一级流程的token,将此token通过唯一的transition传播下去。如果只有分支中的部分token到达时,join结点将处于等待状态。
普通结点(node)
普通类结点主要用于提供用户定制自己的程序代码。普通结点拥有一个action子元素,当流程到达该结点时,这个action就会被执行。可以通过实现ActionHandler接口来执行你想要的任何代码。此外普通结点也一样要负责流程的延续。
在流程图上,普通结点用来表达一个用户关心的、与业务相关的处理逻辑;相比而言Action(下文中将会提到)则允许添加业务逻辑以外的程序处理,这些程序处理在流程图上是不可见的,也是业务流程分析所不用关心的。
编号 |
PD-003 |
对象 |
流程转向(Transitions) |
描述 |
流程转向是描述流程中从一个结点到另一个结点的状态转换过程,因此一个转向一定有一个源结点和一个目标结点。 在jPDL中transition的命名是通产是唯一的,结点依靠transition的命名来区别到下一结点的路径,当一个Node中存在有多个同名的transition的时候,第一个transition将会被选中。结点转向的过程中,排在transition列表第一位置的即是默认的transition。 |
Java对象 |
org.jbpm.graph.def.Transition |
数据库表 |
JBPM_TRANSITION该表存储流程定义中的转向对象。
|
表关联说明 |
JBPM_TRANSITION表中,每条记录有自己的数据库流水号
ID_JBPM_TRANSITION的外键(Foreign Keys):
-
processdefinition_ - 该外键指向transition所属的流程定义对象ID
- from_ - 该外键指向transition的源结点ID
- to_ -该外键指向transition的目标结点ID
|
编号 |
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的外键(Foreign Keys):
-
processdefinition_ - 指明action所属的流程定义ID
-
event_ - 指明action绑定的event ID
-
actiondelegation_ - 指明action的委派对象ID
-
exceptionhandler_ - 指定action的异常处理ID
-
referencedaction_ - 指向当前action引用的action的ID
- timeraction_ - 指向当前action引用的计时器action
|
编号 |
PD-005 |
对象 |
事件(Events) |
描述 |
事件表示流程执行中的某个特定的时刻。在流程执行的过程中,通过jBPM的引擎触发事件,这通常发生在jbpm计算后续状态的时候。事件总是和流程中的元素绑定,这些元素包括:流程定义(process definition)、流程结点(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的外键(Foreign Keys):
-
processdefinition_ - 指向event所属的流程定义ID
-
node_ - 指向event所属的node ID
-
transition_ - 指向event所属的transition ID
- task_ - 指向event所属的任务ID
|
编号 |
PD-006 |
对象 |
任务(Task) |
描述 |
任务作为流程定义中的一部分,定义了如何创建任务实例(Task instances)以及任务分配。任务可以在任务结点(Task-Node)和流程定义(process-definition)两个地方定义。通常会在一个任务结点中定义一个或多个的任务。在这种情况下,任务结点表示在流程中等待用户处理的交互操作。业务流程会停留在任务处,等待用户完成相应的操作之后继续。任务也可在流程定义中声明。通过任务名,可以找到相应的任务定义,并引用他们。实际上任何有命名的任务都可以通过名字被引用。在整个的流程定义中,任务名必须是唯一的。此外,还可以给任务设定优先级,这些优先级属性将成为任务实例化时的默认设置。任务实例可以在之后的运行中改变优先级。. |
Java对象 |
org.jbpm.taskmgmt.def.Task |
数据库表 |
JBPM_TASK该表存储流程定义中声明的任务对象。 |
表关联说明 |
JBPM_TASK表中,每条记录有自己的数据库流水号ID_
JBPM_TASK的外键(Foreign Keys):
-
processdefinition_ -指向task所属的流程定义ID
-
taskmgmtdefinition_ - 指向task引用的TaskMgmtDefintion对象ID
-
tasknode_ - 指向task所属的任务结点ID
-
startstate_ -指向task所属流程的起始结点ID
- assignmentdelegation_ - 指定task委派处理的class对象的ID
-
swimlane_ - 指定task要授权的swimlane(角色)ID
- taskcontroller_ - 指定一个task赋值的委托类
|
jbpm对象常用方法
deployprocessDefinition 将给定的流程模板对象发布到数据库中
分享到:
相关推荐
**JBPM3学习笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨JBPM3的核心概念、功能和使用方法,以帮助...
### jBPM学习资料知识点详解 #### 一、jBPM概述 jBPM,即Java Business Process Management,是一款基于J2EE的轻量级工作流管理系统,专为简化业务流程设计与执行而生。该项目自2004年加入JBoss家族以来,成为其...
jbpm4.4学习教程是一套专为初学者设计的教育资源,旨在帮助用户掌握jbpm这一业务流程管理(Business Process Management)框架的第4.4版本。jbpm是一款开源的Java平台工具,它允许开发者设计、执行和管理业务流程,...
### JBPM学习资料step by step #### 重要知识点解析 **标题:** "JBPM学习资料step by step" - **解读:** 本标题指明了文档的主要内容是关于JBPM的学习指南,并且是以逐步(step by step)的方式进行讲解。 **...
【JBPM工具详解】 JBPM,全称Java Business Process Management,是一种开源的工作流管理系统,用于设计、执行和管理...通过深入学习和实践,你可以灵活地利用JBPM构建出满足企业需求的高效、智能的业务流程管理系统。
在这个“jbpm4.4学习分享”压缩包中,我们可以找到一系列关于JBPM4.4的资源,包括文档、API、操作手册以及一个简单的Web工程实例,对于初学者来说,这些都是非常宝贵的学习材料。 首先,让我们深入了解一下JBPM。...
### jBPM学习笔记_框架设计简介 #### JPDL与jBPM框架设计概述 jBPM(Java Business Process Model)是一种开源的工作流引擎,它提供了用于定义、执行和管理业务流程的功能。JPDL(jBPM Process Definition ...
- 随附的学习资料可能包括JBPM4.4的官方文档、教程、示例代码解析等,对于初学者来说,这些资源可以帮助理解JBPM的工作原理和使用方法。 7. **项目结构与运行** - JBPM4.4Demo项目可能包含了Maven或Gradle构建...
总的来说,这个"JBPM web(SSH+JBPM)例子"为学习者提供了一个全面了解如何在Java Web环境中集成工作流管理的实践案例。通过深入研究这个项目,开发者不仅可以掌握SSH框架的使用,还能熟悉JBPM的工作流管理机制,为...
jbpm-demo是jbpm附带的演示项目,它包含了多个示例流程,如请假审批流程、采购流程等,这些实例为初学者提供了实践和学习的机会。通过jbpm-demo,用户可以直观地了解如何部署和运行工作流,以及如何与工作流系统进行...
**jbpm简介** jbpm(Java Business ...总之,"jbpm使用简单示例"是一个很好的学习资源,通过它,开发者不仅可以了解jbpm的基本操作,还能掌握如何在实际项目中运用流程管理技术,提升业务系统的灵活性和可维护性。
3. **决策节点**:根据条件进行分支,如"是不是经理",由表达式#{manager}决定,如果结果为真则转至"老板审批",否则转至"经理审核"。 4. **任务节点**:经理和老板需要进行审批的任务,如"经理审核"和"老板审批",...
JBPM(Business Process Model and Notation,业务流程模型和符号)是一个开源的工作流管理系统,它允许企业将业务流程的定义、执行、管理和监控集成到业务应用程序中。JBPM提供了一种轻量级的工作流框架,支持业务...
jbpm5是一款非常著名的工作流管理...通过对这些源代码的分析和学习,开发者不仅可以掌握工作流管理的基本原理,还能深入了解如何利用jbpm5构建实际的业务流程管理系统,同时提升在Java、Maven、GWT和BPMN2领域的技能。
在实练过程中,你可能需要学习以下内容: 1. **BPMN 2.0**:理解流程建模的基本元素和语义。 2. **jbpm工作流引擎**:如何创建、启动和管理流程实例。 3. **任务服务**:如何分配、领取和完成任务。 4. **持久化**...
总结,"JBPM-学生管理系统"是一个综合性的示例,涵盖了JBPM的主要特性和使用场景,对学习和掌握工作流管理技术具有很高的参考价值。通过深入研究和实践,开发者能够更好地理解和运用JBPM来解决实际业务问题。
通过jbpm-5.4.0.Final-docs,用户可以深入学习这些概念,理解如何配置和部署jbpm,以及如何利用其特性来实现高效的企业业务流程管理。文档可能包含详细的示例、教程、API参考和最佳实践,是学习和使用jbpm不可或缺的...
版本4.4是JBPM的一个早期版本,尽管现在已经有更新的版本,但这个入门实例仍然对初学者具有很高的学习价值。在本文中,我们将探讨如何使用myeclipse7.5来搭建基于JBPM4.4的开发环境,并通过一个实际的请假流程实例...
本篇将围绕jbPM实例开发,通过实例来解析其基本概念、流程设计和执行管理,帮助学习者深入理解并掌握jbPM的使用。 首先,jbPM实例开发的核心在于流程定义和流程执行。流程定义是一个有向图,由节点(Nodes)和转换...