`
cicada_IT
  • 浏览: 53120 次
社区版块
存档分类
最新评论

jbpm入门 流配置(纯属记录)

阅读更多
如果,你掌握了一个流程引擎的灵魂,你才有能力理解它的全部。否则,一个引擎对你来说,可能只是一个复杂的结构,丰富多彩API、令人眼花缭乱的“功能”和“服务”而已。------引自:“揭秘jbpm流程引擎内核设计思想及构架 ”胡长城

fork:

有一个分支到达流程就可以继续执行的效果了,如下:

  1. import org.jbpm.graph.def.ActionHandler;   
  2. import org.jbpm.graph.exe.ExecutionContext;   
  3. import org.jbpm.graph.node.Join;   
  4.   
  5. public class JoinAction implements ActionHandler {   
  6.   
  7.     public void execute(ExecutionContext arg0) throws Exception {   
  8.         Join join=(Join)arg0.getNode();      
  9.         join.setDiscriminator(true);    
  10.     }   
  11.   
  12. }  

decision: 

一个decision用以决定在多个执行路径中哪个才可以被执行。如果你是一个程序员,把它可以理解成switch case结构即可,一个decision能够具有许多离开的transition。Handler所指定的DecisionHandler的实现类里的decide方法返回一个字符串,表示要执行哪个transition,如下例:

java 代码
  1. import org.jbpm.graph.exe.ExecutionContext;   
  2. import org.jbpm.graph.node.DecisionHandler;   
  3.   
  4. public class ForkDecision implements DecisionHandler {   
  5.   
  6.     public String decide(ExecutionContext arg0) throws Exception {   
  7.         String dayCount = (String) arg0.getVariable("dayCount");   
  8.         String go = "to boss approve";   
  9.         if (Integer.parseInt(dayCount) > 10) {   
  10.             go = "to join";   
  11.         }   
  12.         return go;   
  13.     }   
  14.   
  15. }  

event:

JBPM定义了一系列与工作流节点元素相关联的事件,例如,流程实例运行过程中,可以触发节点进入(node-enter)、节点离开 (node-leave)、流程启动(process-start)、流程结束(process-end)、任务创建(task-create)、 任务分派(task-assign)、任务启动(task-start)等事件。

个人理解,event为action服务,在action外面包一层,使action更加灵活。

timer:

定时器timer可以被用于decision fork join node process-state state super-state task-node,可以设置开始时间duedate和频率repeat,定时器动作可以是所支持的任何动作元素,如action或script。
timer 还有一个很重要的属性cancel-event,这个是timer和task结合时使用的,任务定时器的cancel-event可以被定制。默认情况 下,当任务被结束时(=完成)任务上的定时器将被取消,这是通过在定时器上使用cancel-event属性,流程开发者可以定制诸如task- assign或task-start。cancel-event支持多个事件,通过在属性中指定一个用逗号分割的列表,可以组合cancel-event 的类型。

Task:

Task 是是流程定义里的一部分,它决定了task instance的创建和分配。

swimlane:

实际应用中,一个人是一个流程中多个Task的参与者(actor)的情况是很常见的。在jbpm中通过创建一个swimlane并且把swimlane赋给一个task的方式来设置当前task的参与者(actor)。一个业务流程中的swimlane可以被看做为一个参与者的参与者对象的名称,当然它不一定是固定的某个人,它可以是一个用户组,一个特定用户的角色等。首次执行到达一个Task,赋给该Task的一个swimlane就会算出参与者(actor)。

controller(控制器):

在任务执行时,可能需要读、写流程变量;在任务完成并提交时,可能需要写流程变量。为此,jBPM提供了"任务变量"的概念。在某些情况下,任务变量和流 程变量并非简单的一一对应关系,例如,三个流程变量代表三个月的销售额,任务变量只需要它们的平均值。为实现任务与流程实例之间的信息交流,jBPM设置 了任务控制器机制。该机制也采用递进模式:首先,jBPM提供基本(默认)的任务控制器;如果不敷使用,二次开发人员可以使用自定义的任务控制器。 jBPM的任务控制器机制在流程变量和任务变量之间架起了一座桥梁。

例子:

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <process-definition xmlns="" name="test">  
  3.     <!--定义一个开始结点,名为start,指向fork1-->  
  4.     <start-state name="start">  
  5.         <transition name="" to="fork1"></transition>  
  6.     </start-state>  
  7.     <!--在fork1分支结点上,我们定义了两个走向(transition)tr1和tr2,其中tr1指向top-state节点,tr2指向一个process-state,当token到达for1时会自动形成两个child token,沿着tr1和tr2的指向继续向执行-->  
  8.     <fork name="fork1">  
  9.         <transition name="tr1" to="top-state"></transition>  
  10.         <transition name="tr2" to="test-sub-process"></transition>  
  11.     </fork>  
  12.     <!--top-state是一个state类型的节点,也就是前面提到的手工节点-->  
  13.     <state name="top-state">  
  14.         <transition name="to test-task" to="test-task"></transition>  
  15.     </state>  
  16.     <!--test-task是一个task-node类型的节点,它可以有多个task节点,生成我们的taskInstance,这里我们定义了三个节点-->  
  17.     <task-node name="test-task" signal="first">  
  18.         <task name="task-a"></task>  
  19.         <task name="task-b"></task>  
  20.         <task name="task-c"></task>  
  21.         <transition name="to buttom-node" to="buttom-node"></transition>  
  22.     </task-node>  
  23.     <!-- buttom-node 是一个node节点,可以自动执行,不用人工干预处理-->  
  24.     <node name="buttom-node">  
  25.         <transition name="" to="join1"></transition>  
  26.     </node>  
  27.     <!--  在test-sub-process里我们加上了一个子流程处理,子流程定义我们写在了里面定义的enter-sub-process-action 里-->  
  28.     <process-state name="test-sub-process">  
  29.         <event type="node-enter">  
  30.             <action name="enter-sub-process-action"  
  31.                 class="gaojie.process.action.EnterSubProcessAction">  
  32.             </action>  
  33.         </event>  
  34.         <transition name="" to="join1"></transition>  
  35.     </process-state>  
  36.     <!--join1是一个join节点,与fork节点对应,从fork分支出发的所有child token汇集到join后继续向下执行-->  
  37.     <join name="join1">  
  38.         <transition name="" to="end"></transition>  
  39.     </join>  
  40.     <!--最后是结束结点,流程执行到此就宣告结束了-->  
  41.     <end-state name="end"></end-state>  
  42. </process-definition>  

 

分享到:
评论

相关推荐

    jbpm工作流整合

    这个压缩包可能包含了一系列的资源,如源代码、配置文件、库和示例项目,旨在帮助用户快速地将jbpm工作流技术融入到自己的项目中。 首先,让我们深入了解jbpm的核心功能。jbpm支持 BPMN 2.0 标准,这是一种广泛接受...

    jbpm相关入门、配置

    jbpm入门** jbpm的入门学习通常从理解其核心概念开始,如流程定义(Process Definition)、任务(Task)、事件(Event)和工作流实例(Process Instance)。流程定义使用BPMN语言编写,通过jbpm提供的图形化编辑器...

    JBPM入门

    【JBPM入门】 JBPM,全称是Java Business Process Management,是一个开源的工作流管理系统,用于实现业务流程自动化。它提供了一套完整的工具集,包括设计、建模、执行和监控业务流程,支持BPMN2.0标准,使得业务...

    jbpm工作流引擎总结文档

    jbpm工作流引擎基于J2EE的轻量级,纯java,开源的工作流管理系统。

    jBPM4入门基础环境配置

    **jBPM4入门基础环境配置** jBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jBPM4是其第四个主要版本,它提供了丰富的功能,包括流程定义、...

    jBPM工作流详解

    **jBPM工作流详解** jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成...

    jbpm工作流 基础视频

    jbpm工作流是一款开源的工作流程管理系统,主要用于设计、执行和管理业务流程。它结合了Java技术和BPM(Business Process Management)理念,为开发者提供了一套强大的工具,使得企业能够更有效地自动化和优化业务...

    jbpm的入门1--简单实例

    【jbpm的入门1--简单实例】 jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了完整的业务流程管理解决方案,包括流程设计、执行、监控和优化。本实例将带你初探jbpm的世界,通过一个...

    JBPM工作流全套学习资料

    【JBPM工作流全套学习资料】是一份详尽的学习资源,涵盖了JBPM工作流系统的基础到高级知识。JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个...

    jbpm入门学习资料

    斯坦福特jbpm入门资料,内容不错,由浅入深,系统讲解了jbpm,是不错的入门资料噢

    JBPM4.4 工作流 入门 例子

    **JBPM4.4工作流入门例子 - HelloWorld** ...总之,JBPM4.4提供了一个强大且灵活的工作流平台,通过"HelloWorld"这样的入门实例,你可以逐步掌握如何构建和管理业务流程,从而实现企业流程的自动化和优化。

    jbpm白皮书 介绍jbpm 入门

    ### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...

    JBPM工作流

    JBPM工作流技术是Java业务流程管理的简称,是一种用于管理业务流程的开源框架。JBPM遵循业务流程管理(BPM)的标准,通过定义和管理工作流的活动(即任务点或活动点)来实现业务流程的自动化。JBPM提供了一套完整的...

    jbpm 入门及帮助文档

    首先,"jBPM 开发入门指南"提供了一个系统性的引导,涵盖了jBPM的基本概念、安装配置、工作流设计、任务管理和事件处理等内容。它通常会讲解如何创建第一个流程定义,以及如何使用jBPM提供的工具进行流程建模。通过...

    jbpm开发指南 jbpm 工作流 自定义

    jbpm开发指南 jbpm开发指南 jbpm 工作流 自定义

    jbpm工作流详解

    【jbpm工作流详解】 工作流(Workflow)是业务过程在计算机环境下的自动化体现,旨在使多参与者间按照预定义规则传递文档、信息或任务,以达成特定的业务目标。工作流管理系统(WfMS)是实现这一目标的关键,它负责...

    jbpm工作流引擎介绍

    此外,还可能涵盖了如何配置工作流规则、如何定义和分配任务,以及如何使用jbpm的监控工具来查看和分析流程执行情况等内容。 jbpm不仅提供了业务流程的自动化,还有助于提高工作效率,减少错误,并确保业务流程的...

    JBPM4.4入门开发实例

    **JBPM4.4入门开发实例** JBPM(Java Business Process Management)是一个开源的工作流程管理系统,专注于业务流程的建模、执行和监控。版本4.4是JBPM的一个早期版本,尽管现在已经有更新的版本,但这个入门实例...

    jbpm+spring配置

    【jbpm+spring配置】是将业务流程管理(Business Process Management, BPM)框架jbpm与企业级应用开发框架Spring相结合的实践。jbpm是一个开源的BPM解决方案,它提供了流程定义、执行、监控和管理的一整套工具。而...

    jBPM工作流应用开发指南

    《jBPM工作流应用开发指南》是一本面向初学者的文档,旨在帮助开发者快速掌握jBPM工作流系统的开发技巧。jBMP,全称Java Business Process Management,是开源组织JBoss提供的一款用于业务流程管理(BPM)的框架,它...

Global site tag (gtag.js) - Google Analytics