资讯 / 全部资讯 / 正文

企鹅极客|技术解密流程引擎:企业审批自动化的幕后推手

图片
一、什么是工作流

工作流,指业务过程的部分或整体在计算机应用环境下的自动化。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。

工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

简单来说,工作流就是对业务的流程化抽象。WFMC(工作流程管理联盟)给出了工作流参考模型如下:

图片

工作流在OA中常见场景之一就是“审批流程”。每个业务场景下都出现不同的审批需求,如果给每个审批流都开发一套代码,会造成很大程度上的代码冗余,而且开发工作量也会骤增。

这个时候就需要一个业务无关的,高度抽象和封装的引擎来统一处理。通过这个引擎,可以灵活配置工作流程,并且可以自动化的根据配置进行状态变更和流程流转,这就是工作流引擎


图片

图片
二、流程设计器

在工作流中,引擎会按照设定好的规则执行任务。任务如何执行,需要通过流程设计器来配置。流程设计器是用于创建、编辑、管理业务流程的工具和软件。

它允许用户通过图形化界面,直观地设计和模拟业务流程,而无需编写大量的代码。流程设计器广泛应用于企业的业务流程管理(BPM)、工作流自动化以及服务编排等领域。

使用流程设计器,用户可以定义流程中的各个步骤、决策点、参与者以及数据流等元素。这些工具往往提供拖拽式的组件来代表不同的操作(如任务分配、审批过程、条件判断等),并通过连线来表示这些元素之间的关系和执行顺序。

市面上常见的流程设计器

01
传统样式
BPMN
图片
图片
02
新样式
钉钉

飞书

企业微信

图片
图片

图片


图片
三、流程引擎的架构

架构大概可以分为设计器、API、流程核心引擎、数据持久化这四个部分。


01
设计器部分
流程设计器,用于流程的设计,流程设计器中会使用到系统的业务数据和系统数据。

    系统数据主要使用组织架构部分,节点配置的执行人、审批人可以从组织架构中获取。

    业务数据主要是表单的部分数据,可以支持在条件分支节点,根据表单的数据进行分支判断。

图片
02
API部分
API一般分为两种。
    第一种基础HTTP协议的Restful API,提供了流程定义的保存修改删除,审批相关能力,查询相关能力。
    第二种是基于Service的接口类,可以集成在主应用中,主要用于发起审批等。
    后续考虑增加Webhook支持,允许外部系统在特定事件发生时(如审批完成、任务创建等)自动接收通知,从而提高与其他系统的集成能力。
图片
03
流程引擎部分
首先要将设计器的格式解析成可执行的流程模型,然后通过引擎内部的各种服务,按照流程模型一步一步的执行。
在执行的过程中,审批节点需要调用系统的组织架构数据,分支判断节点,需要使用规则引擎。特殊节点的处理,比如通知、意见征询等需要用到各自的处理器(Handler),节点任务的生成、执行中、完成等状态变更,需要用到事件通知(Event),业务方可以通过监听事件,来处理各自的后续业务。

图片
04
持久化部分
主要用于数据的保存,运行态的记录,基本融合在整个流程引擎的生命周期中,持久化的数据可以大概分为:流程定义、执行实例、历史记录这三大类。

图片
流程定义

首先一个流程主要由节点、线、配置三个部分组成,在设计器设计完成后,会通过解析器(Parser),将XML、JSON等格式的流程定义,解析为流程模型(节点、线、配置)保存到相关数据表中。
图片
执行实例

创建一个流程时,程序会从流程定义中找到相关配置生成实例。流程实例可以看做是流程定义的副本。随着实例的执行,会遇到例如动态获取审批人、打回、撤销-重新发起、转签、转发、意见征询等操作,都会让当前实例的流程变长。
图片
历史记录

当流程执行结束后,可以把已完成的流程从执行实例迁移到历史记录表中,减少执行实例的数据量,对查询速度提升有帮助。
图片
后续可以构建一个数据分析模块,用于挖掘历史流程数据的价值,为管理层提供决策支持和数据分析。
图片


下图是企鹅的流程引擎的构架设计

图片


图片


图片
四、流程引擎的应用-审批

流程引擎和审批流的关系

在企业级应用中,流程引擎最常用的场景就是审批流程

审批流是一个业务逻辑层面的概念描述了需要完成的任务和决策的序列,流程引擎是技术实现层面的工具用于实际执行这些任务和决策。审批流可以被认为是流程引擎所执行的一个具体实例,尤其是在涉及到需要人工干预的审批步骤时,流程引擎会根据审批流的定义,引导参与者完成相应的审批操作,并继续推动流程向前发展。

在审批场景中,通常会在流程引擎外,再加一层审批模块,审批模块主要承接审批相关业务,比如审批状状态、处理状态、发起人、当前审批人,当前进度、待办列表、包括一些数据权限相关的逻辑,都可以放在审批模块去处理,这样保证流程引擎的独立性,与业务解耦。流程引擎只负责流程的流转。

图片


图片


图片
五、结尾

综上所述,流程引擎作为企业信息化建设中的重要组成部分,在促进业务流程自动化、提高工作效率方面发挥着不可替代的作用。随着技术的发展,不断优化流程引擎的架构设计,不仅有助于解决当前存在的问题,如用户体验不佳、与其他系统集成困难等,还能为企业带来更高的灵活性和创新能力。通过持续改进,我们相信流程引擎将能够更好地服务于企业的数字化转型,助力企业在激烈的市场竞争中脱颖而出。


未来,我们将继续关注最新的技术趋势,积极探索人工智能、大数据等前沿技术与流程引擎的结合点,力求为客户创造更大的价值。


图片