如何使用Alfresco Javascript API检索每个用户的组列表

时间:2011-07-06 06:43:31

标签: javascript-framework alfresco

我对Alfresco及其Javascript API完全不熟悉所以请记住这一点......

我希望能够在Alfresco存储库中查看每个用户的组列表。

这是我目前的代码:

  var gens = search.luceneSearch("TYPE:\"{http://www.alfresco.org/model/content/1.0}person\"");
  var logFile = space.childByNamePath("log_user_groups.csv");
  if (logFile == null) {
      logFile = space.createFile("log_user_groups.csv");
   }
   logFile.content = "";



   for (var i=0; i<gens.length;i++) {
     logFile.content += gens[i].properties["cm:userName"]+"\n";

     var groupes= people.getContainerGroups(gens[i]);

     for (var j=0; j<groupes.length;j++) {
       logFile.content += "\t"+groupes[j].properties.shortName +"\t";
       logFile.content += "\t"+groupes[j].properties.fullName +"\t";
       logFile.content += "\t"+groupes[j].properties.displayName +"\n";
     }
  }

使用正确显示的用户名创建文件。但是,组属性“shortName”,“fullName”和“displayName”都是null。事实上,我打印出'groupes'对象的所有属性,对象的每个字段都是'undefined'。

有没有人知道我做错了什么?

非常感谢任何帮助。

范数。

3 个答案:

答案 0 :(得分:0)

我猜你使用了错误的属性名称。

您需要以下内容:

  • 全名:groupes[j].properties["usr:authorityName"]
  • 显示名称:groupes[j].properties["usr:authorityDisplayName"]
  • 简称:我不知道:)也许groupes[j].properties["usr:authorityShortName"]

您也可以获取NodeRef id。

然后登录Alfresco资源管理器。然后转到管理控制台 - &gt;节点浏览器

粘贴id(它应该类似于workspace://spacesStore//biglongUUID)。在那里你可以看到与该组相关的属性。

或者你可以循环groupes[k].properties地图并打印所有属性。

答案 1 :(得分:0)

最简单的方法就是把它转过头来。相反,对于每个组,询问它包含哪些组和用户。最后,颠倒它。

您需要从根组开始。 Alfresco中的groups JS对象将为您提供这些以及其他对象。它由ScriptAuthorityService实施,因此您可能希望查看JavaDocs

首先,获取根组

var rootGroups = groups.getAllRootGroups() ;

对于每个组,使用getAllUsers()获取组中的所有用户(直接和继承),并将其存储在某处。现在,使用getChildGroups()获取所有子组。以相同的方式处理每个,并根据需要进行递归。

答案 2 :(得分:0)

我需要类似的东西(完整的群组列表)所以我这样做了:

var temp = [];

function addGroups (groups)
  {
    for each (group in groups)
      {
        temp.push(group.getDisplayName());
        addGroups(group.getChildGroups());
      }
  }

addGroups(groups.getAllRootGroups());

这很有用。问题是getDisplayName()返回一个非常漂亮的组名。通常在处理文档和显示与用户关联的组名时,我会执行people.getContainerGroups()并使用group.properties [&#34; cm:authorityName&#34;]来获取可显示的名称(如上所述),但是我从getAllRootGroups()收到的组没有属性(group.properties未定义)。

有没有人知道为什么以这种方式返回的组列表不会与people.getContainerGroups()返回的属性相同?