WF Rules值得注意的问题:引用的判断和死循环
- 在WF的环境下很容易造成死循环,因为根据forward-channing的推理原则,一条rule自己可以触发自己,在这种情况下 造成了死循环:IF this.disCount == 10 THEN this.disCount = 10 这条语句将很容易造成死循环。另外在两个或者 多个Rules的情况下也容易造成死循环:
R1 : IF this.Name != "headchen" THEN this.disCount = 10
R2 : IF this.disCount == 10 THEN this.Name = "minnie" - WF对对象属性引用的判断仅仅局限于属性本身,对于数组,字典等集合属性,当一个改变,则会认为整体性的改变,从而 触发相关的规则,而不理会另外的调用参数。比如:有一个属性Dictionary 类型的属性,不管某个Action触发了其中任何一项,WF都认为是这个Dictionary属性整个发生了改变而不进行分辨是哪一项,对于数组也是一样。