`
zybing
  • 浏览: 457378 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jBPM4.4:jPDL

阅读更多

jDPL是jBPM的突出的流程语言。jPDL的目标 是尽量精简和尽可能的开发者友好

 

<?xml version="1.0" encoding="UTF-8"?>

<process name="Purchase order" xmlns="http://jbpm.org/4.4/jpdl">

  <start>
    <transition to="Verify supplier" />
  </start>

  <state name="Verify supplier">
    <transition name="Supplier ok" to="Check supplier data" />
    <transition name="Supplier not ok" to="Error" />
  </state>

  <decision name="Check supplier data">
    <transition name="nok" to="Error" />
    <transition name="ok" to="Completed" />
  </decision>

  <end name="Completed" />

  <end name="Error" />

</process>
 

jPDL:

 

process

以<process 作为根节点,相关属性: name、key、version

 

start

在一个流程里必须有一个开始节点。 一个流程必须至少拥有一个开始节点。 开始节点必须有一个向外的流向,这个流向会

在流程启动的时候执行

 

State

一个等待状态节点。 流程处理的流向会在外部触发器调用提供的API之前一直等待。 状态节点和其他的活动 不一样, 它没有其他任何属性或元素。

 

state可以有多个transition,在发出signal的时候(executionService.signalExecutionById()的时候),可以给予signalName(给出transition的名字),指定执行路线。

 

decision

在多个选择中选择一条路径。也可以当做是一个决定。 一个决定活动拥有很多个向外的转移。当一个流向到达一个决定活动时, 会自动执行并决定交给哪个向外的转移。

判断transition中的条件(<condition expr=""  lang="">),自动选择路线。

  <decision name="evaluate document">
    <transition to="submit document">
      <condition expr="#{content=="good"}" />
    </transition>
    <transition to="try again">
      <condition expr="#{content=="not so good"}" />
    </transition>
    <transition to="give up" />
  </decision>
 

 

如果是唯一表达式,可以把expr放在decision节点中,在transition中,只需要在name属性中直接定义为表达式的值即可

  <decision name="evaluate document" expr="#{content}" >
    <transition name="good" to="submit document"  />
    <transition name="bad"  to="try again"  />
    <transition name="ugly" to="give up"  />
  </decision>
 

唯一性管理是继承了DecisionHandler接口的java类。 决定处理器负责选择 向外转移。

  <decision name="evaluate document">
    <handler class="org.jbpm.examples.decision.handler.ContentEvaluation" />
    <transition name="good" to="submit document" />
    <transition name="bad" to="try again" />
    <transition name="ugly" to="give up" />
  </decision>
 

concurrency并发

流程的并发路径可以使用 forkjoin 活动来建模。

fork出来,join结束

 

end结束

结束流向

默认情况下,结束活动会终结已完成流程处理实例。 因此在流程处理实例中, 仍然在活动的多个并发(concurrent)流向(concurrent) 也会结束

一个流程处理可以有多个end events

 

流向(execution)可以以不同的状态结束。可以用其他的方式列出流程处理实例的结果。 可以用end event的状态属性或者end-cancel 和end-error表示。

  <end name="ok" state="completed"/>
  <end-cancel name="bad request"/>
  <end-error name="internal server error"/>
 

task---重点

在任务组件中,为一个人创建一个任务。

属性:

 

任务分配者,谁来执行这个任务

assignee:

 

任务候选人

candidate-groups:组的id列表

candidate-users:  人的id列表

 

如果是任务分配给组,查找个人任务的时候是找不到的(taskService.findPersonalTasks(用户)),通过按照组的方式查找可以找到(taskService.findGroupTasks(用户))

 

在处理之前,候选人必须接受一个任务。 这会表现为两个候选人在同一个任务上开始工作。 分组任务列表中,用户接口必须只接受对这些任务的接受”操作。

taskService.takeTask(task.getDbid(), "johndoe");
 

当一个用户接受了一个任务,这个任务的分配人就会变成当前用户。 任务会从所有候选人的分组任务列表中消失, 它会出现在用户的已分配列表中。

用户只允许执行在他们的个人任务列表上的工作。 这应该由用户接口控制。

 

简单的,candidate-users 属性 可以用来处理用逗号分隔的一系列用户id。 candidate-users 属性可以和其他分配选项结合使用。

 

任务 分配处理器

一个AssignmentHandler 可以通过编程方式来计算 一个任务的分配人和候选人。

 

Assignable任务泳道 的通用接口。 所以任务分配处理器可以使用在任务, 也可以用在泳道中

  <task name="review" g="96,16,127,52">
    <assignment-handler class="org.jbpm.examples.task.assignmenthandler.AssignTask">
      <field name="assignee">
        <string value="johndoe" />
      </field>
    </assignment-handler>
    <transition to="wait" />
  </task>
 

请注意,默认AssignmentHandler实现可以使用使用流程变量 任何其他Java API可以访问资源,像你的应用数据库来计算 分配人和候选人用户和组

 

当达到该任务,就会启动assignment-handler,进行执行人的分配;

 

任务 泳道

一个流程中的多任务应该被分配给同一个用户或候选人。 一个流程中的多任务可以分配给一个单独的泳道。流程实例将记得候选人和用户,在泳道中执行的第一个任务。 任务序列在同一个泳道中将被分配给这些用户和候选人。

 

一个泳道也可以当做一个流程规则。 在一些情况下, 这可能与身份组件中的权限角色相同。 但是实际上它们并不是同一个东西。

   <!-- 定义了一个泳道 -->
  <swimlane name="sales representative"
            candidate-groups="sales-dept" />

  <!-- 在一个task中,使用某个预定义好的泳道 -->
  <task name="enter order data"
        swimlane="sales representative">
    <transition to="calculate quote"/>
  </task>
 

在任务中支持e-mail

可以为分配人提供一个提醒, 当一个任务添加到他们的列表时,以及在特定的时间间隔进行提醒。 每个email信息都是根据一个模板生成出来的。模板可以在内部指定, 或者在配置文件中的 process-engine-context 部分指定。

 

 

sub-process子流程

 

custom

 

自动活动

 

java

script脚本

hql

sql

mail

Common activity contents通用活动内容

Events事件

异步调用

用户代码

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 Tracy-Lcz 2012-03-30  
很好~~~~

相关推荐

    jbpm4.4下载地址

    此外,它还支持JPDL(jBPM Process Definition Language),这是一种专门为jBPM设计的语言,允许更细粒度的控制和定制。 2. **集成能力**:jBPM 4.4可以无缝集成到各种Java EE环境,如JBoss AS、WildFly和GlassFish...

    jBPM4.4开发指南

    ### jBPM4.4开发指南关键知识点解析 #### 一、工作流基础与概念 **1. 工作流定义** 工作流是指业务过程的部分或整体在计算机应用环境下的自动化,其目的是为了使在多个参与者之间按照某种预定义的规则传递文档、...

    jBPM4.4 详解 API 中文

    ### jBPM4.4 API 详解:工作流自动化的核心技术 #### 一、工作流基础知识 工作流,作为业务过程的部分或整体自动化,旨在通过计算机应用环境实现文档、信息或任务在多个参与者间的自动传递,以达到预期的业务目标...

    Jbpm4.4 整合Spring Hibernate4

    **Jbpm4.4整合Spring Hibernate4详解** Jbpm4.4是一个流程管理系统,它结合了业务流程管理(BPM)和工作流服务,提供了强大的流程定义、执行和监控能力。在这个版本中,Jbpm与Spring框架和Hibernate ORM工具进行了...

    maven+jbpm4.4+Jboss5.0

    父项目中,根据Maven的规范,配置了相关依赖包的引用,包括:Jbpm4.4的引用包引用、Junit4.9的测试包引用,hibernate的引用包,以及应用服务器Jboss的Client引用等。 接口中,提供了部署流程、创建实例、获得当前...

    JBPM4.4完整可用审批流程

    JBPM4.4是JBoss Business Process Management (BPM)平台的一个版本,它是一个开源的企业级BPM解决方案,用于设计、执行和管理业务流程。在这个完整的审批流程工程中,我们看到它采用Maven进行项目构建和依赖管理,...

    JBPM4.4教程

    ### JBPM4.4教程详解 #### 一、JBPM4.4简介及环境搭建 JBPM(JBoss Business Process Management)是一款开源的工作流引擎,主要用于实现业务流程管理(BPM)。JBPM4.4是该系列的一个稳定版本,本文将详细介绍如何...

    jbpm4.4_eclipse插件GPD的安装

    【jbpm4.4_eclipse插件GPD的安装】主要涉及的是在Eclipse环境中安装和配置jbpm4.4的图形化流程设计器(Graphical Process Designer,简称GPD)的过程。以下是详细的步骤: 1. **获取Eclipse**:首先,你需要确保...

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合

    【JBPM4.4+Hibernate3.5.4+Spring3.0.4+Struts2.1.8整合】的整个过程涉及到多个关键组件的集成,这些组件都是Java企业级开发中的重要部分。首先,JBPM(Business Process Management)是一个开源的工作流引擎,它...

    jBPM 4.4中文用户手册

    jBPM 4.4用户手册 翻译官方文档 JBoss jBPM Teams 4.4 译者: Lingo 首页: http://www.family168.com/ 论坛: http://old.family168.com/bbs EMAIL: lingosurf168@gmail.com 2009年11月1日 1. 导言 1.1. 许可...

    JBPM4.4入门开发实例

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

    jbpm4.4 完整例子

    【jbpm4.4 完整例子】是一个基于servlet和jsp实现的业务流程管理(BPM)系统示例,它展示了jbpm4.4框架的核心功能和应用场景。jbpm是一个开源的工作流和业务流程管理系统,它允许开发者设计、执行、管理和监控业务...

    jbpm4.4基本语法

    JBPM4.4 是一款强大的工作流管理系统,用于构建和管理业务流程。在这个系统中,有几个核心的对象和服务,它们构成了JBPM的核心功能。 1. **ProcessEngine对象**:ProcessEngine 是整个jbpm的核心,它是从 ...

    jbpm4.4用户手册

    ### jBPM 4.4 用户手册:深入了解工作流引擎 #### 一、jBPM 4.4 概览 jBPM 4.4 是一款基于Java的开源工作流管理引擎,专为需要高度可扩展性和灵活性的业务流程设计。作为JBoss项目的一部分,jBPM 4.4在LGPL(GNU ...

    jbpm4.4与ssh2的项目整合所需jar包

    1. **流程定义语言(JPDL)**:jbpm4.4使用基于XML的JPDL进行流程定义,开发者可以通过JPDL定义工作流的各个节点和流转规则。 2. **流程执行引擎**:jbpm4.4的核心组件,负责执行流程实例,包括启动流程、执行任务...

    jbpm4.4 工作流框架 笔记

    【jbpm4.4工作流框架笔记】 工作流(Workflow)是现代企业信息化的重要组成部分,其核心在于将复杂的业务过程自动化,确保多个参与者之间按照预设规则高效协作,达成预定的业务目标。工作流管理系统(WfMS)是实现...

    jBPM4.4用户指南.docx

    jBPM 4.4 用户指南 jBPM 4.4 是一个功能强大且灵活的工作流引擎,可以运行在独立的服务器上或者嵌入任何 Java 应用中。该用户指南提供了从安装、部署、使用、开发到原理和机制的全面的工作流教程。 jBPM 概述 ...

Global site tag (gtag.js) - Google Analytics