0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是流程引擎?介绍流程引擎的架构设计方法

OSC开源社区 来源:OSCHINA 社区 作者:京东云开发者-马瑞 2022-10-20 09:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 什么是流程引擎

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

f0bd2a48-4fc3-11ed-a3b6-dac502259ad0.png

常见的支撑场景有: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(自定义流程节点)

f0d69410-4fc3-11ed-a3b6-dac502259ad0.png

1.3.2 UML Activity Diagram

Flowportal BPM 的流程设计器

f10183a0-4fc3-11ed-a3b6-dac502259ad0.png

1.3.3 BPMN 系

activiti 的流程设计器

f1364d4c-4fc3-11ed-a3b6-dac502259ad0.png

炎黄盈动的流程设计器

f1dad57e-4fc3-11ed-a3b6-dac502259ad0.png

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

2 流程引擎的应用

2.1 Workflow

工作流管理联盟 (Workflow Management Coalition,WfMC) 作为工作流管理的标准化组织而成立。

WfMC 对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。

f2019858-4fc3-11ed-a3b6-dac502259ad0.png

在 workflow 中,流程引擎主要用于支撑流程审批和数据流转,应用场景非常广泛。

国外产品(开源或商用)通常需求和操作比较简单,不会有国内的需求那么复杂。国内的产品,经历了众多客户的锤炼,功能目前都比较强大。

一般而言,workflow 使用场景最多的是 OA 产品。在 OA 办公中,包含了企业办公中的大量元素,这些元素足够形成特定的产品,比如门户系统、移动办公。在 OA 的项目落地过程中,结合行业、业务侧重点又可以形成行业解决方案和专题方案。

以下是某 OA 公司产品和解决方案。

f217367c-4fc3-11ed-a3b6-dac502259ad0.png

2.2 BPM(Business Process Management)

Workflow 主要是解决审批和数据流转,而 BPM 主要是解决端到端、信息孤岛等问题而存在的。大多数用 BPM 产品的客户,都是在 BPM 基础上进行系统搭建,比如在 BPM 上面搭建 OA、CRM、HR 等系统。

BPM 的使用场景,比 Workflow 更广泛,BPM 产品中包含大量的和第三方系统交互的组件和自定义 SQL、代码组件。比如,BPM 系统中的文件触发器,可以在海关等交互场景下,通过监控 FTP 服务器中的文件,自动触发流程实例;可以通过定时器 Timer,自动每日执行数据同步,并通过 Mail 节点将同步结果通知到相关运营成员等。

f22bd816-4fc3-11ed-a3b6-dac502259ad0.png

f274cfc6-4fc3-11ed-a3b6-dac502259ad0.png

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

f2f5aa7e-4fc3-11ed-a3b6-dac502259ad0.png

2.3 流程编排

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

3 流程引擎的架构设计

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

3.1 BPM 流程引擎的组成单元

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

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

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

通用的数据接口;

3.1.1 组织架构的设计

f31d103c-4fc3-11ed-a3b6-dac502259ad0.png

3.1.2 流程设计器

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

f333e67c-4fc3-11ed-a3b6-dac502259ad0.png

问题:对于一个 XML 或 JSON 格式的流程图,如何进行解析?

不同的节点,按照不同的业务场景,配置不同的配置项。比如,对于 Human Node 需要配置审批人,配置审批环节的展示表单,审批环节能够修改哪些字段,哪些字段的修改要进行留痕等。

3.1.3 表单设计器

f34e6966-4fc3-11ed-a3b6-dac502259ad0.png

f480f5b0-4fc3-11ed-a3b6-dac502259ad0.png

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

f4b725ae-4fc3-11ed-a3b6-dac502259ad0.png

f4ee9ba6-4fc3-11ed-a3b6-dac502259ad0.png

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

f51d7d04-4fc3-11ed-a3b6-dac502259ad0.png

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

f53f939e-4fc3-11ed-a3b6-dac502259ad0.png

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

f575269e-4fc3-11ed-a3b6-dac502259ad0.png

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

f5e3ea34-4fc3-11ed-a3b6-dac502259ad0.png

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

