Activiti通过组ID获取用户

时间:2019-05-21 17:28:08

标签: alfresco activiti bpmn

我需要向新任务分配的所有组成员发送电子邮件通知。我创建了一个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 吗?

让我知道是否还有其他/更好的方式可以向群组发送通知。

感谢您的时间

2 个答案:

答案 0 :(得分: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");

希望有帮助。

答案 1 :(得分:0)

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

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