【问题标题】:How to get list of documents with defined value of custom property in Alfresco如何在 Alfresco 中获取具有自定义属性定义值的文档列表
【发布时间】:2023-03-17 03:51:01
【问题描述】:

我们的项目使用 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 浏览器属性的全名是 {httр://www.mytest.ru/model/test/contract/1.0}status
我想在文件夹“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}status,但我只能得到非自定义属性,例如 {httр://www.alfresco.org/model/content/1.0}creator

2) 我想获取只有状态“on-sign”的文档列表,但脚本将返回所有指定的属性而不进行过滤。

如何根据我的要求更改代码?

3) 我可以使用 Alfresco 的内置网络脚本获取这些信息吗?

提前致谢。

【问题讨论】:

  • 如果您使用常规的 Alfresco 搜索语法而不是 CMIS 会发生什么?
  • 我在脚本中使用了 Alfresco 语法,但我再次得到 NULL:var rs = companyhome.childrenByXPath('st:sites/cm:contracts/cm:documentLibrary/cm:contracts/cm:contracts_def/ /*'); for (var r in rs) {logger.log(rs[r].parent.name + "/" + rs[r].name + "\t" + rs[r].properties.status);}跨度>
  • 在 javascript 中获取属性时需要使用 qname 表单,例如 rs[r].properties["test:status"]
  • 谢谢,它适用于 qname 形式 :) !在我的情况下,也有必要使用我们自定义模型的正确前缀(不是“测试”)。

标签: javascript alfresco alfresco-webscripts


【解决方案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 调用中使用它。

【讨论】:

  • 谢谢,很有帮助!
  • 很高兴它有帮助。请记住接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-05-30
  • 1970-01-01
相关资源
最近更新 更多