之前做一个基于JBPM4.4的工作流系统,当中涉及到工作流中的人员与原有系统组织人员的整合的工作,通过实现IdentitySession接口来完成调用现有系统的人员和组代码如下
最近新的系统中考虑用Jbpm的升级版本Activiti,因为activiti的底层不再依赖hibernate,可以更加灵活的使用,并且也完美支持BPMN2.0协议。在新系统开发中也遇到了与系统的组织人员集成的问题,抛弃系统自带的Act_ID_XXX,使用系统自己的组织人员权限控制组件。
因为 Activiti是在jbpm4.X的基础上发展而来的,而Jbpm4.4是支持这种扩展的,所以想Tom baeyens没有那么傻吧。于是搜索 Activiti IdentitySession。发现竟然在5.8版本里已经被舍弃了!!!后来又在网上找,看了几种方法大致有 在自己的业务系统人员组织的CRUD代码中同步执行到ACT-ID-*表中,还有就是自己实现IdentityService接口。
从http://nanquan.iteye.com/blog/1544146
文章中我们可以学到一些调用其他认证方法的解决思路 参考这篇文章我们可以修改下完成与实现自有系统用户体系的用户与审批组
1,MyUserManager/MyGroupManager extends UserManager/GroupManager
2,MyUserManagerFactory/MyGroupManagerFactory implements SessionFactory
import com.tds.activit.impl.MyUserManager;
public class MyUserManagerFactory implements SessionFactory {
@Override
public Class<?> getSessionType() {
return UserManager.class;
}
@Override
public Session openSession() {
return new MyUserManager();
}
}
import com.tds.activit.impl.MyGroupManager;
public class MyGroupManagerFactory implements SessionFactory{
@Override
public Class<?> getSessionType() {
return GroupManager.class;
}
@Override
public Session openSession() {
return new MyGroupManager();
}
}
3,注入processEngineConfiguration
<property name="customSessionFactories">
<list>
<bean class="org.activiti.examples.my.factorys.MyUserManagerFactory" />
<bean class="org.activiti.examples.my.factorys.MyGroupManagerFactory" />
</list>
</property>
public class UserSession implements IdentitySession
{
private UserService userService = (UserService) SpringContextHolder.getBean("userService");
private OrgnationService orgnationService = (OrgnationService) SpringContextHolder.getBean("orgnationService");
private ApproverGroupService approverGroupService = (ApproverGroupService) SpringContextHolder.getBean("approverGroupService");
// ---------------------------------methods above are not need overwrite--------------------------------------------
@Override
public Group findGroupById(String groupId)
{
return approverGroupService.get(new Long(groupId));
}
@Override
public List<Group> findGroupsByUser(String userId)
{
// cn.com.todaysoft.oa.domain.org.User user = userService.get(new Long(userId));
cn.com.todaysoft.oa.domain.org.User user = orgnationService.getUser(new Long(userId));
List<Group> list = new ArrayList<Group>();
Iterator it = user.getApproverGroups().iterator();
while (it.hasNext())
{
list.add((Group) it.next());
}
return list;
}
@Override
public List<Group> findGroupsByUserAndGroupType(String userId, String groupType)
{
return findGroupsByUser(userId);
}
@Override
public User findUserById(String userId)
{
return userService.get(new Long(userId));
}
@Override
public List<User> findUsers()
{
List<cn.com.todaysoft.oa.domain.org.User> userList = userService.getAll();
List<User> list = new ArrayList<User>();
for (User user : userList)
{
list.add((User) user);
}
return list;
}
@Override
public List<User> findUsersByGroup(String groupId)
{
List<cn.com.todaysoft.oa.domain.org.User> userList = userService.findByGroupId(new Long(groupId));
List<User> list = new ArrayList<User>();
for (User user : userList)
{
list.add((User) user);
}
return list;
}
@Override
public List<User> findUsersById(String... userIds)
{
// TODO Auto-generated method stub
return null;
}
}
分享到:
相关推荐
Activiti 可以轻松地与Spring、Hibernate等流行框架集成,以及与企业资源规划(ERP)、客户关系管理(CRM)等系统集成,实现端到端的业务流程自动化。 9. 安全性: Activiti 提供了一套权限控制机制,可以设置...
此外,还支持与 LDAP 或其他身份验证系统集成,实现统一的权限管理。 9. **持久化**:Activiti 使用关系数据库存储流程实例和历史数据,确保了数据的可靠性和可恢复性。它默认使用 H2 数据库,但也支持 MySQL、...
7. **用户和组管理**:讲解了Activiti的身份管理机制,包括用户、组的创建和管理,以及与外部身份提供者(如LDAP)的集成。 8. **监控和审计**:涵盖了Activiti提供的报表和监控工具,帮助用户分析流程执行情况,...
- **安全性插件**:增强 Activiti 的身份验证和授权功能,如与 LDAP 或其他安全框架集成。 - **审计插件**:记录流程操作的历史,便于审计和回溯。 - **表单插件**:提供自定义表单设计,提升用户体验。 - **...
9. **用户及组管理(User and Group Management)**:Activiti 集成了身份验证和授权功能,可以与LDAP或Active Directory等系统配合,管理用户和角色。5.21.0可能引入了新的安全特性或提升了权限控制的灵活性。 10....
Activiti工作流是一款开源的工作流程管理系统,用于设计、部署和执行业务流程。它基于Java平台,采用模型驱动的架构,提供了强大的流程定义和执行能力。在"activiti工作流需要的包(5.22.0版本)"中,包含了运行...
5. **API 和集成**:Activiti 设计为可嵌入式的,提供丰富的 REST API 和 Java API,使得开发者能轻松地将其集成到现有的应用程序中。此外,它还支持与其他服务,如数据库、消息队列和Web服务的集成。 6. **安全与...
9. **定制和扩展**:根据需求,你还可以对Activiti Explorer进行定制,比如更改主题、添加自定义模块,或者通过API与外部系统集成。 通过以上步骤,你可以在Tomcat服务器上成功运行Activiti Explorer,开始管理和...
- Activiti可以与企业的人力资源管理系统(HRM)或其他用户目录服务(如LDAP或AD)集成,以获取实时的用户和角色组信息,实现更精确的权限管理和任务分配。 7. **案例分析**: - 比如在请假申请流程中,"审批人...
目录 1. 简介 2. 开始学习 3. 配置 4. Activiti API 5. Spring集成 6. 部署 7. BPMN 2.0介绍 8. BPMN 2.0结构 9. 表单 ...17. 集成LDAP 18. 高级功能 19. 使用Activiti-Crystalball进行流程仿真(实验)
它可以集成到现有的身份管理服务,如 LDAP 或 Active Directory。 9. **服务任务与外部调用** 服务任务允许在流程中集成外部服务,如调用Web服务、执行Java类或脚本。这实现了流程与业务系统的无缝集成。 10. **...
5. **任务分配和协作**:Activiti 支持用户角色定义和任务分配,可以与企业目录服务(如LDAP)集成,提供用户认证和授权。同时,它提供了任务工作台,使得用户能查看、接受和完成任务,并进行有效的团队协作。 6. *...
与Activiti,Drools,LDAP,MySQL,带有SwaggerUI的Restful API,AngularJS + Ionic等的Spring-boot集成。 什么? 使用SpringBoot框架来设置RESTful API包装Activiti API。 并使用Swagger-UI可视化RESTful API,...
7. **用户及用户组管理**:在实际应用中,用户和用户组通常由身份认证系统(如 LDAP、AD)提供,Activiti 需要与这些系统集成,以便获取和操作用户信息。 8. **流程实例的启动者**:流程实例启动时,可以设置启动者...
人事管理系统,作为现代企业管理的重要工具,它集成了员工信息管理、考勤管理、薪酬福利、绩效考核、培训发展等多个功能模块,极大地提升了人力资源部门的工作效率,同时也为企业决策提供了数据支持。本文将深入解析...
- **API和服务**:Liferay提供丰富的RESTful API和Service API,便于与其他系统集成。 4. **安全、认证** - **安全机制**:Liferay具有内置的安全措施,包括数据加密、XSS防护和CSRF保护。 - **身份认证**:支持...
8. **集成与APIs**:Liferay提供了一整套RESTful APIs和SOAP Web服务,用于与其他系统集成。学习如何利用这些接口可以扩展Liferay的功能并与其他应用程序通信。 9. **部署与运维**:理解Liferay的部署结构,如War...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...