zoukankan      html  css  js  c++  java
  • activiti搭建(五)BPMN介绍

        转载请注明源地址:http://www.cnblogs.com/lighten/p/5931207.html 

        对于BPMN我也不是十分清楚,目前也只是因为对于Modeler中不熟悉的组件查询,来对这部分的内容进行学习,不求一次理解,边学边理解吧。所以这一章的介绍会比较简单,但也足够了。

        Modeler中的组件列表划分和BPMN的略微有些不同,而且有些内容好像也没有,最后移植到自己的demo中,还遇到了一些问题,如果可能的话,之后会详细介绍一下Modeler的构成,大致是官方文档的第七节Overview以及第十节Process(重要),网上已有人将其归纳总结过了 http://wenku.baidu.com/view/92b1bc06cc17552707220854.html?from=search,可以直接看这个链接中的内容。我下面的是对其与官方文档校对之后的内容,说明这栏没有翻译(太耗时)。

        BPMN(Business Process Modeling Notation),业务流程建模与标注,可以用其定义的一系列符号(我称为组件)组成业务流程图。接下来分类别来介绍这些组件。官方网站:http://www.bpmn.org/ 里面有BPMN v2.0的介绍和例子,如果有不懂的可以查看一下。http://www.omg.org/spec/BPMN/2.0/ 文档以及XML校验文件XSD下载地址。这里面才是详细介绍,不过都是英文的,我也懒得看了,只是一些基础应用而已,如果有需要的时候再看。http://www.omg.org/cgi-bin/doc?dtc/10-06-02 这里是官方给的一些例子,教导你如何使用这些组件。

    1 流对象(Flow Objects)

        流对象是最为基础的概念了,十分重要。

    1.1 事件(Events)P271

        事件都是用一个圆圈来代表,影响流程的流动,一般有一个原因(trigger)或者一个影响(result)。标准定义了三种事件:开始,中间和结束。从定义和分类名称上来看也能猜到事件的作用了,控制流程的开始,中间流转和结束,这些控制可能采取触发器(trigger)来完成,或者是导致一个结果(结束或抛出)。

    (1)开始事件

    中文

    英文

    Trigger

    说明

    Marker

    开始事件 Start Event None   image
    条件开始事件 Conditional start event Conditional   image
    消息开始事件 Message start event Message   image[16]
    多重启动事件 Multiple start event Multiple   image
    多重并行开始事件 Parallel multiple start event Parallel
    Multiple
      image
    信号开始事件 Signal start event signal   image
    定时开始事件 Timer start event Timer   image[12]
    (2)中间事件 Intermediate event
        中间事件的使用有两种方式:
          1.出于两种目的在一个正常的工作流中放置中间事件:中间事件可以用于“catch”事件触发器,或者是“throw”事件触发器。
          2.一个中间事件放置于一个活动(Activity)中间,仅能够用于“catch”事件触发器,也就是捕获一个事件,做相应的处理。
    中文 英文 Trigger 说明 Marker
    中间事件 None Intermediate Event None   image
    消息事件 Message Intermediate Event Message   image
    定时事件 Timer Intermediate Event Timer   image
    升级事件 Escalation Intermediate Event Escalation   image
    补偿事件 Compensation Intermediate Event Compensation   image
    条件事件 Conditional Intermediate Event Conditional   image
    链接事件 Link Intermediate Event Link   image
    信号事件 Signal Intermediate Event Signal   image
    多重事件 Multiple Intermediate Event Multiple   image
    并行多重事件 Parallel Multiple Intermediate Event Parallel Multiple   image
        中间事件远不止这些,剩余的是和activiti boundary相关的,这里就不一一列举了,具体查看官网文档P284页。
    (3)结束事件 End Event
        结束事件必须是一个顺序流的目标,不能是源头,可以有多个顺序流指向同一个结束流。一个流程可以有多个结束事件,也可以没有结束事件,但是如果存在开始事件,就必须有至少一个结束事件。如果不使用结束事件,那么所有流对象没有任何流出序列(顺序)流(即不同为一个源序列流)来标志流程过程结束。流程不会结束,直到所有的并行路径完成了。
    中文 英文 Trigger 说明 Marker
    结束事件 None End Event None   image
    消息结束事件 Message
    End Event
    Message   image
    错误结束事件 Error
    End Event
    Error   image
    升级结束事件 Escalation
    End Event
    Escalation   image
    取消结束事件 Cancel
    End Event
    Cancel   image
    补偿结束事件 Compensation
    End Event
    Compensation   image
    信号结束事件 Signal
    End Event
    Signal   image
    终止结束事件 Terminate
    End Event
    Terminate   image
    多重结束事件 Multiple
    End Event
    Multiple   image

    1.2 活动(Activities)P181

    (1)Tasks 任务 P186

        task在流程流中是一个原子性的活动,当流程中的作业不能被打断时task被用作一个更细级别的细节。通常,一个终端用户或者应用其执行操作表现为task的形式。task对象在子流程中具有相同的形状,都是长方形有着圆角。

        有三种特殊的task图标:循环、多重实例和补偿,一个task可能会有一个或两个这类图标。 image

        其它的task:

    中文 英文 说明 图标
    服务任务 Service Task   image
    发送任务 Send Task   image
    接收任务 Receive Task   image
    用户任务 User Task   image
    手工任务 Manual Task   image
    业务规则任务 Business Rule
    Task
      image
    脚本任务 Script Task   image

        这些任务中,需要人参与自身完成的有Manual Task和User Task。Manual Task是一个不受任何商业流程引擎管理的任务,User Task是。不受管理意味着流程引擎无法追踪其任务的开始和完成。举个例子,这个可能就是一张充满指令的纸,为电话技术人员帮顾客安装电话。

    (2)Sub-Processes 子流程 P203

        子流程是一个活动的内部细节建模,使用活动、事件和网关以及序列流。子流程是流程内部的一个图形对象,但是它也能够被打开来展现更低一层的流程。子流程定义了一个上下文范围,可用于属性可见性、事务的范围,异常处理,事件或者是补偿。

        BPMN定义了五种子流程,其中Collapsed Sub-Process可以被另外四种组合取代。另外四种是loop、multi-instance、Compensation、Ad-Hoc。

    image

    image

        下面是一些用法:

    imageimage

    (3)Call Activity 调用活动 P213

        调用活动确定使用了全局流程或者全局任务的流程中的一点。调用过程用作为包装器来调用全局流程或全局任务执行中。激活调用活动将导致称为全局流程或者全局任务的控制转移。

    imageimage

    image

        调用活动必须满足数据要求,同时调用CallableElement返回数据。这意味着在活动的InputOutputSpecification中需要包含这些元素,并且必须精确的和CallableElement的元素匹配。这些元素包括:DataInputs、DataOutputs、InputSets、OutputSets。

    1.3 网关(Gateways)P317

        网关用于控制序列流如何在一个流程中收敛和发散的交互。如果一个流程不需要控制,那么网关就是非必需的。“网关”一词意味着有一个门机制。允许或不允许通过网关——也就是说,执行到网关的时候,当网关机制被调用,输入可以被合并在一起,或者输出分离成若干部分。

    中文 英文 说明 图标
    互斥网关 Exclusive Gateway   image
    事件网关 Event-Based
    Gateway
      image
    并行事件网关 Parallel
    Event-Based
    Gateway
      image
    相容网关 Inclusive Gateway   image
    复杂网关 Complex Gateway   image
    并行网关 Parallel Gateway   image

    2 数据(Data)P233

        传统的流程建模要求能够模拟物品(物理或信息的)在流程中的创建、操作和执行过程。重要的方面就是能够捕获数据的结构,并且查询或者操作结构。

        BPMN本身并不提供内置的模型来描述数据结构或查询数据的语言表达式。相反,它规范hooks来允许使用外部定义的数据结构和表达式语言。此外,在同一个模型中,BPMN允许不同的数据结构和表达式语言。这些语言的兼容性和验证是在规范的范围之外,变成了工具供应商的职责。

        BPMN使用XML Schema和XPath作为其默认的数据结构和表达式语言,但是供应商可以自由替换他们自己的语言。

    中文 英文 说明 图标
    数据对象 Data Object   image
    集合型数据对象 collection
    DataObject
      image
    数据存储 Data Store   image
    输入数据 Data Input   image
    输出 Data Output   image
        还有一些其它的用法,具体看官方文档。

    3 连接对象(Connecting Objects)P59

    image

    4 泳道(Swimlanes)

    4.1 池子(Pools)

        池是一个容器,与其他的池相隔离。通常用在交互流程中。池主要作用于两个独立的实体或者参与者之间的物理划分。各个池中的活动通常是有自身的流程的。因此,顺序流通常不会越过多个池,而消息流是可以的(这段话摘自:http://wenku.baidu.com/view/59b540d228ea81c758f5783c.html?from=search

    image

    image

    4.2 泳道(Lanes)

        Pool的子划分,可以垂直或者水平,用来对活动的组织和分类。Lane更加接近我们传统的泳道的概念。Lane常用来将活动按照角色划分,流程可以在一个pool中跨Lane流转,但是在一个pool中一般不会这样(出处与上面相同)。

    image

    image

    5 工件(Artifacts)

    5.1 组(Group)

        将一部分元素按逻辑或特定目的进行分组,便于查看和管理,用于解释和描述目的,不会影响流程的流转(出处同上)。

    image

    5.2 文字注释(Text Annotation)

        提供一些附加性的文本信息给流程图的阅读者。

    image

  • 相关阅读:
    mac Redis相关配置,安装,启动,环境的配置。
    MySQL设置global变量和session变量的两种方法详解
    关于MySQL的锁以及数据脏读,重复读,幻读的笔记。
    MySQL新增数据,存在就更新,不存在就添加(转帖加实测)
    selenium 的显示等待和隐式等待的区别(记录加强版)
    MySQL字段与表的注释。转帖
    mysql格式化日期(转帖)
    通过Python用pymysql,通过sshtunnel模块ssh连接远程数据库。
    java io流
    openID 无效
  • 原文地址:https://www.cnblogs.com/lighten/p/5931207.html
Copyright © 2011-2022 走看看