f64138b0-4fc3-11ed-a3b6-dac502259ad0.png

3.1.4 接口设计

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

f6532476-4fc3-11ed-a3b6-dac502259ad0.png

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

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

3.2.1 流程项目实践流程

确定组织架构

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

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

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

报表

3.2.2 组织架构

组织架构实现,有两种方法,一种是按照维度进行数据管理,另一种是在同一棵组织架构树下进行管理。

按照集团、公司、部门、用户等不同维度,进行数据管理,比较常见,这里不做讨论。下图为按维度维护数据的示例。

f67575b2-4fc3-11ed-a3b6-dac502259ad0.png

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

f6aa5a5c-4fc3-11ed-a3b6-dac502259ad0.png

对于组织架构而言,需要考虑,系统本身要具备 OU 存储的能力,对于没有组织架构的用户,可以直接在系统的组织架构中新建组织架构。同时,对于已有系统的客户,可以通过组织架构数据同步来进行数据自动维护。对于用 AD 域内部管控的客户来说,需要具备 AD 域身份认证的能力。对于复杂场景,比如用户是 SaaS 化等复杂场景,组织架构也需要在系统内部,支持使用 API 的方式来获取组织信息。

所以在组织架构设计的时候,要使用插件的方式来做,具体使用哪种插件,可以在配置文件中进行配置。以下为一个商业产品的组织架构操作界面示例。

f6cdae94-4fc3-11ed-a3b6-dac502259ad0.png

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

3.2.3 流程设计

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

f6dc2ee2-4fc3-11ed-a3b6-dac502259ad0.png

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

f6f8c016-4fc3-11ed-a3b6-dac502259ad0.png

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

f7170ddc-4fc3-11ed-a3b6-dac502259ad0.png
















${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}).










management






${vacationApproved == 'true'}





${vacationApproved == 'false'}



Your manager has disapproved your vacation request for ${numberOfDays} days.
Reason: ${managerMotivation}












${employeeName}






${resendRequest == 'true'}


${resendRequest == 'false'}



一个屏幕截图都截不完的流程,如果用代码去实现整个流程,其工作量和效率,可想而知。而实际做项目,使用基于流程引擎的产品来做项目的时候,只需要确定节点、节点配置、数据配置和权限即可。

问题:一般流程,都带有邮件通知的节点,如何实现邮件通知节点?请考虑以下情景。

流程流转和执行的时候,会遇到各种情况的错误,比如找不到审批人等,此时流程引擎要对数据做 rollback,而邮件通知节点的业务逻辑已经执行过了。

权限方面,对于流程资源,哪些部门可以申请,哪些角色不可申请,都应该做流程控制。而在流程执行过程中,流程数据、不是路程的相关人也都不应该看到流程,处理过流程的审批人,不可以再对流程进行处理等,都是权限方面要考虑的问题。

3.2.4 表单设计

如下图所示的表单,可以分析以下,一个流程表单有多个主表信息和多个子表信息。一般而言,如果是通过流程引擎做非流程的数据处理,子表通过主表 ID 来做关联,如果通过流程引擎做流程的数据处理,子表和主表通过 TaskId 来做关联。以下为示例。

f736a192-4fc3-11ed-a3b6-dac502259ad0.png

流程系统需要表单设计器,一个流程的不同节点可以挂接不同的表单,以方便不同角色的人关注不同维度的流程信息

3.2.5 页面设计

一般而言,对于流程的发起、审批、历史记录等,都是通用的系统界面。而一些业务场景,需要单独做列表界面,以方便使用。对于已有门户系统的客户,需要融合其界面样式。以下为曾经做过的项目示例。

f79892f8-4fc3-11ed-a3b6-dac502259ad0.png

f7f89022-4fc3-11ed-a3b6-dac502259ad0.png

3.2.6 报表

由于不是所有客户都有报表系统,所以流程系统需要具备一个基本的报表功能。下图为示例。

f877db34-4fc3-11ed-a3b6-dac502259ad0.png

