1.3.3 指定process中的各activity的數據mapping,即在各個activity中可流轉的數據
此步完成後,即可
在process中加入數據對象
可在process的activity中作數據mapping操作(否則,在input mapping中無的TaskInput中無UIRequest,在output mapping的TaskOutput中無UIResponse)
如此,即可在context與activity中的input/output做數據mapping。
在portal上的UWL中,將可以顯示任務列表,此處的任務列表顯示的內容可以定製並可用參數,在TASK的user text中定義,如下圖所示:
此處的參數也從綁定的userinterface(compontent)中而來,若不綁定,則無可選的context數據(在UIRequest或UIResponse節點中)。即context(從綁定的compontent中取到)數據與activity的taskInput中的UIRequest綁定;與taskOutput中的UIResponse綁定。通過這種方式來實現UI與process的數據綁定及流轉。
1.4 Deploy process
1.5 訪問
http://192.168.0.233:50000/index.html 的san鏈接中,通過Configuration Management–àprocesses and tasks—-àprocess reposity來啟動在1.4中deploy的流程
2 技術架構
DC關係:
3 結構
對於每個VIEW,分別對應有兩個interface,假設view的名稱為MMM,則接口名分別為IPrivateMMMView和IPublicMMMView,前者用於VIEW的對內數據操作,後者用於對外的數據交換,在VIEW中定義的ACTION在前者中定義,
在private的view中,
1. context中所選的每個node都對應有兩個靜態內部類,分別為I{NodeNmae}Node、I{NodeName}Element,在這兩個內部類中分別定義node的操作、屬性等東西。通過提供的這些方法來操作VIEW中的數據,如查找按鈕等。
2. view中定義的method、action也在此接口中定義
3.
每個view均實現java.io.Serializable類,有個IPrivateMMMView類型的變量wdThis,
public
PurchaseRequestView(IPrivatePurchaseRequestView wdThis)
{
this.wdThis = wdThis;
this.wdContext = wdThis.wdGetContext();
this.wdControllerAPI = wdThis.wdGetAPI();
this.wdComponentAPI = wdThis.wdGetAPI().getComponent();
}
對於每個web dynpro for java的組件,均有controller、view、window,其中controller對應有接口IPublic{組件名}、IPrivate{組件名}的接口,其中IPrivate extends IPublic,在IPublic中,有兩個內部類,分別為IContextNode繼承自DataNode表示節點,IContextElement繼承自DataNodeElement表示元素,在對應的Controller的JAVA文件中,有一個私有成員wdThis變量類型為IPrivate的,故通過這個變量即可實現對Context的訪問. 其中wdContext變量類型為上述IPublic中的內部類IcontextNode,通過該變量實現對Context的訪問;
此外,另兩個變量wdComponentAPI/wdControllerAPI的類型均為IWDCompontent,通過這兩個變量可實現對message、
盡量不要使用Custom Controller,只有在優化、簡單化開發時才考慮使用
wdDoPostProcessing()
在複雜的應用中,用於校驗來自多個組件的數據
wdDoBeforeNavigation

在不同的controller中共享數據
External-mapping
在設置internal mapping時,需要將cardinality設為1..n,否則在界面上不能輸入。若view的context為從control映射過來,則需在controller的context中設置cardinality,在view中不能設置。
目前還不支持structure字段context屬性的更名。
注意在VIEW中的BUTTON中,不要直接在VIEW中寫代碼更改屏幕中元素的值,而是應該在controller中更改值,方法是在controll中定義method,然後在view的layout的outline中,選中button,右鍵在出來的菜單中選擇apply templete,在此定義action並在後續步驟中選擇controll中定義的方法。 當然也可在view中action中寫代碼,但這種方法應該是違反了mvc的原理,即在view中直接更改了元素的值,理論上view應該只用於顯示數據,而不應該操作數據。即在controll中定義方法,然後在view中通過wdThis.wdGet{StartComp}Controller()去調用controll中的數據,如下例所示:其中{}中即為Compontent的名稱。
public
void
onActionInitialValue(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//$$begin Action Button(-750211490)
wdThis.wdGetStartCompController().initPersonInfo();
//$$end
}
以下文章點擊率最高
Loading…