2013-02-15 92 views
0

我们有这样的问题:露天Lucene和CMIS

昨天我们在露天定制xmlModel是有一个自定义类型,用一个属性的内容,以及一些强制性的方面扩展。

​​

现在我们迫切需要我的财产移动定制到这样一个新的方面:

<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似乎没有考虑到这些变化。 所以在露天的新文档万物罚款,对旧的,与老款车型uplodaded现在重建索引,我们还是财产,但缺少的方面。 这是正常的行为吗?或一些问题/错误。 所有这些都是由于我们需要对方面进行CMIS查询而引起的,但是我们在查询不属于Alfresco方面的类型的本地属性时遇到了一些问题。似乎只能提取某个方面的属性,而不能提取内容类型的属性。真的吗? 感谢

感谢。

回答

2

关于你的问题的第一部分,你可能需要运行一个脚本方面添加到老的对象。我真的很惊讶,回购能够开始,因为那些旧对象应该抱怨他们的类型需要一个强制方面,没有被添加到对象。

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

关于你提到的关于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不支持方面盒子外面。有一个extension for OpenCMIS和另一个extension for cmislib

+0

在第一部分,旧的对象不会缺少老强制性质,因为现在老属性是强制性的方面。它应该工作一样。我们也有7mil文件并且不能运行脚本。对于第二部分,我们在没有问题的情况下进行连接(噢,我们正在使用CMIS的web脚本来进行连接并获取节点的属性和方面)。问题是,在CMIS返回的xml中,只有方面内部没有任何类型属性,所以当我们解析xml并填充表来查看结果时,我们不能将类型属性导入为值。 – Teqnology 2013-02-15 08:25:13

+0

根据您在上面显示的类型,您应该只有cm:content的类型属性,因为这是类型的父项,并且没有定义其他属性。其余部分将作为该方面的一部分出现。 – 2013-02-15 17:25:42

+0

对不起,我没有发布整片的XML。我们的类型有一个属性,并有更多方面和一组属性。当我们通过CMIS执行查询时,我们按照你所说的做了一个JOIN,它对于方面属性起作用,但我们不知道如何在类型标记中获取单个属性(不是方面中的那个属性)。除此之外,我们设法将该属性视为方面,因此我们创建了别名并与其他所有人一起加入了该属性。这种解决方法很有效,但我们不确定这是否正确。希望我清楚这个问题.. – Teqnology 2013-02-16 17:39:00