背景:
在windchill中的列表(如:在[首頁]標簽的下面[更新]頁面)中有個[動作]欄位,點擊此欄位中的[請參見動作]的 鏈接會另外打開對應物件的[動作功能列表](more.jsp),在打開的頁面中有很多功能鏈接
問題:
如何在打開零件的[動作功能列表]頁面添加自己的動作
分析:
1.動態顯示[動作功能列表]頁面時參與的文件
1)%Windchill_Home%/codebase/actions.xml 此文件中定義了多個動作(可理解為定義了頁面中鏈接是如何響應用戶的)
2)%Windchill_Home%/codebase/action.properties 此文件為資源文件 (還有其他語言的資源文件如:相同目錄下臺灣資源文件 action_zh_TW.properties,此處就不一一列舉)
3)%Windchill_Home%/codebase/actionmodels.xml 此文件中為JSP框架定義了多個動作模型,每個模型中都定義了有哪些動作
4)%Windchill_Home%/codebase/netmarkets/jsp/object/more.jsp 此為訪問[動作功能列表]的jsp
2.各文件之間的關系 actions.xml中每個動作在頁面上顯示的鏈接名和鼠標懸浮時的提示信息在action.properties等多語言資源 中定義,actionsmodels.xml中模型中定義的動作都引自actions.xml中定義的動作,more.jsp通過幫助類獲得 actionsmodels.xml中的特定動作模型,并顯示動作在頁面中
3.文件actions.xml簡述
1)代碼片段如下:
2)代碼片段介紹:
1)<listtofactions>:actions.xml文件根元素為listtofactions.
2)<objecttype>:為listtofactions子元素,每個action都必須定義在objecttype元素中.
屬性: (1)name屬性是使用此objecttype時的別名,
(2)class屬性是設定所屬actions對什么類型的物件可見.
3)<action>:為objecttype子元素,定義我們的動作.
屬性: (1)name屬性是使用此action時的別名,
(2)checkaccess屬性是是否在接到請求時,檢查此動作請求者對此物件的權限
(3)renderType屬性是指定如何響應請求,當不設定時則將請求轉發至:
http://hostname/webapp/netmarkets/jsp/objecttype/action.jsp
如上代碼片段,請求轉發至:
http://hostname/webapp/netmarkets/jsp/site/view.jsp
此属性值可為:
GENERAL:是可以轉發指定的jsp頁面,例如:
那么執行的URL就是:
http://hostname/webapp/wtcore/jsp/customizedAction.jsp
對應的jsp文件在%Windchill_Home%/codebase/wtcore/jsp/customizedAction.jsp下.
GENERAL_WITH_CONTEXT:是與GENERAL類似,不同的是GENERAL_WITH_CONTEXT將會在上下文中包含對象
oid,
注意:此屬性在Windchill8版本中有,在windchill7版本沒有此屬性 PDM:此為執行template processing,
例如:
則我們就有注冊如下的URLActionDelegate:
wt.services/svc/default/wt.enterprise.URLActionDelegate/CREATEDOCUMENT1/java.lang.Object/0=com.ptc.windchill.pdmlink.doc.server.processors .CreateDocumentURLActionDelegate/duplicate
注意:<action>的name屬于和其子元素<command>的method屬性必需一樣,
其中<command>的class屬性與注冊的URLActionDelegate指定的類型一致,此處沒有設定
則取默認值"java.lang.Object"它與
...CREATEDOCUMENT1/java.lang.Object/0..中的"java.lang.Object"對應.
舉例如下: wt.services/svc/default/wt.enterprise.URLActionDelegate/list2 /wt.pdmlink.PDMLinkProduct/0=com.ptc.windchill.pdmlink.templateutil.server .processors.DefaultProjectLinkURLActionDelegate/duplicate
則action設定如下
wt.services/svc/default/wt.enterprise.URLActionDelegate/list2 /wt.pdmlink.PDMLinkProduct/0=com.ptc.windchill.pdmlink.templateutil.server .processors.DefaultProjectLinkURLActionDelegate/duplicate
4.文件action.properties簡述
在此資源文件中,key的命名規則為<objecttype>.<action>,例如上面片段key為:
site.view.description=Custom Built Page
site.view.tooltip=Custom Built Page
注意此處必須將系統上線后需要的語言類別的資源全部設定,不然在特定語言下將不會顯示此動作鏈接
5.文件actionmodels.xml簡述
在此文件中是設定model擁有的action,如下:
其中<model>子元素<action>的屬性name值與action.xml中<action>元素屬性name對應,
<model>子元素<action>的屬性type值與action.xml中<objecttype>元素屬性name對應
問題解決步驟:
1.建立自己的URLActionDelegate,并在properties文件中進行注冊
2.在actions.xml文件中進行定義Action,參見分析3
3.在 action中各個語言的資源文件進行設定,參見分析4
4.在actionmodels.xml文件中name為"more pdm parts file row actions"的model元素下 添加action元素,參見分析5