2017-09-19 40 views
0

我們爲我們的項目使用Alfresco Enterprise 4.2.2.5平臺。如何獲得在Alfresco中定義了自定義屬性值的文檔列表

我們的用戶在Alfresco文件夾「../contracts_def」中創建合同,然後啓動批准過程。 對於例如,文件夾「contracts_def」具有以下結構:

Contracts_def (Folder) 
    | 
    |---- contract_name1 (Folder) 
    |   |--- contract_name1.docx (main document) 
    |   |--- ext_file1.docx  (document) 
    | 
    |---- contract_name2 (Folder) 
       |--- contract_name2.docx (main document) 
       |--- ext_file2.docx  (document)   

每個主文檔中設置的屬性,包括approvement的狀態。 在Alfresco節點瀏覽器屬性的全名是{httр://www.mytest.ru/model/test/contract/1.0}狀態
我想在文件夾「contracts_def」中獲取狀態爲「on-sign」的文檔列表。

我已經寫了簡單的腳本在Java腳本控制檯運行:

var rs = search.query 
     ({ query: 
     "SELECT * FROM cmis:document WHERE CONTAINS('PATH:\"/app:company_home/st:sites/cm:contracts/cm:documentLibrary/cm:contracts/cm:contracts_def//*\"')", 
     language:"cmis-alfresco" }); 
     for (var r in rs) 
     { logger.log(rs[r].parent.name + "/" + rs[r].name + "\t" + rs[r].properties.status); } 

有3個問題:

1)腳本工作,但不是文檔的狀態,我得到 「NULL」。我如何理解,腳本不會返回文檔的自定義屬性 - {httр://www.mytest.ru/model/test/contract/1.0}狀態,但我只能獲得非自定義屬性,例如{httр://www.alfresco.org/model/content/1.0}創作者

2)我想獲取只有狀態爲「on-sign」的文檔列表,但腳本將返回所有指定的屬性而不進行過濾。

如何爲我的要求更改代碼?

3)我可以使用Alfresco內置的Web腳本獲取這些信息嗎?

在此先感謝。

+0

如果使用常規的Alfresco搜索語法而不是CMIS,會發生什麼? – Gagravarr

+0

我在腳本中使用了Alfresco語法,並且我再次得到NULL: var rs = companyhome.childrenByXPath('st:sites/cm:contracts/cm:documentLibrary/cm:contracts/cm:contracts_def // *'); (log r.log(rs [r] .parent.name +「/」+ rs [r] .name +「\ t」+ rs [r] .properties.status);} –

+0

當你在javascript中獲取你的屬性時,你需要使用qname形式,例如'rs [r] .properties [「test:status」]' – Gagravarr

回答

1

如果您在服務器端JavaScript控制檯中運行代碼,並且該代碼可以完全訪問JavaScript API和本機搜索,那麼爲什麼要使用CMIS呢?

與使用JavaScript和CMIS相比,您可能會發現使用管理控制檯中可用的節點瀏覽器首先獲得查詢工作更容易。

轉到管理控制檯,則節點瀏覽器,並把這個在搜索框中輸入:

PATH:"/app:company_home/st:sites/cm:contracts/cm:documentLibrary/cm:contracts/cm:contracts_def//*" =test:status:"on-sign" 

確保「FTS-露天」被選中。

既然你有一個工作查詢,你可以回到JS控制檯並在你的search.query調用中使用它。

+0

謝謝,它很有幫助! –

+0

很高興幫助。請記住接受答案。 –