1、Windchill面试资料总结Windchill面试资料1、UI部分:1.1、navigation(菜单)一级菜单:Custom-actionModels.xml:Custom-actions.xml:二级菜单:Custom-actionModels.xml:Custom-actions.xml:三级菜单(partManagement-actionmodels.xml,changemanagement-actionmodel.xml,DocumentManagement-actionmodel.xml):Custom-actionModels.xml: 下拉菜单:Custom-actionMo
2、dels.xml:1.2、button(按钮) 创建按钮是一个十分简单的过程,例如要在如图所示的部分创建一个按钮:第一步:在导航中输入&jcaDebug=1第二步:查看debug之后发现此工具栏的Action Model Name=product list第四步:点击“定制”、“工具”后出现:第五步:在product list点击“搜索”后出现:第六步:点击“”后出现:第七步:查看PartManager-actionmodels.xml复制 到custom-actionModels.xml然后添加第八步:在custom-action.xml中添加 创建产品 创建产品 创建产品 netmarke
3、ts/images/arrow_rightright.gif 第九步:reload xml:java markets.util.misc.NmActionServiceHelper 1.3、页面客制化Tree1写两个方法:public List getRootNodes() throws WTException和 public Map getNodes(List list) throws WTExceptiongetRootNodes()方法如下public List getRootNodes() throws WTException NmCommandBean nmcommandbean =
4、 getModelContext().getNmCommandBean(); if (nmcommandbean = null) return null; /获取上下文的一个对象 NmOid nmoid = nmcommandbean.getPrimaryOid(); WTPart wtpart; if (nmoid = null) wtpart = getGolfCart(); else /确定这个对象nmoid是否是这个类(WTPart)提供的实例 if (!nmoid.isA(wt.part.WTPart.class) / The following 2 lines are one li
5、ne throw new ClassCastException(new StringBuilder().append( Expected part, but was: ).append(nmoid).toString(); /获得指向的对象 wtpart = (WTPart) nmoid.getRef(); if (wtpart = null) return null; else configSpec = ConfigHelper.service.getConfigSpecFor(wtpart); /返回一个一个指定的wtpart的list return Collections.singlet
6、onList(wtpart); getNodes()方法如下public Map getNodes(List list) throws WTException if (configSpec = null) configSpec = getDefaultConfigSpec(); HashMap hashmap = new HashMap(); Persistable p = WTPartHelper.service.getUsesWTParts( new WTArrayList(list), configSpec); ListIterator listiterator = list.listI
7、terator(); do if (!listiterator.hasNext() break; WTPart wtpart = (WTPart) listiterator.next(); wt.fc.Persistable p1 = plistiterator.previousIndex(); if (p1 != null) ArrayList arraylist = new ArrayList(p1.length); hashmap.put(wtpart, arraylist); wt.fc.Persistable p2 = p1; int i = p2.length; int j = 0
8、; while (j i) wt.fc.Persistable p3 = p2j; arraylist.add(p31); j+; while (true); return hashmap; 上面两个方法大概是讲获得上下文对象的节点和子节点,具体意思还没弄懂,懂的麻烦告诉一下。2增加自定义.xconf文件存储配置信息,如下其中serviceClass属性是指写步骤中两个方法的类,selector属性是指在页面引入Tree的时候treeHandler的属性值,这个值一定要跟selector属性值一样3将.xconf文件注册完成后写一个jsp页面,下面主要给出引入Tree的代码其中label属性是
9、显示在tree左上角的名称,需要做国际化;describeColumn是指Tree下面的属性,有多少个describeColumn就有多少个属性。4在Tree上面添加一些页面上的属性在中添加menubarName属性,就是在Tree上添加下拉菜单,属性值就是在actionModels.xml文件中配置的model属性中name的属性值;在下面添加标签就是在Tree上面添加全选菜单;在下面添加标签就是在Tree上面添加工具栏,其中的value属性值就是在actionModels.xml文件中配置的model属性中name的属性值。1.4、客制化view做View是建立在已经做好的Tree或Tab
10、le上的,针对上面做的Tree做View就是在Tree的页面上添加一些其它的属性,如在中添加属性configurable=true属性就会有视图,要做自己的视图的话还要写自己的方法;添加helpContext=xx属性就是一个帮助按钮,针对Tree或Table里面的内容不同可以更换XX的值;添加singleSelect=true属性就会有单选框,当然是建立在已经有全选菜单的情况下,如果没有添加全选菜单添加该属性也没有效果;添加pageLimit=10属性就是分页,Tree或Table中的内容过多时就可以分页显示,属性值是多少就标示一页显示多少条内容;添加showPagingLinks =tru
11、e属性就是给链接,例如Tree下面是一个文件夹,加了该标签之后就可以点击该文件夹进入文件夹内的详细内容。附上自己写View的代码public class ConfigTable extends AbstractConfigurableTable public List getSpecialTableColumnsAttrDefinition(Locale locale) List result=new ArrayList(); result.add(new TextAttribute(/*id*/foo,/*label*/Foo,locale); result.add(new TextAttr
12、ibute(/*id*/bar,/*label*/Bar,locale); return result; public List getOOTBTableViews(String tableId,Locale locale) throws WTException List result=new ArrayList(); Vector columns=new Vector(); columns.add(TableColumnDefinition.newTableColumnDefinition(/*name*/ColumnIdentifiers.NAME,/*lockable*/false);
13、TableViewDescriptor tvd= TableViewDescriptor.newTableViewDescriptor(/*name*/Sapmple View,tableId,/*system*/true,/*global*/true,columns, /*constraints*/null,/*match*/true,/*descriptption*/Sample View); result.add(tvd); return result; public String getOOTBActiveViewName() return null ; public String g
14、etLabel(Locale locael) return Custmom config table ; public Class getClassTypes() return new ClassWTPart.class; public String getDefaultSortColumn() return ColumnIdentifiers.NAME; 这段代码首先是获得试图下拉菜单中属性,然后添加两个自己的视图属性,再获取Table View,设置添加视图选项所需的属性(如Name、Number等),再设置Table View的名称描述并添加到Table View。下面的四个方法分别是获
15、取TableView的名称,在TableView上显示的第一名称是默认的,返回null就使用默认名称;获取用户可见的表的名称;获取表中的对象的类型;获取默认情况下排序列的ID。1.5、创建表格 第一步:建立jsp 页面。存放在jsp/lenovo目录下,引入标签。第二步:设置表格的属性。 属性包括,设置菜单栏,和工具条,分页,是否全部可选 ,建立视图,表格名称的国际化等。第三步:描述表格的列名称jca:describeColumn id=name/ 有两列,列名分别是名字和编号。第四步:获得表的模型 属性descriptor的值要等于表格属性的变量var的值。第五步:生成表,调用类的方法获得数
16、据。 第六步:怎么去获得服务器的数据,根据的对象的名称,编号等属性可以获得数据。QuerySpec qs; QueryResult qr = null; WTPart doc = null; try qs = new QuerySpec(WTPart.class); SearchCondition sc = new SearchCondition(WTPart.class, WTPart.Name docName, false); qs.appendSearchCondition(sc); qr = PersistenceHelper.manager.find(qs); catch (QueryException e) e.printStackTrace();1.6、客制化Wizard创建Wiard需要用用到的元素、A main wizard page 定义wizard的所有的子步骤。 向导两步,第一个是选择创建对象的类型,第二个是创建对象的属性、One or more wizard step pages 包含Wizard的所有子页面。、custom-actions.xml-定义wizard和所有子步骤action。 action id=setSecondWizStep name
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1