Windchill常用開發(fā)大全【技術(shù)專攻】

上傳人:8** 文檔編號:134388436 上傳時(shí)間:2022-08-12 格式:PPT 頁數(shù):284 大?。?.48MB
收藏 版權(quán)申訴 舉報(bào) 下載
Windchill常用開發(fā)大全【技術(shù)專攻】_第1頁
第1頁 / 共284頁
Windchill常用開發(fā)大全【技術(shù)專攻】_第2頁
第2頁 / 共284頁
Windchill常用開發(fā)大全【技術(shù)專攻】_第3頁
第3頁 / 共284頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Windchill常用開發(fā)大全【技術(shù)專攻】》由會(huì)員分享,可在線閱讀,更多相關(guān)《Windchill常用開發(fā)大全【技術(shù)專攻】(284頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、AgendalWindchill開發(fā)內(nèi)容集合l開發(fā)目錄介紹l開發(fā)環(huán)境搭建lWindchill 模型環(huán)境搭建lWindchill類的介紹lWindchill各個(gè)業(yè)務(wù)對象的模型介紹lWindchill常用開發(fā)類和方法介紹開發(fā)規(guī)范開發(fā)規(guī)范lJAVA開發(fā)規(guī)范,請遵守sun標(biāo)準(zhǔn)lWindchill開發(fā)規(guī)范由于將來系統(tǒng)生產(chǎn)環(huán)境是Cluster架構(gòu),所以在編寫代碼時(shí),要盡量避免使用Static的Class變量,測試環(huán)境配置多個(gè)Method Server,以防止編寫的代碼在Cluster環(huán)境中運(yùn)行出現(xiàn)問題。系統(tǒng)運(yùn)行的錯(cuò)誤信息,要顯示在UI界面上,以便用戶和系統(tǒng)管理員了解,同時(shí)需要在系統(tǒng)log中記錄。Debug

2、語句要有開關(guān)控制,避免直接使用System.out.println()打印,導(dǎo)致將來的生產(chǎn)環(huán)境產(chǎn)生大量日志。每個(gè)客制點(diǎn)之間,設(shè)定一個(gè)Debug開關(guān),方便自身模塊的調(diào)試。Debug的開關(guān),缺省值設(shè)置為false??椭泣c(diǎn)之間的輸入和輸出部分,需要輸出Debug信息,方便客制點(diǎn)之間的調(diào)試。工作流中的表達(dá)式,具體實(shí)現(xiàn),都寫在WfUtil中,只在工作流中調(diào)用WfUtil中的方法。WfUtil中的方法注釋中,需要說明該段代碼,將在那些workflow中被調(diào)用。系統(tǒng)OOTB配置部分通過XML配置文件交付。方便新系統(tǒng)可以直接通過LoadFileSet導(dǎo)入配置。系統(tǒng)內(nèi)部值,例如IBA,全部由英文字母和數(shù)字組成,

3、不能包含特殊字符。禁止反編譯系統(tǒng)OOTB的Class文件,然后在此基礎(chǔ)上修改做客制,導(dǎo)致系統(tǒng)無法升級。需要對出廠文件(HTML template等)修改時(shí),需要保存原出廠文件的備份在wtSafeAreaptcOrig目錄下,修改后的文件另存到wtSafeAreasiteMod目錄需要增加的properties屬性不要放置在wt.properties中(service的注冊除外),其他都放置在codebasecomitbgext.properties??椭频男略鯟lass文件放置在codebasecomitbg對應(yīng)的目錄下。不要放在系統(tǒng)原有的包中。(除非使用了系統(tǒng)原有的Protected Met

4、hod,這種用法要盡量避免).設(shè)計(jì)規(guī)范設(shè)計(jì)規(guī)范l設(shè)計(jì)規(guī)范之建模 僅對持久化對象建模 只有數(shù)據(jù)需要保存到數(shù)據(jù)庫中的持久化業(yè)務(wù)對象才允許進(jìn)行建模。其余的操作類(例如:Processor、Delegate、Helper類等)不被允許進(jìn)行建模。模型命名規(guī)則對象的名稱、屬性名稱、方法名稱應(yīng)該滿足命名規(guī)則,同Java編碼規(guī)范的類命名、變量命名和方法命名。例如:類名 TRApplyDoc 屬性名trPhase 方法名getFormData 說明:歷史的模型如果要更改將要做數(shù)據(jù)遷移。因此只要求對新建立的模型,歷史模型不做要求。設(shè)計(jì)規(guī)范設(shè)計(jì)規(guī)范 字段擴(kuò)展 對于對象的屬性,一般情況下采用默認(rèn)長度。建模時(shí)要求考慮屬

5、性長度是否符合要求,如果需要加大長度,在模型中設(shè)置相應(yīng)的值即可。選擇父類 對于建模,盡量繼承底層的Windchill類,例如:ManagedItem等,繼承上層的具有實(shí)際業(yè)務(wù)含義的Windchill類(例如:WTPart、WTDocument)時(shí),在業(yè)務(wù)上符合“是一個(gè)(As-is)”的含義,例如:EleadPart是一個(gè)WTPart 不預(yù)留屬性 對象建模,不預(yù)留屬性。對于已有對象的預(yù)留屬性,因?qū)傩悦Q業(yè)務(wù)含義,也不允許使用。歷史模型已預(yù)留的屬性不做要求。例如:不再使用以前建模留下的reserv1、reserv2等預(yù)留屬性設(shè)計(jì)規(guī)范設(shè)計(jì)規(guī)范 關(guān)聯(lián)關(guān)系 兩個(gè)對象關(guān)聯(lián)時(shí),需要使用模型的關(guān)聯(lián)關(guān)系。盡量不

