我们将Alfresco Enterprise 4.2.2.5平台用于我们的项目。
我们的用户在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)
每个主文档都有一组属性,包括批准状态。
在Alfresco Node浏览器属性的全名是 {https://www.mytest.ru/model/test/contract/1.0}状态。
我想在文件夹“contracts_def”中获取状态为“on-sign”的文档列表。
我编写了简单的脚本,可以在Java Script Console中运行:
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}状态,但我只能得到无定制属性,例如 {https://www.alfresco.org/model/content/1.0}创建者。
2)我想获取只有状态为“on-sign”的文档列表,但脚本将返回所有指定的属性而不进行过滤。
如何根据我的要求更改代码?
3)我可以使用Alfresco的内置网络脚本获取此信息吗?
提前致谢。
答案 0 :(得分: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-alfresco”。
既然你有一个有效的查询,你可以回到JS控制台并在你的search.query调用中使用它。