Alfresco Web服务获取站点下的所有用户

时间:2013-06-28 10:49:18

标签: java alfresco

我是alfresco的新手。

使用web services with java,我正在连接到Alfresco。现在我想要小组下的所有用户。

如果有的话请告诉我。

要获取子文件夹,我使用Lucena query这样:

String luceneQuery = "PATH:\"/app:company_home/st:sites/cm:lntlegal/cm:" + strRootFolder + "/*\" AND TYPE:\"cm:folder\"";

2 个答案:

答案 0 :(得分:1)

Alfresco Share的每个网站都链接到一个用户组。该组包含用户列表及其角色。

主要组名为GROUP_site_ + siteUrl。它包含4个子组,每个角色一个:SiteManager,SiteCollaborator,SiteContributor和SiteConsumer。

他们的类型是“cm:authorityContainer”。

如果您的网站的网址名称为“lntlegal”,则其网址将为:

GROUP_site_lntlegal
|- GROUP_site_lntlegal_SiteManager
|- GROUP_site_lntlegal_SiteCollaborator
|- GROUP_site_lntlegal_SiteContributor
|- GROUP_site_lntlegal_SiteConsumer

您可以使用以下Lucene查询检索组:

@cm\:authorityName:"GROUP_site_lntlegal_SiteConsumer"

用户是协会“cm:member”的子女。

以下是使用Web Service API执行此操作的示例代码:

final String site = "lntlegal";

for(final String role : Arrays.asList("SiteManager", "SiteCollaborator", "SiteContributor", "SiteConsumer")) {
    String luceneQuery = "@cm\\:authorityName:\"GROUP_site_" + site + '_' + role + "\"";
    Query query = new Query(Constants.QUERY_LANG_LUCENE, luceneQuery);

    QueryResult queryResult = repositoryService.query(store, query, true);
    ResultSet resultSet = queryResult.getResultSet();
    ResultSetRow[] rows = resultSet.getRows();

    ResultSetRowNode node = rows[0].getNode();
    Reference reference = new Reference(store, node.getId(), null);

    QueryResult associationQueryResult = repositoryService.queryChildren(reference); 
    ResultSet associationResultSet = associationQueryResult.getResultSet();
    ResultSetRow[] associationRows = associationResultSet.getRows();

    if(associationRows != null) {
        final String userNameQName = createQNameString(NAMESPACE_CONTENT_MODEL, "userName");
        for(final ResultSetRow row : associationRows) {
            String name = null;
            for(NamedValue value:row.getColumns()) {
                if(value.getName().equals(userNameQName)) {
                    name = value.getValue();
                }
            }

            System.out.println(row.getNode().getId() + " : " + name);
        }
    }
}

答案 1 :(得分:0)

SiteService.listMembers

将完成这项工作......但不能100%确定SiteService是否可用作SOAP WebService

如果您想获得某个小组的成员,请查看 AuthorityService.getContainedAuthorities