2012-08-14 61 views
0

擁有基於相同元模型的2個模型。我可以使用EMF Compare來接收Diff模型。就我而言,一種模式是新版本的舊版本。EMF:模型差異作爲更改模型/命令

a)如何接收變更模型,描述從舊變更爲新變更模型?

b)如果這不是默認EMF更改模型的實例,是否可以創建一個命令在舊模型上執行這些更改?

我不想因各種原因來替換EObject元素。使用EMF比較不是必需的。

回答

1

我也回答了你在Eclipse論壇,但堆棧溢出的用戶,可能就這個問題絆倒,這裏是我的回答:

  • 使用EMF比較1.3

    您需要調用diff程序以編程方式(MatchService.match然後是DiffService.diff)來檢索DiffModel。之後,您可以在自己的命令中應用所有這些差異(將調用封裝到RecordingCommand中的MergeService.merge)。從那裏,您可以合併命令中的所有差異,並在需要時檢索相應的ChangeModel(我們沒有將DiffModel轉換爲ChangeModel)。這很麻煩,但是如果您處於可合併的上下文環境中(如果您只需要ChangeModel,則無法阻止您再次撤消命令)。可能是最安全的方式,直到我們完成烹飪EMF比較2.0。

  • 使用EMF比較2

    EMF比較目前2是處在發展階段,儘管合併還沒有命令中完成的,這是我們這個版本的目標。但是,您可以使用此新版本更輕鬆地獲取ChangeModel。你需要的是創建你自己的IDiffProcessor並使用它來實例化DefaultDiffEngine。每當我們檢測到引用或屬性上的差異時,Diff處理器將被通知。然後您可以創建相應的ChangeModel。