套用步驟
套用步驟是新增或更新目標環境中之記錄的步驟。就像比較步驟一樣,套用步驟實際上是多個步驟,以最佳方式儘可能順暢處理記錄之間的大量資料和依存項目。
在詳細說明套用步驟之前,下列各點強調可包含在指定資料集中的資料類型。
-
沒有外來索引鍵的記錄,因此其他記錄上沒有依存項目。範例:訊息、顯示設定檔。
-
具有可能已在目標中之外來索引鍵的記錄。範例:現有演算法類型的演算法、現有待辦事項類型的待辦事項角色。
-
具有外來索引鍵的記錄,其外來索引鍵為新記錄,但也是移轉的一部分。「組態移轉助理」在匯出時偵測到關係,並將物件分組至相同交易中。範例:基於指令檔的演算法類型,其中指令檔也是移轉的一部分。
-
具有外來索引鍵的記錄,其外來索引鍵為新記錄,但也是移轉的一部分。「組態移轉助理」沒有偵測到關係。如果參考的外來索引鍵位於 XML 中或參數資料欄中,且移轉計畫沒有包含如何明確定義關係的指示,就可能會發生此情況。範例:參考可見度指令檔的區域。
-
具有循環參考的記錄,其中兩筆都是新的記錄,並且皆為移轉的一部分。「組態移轉助理」在匯出時偵測到關係,並將物件分組至相同交易中。範例:業務物件外掛點的外掛指令檔。指令檔會參考業務物件,而該業務物件會參考指令檔之演算法類型的演算法。另一個範例是,當同一筆記錄由多個維護物件維護,而因此存在於多個移轉物件時。
若要處理大量資料,套用處理中的第一個步驟是透過多執行緒的批次工作,在移轉物件層級執行套用邏輯。這應該會讓上述類目 1 和 2 中的所有記錄都能順利套用。
-
主要實體與交易實體之間的依存項目通常為階層式,在大多數情況下一看就明白。此工具利用該知識以盡可能遵循依存項目順序的最佳方式來協調物件處理。請注意,實體之間的關係可能很複雜,這種方法並無法消除所有與處理順序相關的錯誤,但可大幅減少錯誤。
-
組態實體之間的依存項目較為複雜且相互影響,因此不會排序移轉物件,亦即多重執行緒批次處理可能無法以想要的順序處理記錄。
-
為了解決處理訂單相關錯誤的潛在問題,「套用」步驟具有特殊功能,詳述如下。
對於上述類目 5 中的記錄,循環參考表示在物件層級的套用處理無法成功地新增或更新這些記錄,而在交易層級的套用處理將會涵蓋這些記錄。下方會詳細描述。
套用物件
「資料集」處於套用物件狀態之後,就會執行移轉物件監視 - 套用處理 (F1-MGOAP) 以嘗試套用物件。
使用業務資料的個別批次處理時,移轉物件監視 (業務) - 套用處理 (F1-MGOAB) 的運作方式與套用業務移轉物件的方式相同。
背景處理與「套用」演算法一起使用時具有特殊功能,以確保在此步驟中成功套用類目 3 和 4 (上述) 中的記錄:
-
移轉物件監視 - 套用是特殊處理,它會不斷地重新選取處於已核准狀態的記錄,直到沒有任何要處理的適用記錄為止。
-
在「套用物件」演算法中收到錯誤時,演算法會在移轉物件記錄上遞增「反覆計數」。如果反覆計數沒有超過最大計數 (演算法中所附註),物件會保持已核准狀態,並適用選取以重新處理。如果反覆計數超過在演算法中定義的上限,記錄就會轉變為套用時發生錯誤狀態。
下列圖表是移轉物件生命週期與「套用」步驟相關的部分。
完成「套用」監視處理時,物件通常會處於已套用狀態,或套用時發生錯誤狀態。記錄處於「套用時發生錯誤」狀態的原因有兩個。
-
記錄屬於上述類目 5,其中具有與其他記錄的循環參考。在此情況下,下方所述的「套用交易」步驟應該能成功地套用記錄。
-
還有一些與目前移轉中的記錄不相關的其他錯誤。在此情況下,可能需要手動操作。如需詳細資訊,請參閱下方的解決錯誤區段。
如圖表中所示,「套用物件」演算法還可能偵測到無法套用物件的原因。如果目標環境中的物件在比較步驟之後已更新,就可能發生此情況,導致在那時擷取的 SQL 不再適用。如果發生這種情況,在完全套用目前移轉之後,可能會再次匯入原始檔案,並產生和套用新的比較。
套用交易
理想情況下,在「套用物件」步驟後,所有物件都會處於已套用狀態,或是因「循環參考」的情況而處於套用時發生錯誤狀態。典型的下一個步驟是將責任移交給交易。然後,移轉交易可以嘗試大量套用自己的物件。
為了確保不會有多個背景處理嘗試選取移轉物件來執行「套用」步驟,當「資料集」處於套用交易狀態時,「交易」僅適用於嘗試「套用我的物件」。
「套用物件」狀態上的監視演算法 (由資料集監視批次處理執行) 會檢查是否所有移轉物件都不再是已核准狀態,或是處於套用時發生錯誤的記錄數沒有超過設定的上限。如果是,該演算法就會自動將記錄轉變為套用交易狀態。
如果處於套用時發生錯誤狀態的物件數量超過設定的上限,監視演算法則不會自動轉變記錄。在此情況下,使用者必須判斷是否能夠解決這些大量的錯誤,或是手動轉變為套用交易 (儘管出現大量錯誤)。下方的解決錯誤區段描述當錯誤發生時,使用者可以採取的替代步驟。
「資料集」處於套用交易狀態之後,就會執行移轉交易監視 - 套用處理 (F1-MGTAP)。它會嘗試套用交易的物件。如果沒有任何處於錯誤狀態的移轉物件,移轉交易就會直接轉變為已套用。如果有任何處於套用時發生錯誤的移轉物件,背景處理和「套用」演算法具有特殊功能以嘗試解決已移轉物件中的依存項目。
-
「套用」演算法會選取所有處於錯誤狀態的移轉物件並執行其所有的 SQL,然後驗證所有記錄。如果交易中有任何具有循環參考的物件,它們此時應該通過驗證。
-
由於各交易間可能還有依存項目,這裡也有在「套用物件」步驟中所述的類似錯誤處理。在「套用交易的物件」演算法中收到交易中任何物件的錯誤時,演算法會在移轉交易記錄上遞增「反覆計數」。如果反覆計數沒有超過最大計數 (演算法中所附註),交易會保持可套用狀態,並適用選取以重新處理。如果反覆計數超過上限,記錄就會轉變為套用時發生錯誤狀態。請注意,如果交易中有任何物件處於錯誤狀態,則不會套用任何物件。它們會維持錯誤狀態。
-
移轉交易監視 - 套用是特殊處理,它會不斷地重新選取處於可套用狀態的記錄,直到沒有任何要處理的適用記錄為止。
下列圖表是移轉交易生命週期與「套用」步驟相關的部分,說明上述幾個要點。
如果在交易層級「套用」處理結束時有處於錯誤狀態的交易 (因此仍有物件處於錯誤狀態),使用者必須複查錯誤,並決定如何修正。如需詳細資訊,請參閱下方的解決錯誤區段。
解決錯誤
如先前區段中所述,執行「套用物件」處理後可能會收到錯誤。如果處於錯誤狀態的記錄數低於特定上限 (且已提交資料集監視批次工作來執行監視演算法),系統會自動將資料集轉變為套用交易。如果沒有執行監視批次工作,或是處於錯誤狀態的物件數量超過特定上限,使用者必須在移轉資料集匯入入口的「處於錯誤狀態的物件」區域中檢視錯誤後做出決定。
-
如果錯誤似乎與依存項目相關,使用者可以決定讓「交易套用自己的物件」,並將資料集轉變為套用交易,如上所述。
-
如果錯誤似乎與可手動解決的外部問題相關,使用者可以選擇修正問題,並重新執行「套用物件」步驟。
-
使用者也可以決定拒絕一或多個物件,以便將其從移轉中移除。
在「套用交易」步驟後,如果仍然有錯誤,使用者必須複查記錄,並決定接下來的動作。您可以在移轉資料集匯入入口的處於錯誤狀態的交易區域中看到這些錯誤。
-
使用者可以決定拒絕一或多個物件,以便將其從移轉中移除。
-
使用者可以手動解決移轉以外的錯誤,然後決定執行下列其中一個動作:
-
重新執行套用物件步驟。如果仍有大量處於錯誤狀態的物件,且預期沒有大量依存項目,建議使用此選項。以多執行緒方式執行「套用物件」的好處,會確保處理能夠有效率地執行。
-
重新執行套用交易步驟。
-
由於物件和交易都處於「套用時發生錯誤」狀態,為了在手動修正錯誤後「重試」套用步驟,系統必須將記錄移回可供適當的「套用」處理選取的狀態。針對移轉物件,必須將記錄移回已核准狀態。針對移轉交易,必須將記錄移回可套用狀態。下列各點說明移轉物件的「重試」邏輯。
-
如果使用者決定重試物件 (使用「移轉資料集匯入」頁面上的動作按鈕),資料集會轉變為重試物件狀態。此時,必須執行「移轉物件」監視。
-
物件之套用時發生錯誤狀態上的監視偵測到資料集處於重試物件狀態,進而將交易觸發回已核准狀態。
-
下一個步驟是將資料集從重試物件轉變為套用物件。您可以手動進行,或是透過執行「移轉資料集匯入」監視處理來進行。
-
現在物件適用物件層級「套用」處理選取。
移轉交易也有類似的邏輯。
-
如果使用者決定重試交易 (使用「移轉資料集匯入」頁面上的動作按鈕),資料集會轉變為重試交易狀態。此時,必須執行「移轉交易」監視。
-
交易之套用時發生錯誤狀態上的監視偵測到資料集處於重試交易狀態,進而將交易觸發回可套用狀態。
-
下一個步驟是將資料集從重試交易轉變為套用交易。您可以手動進行,或是透過執行「移轉資料集匯入」監視處理來進行。
-
現在交易適用交易層級「套用」處理選取。
當狀態在「套用物件」和「套用交易」之間轉變時,根據是否出現錯誤,也可能會發生重試邏輯。下列情況強調了這一點。
-
在套用物件步驟後,有物件處於套用時發生錯誤狀態。資料集會轉變為套用交易,且「套用」步驟會在交易層級執行。
-
在套用交易步驟後,有交易處於套用時發生錯誤狀態。
-
使用者選擇再次嘗試套用物件 (透過按一下重試物件)。此時依照上方列出的重試物件步驟來進行。
-
套用物件之後,使用者可以選擇再次重試物件 (如果適用的話,在修正錯誤之後)。
-
在某個時間點,使用者會再次將資料集轉變為套用交易。如果有交易處於套用時發生錯誤狀態,系統會自動將資料集轉變為重試交易狀態,並依照上方列出的重試交易步驟來進行。
完成套用步驟
移轉交易的所有移轉物件都處於最終狀態 (已套用、已拒絕或無法套用) 之後,移轉交易會轉變為已套用狀態。所有移轉交易都處於已套用狀態之後,「移轉資料集」記錄會轉變為完成,匯入就完成了。