0

我们有这个问题:

昨天我们在 Alfresco 中有一个自定义的 xmlModel,它有一个自定义类型、带有属性的内容扩展和一些强制性方面。

<type name="custom:myType">
     <title>Object</title>
     <parent>cm:content</parent>
     <properties>
        <property name="custom:myProperty">
           <type>d:text</type>
        </property>
     </properties>
     <mandatory-aspects>
        <aspect>custom:myAspect1</aspect>
     </mandatory-aspects>
  </type>

现在我们迫切需要将自定义的 my Property 移动到一个新的方面,如下所示:

 <aspect name="custom:myAspect2">
     <title>new aspect</title>
     <properties>
        <property name="custom:myProperty">
           <type>d:text</type>
           <mandatory enforced='true'>true</mandatory>
        </property>
     </properties>
  </aspect>

现在的类型是:

<type name="custom:myType">
 <title>Object</title>
 <parent>cm:content</parent>
 <mandatory-aspects>
    <aspect>custom:myAspect1</aspect>
    <aspect>custom:myAspect2</aspect>
 </mandatory-aspects>

在完全重建索​​引之后,Lucene 似乎并没有考虑这些变化。因此,在 Alfresco 的新文档中,一切都很好,在旧文档上,使用旧模型上传并重新索引,我们仍然拥有该属性,但缺少该方面。这是正常的行为吗?或一些问题/错误。所有这一切都是由于我们需要对方面进行 CMIS 查询造成的,但是我们在对不属于 Alfresco 方面的类型的本机属性进行查询时遇到了一些问题。似乎只能提取方面的属性而不是内容类型的属性。真的吗?谢谢

谢谢。

4

1 回答 1

2

关于问题的第一部分,您可能需要运行脚本将方面添加到旧对象。实际上,我很惊讶 repo 能够启动,因为那些旧对象应该抱怨它们的类型需要一个尚未添加到对象的强制方面。

如果我要进行您所做的更改,我会首先将方面声明为空方面,然后运行脚本将方面添加到有意义的所有节点,然后更新模型以从类型中移动属性到方面并重新启动。

关于您关于 CMIS 和查询的第二个问题,您应该能够毫无问题地通过 CMIS 查询定义为类型的一部分的属性。问题是当您的属性移动到方面时。然后您的查询必须像这样进行连接:

queryString = "select d.*, w.* from cmis:document as d join sc:webable as w on d.cmis:objectId = w.cmis:objectId where w.sc:isActive = True";

在此示例中,sc:webable 是一个方面,并且在该方面上定义了 sc:isActive 属性。

因此,如果您说您在查询方面定义的属性时遇到问题,那比查询类型上定义的属性时遇到问题更有意义(因为连接要求)。

此外,请注意向对象添加和删除方面、询问对象是否具有方面以及设置或更新在方面上定义的属性都需要您使用扩展,因为 CMIS 1.0 不支持方面。盒子。OpenCMIS有一个扩展, cmislib有另一个扩展。

于 2013-02-15T01:28:27.880 回答