我需要向新任务分配的所有组成员发送电子邮件通知。我创建了一个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 吗?
让我知道是否还有其他/更好的方式可以向群组发送通知。
感谢您的时间
答案 0 :(得分:1)
我使用这种方式获取用户列表:
Set<String> users_list = authorityService.getContainedAuthorities(AuthorityType.USER, "yourGroupName", false);
返回所有包含的权限的集合-您组中的 USER 。
拥有此类用户列表时,您可以获取每个用户的NodeRef并从NodeRef属性中获取其电子邮件地址,如下所示:
NodeRef user = personService.getPerson("userName");
String email = nodeService.getProperty(user, "email");
希望有帮助。
答案 1 :(得分:0)
对于自定义事件通知(即任务分配),task listener可能会对您有所帮助。
PS:除非您购买了有效的许可证,否则您不能使用com.activiti.classes。