我正在尝试使用新的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而不是使用两个单独的列表)
感谢对此的任何想法。
答案 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");
解决方案的一些背景知识。
当我们将User添加到上面的Project时,我们需要定义用户将在Project上拥有的“Role”。这是关键。
每个项目都有一个团队,项目需要所有者才能分配任何其他用户。
参考文献:
“默认”模板的位置是/ libs / cq / core / content / projects / templates / default