我对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'。
有没有人知道我做错了什么?
非常感谢任何帮助。
范数。
答案 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()返回的属性相同?