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

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:

http://p.blog.csdn.net/images/p_blog_csdn_net/bpman/EntryImages/20090728/image001.png

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

http://p.blog.csdn.net/images/p_blog_csdn_net/bpman/EntryImages/20090728/image003.png

 

這種配置下運行測試Activity,需要滿足以下2個條件,Target property纔會有結果值:

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

②testC不能存在於Clipborad中

也就是說,這種條件下,Target Property只能被執行一次。除非你把testC從Page中Remove掉。

 

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

 

http://p.blog.csdn.net/images/p_blog_csdn_net/bpman/EntryImages/20090728/image005.png

這種配置下運行測試Activity,需要滿足以下2個條件,Target property纔會有結果值:

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

②testC在運算前要是空,並且計算出的結果值不能爲空。

比如兩個空字符串””+”” = testC, 這樣是無法得出testC的值的。

 

 

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

 

http://p.blog.csdn.net/images/p_blog_csdn_net/bpman/EntryImages/20090728/image007.png

這種情況下,如果想要表達式能被觸發,要求Target property至少被使用一次。

如果Target Property 沒有在任何地方(包括UI顯示)使用過,這個表達式永遠不會被觸發。

也就是說一旦Clipborad中有testC這個property之後,這個表達式就會進行即時Forward-Chaning運算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章