【发布时间】:2015-07-27 14:18:32
【问题描述】:
我希望有人以前经历过这种情况。
我在 Alfresco 中有一个数据模型,它定义了一些类型和一些方面。
例如,类型 X 具有强制性方面 A 和 B。
作为在顶层开发应用程序的一部分,我需要为类型 X 添加一个新方面。但是当我添加新的强制方面并部署我的 amp 模型时,类型 X 的所有现有数据将不再显示在我的新查询尝试加入方面 X。
有人知道解决这个问题的无缝方法吗?
理想情况下,可以运行一些脚本来分析模型、匹配类型名称并将任何缺失的方面应用于该类型的实例。这样,模型可以通过一个脚本来演化数据,并且我们所有的查询都可以随着数据模型以连贯的路径发展。
这是一个例子......
假设我们的类型 X
有这个查询SELECT P:nameSpace:aspect.nameSpace.propertyA
FROM nameSpace:typeX AS primary
JOIN nameSpace:aspect AS P:nameSpace:aspect
ON primary.cmis:objectId=P:nameSpace:aspect.cmis:objectId
每当我们创建一个对象 X 时,我们总是会应用方面,因为它是强制性的。现在几周后,我们添加了强制性方面 2。我们需要它的属性 B...
SELECT P:nameSpace:aspect.nameSpace.propertyA, P:nameSpace:aspect2.nameSpace.propertyB
FROM nameSpace:typeX AS primary
JOIN nameSpace:aspect AS P:nameSpace:aspect
ON primary.cmis:objectId=P:nameSpace:aspect.cmis:objectId
JOIN nameSpace:aspect2 AS P:nameSpace:aspect2
ON primary.cmis:objectId=P:nameSpace:aspect2.cmis:objectId
我们的查询随着我们的数据模型而发展,但不会返回 typeX 的旧实例,因为它们还没有应用 aspect2。我们的理论是我们可以运行一个脚本来应用缺少的方面而无需版本控制;并通过我们的应用程序无缝地发展我们的内容。
【问题讨论】:
-
您能发布您的查询吗?这实际上不应该发生。
-
真的吗?我相信我们经常看到它。在我们制作一堆对象 x 并使用非联合方面进行查询的情况下。然后在将来,当对象 x 有一个新的强制方面......现在我们的查询加入时,我们的旧对象 x 没有那个方面。我会尽快在我的问题中发布一个示例。
-
谢谢@mitpatoliya。我添加了一个例子