步驟二:轉換更新
背景
轉換流程會將資料從配套移至 DCTM_Output 目錄。當資料處於目錄中之後,便可由載入流程 (發佈到預覽) 使用。DCTM_Output 目錄包含下列子目錄:
• COL1
針對集合,COL1 目錄包含下列類型特定子目錄:
◦ GRAPHIC
◦ IEXML
◦ IS
◦ PARTSLIST
◦ PDFM
• PARTS
轉換流程期間,會在 INSERVICE_WORK/DCTM_OUTPUT/COLLECTION/BUNDLEID/TYPE 目錄下產生相關檔案。COLLECTION 是與配套相關聯的集合。BUNDLEID 是配套的 ID。TYPE 是要處理之物件的類型。
通常,類型特定目錄包含下列子目錄:
• Update - 包含來源 XML 以及需要載入存放庫的中繼資料
• UpdateHierarchy - 包含 Update 資料夾中所有來源 XML 檔案的清單
• Images - 包含與無法索引之來源關聯的項目。
通常,會將圖像置於此處。
• Deleted - 包含需要刪除的來源檔案。
來源檔案名稱應該與載入系統的內容相同。
除了這些一般檔案之外,COLLECTION 或 BUNDLEID 資料夾也包含 SourcesList.xml,其會列出需要處理的文件,及與其關聯的集合。
以下幾節提供將新類型特定轉換流程包括到主要 TAL 流程中所需的步驟。一般而言,您應該開發四個子流程︰
• 初始化子流程
• 資料驗證子流程
• 轉換子流程
• 後處理子流程
初始化子流程
請遵循下列步驟來開發初始化子流程︰
1. 新增配套類別 (不需要)。
只有在不會將新類型作為現有配套類別的一部份載入 (例如:PH、IS、BOM 等) 時,才需要此步驟。
此步驟可用來初始化新配套類別的轉換流程。在此步驟中,流程會先識別配套的類別 (例如,PH 或 IS 配套)。然後會初始化應針對每個配套類型載入的類型,並相應執行特定 Java 轉換類型。
下列檔案包含配套類型所支援類型的組態:INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/TransformationDriver/transform.properties.xml。下列為此檔案的範例:
此外,在下列檔案子流程的 decideTheFlow 節點中新增項目:INSERVICE_CONFIG/System/Config/Flows/TransformationDriver/transformDriverSelector_PD.xml。
2. 新增 JAVA 轉換類別
透過繼承預設類別 com.ptc.sce.transformDriver.transform.Transformer 開發新的轉換器特定類別,並透過繼承類別 com.ptc.sce.transformDriver.transform.TransformerFactory 開發其相關 factory 方法。通常,轉換器類別透過從轉換 Factory 類別繼承的 factory 類別初始化。在此 factory 類別中,必須過載下列介面︰
◦ getTransformerInstance - 提供自訂的轉換器元件實例
◦ getObjectType - 提供已為其開發轉換器的物件類型
完成時,在 TransformerFactory.factories 鍵值中建立項目,以在名為 transform.properties.xml 的組態檔案中註冊介面,該檔案位於 INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/TransformationDriver。例如:
3. 將類型註冊至配套類別。
以新的 TYPE 名稱更新 transform.properties.xml 檔案,將類型註冊至配套類別 (例如:PH、IS 或 SAP)。例如,IS 與 PS 配套類型將包含新的資料類型︰
此檔案包含包括在每個配套類別中的類型。此資訊會顯示在檔案的所有項目中 (但轉換 factory 註冊的項目除外),並指出在 TAL 中支援的配套類別。轉換 factory 註冊應包含在上一步中建立的新轉換類別。
4. 識別需要處理的檔案。
當新類型是如加工品等配套中的單一檔案時 (例如,referencedParts.xml),則不需要此步驟。
如果新類型在配套中有多個檔案 (例如,零件清單),您應自訂初始化子流程,以便在執行子流程之後,會以下列輸出產生檔案。此檔案可以有任何名稱,但建議將其命名為 Type Namefile,其中 Type Name 是新類型的名稱。
檔案必須包含下列輸出格式︰
<root>
<FileName value="配套中檔案的路徑" href=”[uri]”/>
<FileName value="配套中檔案的路徑" href=”[uri]”/>
</root>
5. 配置識別管理 (IMAN)。
只有當新類型需要時間戳記或多語言支援時,才需要執行此步驟。如果需要,請依照下列步驟來在 IMAN 中提供識別︰
a. 在 IMANConfig.xml 檔案的 PTC 來源元素下註冊新類型,該檔案位於 INSERVICE_CONFIG/Applications/DataProcess/Config/Common/Templates/IMANIntegration。例如:
b. 在 IMANRecordMap.xml 檔案中新增類型的項目,該檔案位於 INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/TransformationDriver/IMANIntegration。例如:
c. 為配套中的每個檔案產生 IMAN 記錄檔案。
欲執行此操作,請確定位於 INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/TransformationDriver/IMANIntegration 下的 createIMANRecords.xsl 檔案符合在 IMANRecordMap.xml 檔案中配置之輸入檔案的結構:${Type Name file}。此樣式表會套用至 ${Type Name file} 輸入並產生所需的 IMAN 記錄檔案。
此轉換的輸出位於 INSERVICE_WORK/Applications/ContentManager/Work/PreProcessing/TAL/TransformationDriver/TASKID/IMAN。預期的輸出應與配套中每個檔案的下列項目類似︰
當您建立 IMAN 記錄檔案之後,轉換會讀取檔案、嘗試為每個記錄尋找或建立具唯一性的識別,並建立 Registry 檔案。此檔案正由驗證及轉換子流程參考。通常,此檔案名為 TYPE.xml,並位於 INSERVICE_WORK/Applications/ContentManager/Work/PreProcessing/TAL/TransformationDriver/TASKID/Registry 下。
資料驗證子流程
此子流程可讓 TAL 流程決定是否需要處理文件。請遵循下列步驟來開發此子流程︰
1. 建立驗證特定子流程。
例如,您可為新類型 SYMPTOMS 建立名為 symptomsValidationSubFlow_PD.xml 的子流程。
2. 建立驗證支援 XSL 檔案。
請務必作為此步驟的一部份來執行這些操作︰
◦ 檢查類型是否適用於目前的配套類別。
例如,您可為新類型 SYMPTOMS 建立此 XSL。
INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/Validation/checkIfSYMPTOMSFileTobeExcluded.xsl。
◦ 包括以時間戳記為基礎的驗證。
亦即,將配套中的目前物件時間戳記與登錄檔中的時間戳記進行比較。例如,您可為新類型 SYMPTOMS 建立此 XSL。
INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/Validation/SYMPTOMSValidation.xsl.
3. 在主要子流程 (validationSubFlow_PD.xml) 中包括新的驗證子流程。
轉換子流程
請遵循下列步驟來建立新的轉換子流程︰
1. 開發轉換特定子流程。
為根據存放庫的期望處理轉換內容的新類型建立子流程 (例如,符合範本與類型內容定義)。除了轉換以外,指令集還會初始化並關閉通知相關記錄。
下列基本操作透過轉換流程完成︰
◦ 初始化通知特定記錄
◦ 首先在子流程中設定物件類型
DCTM_Output 下的輸出資料夾具有與在此處傳遞相同的名稱。
◦ 透過轉換器類別,使用樣式表轉換內容。
提供下列資訊以為轉換呼叫 TransformExecutor 的 executeTransformer() 方法︰
▪ 物件類型
▪ XSL 路徑
這包含將配套輸入轉換成 DCTM 輸出之轉換 XSL 檔案的完整路徑。通常,轉換特定樣式表位於 %INS_CONFIG%/Applications/ContentManager/Config/Common/Templates/TransformationDriver/TYPE 目錄。
▪ 有效的輸入檔案名稱模式
這表示要處理的檔案。它並不是常規運算式。
▪ 關閉通知特定記錄
通常,這些流程位於 INSERVICE_CONFIG/System/Config/Flows/TransformationDriver 目錄,並具有 TYPESubFlow_PD.xml 的命名慣例。例如,對於新類型 SYMPTOMS 而言,子流程會命名為 SYMPTOMSSubFlow_PD.xml,而為此類型建立的轉換樣式表會命名為 transformSYMPTOMS.xsl。
2. 根據您預期在其中將其載入的集合而定,在產品 (產品特定子流程) 或共用集合特定子流程 (INSERVICE_CONFIG/System/Config/Flows/TransformationDriver/SharedFamilyFlow_PD.xml) 中包括新類型的子流程。
3. 開發您的轉換 XSL。
XSL 檔案應執行下列操作︰
◦ 將配套中顯示的來源 XML 轉換為 Servigistics InService 能夠瞭解的目標 XML。
◦ 如有必要,在暫存位置產生資訊清單檔案。
在共用模式下產生 SourcesList XML。
請遵循下列指導原則來開發新的轉換子流程︰
• 通常,例如圖像等非索引內容都儲存在檔案系統上。
• 對於共用模式而言,通常所有區段或集合都會保有物件的一個副本。
針對共用模式使用這些指導原則︰
◦ 在處理期間,確定無論物件類型屬於哪個配套或集合,都會為所有物件類型建立相同的來源名稱。
◦ 建立 SourcesList XML 檔案。
◦ 建立 TransformCollectionList.xml 檔案,其中列出要將資料載入到其中的集合。
• 針對非共用模式,您會在每個集合中保有不同的物件副本。
在處理期間,確定您為每個集合中的所有物件類型建立具唯一性的來源名稱或持續 ID。
• 如有必要,請更新 MIME 類型對應。
Servigistics InService 中沒有預設支援副檔名集。如果您要新增要處理的新檔案類型,您必須更新 MIME 類型對應檔案。
• 針對 INSERVICE_WORK/DCTM_OUTPUT/COLLECTION/BUNDLEID/TYPE 下的 DCTM 目錄使用一般結構
通常,類型特定目錄包含下列子目錄:
◦ Update - 包含來源 XML 以及需要載入存放庫的中繼資料
◦ UpdateHierarchy - 包含 Update 資料夾中所有來源 XML 檔案的清單
◦ Images - 包含與無法索引的來源關聯的項目,例如圖像。
◦ Deleted - 包含需要刪除的來源檔案。
後處理子流程
在後處理子流程中,在所有物件類型的 saveRegistry 步驟完成之後,所有類型的刪除相關任務才會完成。通常,刪除相關流程會由 excludedObjects.xml 檔案的存在而觸發。依預設,刪除是由類屬已排除物件處理常式所處理。
在大多數情況下,您必須在 INSERVICE_CONFIG/Applications/ContentManager/Config/Common/Templates/TransformationDriver/TYPE 資料夾中以 excludedObjects.xsl 名稱開發您自己的排除樣式表,才能識別新類型的特定物件。
當所有子流程都完成後,會針對處理此配套時所產生的每個 DCTM 輸出觸發載入特定任務。