2017-09-19 26 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

很高兴帮助。请记住接受答案。 –