您可在執行外掛程式時套用特定方式,例如快取物件、讓物件進入背景、複製物件等。您可透過此方式改善外掛程式的效能、避免發生並行處理問題,以及改善 Orchestrator 用戶端回應性。

快取物件

您的外掛程式會與遠端服務互動,並由本機物件提供此代表服務端遠端物件的互動。若要達到良好的外掛程式效能以及出色的 Orchestrator UI 回應性,您可快取本機物件,而非每次從遠端服務取得。您可考慮快取範圍,例如一個代表所有外掛程式用戶端的快取,每外掛程式使用者一個快取,以及每第三方服務使用者一個快取。在執行時,您的快取機制會整合外掛程式介面,以尋找物件及讓物件失效。

讓物件進入背景

若您必須在外掛程式詳細目錄中顯示大量物件清單,且沒有擷取這些物件的快速方式,您可讓物件進入背景。您可讓物件進入背景,例如讓物件擁有兩個狀態:fakeloaded。假設 fake 物件很容易建立及提供您必須在詳細目錄中顯示的最少資訊,如名稱與識別碼。接著將可隨時傳回 fake 物件,並在真正需要所有資訊 (真實物件)時,使用實體或外掛程式可自動叫用方法 load 以取得真實物件。您甚至可設定載入物件的程序,在傳回假物件後自動開始,以評估使用實體的動作。

複製物件避免發生並行問題

若您針對外掛程式使用快取,您必須複製物件。對每個實體使用隨時傳回相同物件執行個體的快取,以要求可擁有不需要的效果。例如:實體 A 要求物件 O,而該實體會檢視詳細目錄中的物件及其所有屬性。在此同時,實體 B 也會要求物件 O,而實體 A 則會執行工作流程,開始變更物件 O 的屬性。在執行結束時,工作流程會叫用物件的 update 方法以更新伺服器端的物件。若實體 A 和實體 B 取得物件 O 的相同執行個體,實體 A 會檢視詳細目錄中實體 B 執行的所有變更,甚至包括伺服器端認可變更前的項目。若執行順利,則沒有問題,但若執行失敗,則不還原實體 A 物件 O 的屬性。在此情況下,若快取(外掛程式 find 作業)傳回物件複製品,而非一直相同的執行個體,實體都會在每次使用時檢視與修改本身的複本,至少在 Orchestrator 中避免發生並行問題。

通知其他人變更

當您同時使用快取及複製品物件時,可能會發生問題。最大的問題在於該物件使用的實體檢視,可能不是物件可用的最新版本。例如:若實體顯示詳細目錄,將載入一次物件,但在此同時,若其他實體變更部分物件,第一個實體不會檢視變更。若要避免此問題,您可使用 Orchestrator 外掛程式 API 的 PluginWatcherIPluginPublisher 方法,告知已變更為允許其他 Orchestrator 用戶端執行個體查看變更。此方式也可在從詳細目錄單一物件變更影響其他詳細目錄物件時,以及需要告知時,套用至 Orchestrator 用戶端唯一執行個體。這些物件或物件部分內容顯示在詳細目錄時,方便使用通知的作業會新增、更新及刪除物件。

隨時啟用尋找任何物件

您必須執行 IPluginFactory 介面的 find 方法,按型別和識別碼尋找物件。find 方法可在重新啟動 Orchestrator 並繼續執行工作流程後直接叫用。

若您沒有查詢服務,請模擬

例如在特定狀況中,Orchestrator 用戶端會需要查詢部分物件或顯示為清單或表單而非樹狀結構。這代表您的外掛程式必須能隨時查詢部分物件組合。若第三方技術提供查詢服務,您需採用並利用此服務。否則,儘管此方式的複雜性較高或解決方案效能較低,您應能模擬查詢服務。

尋找方法不得傳回執行階段例外狀況

執行外掛程式內部搜尋的 IPluginFactory 介面方法不得擲出受控或不受控的執行階段例外狀況。這可能是在執行工作流程時奇怪驗證錯誤失敗的原因。例如:若第一個節點的輸出為第二個節點的輸入,則在工作流程的兩個節點之間叫用 find 方法。在此時,若因任何執行階段例外狀況導致找不到物件,您只能得到 Orchestrator 用戶端驗證錯誤的資訊。之後,將視外掛程式記錄例外狀況的方式,在記錄檔案內收到更多或更少的資訊。