使用Javers使用元模型计算差异

时间:2018-02-15 15:36:38

标签: java metamodel javers

可以使用Javers来使用类/对象(如元模型而不是具体的Java类)来计算差异吗?

到目前为止,我的研究让我相信Javers的差异只适用于作为具体Java类实现的模型。

java-object-diff库类似。

我有一个元模型,其中单个模型包含的信息与使用Java Reflection API获得的信息大致相似(即Class,Field)。我还有模型对象实例,它类似于Java对象(即类的实例)。元模型和模型对象实例都是Java类,但这些类本身是一般重用的建模类,并且本身不感兴趣。

我期望必须进行相当多的连接,以便将元模型的细节暴露给差异算法,相当于从Java Reflection API和通常的Java对象语义中获取的内容。如:

  • 什么是实体?
  • 什么是实体属性?
  • 属性的基数是多少? (例如,一个,多个/集合/列表/数组)。
  • 属性值,实体或非实体(例如原始)的类型。属性是另一个实体还是非实体(例如原始的)?
  • 提供一种方法来读取给定实体实例的属性值。
  • “same”的定义是什么?
  • “平等”的定义是什么?
  • “可比较”的定义是什么?
  • 在区分集合/集合时支持复杂的相关性(例如相似性度量),而不仅仅是标准的“相等”。

1 个答案:

答案 0 :(得分:0)

JaVers在内部使用元模型来比较用户的对象。 用户的对象被映射到Cdo抽象。 (见javadocs) 然后比较Cdo个实例。

因此,整个diff算法基于元模型。但是,它是JaVers'元模型。 JaVers准备好处理任何类型的元模型吗?可能不是。

JaVers是否已准备好处理您的元模型?没有看到它很难说,但我怀疑。

我可以建议,尝试将您的元模型转换为JaVers'元模型。提供Cdo个实例,例如CdoSnapshot并进行比较。