3

ShiningDan的博客

 2 years ago
source link: https://shiningdan.github.io/2019/10/27/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E%E4%B8%8E%E7%A0%94%E5%8F%91%E6%B5%81%E7%A8%8B/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

流程引擎与研发流程

发表于 2019-10-27

| 分类于 coding

|

| 阅读次数

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK