您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > Windchill开发经验点滴
©2001PTCWindchill开发经验点滴EricLin,jilin@ptc.comPTCGlobalServicesJun18,2002©2001PTC2新对象类的设计在Windchill中,创建一个新的类,父类的选择一般需要考虑一下几点:是否与版本有关?RevisionControlled(版本控制)是否需要生命周期的管理?Managed(生命周期管理)是否需要在Windchill的文件柜中保存对象?FolderResident(对象保存在文件夹中,服从访问控制规则)Simple(服从业务规则的第一个业务对象,不保存在文件夹中,没有生命周期控制,但服从访问控制,如视图、配置项)Item(必须指定关联某个管理域,直接服从该域的访问控制规则,如文件柜、文件夹、数据格式等)©2001PTC3Simple和Item的区别共同点:继承于WTObject;都关联于管理域:Default;实现接口:DomainAdministeredAccessControlled不同点:Simple比Item多实现的接口:BusinessInformation(业务类信息,如对象标志、对象类型)Notifiable(事件通知)©2001PTC4Link类的设计创建一个新的Link类,需要根据Link两边的对象类型,选择最接近的父类:IteratedUsageLinkIteratedReferenceLinkIteratedDescribeLinkObjectToObjectLinkLink两边都必须是基于版本控制的对象©2001PTC5RationalRose中删除对象注意事项从类图中删除不需要的对象:在右边类图窗口中选择对象后,按Ctrl+D;从左边树中选择对象后,单击鼠标右键后选择“Delete”;如果从右边类图窗口中按Del键,则对象没有真正被删除;双击某个类,在ClassSpecification窗口中选择Relations选项卡,选择错误的关联,单击鼠标右键后选择“Delete”;注意:对于Windchill的类和Java的标准类,不能删除类,只能从视图中删除。©2001PTC6安装/卸载模型使用modelInstall安装模型信息:modelInstallext.QY.QYProject.*不再需要的模型/包,如果从目录中直接删除,可能将导致WindchillMethodServer无法正常启动,解决办法:使用modelUninstall卸载模型注册信息;如,modelUninstallext.QY.QYProject.*modelUninstallext.QY.QYProject.htmlclients.*将更改codebase目录下的四个.properties文件;©2001PTC7RationalRose使用UnitsControlUncontrolReloadSaveUnload设置新对象的图标:双击新对象对应的类,在弹出的ClassSpecification窗口中选择Windchill选项卡,在StandardIcon和OpenIcon项中输入图标的路径及名称;wt/clients/images/project.gif;©2001PTC8RevisionControlled派生的类Link:RoleADetail:master(QYProjectMaster),1,Navigate,AggregateRoleBDetail:iteration(QYProject),1..n,NavigateWindchill:Storage:ForeignKeyQYProjectMasternumbernameQYProjectnumber:Derived,masternumbername:Derived,mastername对于number命名的属性,由于是Oracle的保留字,需要重新定义字段名称:ColumnName:QYProjectNumber©2001PTC9Item/Simple派生的类从Item/Simple派生的类必须指定其相关联的管理域,以使对象服从其关联类的访问控制。必须在初始化函数initialize()中添加:setDomainRef(AdministrativeDomainHelper.getAdminDomainRef(AdministrativeDomainHelper.SYSTEM_DOMAIN));例如:protectedvoidinitialize(Strings)throwsWTException{super.initialize();setName(s);setDomainRef(AdministrativeDomainHelper.getAdminDomainRef(AdministrativeDomainHelper.SYSTEM_DOMAIN));}©2001PTC10类和接口类是具有同样属性和方法的对象的集合;接口是多种对象具有的共同的方法的集合;每个类只能继承于另一个类;一个类可以实现多个接口;父类的方法可以直接调用;接口中只包含方法的定义,必须在自己创建的类中实现它;调用接口中的方法,将自动根据不同对象调用各自的实现方法来实现不同的功能;©2001PTC11日期显示格式objectPropertyValuepropertyName=createTimestampformat=yyyy-MM-ddHH:mm:ss”对当前HTML中当前属性之后的所有属性值生效;日期格式代号:y:年M:月d:日H:小时(0~23)h:小时(1-12)m:分s:秒S:毫秒E:星期a:AM/PM©2001PTC12HTML中嵌入Appletappletcode=wt/boot/BootstrapApplet.classCODEBASE=../../..ARCHIVE=wt/security/security.jarWIDTH=110HEIGHT=22paramname=boot_jarvalue=wt.jarparamname=boot_classvalue=ext.QY.QYPartReport.PartReportAppletparamname=wt.context.localevalue=zh_CNparamname=cabinetsvalue=wt/security/security.cabparamname=oidvalue=SCRIPTLANGUAGE=WindchillgetReferenceString/SCRIPT/applet©2001PTC13Applet调用Java应用程序Stringoid;oid=getParameter(oid);PartReportDefineapp=newPartReportDefine(oid);app.setApplet(this);app.show();©2001PTC14在Java程序中运行应用程序Stringcmd=“…”;Runtime.getRuntime().exec(cmd);©2001PTC15Applet与ServletApplet在客户端运行;Servlet在服务端运行;Applet有图形用户界面;Servlet无图形用户界面;©2001PTC16模板处理器中的方法标准格式:publicvoidfunction_name(Propertiesproperties,Localelocale,OutputStreamos)throwsWTException获取HTML当前对象:getContextObj()获取HTML当前Action:getContextAction()输出信息到HTML:PrintWriterprintwriter=getPrintWriter(os,locale);printwriter.print(Table);…printwriter.println(/Table);printwriter.flush();©2001PTC17使用在其它模板处理器中定义的方法一个HTML模板只能对应于一个模板处理器,但可以在HTML中嵌入在其它模板处理器中定义的方法。useProcessorServiceservice=ext.generic.GenerateFormProcessormethod=enumeratedTypeMenu©2001PTC18获取oid获取Form中的oid:INPUTname=“oidtype=hiddenvalue=SCRIPTLANGUAGE=WindchillcontextualValuepropertyName=oid/SCRIPTgetFormData().getProperty(oid);获取URL中的oid:…?action=Update&oid=…getQueryData().getProperty(oid);©2001PTC19根据oid获取对象ReferenceFactoryrf=newReferenceFactory();WTPartpart=(WTPart)rf.getReference(oid).getObject();wt.part.WTPart:239101Object(句柄)+oid=Reference©2001PTC20根据对象获取oidReferenceFactoryrf=newReferenceFactory();WTReferencewtrf=rf.getReference(obj.toString());Stringoid=rf.getReferenceString(wtrf);©2001PTC21构造URLPropertiesproperties1=newProperties();properties1.put(oid,oid1);properties1.put(action,“ObjProps);URLurl=GatewayURL.getAuthenticatedGateway(null).getURL(“wt.enterprise.URLProcessor”,“URLTemplateAction”,//Methodnamenull,//additionalqueryitemsproperties1);Stringurl_str=HtmlUtil.createLink(url.toString(),null,number);©2001PTC22generateForm与processFormgenerateForm生成HTML;processForm处理HTML;调用processAction();©2001PTC23StringTokenizer用法StringTokenizerstk=newStringTokenizer(ss,,);while(stk.hasMoreTokens()){Stringusername=stk.nextToken();…}StringTokenizer(Stringstr)countTokens()©2001PTC24更新对象如果对象被检出,则对其工作副本进行更新。WTPartpart=(WTPart)getContextObj();if(WorkInProgressHelper.isCheckOut(part)){if(!WorkInProgressHelper.isWorkingCopy(part))part=(WTPart)WorkInProgressHelper.service.WorkingCopyOf(part);}…©2001PTC25navigateUsedBy使用该方法时需要注意返回的Link可能会有多种,需要区分。QueryResultqr=StructHelper.ser
本文标题:Windchill开发经验点滴
链接地址:https://www.777doc.com/doc-3296191 .html