F2工作流引擎参与者类型成员的交、并、互拆计算规则


      计算描述:计算规则指的是和其它“参与者类型成员”的之间的计算,必须求解处理人不为空的情况下才进行规则计算,各个“参与者类型成员”按序号顺序执行。

计算算法:并集(权重最低),交集(权重中),互拆(权重最高,且是独占式)

规则要点:

  1. 按序号顺序执行计算结果
  2. 参与者处理人不为空才参与成员间计算
  3. 权重

示例讲解

以上图图示为例,总共有三个参与者类型成员:SQL参与者,指定用户参与者,角色参与者。

那么我们用示例来解释一下规则里面的描述要点:

  1. 1.  按序号顺序执行计算结果

参与者前面都有一个序号:1是SQL参与者。2是指定用户参与者。3是角色参与者。那么引擎的执行会把这个顺序来执行求解各自的处理人。

通过右侧的上下剑头可以调整顺序。

示例假如:

1SQL参与者求解得出ABC

2指定用户参与者是BD

3角色参与者是EFG

条件假设

假设条件情况一:1是并集,2交集,3并集

那么执行过程是这样的:

引擎执行1结果一定是ABC,因为1是第一个参与者,然后把ABC存入一个临时的结果集中我们称之为temp,因为1是并集,那么继续执行(注意只要不是互拆类型的都继续执行),2是BD,那么BD相交于tem,执行BDtemp=B,将B放入temp=B,那么继续执行3EFG,用EFG并集于temp,执行EFG∪temp=BEFG放入临时结果集temp=BEFG,由于后面没有了,所以最终结果就是:BEFG。

假设条件情况二:1是并集,2互拆,3交集

那么执行过程是这样的:

引擎执行1结果 temp=ABC,因为1是并集那么继续执行(注意只要不是互拆类型的都继续执行),2是BD,那么BD互拆于temp,此时得到的新结果就是BD,由于2是互拆权重最高了所以后面的3不再执行去计算了,最终BD放入temp=BD,所以最终结果就是:BD

设置条件2求得得出的人是空的执行情况又会是怎样的?

 1SQL参与者求解得出ABC

2指定用户参与者是 空

3角色参与者是EFG

按上面的情况二,执行的结果就是1 temp=ABC,先执行2由于为空(虽然权重是互拆但是自身没有处理人所以不参与计算),所以2不参与计算,继续执行3EFG相交于temp,得出的结果就是空 temp=空

  1. 2.       参与者类型求解到的处理人不为空才参与计算

这里是指参与者类型自已求出来的处理人不能为空才参与。

比如:1的SQL参与者,如果求解出来的处理人是空的,那么这SQL参与者不参与成员之间的交集,并集,互拆的计算。

  1. 3.       权重

并集(权重最低)与temp进行合并

交集(权重中)与temp取相同共有的处理人

互拆(权重最高,且是独占式)代替掉temp成为新的结果,并且后面所有参与者都忽略掉。

相关