`
summerkai
  • 浏览: 93402 次
  • 性别: Icon_minigender_2
  • 来自: 农村
社区版块
存档分类
最新评论

jBPM建模语言jpdl分析

阅读更多
文章来源:matinnn的博客http://blog.csdn.net/matinnn

1             swimlane

具有流程角色的意思。一种多个任务由同一个actor执行的机制。swimlane中的第一个任务实例创建后分派时,会为该swimlane记住actor,后续的任务分派时将使用该actorswimlane中的任务不能指定assignmentswimlane中的任务实例分派时,将由swimlane指定的assignment进行分派。swimlane中的第一个任务实例创建时,调用AssignmentHandler,此时传给AssignmentHandlerAssignable是一个SwimlaneInstance

public interface AssignmentHandler extends Serializable {

  void assign( Assignable assignable, ExecutionContext executionContext );

}

public interface Assignable {

  public void setActorId(String actorId);

  public void setPooledActors(String[] pooledActors);

}

TaskInstanceSwimlaneInstance都实现了Assignable

 

 

2             assignment

用于任务分派的元素。

actor-id:执行该任务的actor

pooled-actors:可以执行该任务的actors

两种分派模型:pushpull

push:流程执行分派,调用Assignable.setActorId决定将该任务push到哪个user的任务列表。任务列表的获取:TaskMgmtSession.findTaskInstances(String actorId).

pull:该任务具有多个候选actor。由pool中的actor将任务pull进自己的任务列表。在pull之前任务对pool中的所有actor可见,pull后,actor-id变为pullactor,并在pool中不可见。将actor-id置为null可以将该任务实例重新放回poll。调用Assignable.setPooledActors分派给pooledActors

 

 

3             expression

分派表达式。

identity comoponent:用户、组和许可权的管理,包括组织模型信息。

 

分派表达式示例:

<process-definition>

  ...

  <task-node name='a'>

    <task name='laundry'>

      <assignment expression='previous --> group(hierarchy) --> member(boss)' />

    </task>

    <transition to='b' />

  </task-node>

  ...

 

分派表达式语法:

first-term --> next-term --> next-term --> ... --> next-term

 

其中:

 

first-term ::= previous |

               swimlane(swimlane-name) |

               variable(variable-name) |

               user(user-name) |

               group(group-name)

 

next-term ::= group(group-type) |

              member(role-name)

 

还可在actiondelegationdecision condition中使用类似于JSP/JSF EL的表达式语言,如expression="#{myVar.handler[assignments].assign}"

 

 

4             delegation

用来在流程执行过程中运行用户自定义代码的机制。可用于任务代理。

class(必需):完整类名。

config-type(可选):指定如何实例化和配置delegation对象。若没有则用默认constructor,并忽略配置信息。

fieldconfiguration中的elementnames对应delegation中的域名;

示例:

public class MyAction implements ActionHandler {

  // access specifiers can be private, default, protected or public

  private String city;

  Integer rounds;

  ...

}

对应的配置文件:

...

<action class="org.test.MyAction">

  <city>Atlanta</city>

  <rounds>5</rounds>

</action>

...

 

beanconstructorconfiguration-property

configuration(可选):xml文件,delegation配置信息。

 

 

5             start-state

特殊node:启动节点。可以包含tasktransitioneventexception-handler

 

 

6             transition

源节点是包含该transition的节点,目标节点由to指出。transition的名字是可选的。jBPM的路由功能依赖于transition名字的唯一性。但如果多个transition有相同的名字,将选择第一个。节点transition list中的第一个是其default transition

 

 

7             task

任务定义,指出如何创建和分派任务实例。可以在task-node,也可以在process-definition中定义。process-definition范围内task name必须唯一。

任务可以指定优先级。任务实例可以修改此优先级。

该任务可以属于一个swimlane,此时它的分派由对应的swimlane执行。

duedate指出任务的超时日期。

tasksignalling属性指出当该任务实例完成时,可以发送一个signal给其token来继续流程的执行。taskblocking属性指出当该任务实例没完成之前,与之相关的token不能离开该task-node。默认设置是signallingnon-blocking

 

 

8             task-controller

可选。

任务创建时,可以用controller来移植任务实例变量;任务实例完成时,可以通过controller来向流程实例变量提交任务实例变量。

并不强迫一定要使用controller,仅当有下列需求时使用controller

1)              创建流程实例变量在任务实例中的副本,使得对任务实例变量的改变不会影响流程实例变量。直到流程完成再将任务实例变量提交。

2)              流程实例变量与任务实例变量不是一一对应关系。例如三个流程变量“sales in january”、“sales in februry”和“sales in march”,在任务中可能需要用到的是这三个变量的平均值。

controller在流程变量(process context)和用户接口应用程序之间起一个桥的作用(如下图所示)。当创建任务实例时,controller负责从流程变量中摘录信息来创建任务变量。这些变量作为用户输入提供给用户接口应用。外部输入也存储在任务变量中。当任务结束时,controller负责用任务实例数据更新流程变量。

 

简单的一对一映射的例子如下:

<task name="clean ceiling">

  <controller>

    <variable name="a" access="read" mapped-name="x" />

    <variable name="b" access="read,write,required" mapped-name="y" />

    <variable name="c" access="read,write" />

  </controller>

</task>

name属性指流程变量名,mapped-name指任务中的变量名。access属性指出是否在任务创建时复制变量,或是否在任务结束后写回流程,或是否是必须的。access是可选的,默认值是"read,write"

如果简单的一一映射不能满足需要,可以自定义TaskControllerHandler接口的实现:

public interface TaskControllerHandler extends Serializable {

void initializeTaskVariables(TaskInstance taskInstance, ContextInstance contextInstance, Token token);

void submi

分享到:
评论

相关推荐

    jbpm-jpdl-3.2.3.zip

    1. **JPDL(JBoss Process Definition Language)**:这是jbpm所使用的流程定义语言,类似于XML格式,用于描述和定义业务流程。JPDL允许开发者详细地定义任务、事件、转换和泳道,从而构建出复杂的工作流程模型。 2...

    JBPM视频教程 JPDL 流程设计器

    JPDL是JBPM用来定义流程的语言,类似于XML格式,允许开发者以文本方式描述工作流。它包含了各种流程元素,如任务、决策、事件和泳道等,为构建复杂的业务流程提供了便利。在教程中,你会了解到JPDL的基本结构和语法...

    jbpm-jpdl-designer-3.1.7.zip

    综上所述,jbpm-jpdl-designer-3.1.7.zip是一个帮助开发者高效设计和管理JBPM流程的工具,它利用Eclipse的强大环境,通过JPDL语言简化了流程建模的过程,而附带的文档则为用户提供了安装和使用的指导。在实际开发中...

    jBPM-jPDL学习笔记

    jPDL(jBPM Process Definition Language)是jBPM用来描述和执行业务流程的一种专用语言,它基于XML,简洁且易于理解,允许开发者以声明式的方式定义流程逻辑。 1、系统环境部署: 在开始jBPM-jPDL的学习之前,首先...

    jBPM-jPDL学习笔记——流程设计与控制(转载)

    总结来说,jBPM-jPDL的学习涵盖了流程建模、控制逻辑、数据库集成等多个方面。通过深入理解jPDL和实践项目配置,开发者可以有效地利用jBPM实现业务流程自动化,提高工作效率,同时保持流程的灵活性和可扩展性。这篇...

    JBoss_jBPM_jPDL用户开发手册_3.2.3.pdf 中文-(转)zhangym

    jPDL(jBPM Process Definition Language)则是jBPM使用的流程定义语言,用于描述业务流程的行为和结构。 **1. jBPM:企业级工作流解决方案** jBPM是一个灵活且功能强大的工作流引擎,它允许开发者设计、执行、...

    jbpm-jpdl-javadoc(jbpl api下载)

    JPDL(jBPM Process Definition Language)是jbpm中的一个核心部分,它是一种基于XML的语言,用于定义和描述业务流程模型。 在"jbpm-jpdl-javadoc"中,"javadoc"是Java开发工具包提供的一个工具,用于生成关于Java...

    JBoss+jBPM+jPDL用户开发手册_3.2.3

    这个手册详细介绍了如何使用JBoss中间件平台,结合jBPM(Java Business Process Management)和jPDL(jBPM Process Definition Language)进行业务流程的建模、执行和管理。 首先,JBoss是一个开源的应用服务器,它...

    jBPM-JPDL v3.2环境部署——发布到Tomcat + MySQL

    JPDL (jBPM Process Definition Language) 是jBPM使用的流程定义语言。在v3.2版本中,jBPM提供了对Tomcat应用服务器和MySQL数据库的支持。本文将详细介绍如何在Windows 2003环境下,使用SUN JDK1.6U4、Tomcat6.0.14...

    工作流框架JBoss+jBPM+jPDL用户开发手册

    3. jPDL:jPDL(jBPM Process Definition Language)是jBPM的专用流程定义语言,用于描述和配置工作流的各个步骤和转换规则。它是一种XML格式的语言,包含了任务、分支、循环、事件等元素,让开发者可以清晰地定义和...

    JBoss+jBPM+jPDL用户开发手册

    2. **jPDL** 是jBPM使用的流程定义语言,类似于XML,用于描述业务流程的逻辑和流转规则。通过jPDL,开发者可以定义任务、决策点、事件和流程实例间的交互,从而构建复杂的业务流程模型。 3. **jPDL图形流程设计器**...

    jBPM-jPDL学习笔记.zip

    jPDL(jBPM Process Definition Language)是jBPM用来定义这些流程的专用语言。 jPDL是基于XML的,它允许开发者以声明式的方式定义流程。以下是一些核心jPDL概念和知识点: 1. **流程定义(Process Definition)**...

    JBoss jBPM jPDL用户开发手册1.1

    **jPDL**(Process Definition Language)是jBPM框架内的一种流程定义语言,用于描述业务流程的行为和逻辑。它是一种轻量级的语言,具有极小的依赖性,使得开发者可以快速地创建和部署流程。jPDL语法简洁,易于理解...

    jbpm-jpdl-designer-nodeps-3.0.13.zip

    JPDL(JBoss Process Definition Language)是JBPM用来描述工作流程的语言,它是基于XML的,允许开发者以直观的方式定义任务、事件、过渡等流程元素。jbpm-jpdl-designer-nodeps-3.0.13.zip中的jdpm编辑器提供了一个...

    jbpm-jpdl-src.rar

    jBPM-JPDL(jBPM Process Definition Language)是jBPM用于描述业务流程的语言,类似于XML格式,用于定义工作流的各个步骤和规则。JPDL允许开发者定义任务、状态转换、事件处理以及复杂的流程逻辑。在jbpm-jpdl-src....

    JBoss_jBPM_jPDL用户开发手册3[1].2.3_1.pdf.

    jPDL则是jBPM用来定义和描述业务流程的专用语言。 一、jBPM简介 jBPM是一个灵活且强大的工作流引擎,适用于构建和管理复杂的企业级业务流程。它不仅支持BPMN 2.0标准,还提供了丰富的API和图形化设计工具,使开发者...

    bsh.jar,jcr-1.0.jar,jbpm-identity.jar,jbpm-jpdl.jar

    4. **jbpm-jpdl.jar**:JBPM Process Definition Language (JPDL)是JBPM用来描述工作流过程的XML格式语言。JPDL提供了定义流程、任务、事件和规则的工具,开发者可以使用它来创建和定制业务流程。jbpm-jpdl.jar包含...

    jbpm3需要的4个jar.rar

    4. **jbpm-jpdl.jar** - JPDL (Java Process Definition Language) 是JBPM使用的一种流程定义语言,类似于XML,用于描述业务流程的逻辑。通过JPDL,开发者可以创建、修改和管理工作流模型,包括定义任务、事件、过渡...

Global site tag (gtag.js) - Google Analytics