`

(转)JBPM学习

    博客分类:
  • jbpm
阅读更多

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
描述 流程转向是描述流程中从一个结点到另一个结点的状态转换过程,因此一个转向一定有一个源结点和一个目标结点。 jPDLtransition的命名是通产是唯一的,结点依靠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引用的actionID
  • 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学习笔记

    **JBPM3学习笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨JBPM3的核心概念、功能和使用方法,以帮助...

    自己写的jbpm学习资料

    ### jBPM学习资料知识点详解 #### 一、jBPM概述 jBPM,即Java Business Process Management,是一款基于J2EE的轻量级工作流管理系统,专为简化业务流程设计与执行而生。该项目自2004年加入JBoss家族以来,成为其...

    jbpm4.4学习教程

    jbpm4.4学习教程是一套专为初学者设计的教育资源,旨在帮助用户掌握jbpm这一业务流程管理(Business Process Management)框架的第4.4版本。jbpm是一款开源的Java平台工具,它允许开发者设计、执行和管理业务流程,...

    JBPM学习资料step by step

    ### JBPM学习资料step by step #### 重要知识点解析 **标题:** "JBPM学习资料step by step" - **解读:** 本标题指明了文档的主要内容是关于JBPM的学习指南,并且是以逐步(step by step)的方式进行讲解。 **...

    最简单的jbpm工具

    【JBPM工具详解】 JBPM,全称Java Business Process Management,是一种开源的工作流管理系统,用于设计、执行和管理...通过深入学习和实践,你可以灵活地利用JBPM构建出满足企业需求的高效、智能的业务流程管理系统。

    jbpm4.4学习分享

    在这个“jbpm4.4学习分享”压缩包中,我们可以找到一系列关于JBPM4.4的资源,包括文档、API、操作手册以及一个简单的Web工程实例,对于初学者来说,这些都是非常宝贵的学习材料。 首先,让我们深入了解一下JBPM。...

    《jBPM学习笔记_框架设计简介》

    ### jBPM学习笔记_框架设计简介 #### JPDL与jBPM框架设计概述 jBPM(Java Business Process Model)是一种开源的工作流引擎,它提供了用于定义、执行和管理业务流程的功能。JPDL(jBPM Process Definition ...

    JBPM4.4流程管理Demo(附学习资料)

    - 随附的学习资料可能包括JBPM4.4的官方文档、教程、示例代码解析等,对于初学者来说,这些资源可以帮助理解JBPM的工作原理和使用方法。 7. **项目结构与运行** - JBPM4.4Demo项目可能包含了Maven或Gradle构建...

    JBPM web(SSH+JBPM) 例子

    总的来说,这个"JBPM web(SSH+JBPM)例子"为学习者提供了一个全面了解如何在Java Web环境中集成工作流管理的实践案例。通过深入研究这个项目,开发者不仅可以掌握SSH框架的使用,还能熟悉JBPM的工作流管理机制,为...

    jbpm-2.0-beta1.zip_java 工作流引擎_jbpm_jbpm-demo_工作流_工作流引擎

    jbpm-demo是jbpm附带的演示项目,它包含了多个示例流程,如请假审批流程、采购流程等,这些实例为初学者提供了实践和学习的机会。通过jbpm-demo,用户可以直观地了解如何部署和运行工作流,以及如何与工作流系统进行...

    jbpm使用简单示例

    **jbpm简介** jbpm(Java Business ...总之,"jbpm使用简单示例"是一个很好的学习资源,通过它,开发者不仅可以了解jbpm的基本操作,还能掌握如何在实际项目中运用流程管理技术,提升业务系统的灵活性和可维护性。

    jbpm详细实例教程

    3. **决策节点**:根据条件进行分支,如"是不是经理",由表达式#{manager}决定,如果结果为真则转至"老板审批",否则转至"经理审核"。 4. **任务节点**:经理和老板需要进行审批的任务,如"经理审核"和"老板审批",...

    比较详细的JBPM学习文档

    JBPM(Business Process Model and Notation,业务流程模型和符号)是一个开源的工作流管理系统,它允许企业将业务流程的定义、执行、管理和监控集成到业务应用程序中。JBPM提供了一种轻量级的工作流框架,支持业务...

    jbpm5源代码

    jbpm5是一款非常著名的工作流管理...通过对这些源代码的分析和学习,开发者不仅可以掌握工作流管理的基本原理,还能深入了解如何利用jbpm5构建实际的业务流程管理系统,同时提升在Java、Maven、GWT和BPMN2领域的技能。

    jbpm项目实练

    在实练过程中,你可能需要学习以下内容: 1. **BPMN 2.0**:理解流程建模的基本元素和语义。 2. **jbpm工作流引擎**:如何创建、启动和管理流程实例。 3. **任务服务**:如何分配、领取和完成任务。 4. **持久化**...

    JBPM-学生管理系统

    总结,"JBPM-学生管理系统"是一个综合性的示例,涵盖了JBPM的主要特性和使用场景,对学习和掌握工作流管理技术具有很高的参考价值。通过深入研究和实践,开发者能够更好地理解和运用JBPM来解决实际业务问题。

    jbpm-5.4.0.Final-docs

    通过jbpm-5.4.0.Final-docs,用户可以深入学习这些概念,理解如何配置和部署jbpm,以及如何利用其特性来实现高效的企业业务流程管理。文档可能包含详细的示例、教程、API参考和最佳实践,是学习和使用jbpm不可或缺的...

    JBPM4.4入门开发实例

    版本4.4是JBPM的一个早期版本,尽管现在已经有更新的版本,但这个入门实例仍然对初学者具有很高的学习价值。在本文中,我们将探讨如何使用myeclipse7.5来搭建基于JBPM4.4的开发环境,并通过一个实际的请假流程实例...

    jbpm实例开发

    本篇将围绕jbPM实例开发,通过实例来解析其基本概念、流程设计和执行管理,帮助学习者深入理解并掌握jbPM的使用。 首先,jbPM实例开发的核心在于流程定义和流程执行。流程定义是一个有向图,由节点(Nodes)和转换...

Global site tag (gtag.js) - Google Analytics