如何将用户和角色添加到使用AEM 6.2 Project API创建的项目中?

时间:2016-10-10 13:20:00

标签: aem

我正在尝试使用新的Project API [https://docs.adobe.com/docs/en/aem/6-2/develop/ref/javadoc/com/adobe/cq/projects/api/Project.html]

在AEM 6.2中创建项目

我能够创建项目并使用我为该项目开发的模板。

我正在创建项目:

 project = projectManager.createProject("/contents/projects",
                                        "Project1", 
                                        "Project Name", 
                                        "Creating a Test Project",
                                        "/apps/myproj/projects/templates/default");

当我尝试使用以下方法向项目添加用户和角色时:

 List<String> usersIds = ...
 List<String> rolesIds = ...
 project.updateMembers(userIds, roleIds);

我看到的例外情况如下: 引起:com.adobe.cq.projects.impl.team.TeamException:角色role_editor不适用于管理员。

我尝试将列表'usersIds'中的值映射到'rolesIds',例如.. (userId)ksurendra - &gt; (roleId)role_editor (这是另一个问题,也许API开发人员应该将其设为Map而不是使用两个单独的列表)

感谢对此的任何想法。

1 个答案:

答案 0 :(得分:0)

经过一些研究和测试,我找到了解决方案。

解决方案是在为项目分配任何用户之前,将所有者添加到项目中。

所以当你打电话

project.updateMembers(userIds, roleIds);

确保userIds和roleIds列表的第一个值属于所有者,然后其他用户将关注。

例如:

 List<String> userIds = new ArrayList<String>{};
 userIds.add("suren");
 userIds.add("vassu");

 List<String> roleIds = new ArrayList<String>{};
 userIds.add("owner");
 userIds.add("designer");

解决方案的一些背景知识。

  1. 当我们使用API​​创建项目时,我们需要使用模板。每个模板都有一组预定义的角色。这些角色将被分配到项目中(见下文)。
  2. enter image description here

    1. 当我们将User添加到上面的Project时,我们需要定义用户将在Project上拥有的“Role”。这是关键。

    2. 每个项目都有一个团队,项目需要所有者才能分配任何其他用户

    3. 参考文献:

      1. “默认”模板的位置是/ libs / cq / core / content / projects / templates / default

      2. Project API here

      3. AEM 6.2 Projects