• 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成为新的结果,并且后面所有参与者都忽略掉。

  • 相关阅读:
    网络流入门
    Sereja and Swaps(贪心+暴力枚举区间)
    multiset
    欧拉路
    整除分块
    蓝魔法师
    选点
    F. Tree with Maximum Cost(换根)
    “db2执行sql语句,注释没了”的解决办法
    Mybatis中的自带Mapper方法
  • 原文地址:https://www.cnblogs.com/f2flow/p/4887572.html
Copyright © 2020-2023  润新知