Sarà necessario definire che cosa significa per voi 'merge'. È possibile collegare facilmente tutti i modelli EMF alla stessa risorsa e serializzarli.
Probabilmente vorrai stabilire le equivalenze tra model1 e model2. Trova alcuni oggetti uguali tra model1 e model2. Dopo questo, puoi trovare le differenze.
Ad esempio:
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
Il corrispondenza passo stabilisce le seguenti equivalenze:
Model1->FARM = Model2->FARM because serial number is equal
all other entities have not been matched
Dopo questo passo viene la differenze passo:
REMOVED: 2 CHICKENS, 3 EGGS, 1 PIG
ADDED: 4 CHICKENS, 3 EGGS, 1 PIG
Utilizzando le differenze , è possibile applicarle al modello. Applicando solo la differenza 'ha aggiunto' ti dà il seguente modello:
Model1+2 is a FARM with serial number 33829. Children: 2 CHICKENS, 3 EGGS, 1 PIG, 4 CHICKENS, 3 EGGS, 1 PIG
E 'a voi per determinare le regole di business di 'fusione'. Dovrai prima determinare quando due entità sono uguali (corrispondenza). Questo può essere basato su una chiave univoca, sul loro posto nell'albero o sulla base di molte altre cose, a seconda del tuo metamodello.
Di conseguenza, si avrà un elenco di "differenze". Spetta a te definire quali differenze applicare.
Se vedete "unire" come unione SVN (cioè Modello1 = Modello0 + cambia, Modello2 = Modello0 + altre modifiche), quindi lo MergeService
contiene già tutte le regole aziendali per farlo.