【问题标题】:How do I recover data in Alfresco after a data model change数据模型更改后如何在 Alfresco 中恢复数据
【发布时间】: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。我添加了一个例子

标签: alfresco alfresco-share


【解决方案1】:

好的,我遇到了您的问题,您的查询是强制要求在内容上同时具有这两个方面,这就是为什么它不显示旧内容,因为它们没有新的方面 B。 我看到了两个选项来处理它。

  1. 您可以在根文件夹上创建规则并使用该规则将该方面添加到 所有现有内容。这是一个非常简单的解决方案。
  2. 您可以修改您的查询,使其适应旧的 内容,可能是通过左内连接。(我不擅长查询 :) )

【讨论】:

  • 您能指出选项 1 的资源吗?据我们所知,没有左内连接功能;我们确实希望在我们的模型和编码实践中强制执行数据完整性。
猜你喜欢
  • 2012-06-11
  • 2015-01-19
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多