有报表系统的客户,可以使用其商业版报表系统,获取(直接取、数仓)数据进行展示。常见的报表系统有 FineReport、Tableau、PowerBI 等。

3.3 BPM 流程引擎架构设计

3.3.1 流程引擎的架构设计

f8866ec4-4fc3-11ed-a3b6-dac502259ad0.png

3.3.2 发起流程

f89f87c4-4fc3-11ed-a3b6-dac502259ad0.png

流程引擎处理过程

f922a820-4fc3-11ed-a3b6-dac502259ad0.png

执行节点处理过程

f93c1c6a-4fc3-11ed-a3b6-dac502259ad0.png

问题:在流程引擎处理过程中,如果一个节点有多条连线,如何寻找 FromNodeId 是某个 Node 的连线?

人工处理时,指定连线 text

3.4 流程引擎架构设计

f9724790-4fc3-11ed-a3b6-dac502259ad0.png

3.4.1 业务识别

识别业务场景中的配置项,使用集合或分组的方式,让业务可配置

支撑业务流程过程的可配置化

支撑业务场景中的数据,自动处理

3.4.2 流程引擎的实现

资源相关服务,资源加载,资源保存,资源加密等

配置项相关服务

PVM 虚拟机的实现,即通过某个节点(发起时为开始节点)作为初始节点,按照某个连线的 action 进行节点的自动执行的虚拟机

数据配置、数据权限

流程数据和业务数据的自动处理

4 商业机会

Business Process Analysis (BPA) 流程分析,帮助企业进行流程调整和优化

Process Assets Library(PAL)流程资产库,对企业流程进行知识化沉淀,将制度和流程落地做绑定,让审批人知晓流程中对应的职责

Process Simulate 流程模拟,自动化测试

Process Forecast 流程预测

低代码平台

更广泛的机会,在于业务领域 + 流程引擎,比如:DevOps、RPA、应用与服务编排、数据编排、FaaS 编排等。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CRM
    CRM
    +关注

    关注

    1

    文章

    154

    浏览量

    22199
  • BPM
    BPM
    +关注

    关注

    0

    文章

    24

    浏览量

    8402
  • SSO
    SSO
    +关注

    关注

    0

    文章

    9

    浏览量

    7732

