背景:
在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