6、要采用建模為兩個(gè)獨(dú)立對象,在一個(gè)對象的屬性中記錄另一個(gè)對象的某個(gè)標(biāo)志屬性的方式。例如:錯(cuò)誤的建模方法:CBBCounter類有一個(gè)屬性cbbNumber,記錄CBB的編碼。正確的建模方法:引入一個(gè)Link對象,記錄CBBCounter類和WTPartMaster類的關(guān)系。布局 類圖中盡量保證各部分分布均勻,連線盡量不要交叉,整個(gè)類圖能夠顯示在一個(gè)屏幕范圍之內(nèi)(標(biāo)準(zhǔn)1024*768分辨率),對于引用的其他包的類、接口,可以將其屬性、方法隱藏起來。避免占用過大的顯示空間。建模搭建環(huán)境建模搭建環(huán)境l進(jìn)入到Windchill+Information+Modeler-091_F000lRational_

7、Rose_for_Windowssetup.exe安裝l安裝完成之后,load注冊文件l進(jìn)入到WT_HOMEroseAddIn,將VirtualPathMap.AddIn.reg和Windchill.AddIn.reg文件中的路徑修訂為個(gè)人本機(jī)環(huán)境的路徑并注冊 rational_perm.dat.txt建模搭建環(huán)境建模搭建環(huán)境l啟動(dòng)rose,點(diǎn)擊“Edit Path Map”查看注冊信息 rose參數(shù)配置.txtRose模型介紹模型介紹l打開Rose模型,點(diǎn)擊FileOpenl選擇srcwtWTdesigner.mdlRose模型使用模型使用l點(diǎn)擊【是】,系統(tǒng)會(huì)加載l其中Logical Vie

8、w是系統(tǒng)核心 邏輯顯示,其中3rd是Windchilll 中使用了哪些Java技術(shù)模塊、ext 是系統(tǒng)客制化擴(kuò)展模型目錄、wnc是Windchill核心業(yè)務(wù)邏輯組成l點(diǎn)擊Save AS,重新命名為HelloWorld.mdl文件,彈出框選擇No,環(huán)境搭建好后,即可創(chuàng)建模型擴(kuò)展模型擴(kuò)展模型模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l針對上面的圖示,自定義個(gè)模型EleadDocs,繼承WTDocument,該模型自定義方法getEleadDocName()和屬性eleadDocType,且將其屬性設(shè)置constrain=false,點(diǎn)擊保存(遇到提示,點(diǎn)擊No)l選擇菜單Units.Control docs,保存為

9、docs.cat模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l生成系統(tǒng)文件,選中docs包模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l生成系統(tǒng)文件.mData和EleadDocs.java文件l在src目錄下自動(dòng)生成包路徑和文件 docs.mData和EleadDocs.java模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l系統(tǒng)會(huì)自動(dòng)生成SQL【W(wǎng)T_HOME】dbsql3exteleaddocsl生成.ser文件【W(wǎng)T_HOME】codebaseexteleaddocsl執(zhí)行SQL語句 進(jìn)入到 Oracle SQL*Plus路徑,執(zhí)行命令:操作完成之后,即可使用EleadDocs對象了!模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l完整的例子說

10、明 在windchill/src/目錄下建立一個(gè)helloWorld目錄,在windchill/codebase/目錄下也建立一個(gè)helloWorld目錄 打開rose軟件,依次打開fileopen定位到windchill/src/wt/WTdesigner.mdl,打開 出現(xiàn)這個(gè)對話框,選擇是,然后就耐心等待系統(tǒng)加載完這個(gè)文件。當(dāng)完全加載完以后把這個(gè)文件保存到上面建立的windchill/src/helloWorld目錄下,名稱為helloWorld模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l打開helloWorld.Mdl,打開后如下圖 你可以發(fā)現(xiàn)你打開的時(shí)候是沒有wt,java,helloWorld這3個(gè)

