流程检查

问题描述

导致流程运行时阻塞(进入执行引擎阻塞)问题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%以下.包含网关配置的流程的质量提升

思考

平台型的业务迭代过程中需要考虑当前平台接入的功能,逻辑上正确的业务校验,功能迭代需要在迭代过程中遵循以下步骤

  • 根据新功能涉及功能,检索涉及到的业务方配置
  • 确认检查出的业务配置属于”不合格”配置,确认本次功能涉及符合业务正常运行要求
  • 根据当前检查结果,先周知对应业务方修改业务配置
  • 固化检查规则,尽量从入口封锁错误数据配置应用

以上操作可以通过全量业务检查提升平台配置整体的质量.并且全局统计过程中可以同时完成价值评估等操作.并且更能符合无感知迭代的要求

文章链接 https://fangzongzhou.github.io/2020/12/07/BPMN/流程检查/