设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 抖音运营 > 引流推广 > 正文

流程引擎怎么做(流程引擎的架构设计)

来源:引流技巧 编辑:引流技巧 时间:2024-11-13

1 什么是流程引擎

流程引擎是一个底层支撑平台,是为提供流程处理而开发设计的。流程引擎和流程应用,以及应用程序的关系如下图所示。

常见的支撑场景有:Workflow、BPM、流程编排等。本次分享,主要从BPM流程引擎切入,介绍流程引擎的架构设计方法。

1.1 什么是流程

简单来说,流程就是一系列活动的组合。比如,用于企业办公的OA系统中,就存在大量的申请审批类的流程。在生产制造业,有大量的从销售端的订单,到生产制造,再到签收回款的生产销售流程。在机器学习领域,有亚马逊AWS Sagemaker的大数据处理、机器学习的应用。综上,流程是一个概念,在和具体实现结合时,就产生了不同的流程产品,如DevOps、Spring Data Stream等。

在流程实现方面,主要可以分为2种实现方式,一种是用代码实现,比如:用代码实现一个加班申请,那么就要自己对接SSO进行单点登录,通过接口拿到发起人和审批人的信息,同时保存表单数据。另一种方式是使用流程引擎来实现,流程引擎对接应用场景所需数据,如加班申请,流程引擎对接SSO、OU、审批人配置、权限等,实现这样一个流程,只需要关心流程配置、流程节点和流程表单即可,流程流转以及流程的数据处理,都通过流程引擎来完成。

流程引擎可以快速落地流程实现,这也是流程引擎存在的价值。

1.2 什么是引擎

一般而言,引擎是一个程序或一套系统的支持部分。常见的程序引擎有游戏引擎、搜索引擎、杀毒引擎等。引擎是脱离具体业务场景的某一类业务场景的高度抽象和封装。
比如,某OA公司,封装了一套审批用的workflow,实施人员只需要配置流程和表单即可交付项目。再比如,美国某公司做了一个AI引擎做NBA(Next Best Action)推荐,封装了推荐领域的常用算法,在不同的场景自动选择和组合多种算法,进行智能推荐。

1.3 流程设计器

流程设计器是流程和引擎的连接方,用户通过流程设计器,将某种layout和rule固化成某种流程,然后通过数据和数据上下文,使用流程引擎自动按照某种固化的流程进行执行。
我将目前见到的流程设计器的理论基础,分为以下三类:1,自定义系;2,UML中的活动图系;3,BPMN系。

1.3.1 自定义系

用于Sagemaker等场景的AWS Step Function(自定义流程节点)

流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

1.3.2 UML Activity Diagram

Flowportal BPM的流程设计器

流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

1.3.3 BPMN系

activiti的流程设计器

流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

炎黄盈动的流程设计器

流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

题外话:炎黄盈动的流程设计器,和processon中的流程设计器界面几乎一样,因为本质上是一家的。

2 流程引擎的应用

2.1 Workflow

工作流管理联盟(Workflow Management Coalition,WfMC)作为工作流管理的标准化组织而成立。
WfMC对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。

在workflow中,流程引擎主要用于支撑流程审批和数据流转,应用场景非常广泛。
国外产品(开源或商用)通常需求和操作比较简单,不会有国内的需求那么复杂。国内的产品,经历了众多客户的锤炼,功能目前都比较强大。
一般而言,workflow使用场景最多的是OA产品。在OA办公中,包含了企业办公中的大量元素,这些元素足够形成特定的产品,比如门户系统、移动办公。在OA的项目落地过程中,结合行业、业务侧重点又可以形成行业解决方案和专题方案。
以下是某OA公司产品和解决方案。

流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

2.2 BPM(Business Process Management)

Workflow主要是解决审批和数据流转,而BPM主要是解决端到端、信息孤岛等问题而存在的。大多数用BPM产品的客户,都是在BPM基础上进行系统搭建,比如在BPM上面搭建OA、CRM、HR等系统。
BPM的使用场景,比Workflow更广泛,BPM产品中包含大量的和第三方系统交互的组件和自定义SQL、代码组件。比如,BPM系统中的文件触发器,可以在海关等交互场景下,通过监控FTP服务器中的文件,自动触发流程实例;可以通过定时器Timer,自动每日执行数据同步,并通过Mail节点将同步结果通知到相关运营成员等。

流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

BPM的应用,可以按照执行前、执行中和执行后来划分。

2.3 流程编排

流程编排是脱离流程业务领域的更高一层抽象,使用方可以通过流程编排系统,结合自己的业务场景进行业务定制。比如,可以将相关业务代码,封装成function,然后通过云厂商平台的FAAS平台,将不同业务的function进行关联和调度,从而完成某项任务。

3 流程引擎的架构设计

鉴于一些朋友可能没有使用和接触过流程引擎,先介绍流程引擎的组成单元,再介绍基于某个BPM产品的项目是如何进行开发的。我们通过BPM项目开发,对流程引擎的作用有个初步的认识。

3.1 BPM流程引擎的组成单元

  • 组织、角色、用户、成员的组织架构托管;

  • 流程资源文件的配置、校验、存储和执行,对不同的流程节点,流程引擎自动结合配置、数据处理其对应的业务逻辑,流程数据自动处理;

  • 表单配置、数据绑定,表单数据的根据流程配置自动处理;

  • 通用的数据接口;

  • 3.1.1 组织架构的设计

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    3.1.2 流程设计器

    流程设计器包含左侧的分组节点列表,和右侧的画布。左侧的节点可以如下进行设计。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    问题:对于一个XML或JSON格式的流程图,如何进行解析?
    不同的节点,按照不同的业务场景,配置不同的配置项。比如,对于Human Node需要配置审批人,配置审批环节的展示表单,审批环节能够修改哪些字段,哪些字段的修改要进行留痕等。

    3.1.3 表单设计器

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    这种是按照表单相关数据表,生成出一个表单,然后对表单字段进行配置和数据绑定。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    这种是Drag&Drop控件,然后配置控件的属性,如绑定字段等。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    这种是Drag&Drop控件,无需关联数据库表字段的表单

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    数据表生成表单的概要流程如下图所示。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    拖拽控件绑定数据表字段的概要流程如下。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    拖拽控件无需绑定数据表字段的概要流程。使用NoSQL的Document记录或使用RDS提供的JSON类型进行保存会比较方便。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    3.1.4 接口设计

    结合Activity的接口设计,如下图所示

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    一些系统在创建一个流程任务的时候,要先按照流程模板先创建一个应用示例,再关联发起人和备注,调用RuntimeService,执行到StartNode,这类设计因人而异,这么做略显繁琐。

    3.2 基于流程引擎的项目开发实践

    3.2.1 流程项目实践流程

  • 确定组织架构

  • 确定流程,包括流程布局、审批人设置、权限

  • 确定表单信息(字段、类型、数据源、校验规则)和表单样式

  • 确定页面布局、样式、数据字段、搜索、导入、导出

  • 报表

  • 3.2.2 组织架构

    组织架构实现,有两种方法,一种是按照维度进行数据管理,另一种是在同一棵组织架构树下进行管理。
    按照集团、公司、部门、用户等不同维度,进行数据管理,比较常见,这里不做讨论。下图为按维度维护数据的示例。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    按照同一棵组织架构树进行数据维护,界面一般显示为左树右表。大多数商业化产品,都会将此组织架构树进行内存缓存,以方便审批人查找、开窗选择OrgUnit、Role、User、Member等场景。Member的引入是为了解决一人多职等场景。一般发起流程的时候,需要带出发起人拥有的Member列表,从而后续节点取合适的审批人。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    对于组织架构而言,需要考虑,系统本身要具备OU存储的能力,对于没有组织架构的用户,可以直接在系统的组织架构中新建组织架构。同时,对于已有系统的客户,可以通过组织架构数据同步来进行数据自动维护。对于用AD域内部管控的客户来说,需要具备AD域身份认证的能力。对于复杂场景,比如用户是SaaS化等复杂场景,组织架构也需要在系统内部,支持使用API的方式来获取组织信息。
    所以在组织架构设计的时候,要使用插件的方式来做,具体使用哪种插件,可以在配置文件中进行配置。以下为一个商业产品的组织架构操作界面示例。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    常见的组织架构操作还有组织架构同步,比如流程系统同步微信企业号、钉钉等,这里不再展开。

    3.2.3 流程设计

    我们想象的流程,可能是向下面的这种简单流程。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    而实际项目,碰到的流程,一般是如下图所示的情景。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    初步看几个流程的模型文件是什么样的,先有个印象。

    流程引擎怎么做(流程引擎的架构设计)流程引擎怎么做(流程引擎的架构设计)

    <?xmlversion="1.0"encoding="UTF-8"?><definitionsid="definitions"
    targetNamespace="http://activiti.org/bpmn20"
    xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
    xmlns

    微商引流技巧网 www.yinliujiqiao.com 联系QQ:1716014443 邮箱:1716014443@qq.com

    Copyright © 2019-2024 强大传媒 网站地图 rss地图

    Top