您的位置:首页 > 大数据 > 人工智能

PEGA之Declare-Expression 与Forward-Chaining/Backward-Chaining ---- RichardLu

2014-08-22 15:47 288 查看
Declare-Expression 与Forward-Chaining /Backward-Chaining

先举一个例子:Declare-Expression 中表达式是C = A+B。

当A和B的值确定的时候,C的值会自动计算出来,大家都会说这个是Forward-Chaining。

然而Backward-Chaining是怎么样的运算规则呢?

有一种理解是:如果A和C的值确定了,B的值能自动计算出来,这样就是Backward-Chaining。对于这种理解,我去做过试验,因为C是target property,不能对C直接进行赋值,那这种说法也就不成立了。

对于这2个概念,我的理解是:

Forward-Chaining的运算规则是:当改变A和B的值的时候,立刻就能计算出C的值,并且Declare-Expression的Calculate Value应该选择“Whenever inputs change”,这种即时运算规则就叫Forward-Chaining 。

Backward-Chaining的目的其实也是对结果C进行重新计算,而不是我们以前所理解的反向运算A或B。只是对表达式进行有条件的,延后的运算,也就是说当我们需要用到C的时候,系统才运算表达式得出C的值。Pega的解释是这样能够节省系统资源,只有Calculate Value选以下几个选项的时候才是Backward-Chaining:

1) When used, if no value present

2) When used, if property is missing

3) Whenever used

下面是我结合Declare-Expression的Calculate Value选项所做的几个试验:

运算表达式:testC = testA + testB

Activity:



1) 修改Declare-Expression的配置如图:



这种配置下运行测试Activity,需要满足以下2个条件,Target property才会有结果值:

① testC要被使用到(比如Show-property) 

②testC不能存在于Clipborad中

也就是说,这种条件下,Target Property只能被执行一次。除非你把testC从Page中Remove掉。

2) 修改Declare-expression的配置如图:



这种配置下运行测试Activity,需要满足以下2个条件,Target property才会有结果值:

①testC要被使用到(比如Show-property) 

②testC在运算前要是空,并且计算出的结果值不能为空。

比如两个空字符串””+”” = testC, 这样是无法得出testC的值的。

3) 修改Declare-expression的配置如图:



这种情况下,如果想要表达式能被触发,要求Target property至少被使用一次。

如果Target Property 没有在任何地方(包括UI显示)使用过,这个表达式永远不会被触发。

也就是说一旦Clipborad中有testC这个property之后,这个表达式就会进行即时Forward-Chaning运算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: