設定批次工作流定義的提示

設定工作流以避免發生開放式工作流問題

應一律設定工作流,讓工作流只在工作流中的所有步驟都完成後才會「結束」,這可透過在「工作流結束」步驟條件設定工作流,或是定義步驟之間的交互依存項目來達成。如此可確保工作流執行不會在工作流中間停止。

執行超過午夜的工作必須與工作流中的其他工作具有相同的業務日期

如果工作流執行時間太長且部分工作執行超過午夜,則可將工作流中的所有工作設為以相同的業務日期執行。請建立排程器程式,將業務日期程式選項值設為 'SYSDATE',並將工作流範圍設為工作流名稱。然後將此排程器程式當作工作流中其他步驟之前的初始步驟。

如何將一個大型的工作流分割成多個較小型的工作流

如果批次工作流定義有太多的工作要執行而顯得過長,此時可將其分割成多個較小型的工作流,讓工作流以接續方式執行。可使用新的批次控制 K1-EXDJS (執行 DBMS 工作流) 來執行此作業。請為每個子工作流建立一個排程器程式,將批次控制指定為 K1-EXDJS,批次參數名稱則指定為子工作流名稱。將此排程器程式當作上一個工作流結束前的最後一個步驟,如此只要上一個工作流的步驟一完成,最後一個步驟便會起始新的子工作流。例如,如果您的工作流含有 A、B、C、D、E、F、G、H 這幾項工作。請將工作流分割成工作流 1 (含有 A、B、C、D) 和工作流 2 (含有 E、F、G、H)。建立一個批次控制為 K1-EXDJS、批次參數名稱為工作流 2 的排程器程式。在工作流 1 的步驟 D 之後,定義一個新步驟以叫用建立的排程器程式。請注意,子工作流之間並沒有依存項目。也就是說,新的批次控制會開始讓每個子工作流自己執行,而呼叫子工作流的工作流不會等它完成。因此,這類組態只會與那些以平行方式執行的步驟搭配使用。

如何將工作流設定為只在 OUAF 工作行事曆日期執行

若要將批次工作流定義設定為只在工作日執行,請使用批次控制 K1-CWCEL。建立一個具有此批次控制、批次參數「工作行事曆」設為必要工作行事曆的排程器程式,並確認在營業日執行設為「真」。然後將此排程器程式當作工作流中所要執行的第一個步驟。將工作流定義為若此步驟失敗則結束。將工作流的後續步驟定義為若此步驟成功則執行。當工作流在排定的日子執行時,第一個步驟會根據工作行事曆來檢查該日是否落在工作日。如果該日並非工作日,則工作流會結束執行,以確保工作流只在希望的日期執行。

檢查檔案是否存在的工作流

在工作流需要先檢查某個檔案是否已由其他處理上傳/建立,才能繼續進行其餘處理的情況時,可使用特殊批次程式 "K1-OSCFE"。您可以引入參考此新批次程式的步驟,其中所含的參數指定要將檔案存入哪個物件儲存分組,以及如果檔案不存在時所要傳回的狀態。可將此步驟新增在相依於檢查檔案是否存在及是否繼續處理的步驟之前。

處理工作流交互依存項目

如果工作流不能與另一個工作流同時間執行,可使用特殊批次程式 "K1-CKCCR" 在此類工作流之間設定交互依存項目。設定此類組態需要下列步驟。
  • 新批次程式接受兩個參數 - 指令檔名稱和指令檔資料。請撰寫 CM 指令檔,以檢查依存工作流是否正在執行。如果依存工作流正在執行,則指令檔應該會因發生錯誤而終止。

  • 如果其他批次工作流正在執行,請在需要暫停/保留的批次工作流中新增一個步驟,作為該工作流的第一個步驟。然後在第一個步驟中使用新批次程式 (透過將 CM 指令檔設為輸入參數的方式),或建立一個排程器程式 (如果批次控制是要在許多工作流之間使用,而這些工作流以不同的 CM 服務指令檔作為輸入參數)。將依存工作流名稱設為指令檔資料參數。
  • 更新「工作流結束」步驟條件,以便在第一個步驟失敗時結束工作流。如此可確保如果其他依存工作流已在執行中,此批次工作流就不會執行。
  • 更新要在第一個步驟之後執行的步驟,步驟條件是只有當第一個步驟成功時,才應繼續進行這些步驟。

備註:特殊批次程式不僅限於這些情況。它可藉由撰寫對應的 CM 指令檔來應用在許多自訂案例中,當符合所要的情況時,指令檔就會終止。