11、package的,因?yàn)檫@3個(gè)package中wt和java是從左邊的方框中拖過來的,而helloWorld這個(gè)是我自己建立的,然后把helloWorld和wt,java這2個(gè)package建立關(guān)系如上圖。然后雙擊helloWorld這個(gè)package在這個(gè)package中開始創(chuàng)建類。模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l打開helloWorld這個(gè)package后會(huì)出現(xiàn)下圖模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l你打開的時(shí)候是什么都沒有的,這里面person,personLink這2個(gè)類是自己建立的,可以從中間的那個(gè)條中選擇到的,然后對這2個(gè)類進(jìn)行編輯,選中person這個(gè)類,點(diǎn)右鍵,會(huì)出現(xiàn)l點(diǎn)擊第一個(gè),然后就會(huì)出現(xiàn)模

12、型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l選擇attributes這個(gè)標(biāo)簽?zāi)P蛿U(kuò)展模型擴(kuò)展(續(xù)續(xù))l然后在空白的地方點(diǎn)右鍵就會(huì)出現(xiàn)一個(gè)快捷菜單,在這個(gè)菜單中可以創(chuàng)建一個(gè)變量,然后雙擊變量會(huì)出現(xiàn)模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l在這個(gè)里面會(huì)對這個(gè)變量的類型進(jìn)行設(shè)置,然后點(diǎn)windchill標(biāo)簽 找到constrain這項(xiàng),設(shè)置value為false,每個(gè)變量都需要這樣進(jìn)行設(shè)置,然后讓這個(gè)類繼承wt.fc.Item這個(gè)抽象類,這樣就表明person這個(gè)類現(xiàn)在是持久的。同理把person這個(gè)類和wtpart這個(gè)類建立關(guān)聯(lián),關(guān)聯(lián)的類為PersonLink然后讓personLink繼承ObjectToOb

13、jectLink這個(gè)類,然后把這個(gè)helloWorld.mdl保存一下,然后依次打開fileunitscontrol,然后再依次打開,toolswindchillsystem generation模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))選中前3項(xiàng)點(diǎn)OK,然后這個(gè)時(shí)候你就可以在windchill/src/helloWorld這個(gè)目錄下看到有Person.java和PersonLink.java這2個(gè)java文件,并且在windchill/db/sql3/helloWorld這個(gè)目錄下面也會(huì)產(chǎn)生幾個(gè)sql文件,把這幾個(gè)sql文件導(dǎo)入到數(shù)據(jù)庫中建立相關(guān)的表,要注意建立的先后順序:只用操作以create開頭的3個(gè)sq

14、l文件模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l修改Person.java加入下面的代碼protected void initialize()throws WTExceptionDate today=new Date();super.initialize();System.out.println(Person-initialize executing!);String s=String.valueOf(today.toLocaleString();setId(s);然后把person.java和personLink.java這兩個(gè)文件放到windchill/codebase/helloWorld/目錄下進(jìn)行編

15、譯。模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l寫測試代碼public class HelloWorldTest public static void main(String args)String userName=args0;String password=args1;RemoteMethodServer methodserver=RemoteMethodServer.getDefault();methodserver.setUserName(userName);methodserver.setPassword(password);HelloWorldTest test=new HelloWorldTest

16、();test.test();模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l測試代碼public void test()tryPerson p=Person.newPerson();p.setName(111);p.setTitle(222);p.setAge(1111);p=(Person)PersistenceHelper.manager.save(p);WTPart part=getPartByNumber(D3_0000000064);if(part=null)Debug.P(part is null);return;PersonLink link=PersonLink.newPersonLink(par

17、t,p);link=(PersonLink)PersistenceHelper.manager.save(link);if(link=null)Debug.P(link is null);return;WTPart part1=link.getUse();Person p1=link.getUsed();if(part1=null)Debug.P(part1 is null);elseDebug.P(part1 is+part1.getNumber();if(p1=null)Debug.P(p1 is null);elseDebug.P(p1 is+p1.getName();catch(Exc

18、eption e)e.printStackTrace();模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))public static WTPart getPartByNumber(String number)WTPart part=null;try QuerySpec qs=new QuerySpec(WTPart.class);SearchCondition sc=new SearchCondition(WTPart.class,WTPart.NUMBER,=,number);qs.appendWhere(sc);QueryResult qr1=PersistenceHelper.manager.find(qs);

19、while(qr1.hasMoreElements()part=(WTPart)qr1.nextElement();catch(Exception e)e.printStackTrace();return part;模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))l把這個(gè)測試類在windchill shell 中運(yùn)行,運(yùn)行結(jié)果為下圖l然后我們現(xiàn)在看下數(shù)據(jù)庫中的情況模型擴(kuò)展模型擴(kuò)展(續(xù)續(xù))在person和personlink這兩張表中都有了數(shù)據(jù),測試結(jié)果正確注意事項(xiàng)在進(jìn)行建模之前要對一些參數(shù)進(jìn)行設(shè)置,也就是把rose的操作目錄指向windchill的目錄開發(fā)目錄介紹開發(fā)目錄介紹WT_HOMEWT_HOMEwtCusto

