【问题标题】:Activiti get users by group idActiviti 通过组 id 获取用户
【发布时间】:2019-05-21 17:28:07
【问题描述】:

我需要向所有小组成员发送一封关于新任务分配的电子邮件通知。我创建了一个 TaskListener,我试图在其中按组 ID 获取所有用户。但是每次它都返回空的用户列表。

IdentityService is = Context.getProcessEngineConfiguration().getIdentityService();
List<User> users = is.createUserQuery().memberOfGroup("2007").list();
LOGGER.info("The users are: "  +users); // Always prints []

另外,我的 pom.xml

中有以下依赖项
        <dependency>
        <groupId>com.activiti</groupId>
        <artifactId>activiti-app-logic</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>com.activiti</groupId>
        <artifactId>activiti-app-data</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>com.activiti</groupId>
        <artifactId>activiti-dmn-engine</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>com.activiti</groupId>
        <artifactId>activiti-app-model</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.1</version>
    </dependency>

我应该在我的 pom.xml 中使用 org.activiti 而不是 com.activiti

如果有任何其他/更好的方式向群组发送通知,请告诉我。

感谢您的宝贵时间

【问题讨论】:

  • 基于其他一些例子,与Activiti无关,您是否尝试过“GROUP_2007”?
  • 你使用的是独立的 activiti 还是嵌入在 Alfresco 中的 Activiti?
  • @Lista GROUP_2007 不工作...
  • @AbbasKararawala 我正在使用 Alfresco Process Services。

标签: alfresco activiti bpmn


【解决方案1】:

我使用这种方式获取用户列表:

Set<String> users_list = authorityService.getContainedAuthorities(AuthorityType.USER, "yourGroupName", false);

返回所有包含权限的集合 - 您组中的 USER

见方法说明:https://dev.alfresco.com/resource/docs/java/org/alfresco/service/cmr/security/AuthorityService.html#getContainedAuthorities-org.alfresco.service.cmr.security.AuthorityType-java.lang.String-boolean-

当你有这样的用户列表时,你可以获取每个用户的 NodeRef 并从 NodeRef 属性中获取他的电子邮件地址,如下所示:

NodeRef user = personService.getPerson("userName");
String email = nodeService.getProperty(user, "email");

希望对你有帮助。

【讨论】:

    【解决方案2】:

    对于自定义事件通知(即任务分配),task listener 可能会对您有所帮助。

    PS:除非您购买了有效的许可证,否则您不能使用 com.activiti.classes。

    【讨论】:

    • 谢谢,我有有效的 Alfresco Process Services 许可证。我不明白的是com.activiti和org.activiti apis之间的区别......
    • com.activiti.* 类是专有的,需要 Alfresco 许可。 org.activiti.* classes 属于社区,拥有 apache 开源许可证
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2021-04-09
    • 2021-03-06
    相关资源
    最近更新 更多