Flowable流程机制详解

  • 概要
  • 流程
  • 审批
  • 权限


概要

      Flowable是一个工作流引擎,包含了三个主要模块,分别是流程、审批和内置的权限系统

流程

      Flowable为我们带来的是一套十分健全的流程体系,可细分为以下几种类型

  • 单任务
  1. 单实例
    a. 抢单
  1. 流程绘制
  2. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_权限系统

  3. 配置
    选中第一个任务(抢单任务-候选用户),点击下图红框区域
  4. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单任务_02

  5. 选择候选用户
  6. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单实例_03

  7. 选中第一个任务(抢单任务-候选组),点击下图红框区域
  8. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单任务_04

  9. 选择候选组
  10. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_权限系统_05

  11. b. 单用户

单实例的单用户即选择单个用户,如下所示

流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单实例_06

  1. 多实例
  • 并行(parallel)
  1. 流程绘制
  2. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_权限系统_07

  3. 配置
    选中define executor脚本任务,按照下图配置
  4. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_权限系统_08

  5. 配置Script Task
  6. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单实例_09

  7. 配置任务
  8. 流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_权限系统_10

  • 串行(sequential)
    串行和并行配置一样,唯一的不同在于任务的Multi-instance type从parallel改为sequential
  • 多任务(多任务的顺序控制依靠网关)
  1. 排他网关(Exclusive gateway)
    当执行到达这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件计算为true的顺序流(当没有设置条件时,认为顺序流为true)继续流程,必须以同样的网关开始/结束.

流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单任务_11


2. 并行网关(Parallel gateway)

并行网关不计算条件,它可以将执行分支(fork)为多条路径,也可以合并(join)多条入口路径的执行。简单说就是并行网关可以让多个任务并行执行,且不可计算条件,必须以同样的网关开始/结束

流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_权限系统_12


3. 包容网关(Include gateway)

包容网关是排他网关与并行网关的组合体,既可以计算条件,也可以令满足条件的多个任务并行执行,必须以同样的网关开始/结束

流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单任务_13


4. 事件网关(Event gateway)

事件专用网关,后边必须接两个以上的中间抛出/捕捉事件,可以没有结束网关

流程引擎activiti架构 ActivitiEngineAgenda 流程引擎flowable_单任务_14

审批

      任务的审批无非4中类型,以下:

  1. 认领(claim)
    单任务-单实例的抢单类型的任务在执行前需先认领,若认领后需要放弃任务,可释放任务以便其它用户认领
  2. 指派(delegate)
    指派后的任务,被指派人不可完成,填写完业务数据后必须释放,以便任务指派人去完成
  3. 释放(resolve)
    指派后、认领后的任务可被释放
  4. 完成(complete)
    任务的结束有两种,一种是通过审批后的完成的任务,另一种是任务所在流程实例被取消后被动完成的任务
权限

      Flowable的权限系统非常单一,只有组和用户的概念,而且组不可分级,读者也可通过表达式的方式定义执行人,以达到脱离Flowable权限系统的目的。以下是笔者自定义的几个bpmn模板,有需要的读者可下载查看详细定义方式,下载后可在Flowable UI Modeler中直接导入使用。
      地址:https://github.com/yuzhou152/flowable-model.git