0 引言
目前,企業(yè)面臨的挑戰(zhàn)是最大限度地實施并行工程,發(fā)揮產(chǎn)品上市快的優(yōu)勢,縮短產(chǎn)品上市時間,提高效率,增強企業(yè)的競爭能力。產(chǎn)品數(shù)據(jù)管理(Product Data Management,PDM)是在現(xiàn)代產(chǎn)品開發(fā)環(huán)境中成長發(fā)展起來的一項管理產(chǎn)品數(shù)據(jù)的新技術(shù),使用PDM技術(shù)可增強產(chǎn)品的應(yīng)變能力,提高產(chǎn)品的質(zhì)量。
在PDM領(lǐng)域處于領(lǐng)先地位、以Internet為核心的Teamcenter系統(tǒng),是SIEMENS公司提供的一種完整、功能強大、經(jīng)過證實的且能夠?qū)崿F(xiàn)數(shù)字化全生命周期管理的解決方案。Teamcenter具有強大的功能,例如文檔管理、權(quán)限管理、產(chǎn)品結(jié)構(gòu)和配置管理,以及工作流程管理等,它的領(lǐng)先還體現(xiàn)在提供了強大的二次開發(fā)應(yīng)用程序接口,在實施項目時,可以通過接口對產(chǎn)品進行訂制和開發(fā)。PDM是以產(chǎn)品管理為核心,以資料、過程和資源為管理信息的三大要素,它進行信息管理的兩條主線是靜態(tài)的產(chǎn)品結(jié)構(gòu)和動態(tài)的產(chǎn)品形成過程的管理(靜態(tài)的產(chǎn)品數(shù)據(jù)管理和動態(tài)的工作流程管理)。工作流程管理是PDM系統(tǒng)中的一個重要部分,產(chǎn)品從設(shè)計到發(fā)布是一個動態(tài)的過程,在這個過程中,工作流程起到至關(guān)重要的作用,它使產(chǎn)品數(shù)據(jù)多態(tài)而不混淆、連貫且可跟蹤。
在Teamcenter系統(tǒng)中提供了企業(yè)級工作流程。與工作流程關(guān)聯(lián)緊密的主要有以下幾個概念:過程(process),是用來定義工作流程的模板;工作進程(jobs),是一個過程的實例化,運行一個過程相當于自動創(chuàng)建一個新的工作進程;任務(wù)(tasks),是被用來在目標對象上執(zhí)行的動作;目標對象(target objects),是能由任務(wù)控制的與工作進程相關(guān)的數(shù)據(jù);引用數(shù)據(jù)(reference data),是不能由任務(wù)控制的且與工作進程相關(guān)的數(shù)據(jù);任務(wù)動作(task action),都含有一些動作(action)。
每個任務(wù)動作都能使用兩種處理程序,一種是執(zhí)行一定功能的動作處理程序(action handler),另一種是核實或者驗證某些狀況的規(guī)則處理程序(rule handler)。處理程序(Handler)是令任務(wù)動作按照使用者的思維,根據(jù)實際業(yè)務(wù)的需要來安排、執(zhí)行每一個任務(wù)的關(guān)鍵所在。流程管理任務(wù)模型如圖1所示,正是處理程序使工作流程管理呈現(xiàn)出創(chuàng)造性、多樣化和強大的生命力,所以處理程序技術(shù)是工作流程管理的核心。
圖1 流程管理任務(wù)模型
1 Teamcenter中Handler的實現(xiàn)原理
現(xiàn)在越來越多的企業(yè)都使用PDM系統(tǒng)對企業(yè)產(chǎn)品數(shù)據(jù)進行統(tǒng)一管理。由于企業(yè)需求的日益多樣化,過于單一的工作流程管理已無法滿足企業(yè)的需求。根據(jù)工作流程管理聯(lián)盟(MWFC)的規(guī)定,工作流程定義為:業(yè)務(wù)流程的全部和部分自動化,在此過程中,文檔、信息或者任務(wù)按照一定的過程規(guī)則流轉(zhuǎn),實現(xiàn)組織成員間的協(xié)調(diào)工作,以期達到業(yè)務(wù)的整體目標。
某軸承企業(yè)的電子文件均利用Teamcenter進行統(tǒng)一管理,通過Teamcenter提供的工作流程模塊來進行審簽,該企業(yè)希望能夠在這些文件中看到審簽的信息,而在實際業(yè)務(wù)中往往需要發(fā)送大量的電子文件,讓審簽人員對每一份文件進行手動填入審簽信息不現(xiàn)實,所以需要開發(fā)一個功能,以實現(xiàn)在流程審簽過程中能自動在技術(shù)文件上填入審簽信息。針對該應(yīng)用實例,本文通過利用Teamcenter進行服務(wù)器端Handler技術(shù)的開發(fā),從而實現(xiàn)了流程信息的自動收集,并結(jié)合VBA技術(shù)實現(xiàn)了審簽信息自動填人技術(shù)文件。
圖2所示為Teamcenter工作流程管理對象模型,該模型是為支持圖1所示模型而設(shè)計的,兩者在本質(zhì)上關(guān)系緊密,而Handler的實現(xiàn)就是依賴于工作流程管理。
圖2 Teamcenter工作流程管理對象模型
下面根據(jù)圖2所示的模型介紹Handler的工作原理。圖2中的任務(wù)是指在Teamcenter的工作流程設(shè)計器中定制一個工作流程的模板,里面包含一系列的任務(wù)(即一組圖l所示的任務(wù)的有順序規(guī)則的集合)及每個任務(wù)的用戶情況,例如組(group)和角色(role)。每個任務(wù)都可以添加一些動作即動作處理程序(如圖1中的進程)和業(yè)務(wù)規(guī)則即規(guī)則處理程序(即圖1中的控制)。在流程發(fā)起時正確安排審簽人員,可以在流程模板中添加附件如設(shè)計的軸承圖樣、工藝文檔和技術(shù)文檔等(即圖1中的輸入和輸出)。
當流程發(fā)起時,流程模板出現(xiàn)實例化(即圖2中的工作進程)。在流程進行時,系統(tǒng)會按照任務(wù)的定制順序,如圖3所示的零件圖審批流程,按照設(shè)計→校對→審核→發(fā)布的順序,先調(diào)用設(shè)計任務(wù)中的規(guī)則處理程序,判斷是否符合規(guī)則。例如有一個規(guī)則處理程序的要求是上一個任務(wù)未完成之前阻止下一個任務(wù)的開始,所以當判斷出規(guī)則未滿足時,規(guī)則處理程序會返回EPM_nogo值,Teamcenter系統(tǒng)獲取該返回值后會讓流程停在當前任務(wù),無法進入下一個任務(wù)——校對;反之經(jīng)處理程序判斷出規(guī)則已滿足時,返回EPM_go值,流程可以進入下一個任務(wù),然后按加載到任務(wù)上的動作處理程序次序,繼續(xù)順序執(zhí)行第一個動作處理程序,當程序完成之后,系統(tǒng)會返回一個ITK_ok的值,系統(tǒng)接收之后,再按順序調(diào)用下一個處理程序。所以Teamcenter工作流程中的處理程序可分為兩類:一類是動作處理程序,作用是執(zhí)行某些特定的功能,例如執(zhí)行某一個程序,轉(zhuǎn)換狀態(tài);另一類是規(guī)則處理程序,主要用于核對或證實某些狀況,例如檢查任務(wù)的狀態(tài),檢查是否符合某些條件,規(guī)則處理程序一般在動作處理程序之前執(zhí)行,如果符合規(guī)則處理程序要求,則執(zhí)行接下來的動作。這兩類處理程序(Handler)皆可以在Teamcenter交互式的處理程序面板中與流程進行關(guān)聯(lián)。
圖3 零件圖審批流程
2 文件審簽技術(shù)核心
Teamcenter系統(tǒng)屬于管理系統(tǒng),管理系統(tǒng)售后常需要一個定制過程,使之適應(yīng)企業(yè)的特殊需求。二次開發(fā)是PDM實施的主要工作之一,因此必須掌握其核心技術(shù)。Teamcenter的開發(fā)分客戶端及服務(wù)器端兩種?蛻舳塑浖怯肑AVA語言開發(fā)的,同樣,它的二次開發(fā)也使用JAVA語言。服務(wù)器端的二次開發(fā)要利用二次開發(fā)模塊ITK及C語言。文件審簽技術(shù)中的Handler就是為了滿足企業(yè)需求在服務(wù)器端二次開發(fā)的。
2.1 Handler技術(shù)
若需要在Teamcenter的工作流程中達到某項功能,首先需要成功創(chuàng)建Handler,Handler相當于是Teamcenter系統(tǒng)與業(yè)務(wù)程序之間的橋梁,在該實例中,需要一個獲取審簽信息的業(yè)務(wù)程序和調(diào)用外部VBA技術(shù)進行自動填入審簽信息的程序,但這些程序都需要一個載體,即Signoff_Review和Signoff_Replace兩個應(yīng)用程序。
創(chuàng)建Handler的步驟如下。
第一步:編寫Handler,并在客制化的用戶出口進行注冊。需要的兩類關(guān)鍵函數(shù)如下。
第一類關(guān)鍵函數(shù):
EPM_register_action_handler(char*handlerName,char*handlerDe scnption,EPM_action_handler_t functionPointer)
第二類關(guān)鍵函數(shù):
EPM_register_rule_handler(char*handlerName,char*handlerDe scription,EPM_action_handler_t functionPointer)
以上為注冊處理程序的兩個關(guān)鍵函數(shù),前者是注冊動作處理程序,而后者是注冊規(guī)則處理程序,兩者類似。handlerName是在Teamcenter交互式的任務(wù)定義界面中處理程序的名字,handlerDescription是可以省略的。functionPointer是一個函數(shù)的入口指針,如編寫Signoff_Review這個處理程序時,就需要把獲取審簽流程的信息寫入functionPointer對應(yīng)的函數(shù)中。
CUSTOM_register_exit函數(shù)是對用戶客制化出口的初始化進入點注冊。USER_gs_shell_init_module是一個用戶初始化的基本函數(shù),它可以使Teamcenter在初始化時就連接上用戶客制化出口內(nèi)容。而sitename(站點名)就是存儲這個客制化內(nèi)容的庫,如果想連接成功,這個庫還必須在Teamcenter系統(tǒng)中注冊,它可以根據(jù)用戶需要修改,但必須前后統(tǒng)一起來。而之前注冊的函數(shù)EPM_register_action_handler和EPM_register_rule_handler都需要作為my_custom_exit_function的函數(shù)體。編譯鏈接生成的動態(tài)鏈接庫(DLL)須以站點名命名,即sitename.dll文件。所生成的DLL必須復(fù)制到Teamcenter安裝路徑根目錄下的bin文件夾里,以便Teamcenter的服務(wù)器去鏈接前述的DLL,從而調(diào)用處理程序。CUSTOM_register_exit函數(shù)如下:
第二步:以管理員身份登陸Teamcenter,在菜單欄選擇編輯一選項一索引,找到首選項TC_customization libraries,并為其添加新值,即sitename。
第三步:在Teamcenter系統(tǒng)的工作流設(shè)計器中的任務(wù)下會有顯示任務(wù)處理程序的面板,可以查看到注冊的Handler是否已經(jīng)存在,若已存在,可直接添加到不同任務(wù)的不同操作狀態(tài)下。Handler的實現(xiàn)過程如圖4所示。
圖4 Handler的實現(xiàn)過程
2.2 獲取流程信息技術(shù)
Signoff_Review程序主要是用來獲取流程中審簽的信息,然后存儲在臨時的文本文檔中,關(guān)鍵步驟及程序語言如下。
步驟1:獲得該job的標簽。
EPM_ask*ob(msg.task,&job)
步驟2:獲得審簽任務(wù)的名字。
EPM_ask_review_task_name(msg.task,review_task_name)
步驟3:獲取審簽者的人數(shù)及其標簽。
CR_ask_reviewers(job,review_task_name,&reviewer_ctr,&groupmembers)
步驟4:利用循環(huán)找出每個審簽人的用戶標簽。
POM_class_of_instance(groupmembers[ctr],&classld)
POM_name_of_class(classld,&class_name)
SA_ask_groupmemberuser( groupmembers[i],&user_tag)
步驟5:輸入審簽的標簽,得到審簽人的名字。
SA_ask_user_identifier(user_tag,user_name)
步驟6:獲取系統(tǒng)中審簽的相關(guān)信息。在如圖5所示的人機交互審簽界面中審簽完畢,單擊“確定”按鈕后,審簽信息就會產(chǎn)生并記錄在系統(tǒng)中,審簽信息如審簽人、審簽的決定、審簽的意見和審簽的日期等。
圖5 流程中人機交互的審簽界面
CR_ask_decision( job,review_task_name,user_tag,&decision,comments,&decision_date);
步驟7:將上述信息存放到一個臨時的文本文檔(*.txt)中作為記錄,以便在后續(xù)的流程中,將這些信息自動填入電子文件中。記錄審簽信息的臨時文本文檔如圖6所示。
mail_file=fopen(“*.txt”,a+);fprintf(mail_file,“%s”,審簽信息);
圖6 記錄審簽信息的臨時文本文檔
Signoff_Replace程序把獲取的審簽信息填入電子文件的程序步驟如下。
step 1:獲得Item下的附件數(shù)量和它們的標簽。
EPM_askjob(msg.task,&job);
EPM_ask_root_task(joh,&root_task);
EPM_ask_attachments(root_task,EPM_target_attachment,&nfound,&ftags)
step 2:循環(huán)每一個附件,判斷其類別是否為數(shù)據(jù)集。
POM_class_of_instance( ftags[i],&classjd):
POM_name_of_class(classid.&class_name)
strcmp(class_name,“ Dataset”)==0
step 3:獲得這個數(shù)據(jù)集的命名引用類型,然后判斷是什么類型的文件,把文件導(dǎo)出Teamcenter,調(diào)用相應(yīng)的外部VBA程序來進行簽名。
AE_find_dataset_named_ref(ftags[i],0,refname,&reftype,&refobject);
AE_impmt_named_ref(ftagsi],refname,pathname,NULL,SS_BINARY);
step 4:最后把已經(jīng)簽名的文件導(dǎo)入到原數(shù)據(jù)集下的命名引用,保存這個數(shù)據(jù)集。
AE_remove_dataset_named_ref(ftags[i],refname);
AEjmport_named_ref(ftags[i],refname,pathname,NULL,SS_BINARY);
AOM_save(ftags[i]);
2.3 VBA技術(shù)
Handler本身并不能完成數(shù)據(jù)集的自動簽名功能,自動簽名是由服務(wù)器端的VBA程序完成。將此ActionHandler與VBA程序的實現(xiàn)功能分開,給程序帶來了很大的擴展性。如果需要增加對新的數(shù)據(jù)集的簽字功能,只需要編寫相對應(yīng)的VBA程序。而選擇VBA技術(shù),是因為許多的電子文件與VBA存在交互開發(fā)環(huán)境(VBA IDE)。盡管每種電子文件各有其特點,但大部分在VBA環(huán)境行為上都是相似的。VBA工程是代碼模塊、類模塊和窗體的集合,而且各種類庫、變量齊全,由它們組合用來執(zhí)行獨立的功能方便而且穩(wěn)定。VBA工程可保存在電子文件中,或作為獨立的文件保存,本文中就是將其生成獨立的.exe程序,作為外部文件使用。
2.3.1 向Word文件中寫入流程信息
1)連接Word軟件,選擇操作的文件(需要指定路徑及文件名),在后臺打開,設(shè)可見性屬性(Visible)為False。
Dim wordApp As Object
Dim doc
Set wordApp=CreateObject(“Word.Application”)
wordApp.Visible=False
Set doc=wordApp.Documents.Open(“pathname+filename”)
2)打開之前用來保存簽名信息的臨時文本文檔,讀取信息。
Dim fs.line
Set fs=CreateObject(“Scripting,F(xiàn)ileSystemObject”)
Set txtFile=fs.OpenTextFile(“pathname+filename”)
line=txtFile.ReadAIl()
3)在文件中定位需要簽名的地方,程序中的***就是一個自定義的標記,當搜索到這個標記時,進行替換,從審簽信息的文本文檔中讀取相關(guān)信息并將標記替換,實現(xiàn)電子文件的自動簽名功能,這一步是簽名的關(guān)鍵。
Selection.Find.Replacement.ClearFormatting
With Selection.Find.Text=“***”
Replacement.Text=審簽信息
2.3.2 向dwg文件中寫入流程信息
1)連接CAD,選擇要進行操作的文件(需要指定路徑及文件名),在后臺打開,設(shè)可見性屬性(Visible)為False。
Public cadApp As AcadApplication,cadDoc As AcadDocument
Set cadApp=CreateObject(“autocad.Application”)
Set cadDoc=cadApp.Documents.Open(“pathname+filename”)
2)再打開用來保存簽名信息的文本文檔,將信息讀。ㄅcWord文件中的方法一樣)。
3)在dwg中定位,找到需要替換簽名信息的標記。有兩種常見的可能,一種是需要替換的標記存在于圖樣中的文本圖元里,這時需要創(chuàng)建一個選擇集,利用Select方法把所有文本圖元篩選出來并放人選擇集當中,然后遍歷選擇集中的每個文本圖元,獲取其TextString的屬性值,然后利用InStr方法,判斷該屬性值中是否含有預(yù)先設(shè)定的宏,若是找到,便把審簽信息寫入,其程序如下:
Dim SSet As AcadSelectionSet
Dim a As String
SSet.Select acSelectionSetAIl,
fType,fData
For Each ent In Sset:a=ent.TextString b=“***”
InStr(1,a,b,1)
ent.TextString=“審簽信息”
另一種可能是,所有需要自動簽名的標識都放到一個塊上,那就需要換一種定位標記的方式。采用兩層遍歷的方式來找到標記。首先創(chuàng)建所有塊的一個集合blockcoll,在里面進行遍歷,如果找到想要進行簽名的塊,一般用塊的名字進行區(qū)分(elem.Name);然后進行下一層的遍歷,在審簽塊中遍歷每個圖元,看哪一個圖元的TextString屬性值是設(shè)定的標識,找到后寫入對應(yīng)的審簽信息,其程序如下:
Set blkcoll=cadDoc. Blocks
For Each elem In blkcoll
If elem.Name=“審簽”Then
For Each subelem In elem
If subelem.TextString=“***”
Then subelem.TextString=“審簽信息”
3 應(yīng)用實例
筆者在某軸承企業(yè)的PDM實施工作中,根據(jù)該企業(yè)要求,在設(shè)計任務(wù)書評審流程、零件圖審簽流程、裝配圖審簽流程、套圈工藝審簽發(fā)布流程、保持架工藝審簽發(fā)布流程、快速發(fā)布和工程更改等工作流程中獲取審簽信息并自動填入到相應(yīng)的電子文檔中。在流程審核任務(wù)的perform-signoff節(jié)點中,添加前面成功注冊的Signoff_Review和Signoff_Replace兩個處理程序,其界面如圖7所示。當流程起動并運行到該任務(wù),按照前述的Handler的工作原理,以及動作處理程序次序,在任務(wù)完成的這個動作中,自動調(diào)用服務(wù)器端的Signoff_ Review和Signoff_Replace這兩個動作處理程序,實現(xiàn)提取流程審簽信息,并最終自動填入技術(shù)文件中,成功填人審簽信息的技術(shù)文檔如圖8所示。
圖7 添加處理程序界面
圖8 成功填入審簽信息的技術(shù)文檔
目前上述處理程序在企業(yè)運行情況良好,滿足了企業(yè)需求。
4 結(jié)語
本文通過利用Teamcenter進行服務(wù)器端Handler技術(shù)的開發(fā),結(jié)合其他相關(guān)的計算機技術(shù),實現(xiàn)了從流程中獲取審簽信息,最終把流程中的審簽信息自動填入對應(yīng)的電子文件中。Handler技術(shù)使Teamcenter系統(tǒng)中工作流程的管理適合更多企業(yè)的實際需要,達到使企業(yè)用戶使用Teamcenter系統(tǒng)的目的,同時也提高了企業(yè)的效率。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:Teamcenter中基于Handler的文件審簽技術(shù)的研究
本文網(wǎng)址:http://www.ezxoed.cn/html/solutions/1401939866.html