您需要定義什麼「合併」對你意味着什麼。您可以輕鬆地將所有EMF模型附加到相同的資源並對它們進行序列化。
您可能想要在model1和model2之間建立等同關係。找到一些在model1和model2之間相等的對象。 之後,你可以找到差異。
作爲一個例子:
Model1 is a FARM with serial number 33829. Children: 2 CHICKENS, 3 EGGS and 1 PIG
Model2 is a FARM with serial number 33829. Children: 4 CHICKENS, 3 EGGS and 1 PIG
的匹配步驟確定以下換算:
Model1->FARM = Model2->FARM because serial number is equal
all other entities have not been matched
在此步驟之後而來的差異步驟:
REMOVED: 2 CHICKENS, 3 EGGS, 1 PIG
ADDED: 4 CHICKENS, 3 EGGS, 1 PIG
使用那些差異,您可以將它們應用於您的模型。僅應用'ADDED'差異將爲您提供以下型號:
Model1+2 is a FARM with serial number 33829. Children: 2 CHICKENS, 3 EGGS, 1 PIG, 4 CHICKENS, 3 EGGS, 1 PIG
您需要確定「合併」的業務規則。您首先必須確定兩個實體何時相同(匹配)。這可以基於獨特的密鑰,在樹中的位置或基於其他許多事情,具體取決於您的元模型。
因此,您將獲得「差異」列表。由您決定要應用哪些差異。
如果您看到'合併'作爲SVN合併(即Model1 = Model0 +更改,Model2 = Model0 +其他更改),那麼MergeService
已包含執行此操作的所有業務規則。