2013-02-15 88 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