问题描述
导致流程运行时阻塞(进入执行引擎阻塞)问题top3
- 找不到出线(84.6)
- 表达式计算错误(3.14)
- 找不到变量(3.42)
统计数据发现,网关配置导致的流程配置异常占比80%,具有网关配置的流程图占比27%.
背景
业务流程定义是业务方通过实际业务需求绘制流程图,并添加相应节点/组件配置完成业务需求的过程.流程配置需要有一定的相关知识储备
复杂的流程需要使用网关(条件表达式)做流程控制,现有条件下,需要配置人员了解配置含义及具有相对清晰的思考方式,才能确保流程控制相关的配置符合MECE原则
网关配置是流程定义过程中极易出现错误的配置项,且网关配置错误平均需要耗费技术团队0.5-1pd时间,运维成本高
相关问题从正向的设计上做了多次调整(可视化编辑,非必填字段不能做网关变量校验),未能有效降低相关问题数量
了解相关问题后,尝试分析处理线上卡死流程
业务背景
可能导致网关配置异常的场景:
- 变量名填写错误
- 排他网关所有条件组合未被当前配置条件覆盖
- 不熟悉运算符优先级,误以为运算符是自左向右执行
- 一个当前符合mece的配置因为变量枚举增加而破坏整体规则
排他网关条件配置不正确可能带来的业务问题:
- 配置在发起节点后,可能导致特定的组合无法发起流程(这个问题处理起来比较简单,直接修改图再发布就好了)
- 排他网关导致某些路径完全不可达,运行一段时间后发现某些业务节点完全不可达,其他节点却命中的更多了
- 流程运行了很长,到了某个节点后无法处理,如果业务无法接受重新走流程,需要手动根据业务期望修改订单
目的
使用标准的算法持续检出流程控制中的潜在问题,辅助业务管理人员完成更缜密的流程设计.提升整体流程质量
检出60%以上归因为网关配置导致的线上流程卡死问题,报错的缺陷流程数收敛至20以下
MECE
MECE分析法,全称 Mutually Exclusive Collectively Exhaustive,中文意思是“相互独立,完全穷尽”。 对一个重大的议题,能够做到不重叠、不遗漏的分类,而且能够借此有效把握问题的核心,并成为有效解决问题的方法
Exclusive Gateway 排他网关
排他网关(也叫异或(XOR)网关,或更技术性的叫法 基于数据的排他网关), 用来在流程中实现决策。 当流程执行到这个网关,所有外出顺序流都会被处理一遍.其中条件解析为true的顺序流(或者没有设置条件,概念上在顺序流上定义了一个’true’) 会被选中,让流程继续运行.排他网关只会选择一条顺序流执行
方案
流程配置是一个整体,单个看一个节点或一个配置项无法评估整个流程的正确性.流程各个部分配置正确是流程整体正确的必要不充分条件
根据流程配置(表单配置,流程图配置),在合适时机根据当前配置生成执行表达式的数据源(变量组合),配合检查规则检出问题配置
效果预估
针对noOutGoing异常既往发生的异常,判定为流程配置异常,解决方式未调整流程变量配置/网关表达式配置的流程都是解决的目标.约占整体比例64%(41/64).
验证评估
检查未应用当前检查规则前的出错流程及对应版本,获取检出异常比例即可粗略判定为后续检出效果
检查规则
检查使用方式明确,但无法通过正向的配置规则约束的功能项
- 包容网关,网关中包含的变量的任意一种条件组合至少能命中一个条件分支
- 排他网关,网关中包含的变量的任意一种条件组合能且仅能命中一个条件分支,符合MECE原则
变量组合有效性细节:
- 网关层级导致的规则约束,前置网关中的表达式会对后置的网关中的变量组合产生约束
- 节点中变量的级联配置规则,A1-B,A2-C
检查时机
需要确保流程处于一个相对稳定的状态时进行检查,也就是线上的稳定流程和准备发布上线的时间点进行
- 新的检查点上线后,全量检查目前上线的所有流程,排除线上存在的隐患
- 流程保存完成,准备上线时检查本次变更的流程,实时保障流程变更质量
结果反馈
生成检查结果任务,确认检查结果非误报后推送给业务方
成果
一定程度上解决了网关配置问题,共检出问题114个,误报率保持在30%以下.包含网关配置的流程的质量提升
思考
平台型的业务迭代过程中需要考虑当前平台接入的功能,逻辑上正确的业务校验,功能迭代需要在迭代过程中遵循以下步骤
- 根据新功能涉及功能,检索涉及到的业务方配置
- 确认检查出的业务配置属于”不合格”配置,确认本次功能涉及符合业务正常运行要求
- 根据当前检查结果,先周知对应业务方修改业务配置
- 固化检查规则,尽量从入口封锁错误数据配置应用
以上操作可以通过全量业务检查提升平台配置整体的质量.并且全局统计过程中可以同时完成价值评估等操作.并且更能符合无感知迭代的要求