流程中心-简略图预估策略详解原创
金蝶云社区-枫枫儿
枫枫儿
11人赞赏了该文章 758次浏览 未经作者许可,禁止转载编辑于2021年12月06日 15:10:45
封面

前言

流程的预估说简单点来说就是不断地对节点的出口连接弧做选择,直到到达结束节点,预估的关键点就是选取出口连接弧的策略。


背景

这几年,简略图经过大量客户的使用,不断的优化升级,预估结果变得更加准确,但是部分客户对于简略图预估的结果存在疑问,认为预估的不准确,最根本的原因是客户不知这里面的预估原理,导致只能根据主观能动性去判断。通过以往提单分析,问题大致可分为以下几方面

1、连接弧上的条件是“满足的”但是为什么简略图没有走这条分支的节点

2、在A节点时查看简略图是不符合“我觉得”的预估,A节点审批过了,到达B节点时查看的简略图的是正确的

3、后续的流程走向没有按照单据提交后预估的简略图来走

本文接下来将带你走进这神秘的预估领域


问题解答

首先得明确一个点,你查看的简略图,都是基于当前情况下预估出来的(后面说当前情况是什么意思)

前面也提过其实预估就是对连接弧的选择,每条连接弧都是可以配置条件的,而条件是基于流程变量生成的表达式,在选取策略中最核心的一点就是对连接弧上的条件进行判断,如果符合条件那就预估走这个连接弧,然后在下一个节点进行同样的预估操作。可知流程变量是判断的最小原子,前面说的当前情况就是当前流程变量,在流程的扭转过程中,会对流程变量的值进行操作,如(节点后置脚本,脚本节点,自动节点输出参数等等),流程变量变化了,那连接弧条件的判断结果也会发生变化,也就影响到了流程的预估,所以流程走到不同节点上看简略图,预估出来的节点可能存在差异,这也解释了背景中2和3的问题

大多客户去看连接弧条件时,默认忽略了审批结果,通过业务条件是否满足来判断这个连接弧是否满足条件。如图一

(图一)


我们程序去判断的时候不单单只看业务条件(费用报销单金额大于1000),还得判断审批结果是否同意,比如你刚提交,approveResult对象肯定是个空值,虽然你业务条件满足,但是审批结果不满足,逻辑符是并且的关系,那这个连接弧的条件是属于不满足的情况,解释了问题一


可通过流程属性查看当前流程变量值,见图二

(图二)


提供流程图版和文字版

1、预估详解流程图版

预估流程图.png


2、预估详解文字版

1、获取流程中正在运行的节点 (本文只考虑只有一个正在运行的节点,对于多个节点无非就是遍历而已)


2、对节点进行预估(循环

    2.1 如果当前节点是结束节点跳出循环,否则进入步骤3


3、获取节点的后续连接弧


4、对连接弧进行第一次排除策略

     4.1排除回路(通过算法计算出来的)

     4.2排除连接弧显示名称中含有不同意,拒绝,打回,不通过,N关键字的连接弧(见图三)

     4.3排除默认异常和异常转移(见图三)

     4.4返回连接弧,可分为下面两种情况

        4.4.1排除后的连接弧数大于0直接到步骤5

        4.4.2如果连接弧全部排除掉了,那就将4.3排除的连接弧添加上,如果还是没有,那就把4.2排除的连接弧添加上


5、通过步骤4的排除后如果只有一条连接弧则直接返回,跳转到步骤2继续预估这条连接弧的后继节点,如果还存在多条连接弧接着往下走


6、对连接弧进行第二次排除策略,判断步骤5的连接弧条件是否为真,判断后可分为下面两种情况

    6.1 没有一条符合条件的,则将步骤5的连接弧筛选出条件中含有审批同意的连接弧(过滤审批同意连接弧820暂时不支持)

    6.2 有满足条件的连接弧,如果有两条以上并且其中有《其他》类型(见图三)连接弧,则把《其他》类型的连接弧剔除掉(排除其他类型的连接弧策略820暂时不支持


7、对连接弧进行第三次排除策略,通过步骤6的筛选后,可分为下面两种情况

    7.1没有一条符合条件的连接弧,则获取步骤五返回的连接弧,选取其中离结束节点最远的连接弧(通过算法计算出了每一条连接弧离结束节点的距离)

    7.2多条符合条件的连接弧选取其中离结束节点最远的连接弧(通过算法计算出了每一条连接弧离结束节点的距离)


8、这时唯一确定了一条连接弧,跳转到步骤2继续预估这条连接弧的后继节点



(图三)




赞 11