zoukankan      html  css  js  c++  java
  • WF Rules的执行过程

    不同于BizTalk中的基于Rete算法的引擎实现,WF仅仅利用基于优先级的演绎过程来分析结果。而且是基于对象实例而非类型。

    1) 首先把RuleSet中Rule按照优先级进行排序,若优先级相同,则按照Rule的名称Name来进行排序。并且所有的Pending标记均设置为True(其含义是当前的Rule的Action是否执行过,可否作为重新执行的候选)。
    2) 依次计算Rule的condition,每当Rule.Condition = true,执行Then Action ,若为false ,执行Else Action(若存在的话),若执行过Action(不论是ThenAction还是Else Action)则把Pending标记设置为false。
    3) 评估执行Action的结论,是否影响到了优先级比自己高的某些Rule的condition,若存在,并且此Rule不满足Reevaluation==Nevel && pending==false的条件(也就是说满足待选的条件),则执行之(当然此Rule也可能对其他Rule的条件产生影响,递归之)。
    4)当所有受其影响的Rule执行完毕,重新想下执行下一个Rule。
    5)直到最后一个Rule(及其Affacted Rules)执行完毕。
  • 相关阅读:
    密文搜索
    poj 1182 食物链
    1147. Heaps (30)
    1146. Topological Order (25)
    1145. Hashing
    1142. Maximal Clique (25)
    fzu 2112 tickets
    51nod 1554 欧姆诺姆和项链
    codeforces 963B Destruction of a Tree
    hdu 3294 Girls' research
  • 原文地址:https://www.cnblogs.com/headchen/p/824118.html
Copyright © 2011-2022 走看看