20、wtCustomm wtSafeAreawtSafeAreasrcsrc db db siteModsiteModptcCurrentptcCurrentptcOrigptcOrigsqlsql comcomitbgitbgitbgtasks tasks comcomitbgcomcomtemplatestemplatesloadfilesloadfilesloadXMLFilesloadXMLFilescomcomitbgcomcomitbgcodebasecodebase comcom itbgcom com itbgjspjspnetmarkets comitbg1、wtCustom 放

21、入修改系統(tǒng)的放入修改系統(tǒng)的rbInfo文件文件2、wtSateArea 下的下的siteMod文件中放入修改后的系統(tǒng)文件,比如文件中放入修改后的系統(tǒng)文件,比如.jspf文件、文件、html、xml;ptcCurrent文件放系統(tǒng)當(dāng)前版本的文件;文件放系統(tǒng)當(dāng)前版本的文件;ptcOrig放系統(tǒng)最原始的文件放系統(tǒng)最原始的文件 ant-f bin/swmaint.xml installSiteChanges3、codebase是運(yùn)行時(shí)目錄,放編譯后的是運(yùn)行時(shí)目錄,放編譯后的.class文件、放文件、放WEB相關(guān)文件、放模板文件相關(guān)文件、放模板文件(.html)4、src目錄放客制化的源文件,放國際化目

22、錄放客制化的源文件,放國際化.rbInfo文件。文件。5、tasks目錄放系統(tǒng)服務(wù)文件目錄放系統(tǒng)服務(wù)文件.xml文件,文件,Info*Engine配置文件配置文件6、loadFiles目錄,放置需要導(dǎo)入到系統(tǒng)的工作流、生命周期等目錄,放置需要導(dǎo)入到系統(tǒng)的工作流、生命周期等 7、loadXMLFiles目錄,放置配置系統(tǒng)的信息的目錄,放置配置系統(tǒng)的信息的.xml文件文件8、DB目錄,放置建立模型后生成的目錄,放置建立模型后生成的SQL語句語句Windchill類的介紹類的介紹l1.如何在系統(tǒng)中查找對象對應(yīng)的類l2.如何通過類在數(shù)據(jù)庫中查找相關(guān)的表 如何在系統(tǒng)中查找對象對應(yīng)的類如何在系統(tǒng)中查找對象

23、對應(yīng)的類打開類型管理器,選擇部件,這個(gè)部件就對應(yīng)了系統(tǒng)中的一個(gè)對象,頁面的右部就會(huì)顯示這個(gè)類的具體信息,在名稱這欄中的wt.part.WTPart就是系統(tǒng)中部件對應(yīng)的類,wt.part是包名,WTPart就是類的名稱,這個(gè)時(shí)候就可以在Eclipse中查看這個(gè)類有那些相關(guān)的函數(shù),同時(shí)也可以到wt.part這個(gè)包中查看其它的一些類,這些類也都是和WTPart有關(guān)。如何通過在系統(tǒng)中查找對象對應(yīng)的類如何通過在系統(tǒng)中查找對象對應(yīng)的類l系統(tǒng)中的業(yè)務(wù)對象在Rose模型中都可以看到相應(yīng)的方法系統(tǒng)類的設(shè)計(jì)系統(tǒng)類的設(shè)計(jì)l系統(tǒng)中的服務(wù)類設(shè)計(jì)為xxHelper.java文件和xxService.java是組合關(guān)系,系

24、統(tǒng)中的所有業(yè)務(wù)對象對應(yīng)的方法在對應(yīng)的service中,通過xxHelper.serivce.方法 l部件操作:WTPartHelper.service.方法l文檔操作:WTDocumentHelper.service.方法lEC操作:ChangeHelper2.service.方法l文件夾的操作:FolderHelper.service.方法l生命周期的操作:LifeCycleHelper.manager.方法l推進(jìn)流程對象的操作:MaturityHelper.service.方法l通知機(jī)制對象的操作:NotificationHelper.service.方法l位號的操作:Occurrence

25、Helper.service.方法l參與者的操作:OrganizationServicesHelper.manager.方法l版本的操作:VersionControlHelper.service.方法如何通過類在數(shù)據(jù)庫中查找相關(guān)的表如何通過類在數(shù)據(jù)庫中查找相關(guān)的表在類型管理器中定義的那些對象在數(shù)據(jù)庫中都有相對應(yīng)的表存在,表的名稱也就是類的名稱。例如:部件對象的類名稱是WTPart,則數(shù)據(jù)庫中就對應(yīng)了一張名為WTPart的表。WINDCHILL的數(shù)據(jù)庫中的一張表其實(shí)對應(yīng)的就是系統(tǒng)中的一個(gè)類名,所以有很多開發(fā)可以以數(shù)據(jù)庫的表為入手點(diǎn),如果你知道系統(tǒng)中的某個(gè)信息是存儲在數(shù)據(jù)庫中的具體表中的時(shí)候,就可

