2012-03-20 74 views
1

似乎一旦Ocean Workstep派生類已發佈到生產環境(並且被客戶端使用),其名稱,名稱空間和程序集名稱將被有效鎖定以便將來更新(爲了確保向後兼容)。重構/重命名Ocean Workstep派生類

保存Petrel項目時,workstep引用將保存爲二進制文件Classes.ptd中的完整類型名稱(名稱空間,類,強大會名)。在加載過程中,如果確切類型名稱(程序集版本似乎被忽略)無法解析,工作步驟在工作流程編輯器中顯示爲「workstep not available」。

在我們遇到的二進制序列化的其他情況下,Petrel使用SerializationBinder註冊PetrelSystem.ProjectSerializationService - 對於Workstep實例不是這樣。

是否有任何其他方式來方便Workstep類/命名空間/程序集重命名?

爲什麼這種行爲如此糟糕的記錄(如果有的話)?我們有誤解嗎?

回答

3

這個問題實際上會被Ocean 2012.1 API修復。 workstep參考將不再包含版本號:工作步驟和流程序列化都已清理完畢。版本號不是序列化的(並且不用於反序列化),可以使用UniqueId而不是類型名稱。

以下是關於此主題的2012.1 Ocean發行說明的摘錄。

工藝和工步獨特的標識 命名空間:Slb.Ocean.Petrel.Workflow

流程和工作步驟,通過海洋創建沒有一個正確的標識,直到現在。它們被標識爲全名,包括版本號,這意味着它們的標識符可能會發生變化,例如: - 插件程序集的版本號增加(例如新的插件安裝)。 - 進程/工作步驟類已移至新程序集。 - 進程/ workstep類的名稱空間已更改。 這可能會導致Petrel中的問題,例如在工作流程編輯器中顯示「已斷開的鏈接」而不是收藏夾樹中的進程名稱或工作步驟顯示爲「workstep not available」。

爲了解決這個問題,Ocean已經從流程和工作步驟標識符中刪除了版本號,並且提供了一個新的API來支持自定義流程和工作步驟的用戶定義標識符,這些標識符在整個Petrel應用程序中將是唯一的。任何通過Ocean創建的進程/工作步驟現在都應該實現一個唯一的標識符。

請參考: - Process.UniqueId定義流程 唯一標識符 - Workstep.UniqueId定義工作步驟唯一標識符。 新API還爲已經序列化的進程/工作步驟提供了向後兼容性支持,並對序列化邏輯進行了一些更改。當打開傳統項目時,舊式ID會在反序列化過程中由新ID自動替換。

最好的問候, Gaelle

+0

非常感謝 - 非常有幫助! – 2012-04-24 09:31:51