ShiningDan的博客

流程引擎与研发流程

在标准的公司处理业务时,一般都需要经过一些流程,比如订单、报价处理、采购处理、合同审核、需要由谁来操作等。这种提供对于业务流程的标准化支持平台能力,我们成为流程引擎。业内常用的有 Activiti。

本文中,会调研一些常用的流程引擎及相关技术,然后主要聚焦工程师常用的两个场景,一个是【研发流程】,比如(TrunkBased 和 GitFlow)。另一个是迭代/缺陷任务管理。

流程平台

什么是流程平台

在多个参与者之间按照某种预定义的规则自动进行传递任务的过程,从而达到业务目标

使用场景

  1. 业务流程:订单、报价处理、采购处理、合同审核等
  2. 行政管理:出差申请、加班申请、请假申请、用车申请等
  3. 人事管理、财务、客户服务等

主要能力

  1. 流程部署、版本控制、流程定义图、流程查询、日志查询
  2. 流程模型管理(新建、删除、查询、BPMN图设计、复制、修改、导入、部署)
  3. 表单界面设计:表单元素定义、布局、预览
  4. 分析统计:任务统计、工作台统计、消息和事件统计、流程分类统计
  5. 任务管理:待办、已办、我的任务、发起流程、我的流程、自动委托
  6. 权限管理:

实现方案

技术架构

作为一个流程编排系统,一般分为几层架构来实现

  1. 第一层:业务层:一般是调用的业务系统,比如 HR 系统会调用流程系统来进行各种人事方面的申请;报销系统会接入,来发起报销采购流程
  2. 第二层:接入层:Web 界面、或者提供 API 调用
  3. 第四层:流程服务基础层,包括基础流程引擎,如开源的 Activiti等
  4. 第三层:服务层:主要是流程系统的能力分层,是 Activiti 上面的一层,又可以细分为以下个能力点:
    1. 调度能力:主要是对接 Activiti,来提供对于策略、组、工作台等调度的功能
    2. 扩展插件:封装流程引擎中常用的插件,比如周知服务、邮件服务、权限控制、事件服务、日志能力等
    3. 表单服务:流程流转中,经常需要用户填写表单。所以流程引擎中最好有快速创建表单的能力(表单基础组件、布局控制等)
    4. 模型设计:不同的用户、系统会基于流程平台,创建自定义的流程模板,所以需要提供模板设计、模板部署等能力
    5. 监控统计:对于流程的监控、统计、人效报表等
    6. 数据以及事件同步:将数据、事件相关的信息同步给 ES 等,支持离线查询与分析

功能架构

讲完技术架构图以后,再讲讲功能架构图。

作为一个流程引擎,需要提供以下的几层功能:

  1. 接入层:
    1. SDK 接入
    2. Web 系统。主要包括三个维度:1. 用户个人维度,2. 用户流程维度,3. 流程管理员维度:
      1. 用户个人维度:查看个人的已发起流程、进行中、已完结、待办、已办流程,以及流程委托
      2. 用户流程维度:提供流程查询、任务查询等
      3. 流程管理员维度:流程模板设计、权限管理、队列管理、流程数据统计
  2. 功能层:
    1. 流程相关:流程创建、流程设计、表单设置、流程权限、流程管理、流程统一
    2. 扩展插件:事件管理、通知管理、权限管理
  3. 基础层:
    1. 流程引擎:Activiti
    2. 规则解析引擎

研发流程

待补充