26、以根據(jù)表的名稱去系統(tǒng)中查找相關(guān)的類,來獲取你需要的數(shù)據(jù) 如何通過類在數(shù)據(jù)庫中查找相關(guān)的表如何通過類在數(shù)據(jù)庫中查找相關(guān)的表上面就是數(shù)據(jù)庫中WTPart的表,這里面的數(shù)據(jù)在WTPart這個(gè)類中就可以獲取,例如你如果想要獲取一個(gè)部件的生命周期狀態(tài),數(shù)據(jù)庫中對應(yīng)的字段是STATESTATE這個(gè)字段,那么你就可以在在代碼中通過part.getLifeCycleState().getDisplay()這個(gè)函數(shù)來獲取,所以在學(xué)習(xí)WINDCHILL系統(tǒng)的開發(fā)的時(shí)候一定不能忽略數(shù)據(jù)庫的作用。Windchill各個(gè)包的介紹各個(gè)包的介紹PackageFunctionalityaccess Functionality

27、 for access control;used to define access policies and object ownership(that is,define rules for what users or groups have access to what information).admin Functionality to create administrative domains and policies.change2Functionality to manipulate change items(change issue,request,investigation,

28、proposal,order,and change activity).container.batch Functionality for a client application to gather a group of create,modify,and delete assertions,and submit them to a service method for processing in one transaction.content Functionality for handling content data(attaching files and URLs to conten

29、t holders,such as documents and change objects)and associating business information metadata(such as the author)with content.docFunctionality for document management.effectivity Functionality to assert that a PDM object is effective under certain conditions.Windchill各個(gè)包的介紹各個(gè)包的介紹PackageFunctionalitye

30、nterpriseFunctionality for the basic business objects used in theWindchill system.eventsFunctionality for registration,subscription andnotification of processing events.The events packageprovides a hierarchical subscription mechanism thatmakes it possible to subscribe directly to events ofinterest.E

31、vent dispatching is based on simplesynchronous in-thread/transaction calls.fcBasic foundation classes(WTObject,Item,and Link)and basic services for those classes(persistence,objectmappable,and identify service).federationThe federation service provides functionality to createand manage proxy objects

32、 of remote systems andperform utility functions supporting the federationsystem.folderFunctionality to put information into folders andcabinets for navigational purposes.fvFunctionality to define and execute the vaultingalgorithm for content items.identityFunctionality to display the identity of bus

33、inessobjects;that is,their type and identifier(for example,atype of part and an identifier of part number).Windchill各個(gè)包的介紹各個(gè)包的介紹PackageFunctionalityindexFunctionality to index metadata and content data,controlling how information is put into search indexes.introspectionFunctionality to make model in

34、formation available to arun time system.This includes class hierarchy,association,attribute,and database mappinginformation.lifecycleFunctionality to define and use life cycles.locksFunctionality to lock and unlock objects.notifyFunctionality to define rules such that when certainevents occur to cer

35、tain objects,E-mail notification issent.orgOrganization services;functionality to create users andgroups(generically called principals).ownershipFunctionality to define ownership of an objects.partFunctionality to manipulate parts.projectFunctionality to create projects,associate projects tobusiness

36、 objects,and resolve roles to principals.queryFunctionality to create queries for retrieving persistentobjects.Windchill各個(gè)包的介紹各個(gè)包的介紹PackageFunctionalityqueueFunctionality to define and manage queues.Queues areused to persistently record deferred processes.Becausequeued processes are persistently sto

37、red,they areguaranteed to execute at a later time.routerFunctionality to distribute execution of tasks tomultiple W indchill method servers.schedulerFunctionality to schedule execution of resourceintensive method invocations and keep a history oftheir outcomes.servicesFunctionality to define and man

38、age applicationservices.Service management includes service start upand shutdown along with service event registration,subscription and notification.sessionFunctionality to define and manage user sessions.utilThe util package groups together simple low levelutilities that do not belong in other pack

39、ages.vcVersion control;functionality to handle versions ofobjects.Version control services described in thischapter include baselines,configuration specifications,version structuring,version viewing,and work inprogress.w orkflowFunctionality to create and manage workflowdefinitions,initiate and mana

40、ge process instances,anddistribute work items to users and groups.Windchill中的中的Model簡介簡介 Windchill中的中的Model簡介簡介 Windchill Document客制方法介紹客制方法介紹 Windchill中中UI介紹介紹Windchill各個(gè)業(yè)務(wù)對象的模型介紹各個(gè)業(yè)務(wù)對象的模型介紹Windchill Document客制方法介紹客制方法介紹l文檔屬性文檔屬性在在Windchill document中中WTDocumentMaster和和WTDocument是兩個(gè)主要對象是兩個(gè)主要對象:在WTDo

