`
jbpm-x
  • 浏览: 48695 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

jBpm的Event

阅读更多

作者:胡长城

    在阅读此篇文档的时候,首先需要对jBpm有些了解。好歹知道jBpm最主要的基本元素就是三个:StateActionTransition

       State相当于我们通常所说的Task,而Transition则有根XPDLTransition很类似了。那么Action呢?

       jBpm我想,其最大的特色就是提供了一套比较简单但是很实用的EventAction)处理机制。不过,这套Event依然还有很多缺陷,比如不能自定义Event Type(这个通常是有些用处的),不能热部署(或插入)等等,而且只适合后台程序调用的执行。

      

       jBpm jPDL所描述的主要几个元素,大多都可以挂Action(一个或多个),除了End-State(结束位置)。相应信息规则可以参考http://jbpm.org/2/jpdl.html (最好首先仔细读读)。

      

       jBpm描述这样的许可:在流程运行的不同时期、不同地点,可能会激活特定的Event。而这特定的Event是由一系列类型相的Action组成的。jBpm提供这些Action底层接口,而开发者可以根据这个接口,来实现具体的执行体

<o:p> </o:p>

       这个最基本的接口就是org.jbpm.delegation.ActionHandler

public interface ActionHandler {<o:p></o:p>

  void execute( ExecutionContext executionContext );<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

       jBpm提供了一些EventType(很不爽的是,开发者必须遵循这些EventType),即使你在你个流程定义xml文件中没有为某一个元素(比如Transtion)中的Action指明类型,但是在流程定义加载的时候,会将这些没有指明的Action,根据其当前所在的元素,而赋予默认的类型。

       下面这个例子,是TransitionImplTranstion所对应的对象)所为其下的Action提供了默认“动作类型”

  public EventType getDefaultEventType() {<o:p></o:p>

    return EventType.TRANSITION;<o:p></o:p>

  }<o:p></o:p>

<o:p> </o:p>

       那么,jBpm提供了哪些Event类型呢?

       具体可以参考一下 EventType类的javadoc

             http://jbpm.org/2/javadoc/org/jbpm/model/definition/EventType.html

      

       那么这些的action是在哪儿调用的,以及如何调用的呢?

       比如,一个state元素允许定义三种EventTypeSTATE_ENTERSTATE_AFTER_ASSIGNMENTSTATE_LEAVE

       那么引擎在执行时,当一个token transition移到其所连接的State,并被这个State所接受的时候,其就会激活这个State对象的acceptToken方法(参见StateImpl类)。而在这个acceptToken方法中,就需要执行 EventTypeSTATE_ENTERSTATE_AFTER_ASSIGNMENT的所有Action

<o:p> </o:p>

    下框显示了如何调用action的执行:

  public void acceptToken(ExecutionContextImpl executionContext) <o:p></o:p>

throws ExecutionException {<o:p></o:p>

    ······ <o:p></o:p>

    executeActions( EventType.STATE_ENTER, executionContext );<o:p></o:p>

    ······<o:p></o:p>

    executeActions( EventType.STATE_AFTER_ASSIGNMENT, executionContext );<o:p></o:p>

  }<o:p></o:p>

说到这儿,估计即使我不说了,想来也可以猜到jBpm是如何处理的···

下面让我们来看看着个executeActions方法,其是在ElementImpl这个基类中。

public void executeActions( EventType eventType, <o:p></o:p>

ExecutionContextImpl executionContext ) throws DelegationException {   <o:p></o:p>

TokenImpl token  = (TokenImpl) executionContext.getToken();<o:p></o:p>

Iterator iter = actions.iterator();<o:p></o:p>

        while (iter.hasNext()) {<o:p></o:p>

            ActionImpl action = (ActionImpl) iter.next();<o:p></o:p>

      if ( eventType == action.getEventType() ) {<o:p></o:p>

        action.execute( executionContext );<o:p></o:p>

      }<o:p></o:p>

        }<o:p></o:p>

  }<o:p></o:p>

 


分享到:
评论

相关推荐

    jbpm3.2表说明

    JBPM_EVENT JBPM_EVENT FK_EVENT_PROCDEF PROCESSDEFINITION_ 一个流程可能会有很多EVENT时间 JBPM_TASK JBPM_TASK FK_TASK_PROCDEF PROCESSDEFINITION_ 一个流程可能有多个task JBPM_MODULEDEFINITION JBPM_...

    jbpm 事件与动作的含义解释以及代码配置

    ### jbpm 事件与动作的含义解释以及代码配置 #### 概述 JBPM(Java Business Process Model)是一个开源的工作流引擎,它基于Java技术,能够帮助开发者轻松地设计、执行复杂的业务流程。JBPM支持多种流程控制机制...

    jbpmName.rar_event_jbpm

    JBPM_EVENT 事件表 处理进入或者离开事件 JBPM_EXCEPTIONHANDLER 异常处理表 JBPM_ID_GROUP 用户组表 JBPM_ID_MEMBERSHIP 用户成员表 表现用户和组之间的多对多关系 JBPM_ID_PERMISSIONS 用户权限表 JBPM_ID_...

    JBPM数据库分析文档.pdf

    而JBPM_ACTION的EVENT字段则与JBPM_EVENT关联,表示了动作可能触发的事件。 在流程设计中,JBPM提供了丰富的节点类型和事件处理,允许开发者定义复杂的业务逻辑。例如,决策节点(Decision)可以通过...

    JBPM数据库表说明

    当遇到特定事件时,如定时器触发或异常发生,会调用JBPM_EVENT表中的事件处理逻辑。 理解这些数据库表的结构和字段,有助于开发者更好地设计、部署和调试基于JBPM的业务流程,进一步优化流程执行效率,提高系统的...

    jbpm的jar包(不含jbpm.jar)

    5. **事件服务**:jbpm-event.jar支持事件监听和处理,比如在流程的特定节点触发事件。 6. **其他库**:lib目录下的其他jar文件可能包含了对日志、事务管理、并发控制、序列化等的支持,它们是jbpm正常运行所必需的...

    jbpm数据库表结构

    - **JBPM_EVENT**:事件表,记录流程中的事件触发情况。 - **JBPM_EXCEPTIONHANDLER**:异常处理表,记录流程执行过程中的异常处理信息。 - **JBPM_ID_GROUP**:用户组表,存储系统中的用户组信息。 - **JBPM_ID...

    jbpm相关的jar

    同时,jbpm提供了事件服务(Event Service)来处理流程中的事件,比如监听特定的流程事件并触发相应的操作。 jbpm还包括了一个规则引擎(Drools),这是Red Hat的一个规则管理系统,能够处理复杂的业务规则。在流程...

    jbpm开发实例详解

    你可以利用jbpm的监听器(listener)和事件(event)机制来响应流程中的特定事件,比如在任务完成后发送通知邮件。此外,jbpm还支持流程变量的持久化,这意味着即使服务器重启,流程的状态也能恢复。 总结来说,...

    JBPM数据表之间的关系

    - EVENT_:关联到的事件,对应JBPM_EVENT表。 - TIMERNAME_,DUEDATE_,REPEAT_:与定时器相关的设置。 5. **JBPM_DELEGATION**: - 此表未在提供的信息中直接描述,但它通常包含关于动作代理类的详细信息,用于...

    jbpm开发入门指南的例子

    1. 流程定义(Process Definition):jbpm使用BPMN 2.0(Business Process Model and Notation)标准来图形化地表示业务流程,它包含任务(Task)、事件(Event)、网关(Gateway)等元素。 2. 工作流实例(Process ...

    jbpm自带表及其相互之间的关系详解

    - **EVENT_**:动作中指定的事件,与`JBPM_EVENT`表关联。 - **PROCESSDEFINITION_**:动作所属的流程模版ID,与`JBPM_PROCESSDEFINITION`表关联。 - **TIMERNAME_**:定时器的名称。 - **DUEDATE_**:定时器的到期...

    JBPM4.3培训学习视频, 包含了JBPM4.3的eclipse插件

    这包括理解活动(Activity)、网关(Gateway)、事件(Event)等元素,以及如何通过Eclipse插件将这些元素组合成完整的流程图。 3. **jBPM 4视频教程03:管理流程实例** - 在这个阶段,学习者将接触到流程实例的...

    jbpm 官方demo

    首先,jbpm的核心概念包括流程定义(Process Definition)、任务(Task)、事件(Event)、节点(Node)和工作流实例(Process Instance)。流程定义是用BPMN 2.0标准语言编写的工作流蓝图,描述了业务流程的步骤和...

    jbpm表结构说明.doc

    除了上述五个表,jbpm4还包含其他表格,例如用于任务管理的JBPM4_TASK,用于存储流程变量的JBPM4_VARIABLE,以及用于持久化工作流事件的JBPM4_EVENT等。这些表共同构成了jbpm4的数据模型,支持了流程的定义、执行、...

    jbpm数据结构及其数据库表的详细字段

    - EVENT_:动作中指定的事件,关联到JBPM_EVENT表。 - TIMERNAME_、DUEDATE_ 和 REPEAT_:与定时器相关的参数。 - TRANSITIONNAME_:动作执行后跳转的目标Transition。 - TIMERACTION_:定时器动作的代理类。 -...

    JBPM数据库表说明.doc

    #### 1.5 JBPM_EVENT 包含流程中的事件定义,如启动事件、结束事件等,用于处理流程中的特定情况。 #### 1.6 JBPM_DELEGATION 用于存储代理类信息,允许将流程中的某些任务委托给其他人或服务来执行。 #### 1.7 ...

    jBPM3 2 3数据库表说明 pdf

    - **EVENT_**:动作中指定的事件,与`JBPM_EVENT`表关联。 - **PROCESSDEFINITION_**:动作所在的流程模版ID,与`JBPM_PROCESSDEFINITION`表关联。 - **TIMERNAME_**:定时器名称,用于标识定时器。 - **DUEDATE_**...

    jbpm中文指南(包括3和4的)

    主要概念包括任务(Task)、事件(Event)、网关(Gateway)和泳道(Lane)等。 2. **流程定义**:jbpm3使用XML格式的流程定义文件(.bpmn),用于存储流程模型。这些文件描述了流程的结构、顺序和条件。 3. **...

    jbpm3.2.3 源码

    jbpm3.2.3基于Java语言,采用了Maven构建系统,其架构设计分为几个主要模块:流程定义(process definition)、流程执行(process execution)、任务管理(task management)、事件处理(event handling)以及持久...

Global site tag (gtag.js) - Google Analytics