【问题标题】:EMF: Model Diff as Change Model / CommandEMF:模型差异作为更改模型/命令
【发布时间】:2012-08-10 15:46:40
【问题描述】:

有 2 个基于相同元模型的模型。我可以使用EMF Compare 来接收差异模型。就我而言,一种模型是新模型的旧版本。

a) 我如何接收变更模型,描述从旧模型到新模型的变化?

b) 如果这不是默认 EMF 更改模型的实例,是否可以创建一个命令在旧模型上执行这些更改?

出于各种原因,我不想替换 EObject 元素。使用 EMF 比较不是强制性的。

【问题讨论】:

    标签: model comparison diff eclipse-emf eclipse-emf-ecore


    【解决方案1】:

    我也在 E​​clipse 论坛上回答了你,但是对于可能偶然发现这个问题的堆栈溢出用户,这是我的回答:

    • 使用 EMF 比较 1.3

      您需要以编程方式调用 diff 进程(MatchService.match 然后 DiffService.diff)来检索 DiffModel。之后,您可以在自己的命令中应用所有这些差异(将对 MergeService.merge 的调用封装在 RecordingCommand 中)。从那里,您可以合并命令中的所有差异,并在需要时检索相应的 ChangeModel(我们没有从 DiffModel 到 ChangeModel 的转换)。这很麻烦,但是如果您在可以合并的上下文中是可行的(如果您只需要 ChangeModel,则没有什么可以阻止您在之后撤消命令)。在我们完成 EMF Compare 2.0 之前,这可能是最安全的方法。

    • 使用 EMF 比较 2

      EMF Compare 2 目前处于开发阶段,虽然尚未在命令中完成合并,但这是我们在此版本中的目标。但是,您可以使用此新版本更轻松地获取 ChangeModel。您需要创建自己的 IDiffProcessor 并使用它来实例化 DefaultDiffEngine。每当我们检测到引用或属性的差异时,都会通知差异处理器。然后就可以创建对应的ChangeModel了。

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2014-03-13
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2013-03-30
      • 2015-05-30
      • 2016-05-09
      • 2011-10-10
      相关资源
      最近更新 更多