41、cumentMaster中對于文件中所有的版本版序有相同的值。如果文件已建立很多版本版序,當(dāng)master改變時(shí)將影響所有的版本版序。在 WTDocument每一個(gè)版序有不同的值對應(yīng),因此WTDocument的改變只影響一種版序。l如果想規(guī)定一個(gè)從一個(gè)版序到另一個(gè)版序變化的屬性,則需如果想規(guī)定一個(gè)從一個(gè)版序到另一個(gè)版序變化的屬性,則需要擴(kuò)展要擴(kuò)展 WTDocument。Windchill Document客制方法介紹客制方法介紹l類型類型 枚舉類型(值列表)領(lǐng)域,在windchill中讓用戶能夠進(jìn)行分類管理的文件。類型的值被定義在 wt.doc.DocumentTypeRB中。如果有一個(gè)要求不顯

42、示doctype屬性,只需要把類型管理中設(shè)置類型的實(shí)例化中的勾去掉即可,不可刪除。Windchill Document客制方法介紹客制方法介紹lDepartment 在Windchill中允許用戶選擇區(qū)域,負(fù)責(zé)文件的管理 枚舉類型 值都被定義在 wt.doc.DepartmentListRB中。Windchill Document客制方法介紹客制方法介紹l文件與文件之間的關(guān)系文件與文件之間的關(guān)系:文件結(jié)構(gòu)文件結(jié)構(gòu):一個(gè)文件可以使用很多其它子文件,其下層一個(gè)文件可以使用很多其它子文件,其下層子文件也可以被其它文件使用。子文件也可以被其它文件使用。(使用與被使用的關(guān)系使用與被使用的關(guān)系)文件參考文

43、件參考:一個(gè)文件涉及的信息存在于其他文件中。一個(gè)文件涉及的信息存在于其他文件中。(參參考與被參考的關(guān)系考與被參考的關(guān)系)Windchill Document客制方法介紹客制方法介紹l文件結(jié)構(gòu)文件結(jié)構(gòu)Windchill Document客制方法介紹客制方法介紹l文件參考文件參考Windchill Document客制方法介紹客制方法介紹l創(chuàng)建文件以及文件的主文檔、刪除文件創(chuàng)建文件以及文件的主文檔、刪除文件l添加文件的附件、刪除附件添加文件的附件、刪除附件l文件的出庫、入庫以及修改主文檔文件的出庫、入庫以及修改主文檔l文件下載文件下載l文件與文件之間創(chuàng)建關(guān)聯(lián)文件與文件之間創(chuàng)建關(guān)聯(lián)(文件參考、文件結(jié)

44、構(gòu)文件參考、文件結(jié)構(gòu))Windchill Document客制方法介紹客制方法介紹三種創(chuàng)建文件的構(gòu)造方法:三種創(chuàng)建文件的構(gòu)造方法:lnewWTDocument();lnewWTDocument(WTDocumentMaster master);lnewWTDocument(String number,String name,DocumentType type)Windchill Document客制方法介紹客制方法介紹l創(chuàng)建文件實(shí)例WTDocument newDoc=null;newDoc=WTDocument.newWTDocument();newDoc.setName(創(chuàng)建主文檔22);/

45、文件的名稱必設(shè)項(xiàng)newDoc.setNumber(888822);/文件編號必設(shè)項(xiàng)newDoc.setDepartment(DepartmentList.toDepartmentList(ENG);/設(shè)置departmentlist即文件所屬的部門,必設(shè)項(xiàng)DocumentType doctype=DocumentType.toDocumentType($Document);/必設(shè)項(xiàng),文件類型為一般文件newDoc.setDocType(doctype);setType(newDoc,wt.doc.WTDocument|com.elead.Drawing);newDoc=(WTDocument)

46、PersistenceHelper.manager.save(newDoc);/保存文件Windchill Document客制方法介紹客制方法介紹以上只是對文件的基本信息進(jìn)行了設(shè)置也就相當(dāng)在創(chuàng)建文件的模板中只以上只是對文件的基本信息進(jìn)行了設(shè)置也就相當(dāng)在創(chuàng)建文件的模板中只是是填寫了基本信息填寫了基本信息沒有沒有上傳文檔上傳文檔時(shí)生成的不含主文檔的文件。以下是創(chuàng)時(shí)生成的不含主文檔的文件。以下是創(chuàng)建主文檔:建主文檔:ContentHolder contentHolder=ContentHelper.service.getContents(newDoc);/獲得文件的ContentHolderApp

47、licationData appdata=ApplicationData.newApplicationData(contentHolder);appdata.setRole(ContentRoleType.PRIMARY);通過ApplicationData 去設(shè)置主文檔的名稱、大小、以及文件上傳路徑等.ContentServerHelper.service.updateContent(contentHolder,appdata,fileStream);/主文檔創(chuàng)建成功參數(shù)fileStream是要上傳的文件輸入流。Windchill Document客制方法介紹客制方法介紹l刪除文件只刪除主文

48、檔只刪除主文檔ContentHolder contentHolder=ContentHelper.service.getContents(newDoc);ContentItem contentitem=ContentHelper.getPrimary(FormatContentHolder)contentHolder);ContentServerHelper.service.deleteContent(contentHolder,contentitem);刪除文件和主文檔都刪除刪除文件和主文檔都刪除PersistenceHelper.manager.delete(doc);Windchill

