以下是關於工作處理器如何在啟動時載入工作處理程式 (Autodesk 的和協力廠商的) 的說明:
協力廠商工作處理程式延伸
每個協力廠商延伸都應位於其在如下 Extensions 目錄中的專有資料夾中:
%allusersprofile%\Autodesk\Vault 2012\Extensions\
因此,比如我們有一個名為「JobHandlerSample」的工作處理程式延伸,它應該位於 allusersprofile%\Autodesk\Vault 2014\Extensions\JobHandlerSample 目錄中。
對於 Extensions 目錄中的每個資料夾,工作處理器均會檢查其中有無規劃檔。規劃檔是可以隨意命名,但必須以 .vcet.config 做為副檔名的純文字檔案。如果規劃檔不存在,則將無法載入延伸。以下是範例規劃檔 JobHandlerSample.vcet.config 的內容:
<configuration> <connectivity.ExtensionSettings2> <assembly>JobHandlerSample</assembly> <extensionType>JobProcessor</extensionType> </connectivity.ExtensionSettings2> </configuration>
assembly 元素指定延伸 dll 的名稱。因此,在以上範例中,延伸 dll 的名稱為 JobHandlerSample.dll。延伸類型 JobProcessor 表示這是一個工作處理器延伸 (此目錄中還可以存在其他延伸類型:WebService 和 VaultClient)。
現在延伸組合 (在我們的範例中為 JobHandlerSample.dll) 已載入。載入時完成了以下檢查:
namespace JobHandlerSample { public class JobHandlerSample : IJobHandler { public bool CanProcess(string strJobType) { return strJobType.Equals("jobhandlersample"); } public JobOutcome Execute(IJobProcessorServices context, IJob job) { return JobOutcome.Success; } } }
在組合中必須恰好有一個 public 類型來實施 IJobHandler。否則,延伸將無法載入。會建立此類型的一個例證。
工作處理程式規劃
工作處理程式規劃檔是一個 xml 檔案,其中包含了工作處理器的規劃資訊。該檔案與 JobProcessor.exe 位於同一目錄中 (通常為 C:\Program Files\Autodesk\Vault Professional [年份]\Explorer),並被命名為 JobProcessor.exe.config。工作處理程式規劃的相關區段在 configuration\connectivityExplorer\jobHandlers 下面。在此 xml 區段中,每個 jobHandler 元素都代表一個工作處理程式。jobHandler xml 元素的格式如下:
<jobHandler class="jobType" handler="NameOfTypeImplementingIJobHandler"/>
其中:
因此,對於我們的範例延伸,有效的 jobHandler 元素為:
<jobHandler class="jobhandlersample" handler="JobHandlerSample.JobHandlerSample, JobHandlerSample"/>
在 JobProcessor.exe.config 檔案中,您將注意到,對於每一個 Autodesk 內建工作處理程式,已經存在一個 jobHandler 項目。內建的工作處理程式僅在存在相應的 jobHandler 項目時才會載入。內建的工作處理程式 dll 與 JobProcessor.exe 位於同一個目錄中。
檢查工作處理程式是否已啟用
上述規劃資訊用於將工作類型與特定工作處理程式相關聯。完成後,系統會詢問每一個工作處理程式能否處理其特定的工作類型。工作處理程式透過實施介面方法 IJobHandler.CanProcess 來回答此問題。此時工作處理程式應檢查其是否具有處理對應類型的工作所需的一切 (例如,某些 dwf 建立工作處理程式會檢查是否安裝了 Inventor)。
勾選工作處理器目前處理的工作類型時 (使用功能表「管理」->「工作類型...」),列示的每個項目都表示針對該工作類型成功載入了一個工作處理程式。如果勾選了項目,則表示啟用了相應的工作處理程式 (即,從其 IJobHandler.CanProcess 實施傳回了「true」)。若要讓工作處理器重新詢問工作處理程式「能否處理」,使用者將需要結束工作處理器並重新啟動它。
載入並詢問所有工作處理程式後,工作處理器即可開始提取佇列中的工作來進行處理。
範例工作處理程式
下面貼附的是用 C# 編寫的範例工作處理程式。它沒有任何實際的功能 (只會在呼叫 CanProcess 和 Execute 方法後彈出對話方塊),但可以做為樣板來建立工作處理程式。