Skip to content

介绍

流程引擎是专门用来处理 WMS 大型协作流程的框架特性。

流程引擎擅长解决:

  • 设备、接口、人员操作的流程很复杂;
  • 某些流程(比如审批流)经常调整;

工作流不适用于:

  • 如果工作节点之间需要频繁转换换数据,不适用;
  • 不擅长细节性的流程描述,他带来的性能损耗甚至会得不偿失;
  • 不擅长处理性能要求极高的场景;

流程引擎是借助数据库完成的,使用工作流时,每个流程步骤可能都会存储进数据库,因此性能方面会有一定损耗(经测试 每秒事务总吞吐量<=3000TPS);

架构设计

节点类型描述

接口节点

提供给外部系统(或界面)调用的节点,当调用此接口时,流程就会从此节点开始向后运行

特点包括:

  1. 人工执行:与过程节点不同,接口节点明确要求人类参与者执行或者外部系统的调用执行,而不是自动由系统完成。
  2. 数据收集:接口节点经常伴随有表单,用于收集用户输入的数据。这些表单可以非常简单,如确认按钮,也可以很复杂,包含多字段输入。

属性

URL接口地址

提供给外部系统(或界面)调用的接口,当调用此接口时,会命中此接口关联的流程节点

接口参数

调用接口时附带的参数,这些参数会参与到流程执行中

relModules 关联界面(可选项)

-- 填写功能模块路径,方便跳转


排他网关节点

在流程的不同路径之间做出选择,确保在任何给定时刻,流程只会沿着一个确定的路径前进

排他网关的特点包括:

  1. 决策点:排他网关扮演着决策点的角色,基于预定义的条件或流程变量的值来确定流程的下一个步骤。这些条件通常是布尔表达式,评估流程上下文中的数据。
  2. 单路径选择:当流程到达排他网关时,根据设定的条件,只有一个分支(路径)会被选中执行,而其他分支则会被忽略。这符合“互斥”或“异或”逻辑,即“要么这个,要么那个,但不能同时”。
  3. 流程变量决定流向:决定哪条路径被选中的条件通常与流程变量相关联,例如,一个审批流程可能根据“审批结果”变量(通过/不通过)来决定是继续到下一步骤还是返回修改。
  4. 图形表示:在BPMN图中,排他网关通常被表示为一个空心的菱形(有时内部带有“X”标记),以区别于其他类型的网关,如并行网关。
  5. 动态行为:排他网关支持动态流程设计,允许流程根据运行时的信息灵活地改变方向,这对于处理复杂的业务规则和决策逻辑尤为重要。
  6. 最佳实践:建模时,为了保持流程图的一致性和可读性,建议在同一个流程模型中对排他网关的表示(是否带有“X”)保持统一,并且清晰地定义每一个分支的触发条件。

排他网关是实现流程自动化和决策管理中不可或缺的一部分,特别是在需要根据不同情况采取不同行动的场景下。


并行网关节点

一种控制流构造,它用于同时启动两个或多个不同的流程路径,或者同步从不同路径汇聚回来的流程流。

并行网关的特点包括:

  1. 分支(Split): 在流程中,当到达一个并行网关时,如果配置为分支操作,它可以将流程分为两个或多个并发的路径。每个路径都可以独立进行,不需要等待其他路径完成。
  2. 汇聚(Join): 并行网关也可以用来汇聚从不同分支返回的流程流。这意味着所有并发路径必须全部完成,网关才会允许流程继续到下一个共同的任务或网关。这确保了并行任务的同步完成。
  3. 同步: 当用作汇聚点时,所有进入并行网关的路径上的任务需同时完成,流程才能通过网关继续。如果某条路径未完成,网关会等待,直到所有路径都就绪。
  4. 无条件: 并行网关不基于条件判断来决定流程走向,与排他网关(Exclusive Gateway)不同,排他网关依据条件选择单一路径。并行网关的操作纯粹基于是否所有分支都已经开始执行(分支时)或完成(汇聚时)。

在BPMN图中,并行网关通常表示为一个带有两条平行线的菱形图标,表明它可以同时处理多个分支。这种机制对于模拟那些需要同时执行多个步骤或者等待所有参与者完成特定任务的业务场景非常有用,比如在审批流程中同时需要财务和法务部门的审核。


过程节点

系统自动执行的任务节点类型,无需人工干预。这类任务通常涉及调用后端服务、执行自动化脚本或与外部系统进行集成。服务任务的具体功能和实现方式多样,但核心目的是自动化流程中的某个步骤,提高效率和减少人为错误。

特性包括:

  1. 自动执行:服务任务自动完成指定的服务调用或程序执行,无需用户的直接参与。
  2. 外部服务调用:可以用于调用Web服务、执行REST API请求、数据库操作或其他远程服务。
  3. 本地服务执行:能够调用本地部署的Java方法、脚本(如JavaScript、Groovy)或其他编程语言编写的函数。
  4. 集成能力:作为流程中的“胶水代码”,服务任务能够整合不同系统和应用,促进信息流通和业务流程自动化。
  5. 技术多样性:在不同的BPMN引擎(如Activiti、Camunda)中,服务任务的实现方式可能有所不同,支持调用Java服务、Web服务、通过SDK执行外部代码等多种技术手段。
  6. 条件与结果处理:服务任务可以根据输入数据执行条件逻辑,并根据执行结果决定流程的后续走向。
  7. 事务与错误处理:在某些实现中,服务任务可以参与到事务管理中,确保数据一致性,同时支持错误处理逻辑,以应对服务调用失败的情况。

应用场景示例:

  1. 自动审批:在贷款审批流程中,服务任务可以自动检查申请人的信用评分,决定是否继续流程或拒绝申请。
  2. 数据同步:在订单处理流程中,服务任务可以自动将订单信息同步到库存管理系统和物流系统。 3.通知发送:完成订单处理后,服务任务可以自动触发电子邮件或短信通知客户。

是实现流程自动化和集成业务系统的关键组件,能够显著提升业务流程的效率和响应速度。