Windchill常用開發(fā)大全【技術(shù)專攻】
《Windchill常用開發(fā)大全【技術(shù)專攻】》由會員分享,可在線閱讀,更多相關(guān)《Windchill常用開發(fā)大全【技術(shù)專攻】(284頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、AgendalWindchill開發(fā)內(nèi)容集合l開發(fā)目錄介紹l開發(fā)環(huán)境搭建lWindchill 模型環(huán)境搭建lWindchill類的介紹lWindchill各個業(yè)務(wù)對象的模型介紹lWindchill常用開發(fā)類和方法介紹開發(fā)規(guī)范開發(fā)規(guī)范lJAVA開發(fā)規(guī)范,請遵守sun標準lWindchill開發(fā)規(guī)范由于將來系統(tǒng)生產(chǎn)環(huán)境是Cluster架構(gòu),所以在編寫代碼時,要盡量避免使用Static的Class變量,測試環(huán)境配置多個Method Server,以防止編寫的代碼在Cluster環(huán)境中運行出現(xiàn)問題。系統(tǒng)運行的錯誤信息,要顯示在UI界面上,以便用戶和系統(tǒng)管理員了解,同時需要在系統(tǒng)log中記錄。Debug
2、語句要有開關(guān)控制,避免直接使用System.out.println()打印,導致將來的生產(chǎn)環(huán)境產(chǎn)生大量日志。每個客制點之間,設(shè)定一個Debug開關(guān),方便自身模塊的調(diào)試。Debug的開關(guān),缺省值設(shè)置為false。客制點之間的輸入和輸出部分,需要輸出Debug信息,方便客制點之間的調(diào)試。工作流中的表達式,具體實現(xiàn),都寫在WfUtil中,只在工作流中調(diào)用WfUtil中的方法。WfUtil中的方法注釋中,需要說明該段代碼,將在那些workflow中被調(diào)用。系統(tǒng)OOTB配置部分通過XML配置文件交付。方便新系統(tǒng)可以直接通過LoadFileSet導入配置。系統(tǒng)內(nèi)部值,例如IBA,全部由英文字母和數(shù)字組成,
3、不能包含特殊字符。禁止反編譯系統(tǒng)OOTB的Class文件,然后在此基礎(chǔ)上修改做客制,導致系統(tǒng)無法升級。需要對出廠文件(HTML template等)修改時,需要保存原出廠文件的備份在wtSafeAreaptcOrig目錄下,修改后的文件另存到wtSafeAreasiteMod目錄需要增加的properties屬性不要放置在wt.properties中(service的注冊除外),其他都放置在codebasecomitbgext.properties??椭频男略鯟lass文件放置在codebasecomitbg對應的目錄下。不要放在系統(tǒng)原有的包中。(除非使用了系統(tǒng)原有的Protected Met
4、hod,這種用法要盡量避免).設(shè)計規(guī)范設(shè)計規(guī)范l設(shè)計規(guī)范之建模 僅對持久化對象建模 只有數(shù)據(jù)需要保存到數(shù)據(jù)庫中的持久化業(yè)務(wù)對象才允許進行建模。其余的操作類(例如:Processor、Delegate、Helper類等)不被允許進行建模。模型命名規(guī)則對象的名稱、屬性名稱、方法名稱應該滿足命名規(guī)則,同Java編碼規(guī)范的類命名、變量命名和方法命名。例如:類名 TRApplyDoc 屬性名trPhase 方法名getFormData 說明:歷史的模型如果要更改將要做數(shù)據(jù)遷移。因此只要求對新建立的模型,歷史模型不做要求。設(shè)計規(guī)范設(shè)計規(guī)范 字段擴展 對于對象的屬性,一般情況下采用默認長度。建模時要求考慮屬
5、性長度是否符合要求,如果需要加大長度,在模型中設(shè)置相應的值即可。選擇父類 對于建模,盡量繼承底層的Windchill類,例如:ManagedItem等,繼承上層的具有實際業(yè)務(wù)含義的Windchill類(例如:WTPart、WTDocument)時,在業(yè)務(wù)上符合“是一個(As-is)”的含義,例如:EleadPart是一個WTPart 不預留屬性 對象建模,不預留屬性。對于已有對象的預留屬性,因?qū)傩悦Q業(yè)務(wù)含義,也不允許使用。歷史模型已預留的屬性不做要求。例如:不再使用以前建模留下的reserv1、reserv2等預留屬性設(shè)計規(guī)范設(shè)計規(guī)范 關(guān)聯(lián)關(guān)系 兩個對象關(guān)聯(lián)時,需要使用模型的關(guān)聯(lián)關(guān)系。盡量不
6、要采用建模為兩個獨立對象,在一個對象的屬性中記錄另一個對象的某個標志屬性的方式。例如:錯誤的建模方法:CBBCounter類有一個屬性cbbNumber,記錄CBB的編碼。正確的建模方法:引入一個Link對象,記錄CBBCounter類和WTPartMaster類的關(guān)系。布局 類圖中盡量保證各部分分布均勻,連線盡量不要交叉,整個類圖能夠顯示在一個屏幕范圍之內(nèi)(標準1024*768分辨率),對于引用的其他包的類、接口,可以將其屬性、方法隱藏起來。避免占用過大的顯示空間。建模搭建環(huán)境建模搭建環(huán)境l進入到Windchill+Information+Modeler-091_F000lRational_
7、Rose_for_Windowssetup.exe安裝l安裝完成之后,load注冊文件l進入到WT_HOMEroseAddIn,將VirtualPathMap.AddIn.reg和Windchill.AddIn.reg文件中的路徑修訂為個人本機環(huán)境的路徑并注冊 rational_perm.dat.txt建模搭建環(huán)境建模搭建環(huán)境l啟動rose,點擊“Edit Path Map”查看注冊信息 rose參數(shù)配置.txtRose模型介紹模型介紹l打開Rose模型,點擊FileOpenl選擇srcwtWTdesigner.mdlRose模型使用模型使用l點擊【是】,系統(tǒng)會加載l其中Logical Vie
8、w是系統(tǒng)核心 邏輯顯示,其中3rd是Windchilll 中使用了哪些Java技術(shù)模塊、ext 是系統(tǒng)客制化擴展模型目錄、wnc是Windchill核心業(yè)務(wù)邏輯組成l點擊Save AS,重新命名為HelloWorld.mdl文件,彈出框選擇No,環(huán)境搭建好后,即可創(chuàng)建模型擴展模型擴展模型模型擴展模型擴展(續(xù)續(xù))l針對上面的圖示,自定義個模型EleadDocs,繼承WTDocument,該模型自定義方法getEleadDocName()和屬性eleadDocType,且將其屬性設(shè)置constrain=false,點擊保存(遇到提示,點擊No)l選擇菜單Units.Control docs,保存為
9、docs.cat模型擴展模型擴展(續(xù)續(xù))l生成系統(tǒng)文件,選中docs包模型擴展模型擴展(續(xù)續(xù))l生成系統(tǒng)文件.mData和EleadDocs.java文件l在src目錄下自動生成包路徑和文件 docs.mData和EleadDocs.java模型擴展模型擴展(續(xù)續(xù))l系統(tǒng)會自動生成SQL【W(wǎng)T_HOME】dbsql3exteleaddocsl生成.ser文件【W(wǎng)T_HOME】codebaseexteleaddocsl執(zhí)行SQL語句 進入到 Oracle SQL*Plus路徑,執(zhí)行命令:操作完成之后,即可使用EleadDocs對象了!模型擴展模型擴展(續(xù)續(xù))模型擴展模型擴展(續(xù)續(xù))l完整的例子說
10、明 在windchill/src/目錄下建立一個helloWorld目錄,在windchill/codebase/目錄下也建立一個helloWorld目錄 打開rose軟件,依次打開fileopen定位到windchill/src/wt/WTdesigner.mdl,打開 出現(xiàn)這個對話框,選擇是,然后就耐心等待系統(tǒng)加載完這個文件。當完全加載完以后把這個文件保存到上面建立的windchill/src/helloWorld目錄下,名稱為helloWorld模型擴展模型擴展(續(xù)續(xù))l打開helloWorld.Mdl,打開后如下圖 你可以發(fā)現(xiàn)你打開的時候是沒有wt,java,helloWorld這3個
11、package的,因為這3個package中wt和java是從左邊的方框中拖過來的,而helloWorld這個是我自己建立的,然后把helloWorld和wt,java這2個package建立關(guān)系如上圖。然后雙擊helloWorld這個package在這個package中開始創(chuàng)建類。模型擴展模型擴展(續(xù)續(xù))l打開helloWorld這個package后會出現(xiàn)下圖模型擴展模型擴展(續(xù)續(xù))l你打開的時候是什么都沒有的,這里面person,personLink這2個類是自己建立的,可以從中間的那個條中選擇到的,然后對這2個類進行編輯,選中person這個類,點右鍵,會出現(xiàn)l點擊第一個,然后就會出現(xiàn)模
12、型擴展模型擴展(續(xù)續(xù))模型擴展模型擴展(續(xù)續(xù))l選擇attributes這個標簽模型擴展模型擴展(續(xù)續(xù))l然后在空白的地方點右鍵就會出現(xiàn)一個快捷菜單,在這個菜單中可以創(chuàng)建一個變量,然后雙擊變量會出現(xiàn)模型擴展模型擴展(續(xù)續(xù))l在這個里面會對這個變量的類型進行設(shè)置,然后點windchill標簽 找到constrain這項,設(shè)置value為false,每個變量都需要這樣進行設(shè)置,然后讓這個類繼承wt.fc.Item這個抽象類,這樣就表明person這個類現(xiàn)在是持久的。同理把person這個類和wtpart這個類建立關(guān)聯(lián),關(guān)聯(lián)的類為PersonLink然后讓personLink繼承ObjectToOb
13、jectLink這個類,然后把這個helloWorld.mdl保存一下,然后依次打開fileunitscontrol,然后再依次打開,toolswindchillsystem generation模型擴展模型擴展(續(xù)續(xù))選中前3項點OK,然后這個時候你就可以在windchill/src/helloWorld這個目錄下看到有Person.java和PersonLink.java這2個java文件,并且在windchill/db/sql3/helloWorld這個目錄下面也會產(chǎn)生幾個sql文件,把這幾個sql文件導入到數(shù)據(jù)庫中建立相關(guān)的表,要注意建立的先后順序:只用操作以create開頭的3個sq
14、l文件模型擴展模型擴展(續(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這兩個文件放到windchill/codebase/helloWorld/目錄下進行編
15、譯。模型擴展模型擴展(續(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();模型擴展模型擴展(續(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();模型擴展模型擴展(續(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;模型擴展模型擴展(續(xù)續(xù))l把這個測試類在windchill shell 中運行,運行結(jié)果為下圖l然后我們現(xiàn)在看下數(shù)據(jù)庫中的情況模型擴展模型擴展(續(xù)續(xù))在person和personlink這兩張表中都有了數(shù)據(jù),測試結(jié)果正確注意事項在進行建模之前要對一些參數(shù)進行設(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)當前版本的文件;文件放系統(tǒng)當前版本的文件;ptcOrig放系統(tǒng)最原始的文件放系統(tǒng)最原始的文件 ant-f bin/swmaint.xml installSiteChanges3、codebase是運行時目錄,放編譯后的是運行時目錄,放編譯后的.class文件、放文件、放WEB相關(guān)文件、放模板文件相關(guān)文件、放模板文件(.html)4、src目錄放客制化的源文件,放國際化目
22、錄放客制化的源文件,放國際化.rbInfo文件。文件。5、tasks目錄放系統(tǒng)服務(wù)文件目錄放系統(tǒng)服務(wù)文件.xml文件,文件,Info*Engine配置文件配置文件6、loadFiles目錄,放置需要導入到系統(tǒng)的工作流、生命周期等目錄,放置需要導入到系統(tǒng)的工作流、生命周期等 7、loadXMLFiles目錄,放置配置系統(tǒng)的信息的目錄,放置配置系統(tǒng)的信息的.xml文件文件8、DB目錄,放置建立模型后生成的目錄,放置建立模型后生成的SQL語句語句Windchill類的介紹類的介紹l1.如何在系統(tǒng)中查找對象對應的類l2.如何通過類在數(shù)據(jù)庫中查找相關(guān)的表 如何在系統(tǒng)中查找對象對應的類如何在系統(tǒng)中查找對象
23、對應的類打開類型管理器,選擇部件,這個部件就對應了系統(tǒng)中的一個對象,頁面的右部就會顯示這個類的具體信息,在名稱這欄中的wt.part.WTPart就是系統(tǒng)中部件對應的類,wt.part是包名,WTPart就是類的名稱,這個時候就可以在Eclipse中查看這個類有那些相關(guān)的函數(shù),同時也可以到wt.part這個包中查看其它的一些類,這些類也都是和WTPart有關(guān)。如何通過在系統(tǒng)中查找對象對應的類如何通過在系統(tǒng)中查找對象對應的類l系統(tǒng)中的業(yè)務(wù)對象在Rose模型中都可以看到相應的方法系統(tǒng)類的設(shè)計系統(tǒng)類的設(shè)計l系統(tǒng)中的服務(wù)類設(shè)計為xxHelper.java文件和xxService.java是組合關(guān)系,系
24、統(tǒng)中的所有業(yè)務(wù)對象對應的方法在對應的service中,通過xxHelper.serivce.方法 l部件操作:WTPartHelper.service.方法l文檔操作:WTDocumentHelper.service.方法lEC操作:ChangeHelper2.service.方法l文件夾的操作:FolderHelper.service.方法l生命周期的操作:LifeCycleHelper.manager.方法l推進流程對象的操作:MaturityHelper.service.方法l通知機制對象的操作:NotificationHelper.service.方法l位號的操作:Occurrence
25、Helper.service.方法l參與者的操作:OrganizationServicesHelper.manager.方法l版本的操作:VersionControlHelper.service.方法如何通過類在數(shù)據(jù)庫中查找相關(guān)的表如何通過類在數(shù)據(jù)庫中查找相關(guān)的表在類型管理器中定義的那些對象在數(shù)據(jù)庫中都有相對應的表存在,表的名稱也就是類的名稱。例如:部件對象的類名稱是WTPart,則數(shù)據(jù)庫中就對應了一張名為WTPart的表。WINDCHILL的數(shù)據(jù)庫中的一張表其實對應的就是系統(tǒng)中的一個類名,所以有很多開發(fā)可以以數(shù)據(jù)庫的表為入手點,如果你知道系統(tǒng)中的某個信息是存儲在數(shù)據(jù)庫中的具體表中的時候,就可
26、以根據(jù)表的名稱去系統(tǒng)中查找相關(guān)的類,來獲取你需要的數(shù)據(jù) 如何通過類在數(shù)據(jù)庫中查找相關(guān)的表如何通過類在數(shù)據(jù)庫中查找相關(guān)的表上面就是數(shù)據(jù)庫中WTPart的表,這里面的數(shù)據(jù)在WTPart這個類中就可以獲取,例如你如果想要獲取一個部件的生命周期狀態(tài),數(shù)據(jù)庫中對應的字段是STATESTATE這個字段,那么你就可以在在代碼中通過part.getLifeCycleState().getDisplay()這個函數(shù)來獲取,所以在學習WINDCHILL系統(tǒng)的開發(fā)的時候一定不能忽略數(shù)據(jù)庫的作用。Windchill各個包的介紹各個包的介紹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各個包的介紹各個包的介紹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各個包的介紹各個包的介紹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各個包的介紹各個包的介紹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各個業(yè)務(wù)對象的模型介紹各個業(yè)務(wù)對象的模型介紹Windchill Document客制方法介紹客制方法介紹l文檔屬性文檔屬性在在Windchill document中中WTDocumentMaster和和WTDocument是兩個主要對象是兩個主要對象:在WTDo
41、cumentMaster中對于文件中所有的版本版序有相同的值。如果文件已建立很多版本版序,當master改變時將影響所有的版本版序。在 WTDocument每一個版序有不同的值對應,因此WTDocument的改變只影響一種版序。l如果想規(guī)定一個從一個版序到另一個版序變化的屬性,則需如果想規(guī)定一個從一個版序到另一個版序變化的屬性,則需要擴展要擴展 WTDocument。Windchill Document客制方法介紹客制方法介紹l類型類型 枚舉類型(值列表)領(lǐng)域,在windchill中讓用戶能夠進行分類管理的文件。類型的值被定義在 wt.doc.DocumentTypeRB中。如果有一個要求不顯
42、示doctype屬性,只需要把類型管理中設(shè)置類型的實例化中的勾去掉即可,不可刪除。Windchill Document客制方法介紹客制方法介紹lDepartment 在Windchill中允許用戶選擇區(qū)域,負責文件的管理 枚舉類型 值都被定義在 wt.doc.DepartmentListRB中。Windchill Document客制方法介紹客制方法介紹l文件與文件之間的關(guān)系文件與文件之間的關(guān)系:文件結(jié)構(gòu)文件結(jié)構(gòu):一個文件可以使用很多其它子文件,其下層一個文件可以使用很多其它子文件,其下層子文件也可以被其它文件使用。子文件也可以被其它文件使用。(使用與被使用的關(guān)系使用與被使用的關(guān)系)文件參考文
43、件參考:一個文件涉及的信息存在于其他文件中。一個文件涉及的信息存在于其他文件中。(參參考與被參考的關(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)建文件實例WTDocument newDoc=null;newDoc=WTDocument.newWTDocument();newDoc.setName(創(chuàng)建主文檔22);/
45、文件的名稱必設(shè)項newDoc.setNumber(888822);/文件編號必設(shè)項newDoc.setDepartment(DepartmentList.toDepartmentList(ENG);/設(shè)置departmentlist即文件所屬的部門,必設(shè)項DocumentType doctype=DocumentType.toDocumentType($Document);/必設(shè)項,文件類型為一般文件newDoc.setDocType(doctype);setType(newDoc,wt.doc.WTDocument|com.elead.Drawing);newDoc=(WTDocument)
46、PersistenceHelper.manager.save(newDoc);/保存文件Windchill Document客制方法介紹客制方法介紹以上只是對文件的基本信息進行了設(shè)置也就相當在創(chuàng)建文件的模板中只以上只是對文件的基本信息進行了設(shè)置也就相當在創(chuàng)建文件的模板中只是是填寫了基本信息填寫了基本信息沒有沒有上傳文檔上傳文檔時生成的不含主文檔的文件。以下是創(chuàng)時生成的不含主文檔的文件。以下是創(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什么情況下對文件進行出庫入庫?什么情況下對文件進行出庫入庫?對文件的出庫主要的目的之一是為了防止一個文件
51、同時對文件的出庫主要的目的之一是為了防止一個文件同時兩個人修改,由此可以看出只要是兩個人修改,由此可以看出只要是和文件更新相關(guān)的操和文件更新相關(guān)的操作作都要對文件進行出庫,然后對出庫后的副本進行更新都要對文件進行出庫,然后對出庫后的副本進行更新操作,最后入庫。操作,最后入庫。Windchill Document客制方法介紹客制方法介紹l文件出庫文件文件出庫出庫時時,Windchil會自動將一個工作復本放入資料夾會自動將一個工作復本放入資料夾中的中的Checked Out文件夾文件夾中中。首先得到文件夾中的checkout文件夾:Folder myFolder=WorkInProgressHel
52、per.service.getCheckoutFolder();然后對文件出庫放入checkout文件夾中:CheckoutLink checkout_link=WorkInProgressHelper.service.checkout(doc,myFolder,“”);最后得到工作復本:doc=(WTDocument)checkout_link.getWorkingCopy();Windchill Document客制方法介紹客制方法介紹l出庫實例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文件的入庫對文件復本進行入庫:對文件復本進行入庫:updateDoc=(WTDocument)WorkInProgressHelper.service.checkin(updateDoc,comment);參數(shù)updateDoc出庫的副本文件;comment入庫時的版序注解Windchill Document客制方法介紹客制方法介紹l入庫實例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)建組合,在修改主文檔時主文檔的修改是主文檔的刪除和創(chuàng)建組合,在修改主文檔時應該應該找到原來的主文檔刪除找到原來的主文檔刪除之后再創(chuàng)建新的主文檔。之后再創(chuàng)建新的主文檔。具體實例見前面的主文檔創(chuàng)建和刪除方法。具體實例見前面的主文檔創(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*獲取一個文檔的各個大版本的最新小版本l*param docNumber String對象,就是獲取這個編碼對應的對象的各個大版本的最新小版本l*return Vector對象,這個對象中的元素都是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得到相應的推進流程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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。