数据模型更改后,如何在Alfresco中恢复数据

时间:2015-07-23 16:50:28

标签: alfresco alfresco-share

我希望有人之前经历过这个。

我在Alfresco中有一个数据模型,它定义了几种类型和几个方面。

例如,类型X具有强制性方面A和B.

作为在顶层开发我的应用程序的一部分,我需要添加一个新的方面来键入X.但是当我添加新的强制方面并部署我的放大器模型时,类型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时,我们将始终应用该方面,因为它是必需的。几周后,我们添加了强制性的aspect2。我们需要它的财产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

我们的查询已经与我们的数据模型一起发展,但是由于它们尚未应用aspect2,因此不会返回typeX的旧实例。我们的理论是我们可以运行一个脚本来应用缺少的方面而不进行版本控制;并通过我们的应用程序无缝地改进我们的内容。

1 个答案:

答案 0 :(得分:1)

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

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