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运算。
先举一个例子: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运算。
相关文章推荐
- PEGA之Declare-Expression 与Forward-Chaining/Backward-Chaining ---- RichardLu
- Brief overview of backward and forward
- Andrew Ng 深度学习课程Deeplearning.ai 编程作业——forward and backward propagation(1-4.1)
- gstreamer play speed fastforward fastbackward
- Caffe学习:Forward and Backward
- Highly Efficient Forward and Backward Propagation of Convolutional Neural Networks for Pixelwise Cla
- Feed Forward and Backward Run in Deep Convolution Neural Network 论文阅读笔记
- Forward, Backward, Backward+三种求SLCA的方法
- Backward_chaining
- Codeforces Gym 100889 B Backward and Forward
- 解剖caffe:Forward 和 Backward
- SQL Server ->> Move characters in string N position(s) forward/backward based on ASCII table(根据ASCII表的排列顺序将字符串内的数值往前或者后移N个位)
- Sql Server 聚集索引扫描 Scan Direction的两种方式------FORWARD 和 BACKWARD
- DFS遍历中forward、backward以及cross边的界定
- Caffe学习:Forward and Backward
- error at ::0 can't find referenced pointcut declareJointPointExpression
- saliency detection by forward and backward cues in deep-cnn
- 隐马尔科夫(HMM)模型 前向后向(Forward_backward) 维特比 (viterbi)
- caffe study(2) 关于forward和backward - backward
- forward declare class in namespace