原文标题:流程引擎的架构设计

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何确保微电网标准化架构设流程的完整性?

    当前,微电网建设普遍存在设计流程碎片化、环节衔接不畅、标准执行不到位、成果追溯缺失等问题,导致架构设计与实际需求脱节、工程落地困难、运维成本偏高,甚至影响系统长期稳定运行。GB/T
    的头像 发表于 04-24 11:19 181次阅读
    如何确保微电网标准化<b class='flag-5'>架构设</b>计<b class='flag-5'>流程</b>的完整性?

    智造引擎,仿真之巅:Altair HyperWorks 重塑工程研发新格局?

    物理场、大规模工程的复杂需求?作为全球领先的企业级有限元分析(CAE)平台,Altair HyperWorks 以全流程集成、顶尖技术与开放架构,成为万千制造企业破解研发难题、抢占市场先机的核心利器
    发表于 04-03 14:45

    为什么 VisionFive V1 板上的 JH7100 中并存 NVDLA 引擎和神经网络引擎

    我想知道为什么 VisionFive V1 板上的 JH7100 中并存 NVDLA 引擎和神经网络引擎,请问?您能否举一些关于他们的用例的例子?
    发表于 03-25 06:01

    请问openssl/libressl 是否已经使用硬件加密引擎

    虽然我 rsync / scp / SFTP 其中一个 CPU 内核将被 100% 使用,但总带宽也不是很好。(文件在 NVMe 上) 那么,正如标题一样,openssl/libressl 是否已经使用了硬件加密引擎
    发表于 03-16 08:17

    基于图扑 HT 引擎:数字孪生民航飞联网方案

    与动态效果呈现,能够搭建标准化、可交互的可视化管控界面,为工业互联网监控运维场景提供一体化前端可视化实现方案。 核心技术架构设引擎底层支撑 HT for Web 引擎基于 WebGL 实现高性能 3D 图形渲染,同时兼容 C
    的头像 发表于 02-05 14:26 362次阅读
    基于图扑 HT <b class='flag-5'>引擎</b>:数字孪生民航飞联网方案

    引擎是什么?

    引擎是光通信系统中的核心部件,它是一个集成化的光学子系统,负责实现光信号的收发处理,其性能对系统的信号传输有直接影响
    的头像 发表于 01-22 17:43 1904次阅读
    光<b class='flag-5'>引擎</b>是什么?

    充电桩SECC 方案:驱动电动汽车成为电网智慧储能单元的核心引擎

    方式介绍 SECC 的核心组成结构,并呈现米尔 SECC 在系统架构中的价值。 一、SECC 的核心定位 在直流充电过程中,SECC 负责: 建立车辆与充电桩之间的通信 识别插枪与准备状态 协商充电
    发表于 01-16 17:56

    外延片氧化清洗流程介绍

    外延片氧化清洗流程是半导体制造中的关键环节,旨在去除表面污染物并为后续工艺(如氧化层生长)提供洁净基底。以下是基于行业实践和技术资料的流程解析:一、预处理阶段初步清洗目的:去除外延片表面的大颗粒尘埃
    的头像 发表于 12-08 11:24 602次阅读
    外延片氧化清洗<b class='flag-5'>流程</b><b class='flag-5'>介绍</b>

    Vyking: 数字孪生与AI正在重塑现代产品内容的生产流程

    Vyking推出统一的端到端技术栈,将内容采集、AI制作与沉浸式体验无缝连接,为跨职能团队提供统一的内容生产流程,构建可扩展至不同产品、品类和市场的完整引擎。 伦敦2025年12月3日 /美通社
    的头像 发表于 12-04 18:13 1185次阅读
    Vyking: 数字孪生与AI正在重塑现代产品内容的生产<b class='flag-5'>流程</b>

    硬件加密引擎在保障数据安全方面有哪些优势呢?

    )通过硬件防火墙隔离,运算过程中密钥和敏感数据仅在加密引擎内部流转,不暴露至外部总线或内存。同时,硬件逻辑一旦固化,无法通过软件篡改,避免恶意程序注入篡改加密流程。 物理防篡改能力:部分高端型号集成物理
    发表于 11-17 06:47

    开关电源测试流程方法合集

    的标准解决方案,因此本文针对开关电源电性能的测试流程方法进行总结。 本文主要介绍开关电源的基础测试项目流程方法,其中温度、湿度以及电磁类
    的头像 发表于 10-31 09:36 1742次阅读
    开关电源测试<b class='flag-5'>流程</b><b class='flag-5'>方法</b>合集

    开关电源有哪些测试流程方法

    开关电源作为电子行业中应用最为广泛的电源模块,其测试流程方法需遵循 “从基础功能到复杂性能、从静态特性到动态可靠性” 的逻辑流程。具体的测试工程通常分为设计验证测试、生产测试和验证测试几个阶段
    的头像 发表于 10-28 17:47 1506次阅读
    开关电源有哪些测试<b class='flag-5'>流程</b>和<b class='flag-5'>方法</b>?

    TensorRT-LLM的大规模专家并行架构设

    之前文章已介绍引入大规模 EP 的初衷,本篇将继续深入介绍 TensorRT-LLM 的大规模专家并行架构设计与创新实现。
    的头像 发表于 09-23 14:42 1510次阅读
    TensorRT-LLM的大规模专家并行<b class='flag-5'>架构设</b>计

    CoWoP封装的概念、流程与优势

    本文介绍了CoWoP(Chip‑on‑Wafer‑on‑Substrate)封装的概念、流程与优势。
    的头像 发表于 08-12 10:49 3776次阅读
    CoWoP封装的概念、<b class='flag-5'>流程</b>与优势

    信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代

    DeepSeek-R1:强大的AI推理引擎底座DeepSeek是由杭州深度求索人工智能基础技术研究有限公司开发的新一代AI大模型。其核心优势在于强大的推理引擎能力,融合了自然语言处理(NLP)、深度
    发表于 07-16 15:29