`
usenrong
  • 浏览: 506299 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Activit与LDAP的集成到与现有业务系统组织人员集成

阅读更多

     之前做一个基于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 

Activit与LDAP的集成

文章中我们可以学到一些调用其他认证方法的解决思路 参考这篇文章我们可以修改下完成与实现自有系统用户体系的用户与审批组

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;
	}

}

 

分享到:
评论

相关推荐

    Activiti5.16中文API

    目录 1. 简介 2. 开始学习 3. 配置 4. Activiti API 5. Spring集成 6. 部署 7. BPMN 2.0介绍 8. BPMN 2.0结构 9. 表单 ...17. 集成LDAP 18. 高级功能 19. 使用Activiti-Crystalball进行流程仿真(实验)

    spring-boot-activiti-restful:与Activiti,Drools,LDAP,MySQL,ActiveMQ,Jasper Report,带有SwaggerUI的Restful API,AngularJS + Ionic等的Spring-boot集成

    与Activiti,Drools,LDAP,MySQL,带有SwaggerUI的Restful API,AngularJS + Ionic等的Spring-boot集成。 什么? 使用SpringBoot框架来设置RESTful API包装Activiti API。 并使用Swagger-UI可视化RESTful API,...

    Activiti 5.14 中文用户手册

    1. 简介 2. 开始学习 3. 配置 4. Activiti API 5. Spring集成 6. 部署 7. BPMN 2.0介绍 8. BPMN 2.0结构 9. 表单 10. JPA ...12. Eclipse Designer 13. Activiti Explorer ...17. 集成LDAP 18. 高级功能

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包1

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包11

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包2

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包3

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包6

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包5

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包10

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包4

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包8

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包7

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    java开源包9

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包101

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

    Java资源包01

    1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...

Global site tag (gtag.js) - Google Analytics