理解BPMN2.0(1)

引用原文:http://www.mossle.com/docs/jbpm4devguide/html/bpmn2.html

注:1、原文内容太多了,删减了;

2、原文内容应该是翻译的外文,语句结构我有修改

1. BPMN 2.0是什么呢?

业务流程模型注解(BusinessProcess Modeling Notation - BPMN)是 业务流程模型的一种标准图形注解。这个标准 是由对象管理组(Object Management Group - OMG)维护的。

BPMN规范的2.0版本,当前已经处于最终阶段了, 已经计划不就就会完成,允许添加精确的技术细节 在BPMN的图形和元素中, 同时制定BPMN元素的执行语法。 通过使用XML语言来指定业务流程的可执行语法, BPMN规范已经演变为业务流程的语言,可以执行在任何兼容BPMN2的流程引擎中,同时依然可以使用强大的图形注解

2. JPDL vs BPMN 2.0

jPDL(JBoss jBPM Process Definition Language)是构建于jBPM框架上的流程语言之一。在jPDL中提供了任务(tasks)、待处理状态 (wait states)、计时器(timers)、自动处理(automated actions)…等术语,并通过图型化的流程定义,很直观地描述业务流程。

它们两个语言 的目标都是定义可执行的业务流程。从高层次来看, 两个语言是等效的。主要的区别是 BPMN2是“厂商中立”的,你可以使用标准, 而jPDL是绑定在jBPM上的(虽然会有一些争论 绑定在开源语言厂商比如jPDL 和绑定在闭源产品)。

在jBPM中,两个语言实现都是建立在jBPM流程虚拟机上的 (PVM)。这意味着两个语言共享通用功能 (持久化,事务,配置,也有基本流程结构,等等)。结果就是,对jBPM核心的优化 会对两个语言有益。

当执行语言,把它们相互比较的时候, 下面几点必须纳入考虑:

  • BPMN2是基于被BPM工业接受的一个标准。
  • BPMN2是与实现无关的。这一点的缺点是集成java技术 jPDL总会更早。 所以,从java开发者的角度,jPDL更简单,感觉更自然 (一些BPEL/WSDL的“层次”也在BPMN中)。
  • jPDL的一个目标是XML可读,BPMN2流程在 一定程度上也是可读的,但是工具和更多规范的细节 会要求实现同等级的 生产力。
  • java开发者可以很快学会jPDL,因为他们很了解jPDL语言, 会发现实用工具有时候很麻烦, 语言本身也过于复杂了。
  • 在规范中,BPMN2包含一个很大的描述结构的集合。 然而,对接口代码的绑定在规范中是开放的 (与XPDL相比),即使WSDL通常会被默认使用。 这意味着流程的可移植性丧失了, 当我们把流程移植到一个引擎上,而这个引擎不支持同样的绑定机制。 比如,调用java类通常是jBPM的默认实现 的绑定方式。

3. 配置

在你的应用中使用BPMN 2.0是很简单的:只要把下面一行 加入jbpm.cfg.xml文件。

<importresource="jbpm.bpmn.cfg.xml" />

这里的引用会启用BPMN 2.0的流程发布,通过把BPMN 2.0发布器安装到流程引擎中。 注意流程引擎可以同时使用jPDL和BPMN 2.0流程。 这意味着在你的应用里,一些流程可能是jPDL, 其他的可能是BPMN 2.0。

流程引擎是根据定义文件的后缀来区分流程定义的。 对于BPMN 2.0,使用*.bpmn.xml后缀 (jPDL使用*.jpdl.xml后缀)。

4. 流程根元素

一个BPMN 2.0 XML流程的根是definitions元素。在命名状态,子元素会包含真正的业务流程定义。 每个process子元素 可以拥有一个id(必填)name(可选)。一个空的BPMN 2.0业务流程看起来像下面这样。也要注意把BPMN2.xsd放在classpath下,来启用XML自动补全。

<definitionsid="myProcesses"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://schema.omg.org/spec/BPMN/2.0BPMN20.xsd"

 xmlns="http://schema.omg.org/spec/BPMN/2.0"

 typeLanguage="http://www.w3.org/2001/XMLSchema"

 expressionLanguage="http://www.w3.org/1999/XPath"

 targetNamespace="http://jbpm.org/example/bpmn2">

  <process id="My businessprocesss" name="myBusinessProcess">

      ...

  </process>

<definitions>

如果为process元素定义了name,它会被用做流程的key。(比如,启动一个流程可以通过调用executionService.startProcessInstanceByKey("myBusinessProcess")。如果没有指定name,id会被用做key。所以只有id定义时, 会允许通过id来启动一个流程实例。所以基本上name和key在使用上是等价的,比如搜索流程定义。 注意key的规则与jPDL一样: 空格和非字母数字的字符会被下划线代替。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值