49、Document客制方法介紹客制方法介紹l添加附件文件添加附件和文件添加主文檔方法類似,唯一文件添加附件和文件添加主文檔方法類似,唯一不同的就是不同的就是ContentRoleType類型。類型。主文檔的類型是主文檔的類型是ContentRoleType.PRIMARY附件的類型是附件的類型是ContentRoleType.SECONDARYWindchill Document客制方法介紹客制方法介紹l刪除附件ContentHolder contentHolder=ContentHelper.service.getContents(doc);Vector vData=ContentHelper

50、.getApplicationData(contentHolder);if(vData!=null&vData.size()0)for(int i=0;i 0&strFilename.equals(appData.getFileName()ContentServerHelper.service.deleteContent(contentHolder,appData);Windchill Document客制方法介紹客制方法介紹l文件出庫入庫l為什么要對文件出庫入庫?為什么要對文件出庫入庫?l什么情況下對文件進(jìn)行出庫入庫?什么情況下對文件進(jìn)行出庫入庫?對文件的出庫主要的目的之一是為了防止一個(gè)文件

51、同時(shí)對文件的出庫主要的目的之一是為了防止一個(gè)文件同時(shí)兩個(gè)人修改,由此可以看出只要是兩個(gè)人修改,由此可以看出只要是和文件更新相關(guān)的操和文件更新相關(guān)的操作作都要對文件進(jìn)行出庫,然后對出庫后的副本進(jìn)行更新都要對文件進(jìn)行出庫,然后對出庫后的副本進(jìn)行更新操作,最后入庫。操作,最后入庫。Windchill Document客制方法介紹客制方法介紹l文件出庫文件文件出庫出庫時(shí)時(shí),Windchil會(huì)自動(dòng)將一個(gè)工作復(fù)本放入資料夾會(huì)自動(dòng)將一個(gè)工作復(fù)本放入資料夾中的中的Checked Out文件夾文件夾中中。首先得到文件夾中的checkout文件夾:Folder myFolder=WorkInProgressHel

52、per.service.getCheckoutFolder();然后對文件出庫放入checkout文件夾中:CheckoutLink checkout_link=WorkInProgressHelper.service.checkout(doc,myFolder,“”);最后得到工作復(fù)本:doc=(WTDocument)checkout_link.getWorkingCopy();Windchill Document客制方法介紹客制方法介紹l出庫實(shí)例if(!wt.vc.wip.WorkInProgressHelper.isCheckedOut(Workable)doc)/判斷文件是不是出庫狀態(tài)

53、if(!FolderHelper.inPersonalCabinet(CabinetBased)doc)&!WorkInProgressHelper.isWorkingCopy(Workable)doc)Folder myFolder=WorkInProgressHelper.service.getCheckoutFolder();CheckoutLink checkout_link=WorkInProgressHelper.service.checkout(doc,myFolder,);doc=(WTDocument)checkout_link.getWorkingCopy();Windch

54、ill Document客制方法介紹客制方法介紹l文件的入庫對文件復(fù)本進(jìn)行入庫:對文件復(fù)本進(jìn)行入庫:updateDoc=(WTDocument)WorkInProgressHelper.service.checkin(updateDoc,comment);參數(shù)updateDoc出庫的副本文件;comment入庫時(shí)的版序注解Windchill Document客制方法介紹客制方法介紹l入庫實(shí)例WTDocument updateDoc=null;if(wt.vc.wip.WorkInProgressHelper.isCheckedOut(Workable)doc)if(WorkInProgress

55、Helper.isWorkingCopy(doc)updateDoc=doc;elseupdateDoc=(WTDocument)WorkInProgressHelper.service.workingCopyOf(doc);updateDoc=(WTDocument)WorkInProgressHelper.service.checkin(updateDoc,comment);PersistenceHelper.manager.refresh(updateDoc);elseupdateDoc=(WTDocument)WorkInProgressHelper.service.checkin(u

56、pdateDoc,comment);Windchill Document客制方法介紹客制方法介紹l修改主文檔主文檔的修改是主文檔的刪除和創(chuàng)建組合,在修改主文檔時(shí)主文檔的修改是主文檔的刪除和創(chuàng)建組合,在修改主文檔時(shí)應(yīng)該應(yīng)該找到原來的主文檔刪除找到原來的主文檔刪除之后再創(chuàng)建新的主文檔。之后再創(chuàng)建新的主文檔。具體實(shí)例見前面的主文檔創(chuàng)建和刪除方法。具體實(shí)例見前面的主文檔創(chuàng)建和刪除方法。Windchill Document客制方法介紹客制方法介紹l文件下載首先得到要下載文件的最新版本(Iterated iter=null;boolean flag=false;LatestConfigSpec lates

57、tconfigspec=new LatestConfigSpec();QueryResult queryresult=ConfigHelper.service.filteredIterationsOf(master,latestconfigspec);while(queryresult.hasMoreElements()&(!flag)iter=(Iterated)(queryresult.nextElement();flag=iter.isLatestIteration();)Windchill Document客制方法介紹客制方法介紹l然后取得文件的主文檔或附件下載ContentHolde

58、r contentholder=ContentHelper.service.getContents(downDOC);ContentItem contentitem=ContentHelper.getPrimary(FormatContentHolder)contentholder);/得到主文檔ApplicationData applicationdata=(ApplicationData)contentitem;ContentServerHelper.service.writeContentStream(applicationdata,sourcePath);參數(shù)Applicationda

59、ta是下載的文件,參數(shù)sourcePath為下載文件要存放的路徑和文件名。Windchill Document客制方法介紹客制方法介紹l文件的關(guān)聯(lián)-文件結(jié)構(gòu)文件與文件的使用關(guān)系創(chuàng)建(刪除類似):首先 判斷有沒有關(guān)聯(lián),得到文件之間關(guān)聯(lián)是通過:PersistenceHelper.manager.find();查找得到;然后創(chuàng)建uselink關(guān)聯(lián):WTDocumentUsageLink usageLink=WTDocumentUsageLink.newWTDocumentUsageLink(WTDocument,WTDocumentMaster);PersistenceServerHelper.ma

60、nager.insert(usageLink);/關(guān)聯(lián)創(chuàng)建成功Windchill Document客制方法介紹客制方法介紹l文件的關(guān)聯(lián)-文件參考文件與文件之間參考關(guān)系的創(chuàng)建(刪除類似):首先查看是不是兩者之間已有此關(guān)系:WTDocumentHelper.service.getDependsOnWTDocuments(WTDocument);其次創(chuàng)建DependencyLink關(guān)聯(lián):WTDocumentDependencyLink.newWTDocumentDependencyLink(WTDocument,WTDocument);最后把創(chuàng)建的關(guān)聯(lián)插入數(shù)據(jù)庫:PersistenceServerH

61、elper.manager.insert(WTDocumentDependencyLink);Windchill Document客制方法介紹客制方法介紹l/*l*獲取一個(gè)文檔的各個(gè)大版本的最新小版本l*param docNumber String對象,就是獲取這個(gè)編碼對應(yīng)的對象的各個(gè)大版本的最新小版本l*return Vector對象,這個(gè)對象中的元素都是WTDocument類型的l*/lpublic static Vector getDocMaxVersion(WTDocuemntMaster docMaster)throws WTException lVector v=new Vecto

62、r();l QueryResult qr1=VersionControlHelper.service.allVersionsOf(docMaster);l while(qr1.hasMoreElements()l Object obj=qr1.nextElement();l if(VersionControlHelper.isLatestIteration(Iterated)obj)l v.add(obj);l l lreturn v;lWindchill Document客制方法介紹客制方法介紹l修改WTDocument的編碼、名稱方法:WTDocumentHelper.service.ch

63、angeWTDocumentIdentity(existDocument,name,number,null);doc=(WTDocument)PersistenceHelper.manager.save(doc);l修改EPMDocument的名稱、編碼方法:Identified identified=(Identified)epm.getMaster();EPMDocumentMasterIdentity epmMI=(EPMDocumentMasterIdentity)identified.getIdentificationObject();epmMI.setName(cadName);e

64、pmMI.setNumber(newNumber);IdentityHelper.service.changeIdentity(identified,epmMI);PersistenceHelper.manager.refresh(epm);Windchill Document客制方法介紹客制方法介紹/*設(shè)定文檔檔狀態(tài)*param epm*return*/public String setDocumentState(WTObject obj)try State state=State.toState(RELEASED);String lifeState=;if(obj instanceof E

65、PMDocument)EPMDocument tempEPM=(EPMDocument)obj;lifeState=tempEPM.getLifeCycleState().toString();obj=tempEPM;if(obj instanceof WTDocument)WTDocument tempDoc=(WTDocument)obj;lifeState=tempDoc.getLifeCycleState().toString();obj=tempDoc;if(!lifeState.equals(RELEASED)LifeCycleHelper.service.setLifeCycle

66、State(LifeCycleManaged)obj,state);return 1;catch(WTException ex)ex.printStackTrace();return setEPMDocumentState error:+ex.toString();return;Windchill Document客制方法介紹客制方法介紹l通過EPMDocument得到相應(yīng)的推進(jìn)流程WTHashSet epmHashSet=new WTHashSet();epmHashSet.add(epm);WTCollection collection=MaturityHelper.service.getPromotionNotices(epmHashSet);Object promoteObject=collection.toArray();for(int i=0;i 0)QuerySpec criteria=new QuerySpec(AXLContext.class);criteria.appendSearchCondition(newSearchCondition(AXLContext.c

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!