activiti 自定义用户、组
2016-05-14 16:25
288 查看
记录我使用的自定义方式:重构activiti自身用户、组
1.在activiti的配置,创建processEngineConfiguration的bean对象时,调用我们自身重构后的用户、组管理
<!-- 自定义用户、用户组的配置 -->
<property name="customSessionFactories">
<list>
<bean class="cn.cst.oss.common.activiti.CustomUserEntityManagerFactory" >
<property name="customUserEntityManager" ref="customUserManager"/>
</bean>
<bean class="cn.cst.oss.common.activiti.CustomGroupEntityManagerFactory" >
<property name="customGroupEntityManager" ref="customGroupManager"/>
</bean>
</list>
</property>
既然是重构,必然要继承原身方法
public class CustomGroupEntityManagerFactory implements SessionFactory {
1.在activiti的配置,创建processEngineConfiguration的bean对象时,调用我们自身重构后的用户、组管理
<!-- 自定义用户、用户组的配置 -->
<property name="customSessionFactories">
<list>
<bean class="cn.cst.oss.common.activiti.CustomUserEntityManagerFactory" >
<property name="customUserEntityManager" ref="customUserManager"/>
</bean>
<bean class="cn.cst.oss.common.activiti.CustomGroupEntityManagerFactory" >
<property name="customGroupEntityManager" ref="customGroupManager"/>
</bean>
</list>
</property>
既然是重构,必然要继承原身方法
public class CustomGroupEntityManagerFactory implements SessionFactory {
<span style="white-space:pre"> </span>//这个方法也是重构后的方法,作用就是获取自身系统的权限组管理 private CustomGroupEntityManager customGroupEntityManager; @Autowired public void setCustomGroupEntityManager(CustomGroupEntityManager customGroupEntityManager){ this.customGroupEntityManager = customGroupEntityManager; } public Class<?> getSessionType() { // 返回原始的GroupEntityManager类型 return GroupEntityManager.class; } public Session openSession() { // 返回自定义的GroupEntityManager实例 return customGroupEntityManager; } }自定义权限
@Service public class CustomGroupEntityManager extends GroupEntityManager {
<span style="white-space:pre"> </span>//自身的权限管理服务 @Autowired private IAuthService authService; <span style="white-space:pre"> </span>//通过ID获取权限 public GroupEntity findGroupById(final String id) { if (id == null) return null; try { GroupEntity groupEntity = null; List<SysRole> sysRoles = (List<SysRole>)authService.getRoleByUser(id,null).getData(); groupEntity = ActivitiUserUtil.toActivitiGroup(sysRoles.get(0)); return groupEntity; } catch (EmptyResultDataAccessException e) { return null; } } //通过ID获取权限组 @Override public List<Group> findGroupsByUser(final String id) { if (id == null) return null; try { List<Group> groups = null; List<SysRole> sysRoles = (List<SysRole>)authService.getRoleByUser(id,null).getData(); groups = ActivitiUserUtil.toActivitiGroups(sysRoles); return groups; } catch (EmptyResultDataAccessException e) { return null; } } }原理就是,重构activiti的用户权限管理,获取到自身的权限后,然后返回给activiti
public class ActivitiUserUtil { public static UserEntity toActivitiUser(User bUser){ UserEntity userEntity = new UserEntity(); userEntity.setId(bUser.getName()); userEntity.setFirstName(bUser.getUsername()); userEntity.setLastName(bUser.getName()); userEntity.setPassword(bUser.getPassword()); userEntity.setEmail(bUser.getEmail()); userEntity.setRevision(1); return userEntity; } public static GroupEntity toActivitiGroup(SysRole sysRole){ GroupEntity groupEntity = new GroupEntity(); groupEntity.setRevision(1); groupEntity.setType("assignment"); groupEntity.setId(sysRole.getId()); groupEntity.setName(sysRole.getName()); return groupEntity; } public static List<Group> toActivitiGroups(List<SysRole> sysRoles){ List<Group> groups = new ArrayList<Group>(); for (SysRole sysRole : sysRoles) { GroupEntity groupEntity = toActivitiGroup(sysRole); groups.add(groupEntity); } return groups; } }
相关文章推荐
- ios开发学习笔记--Core Motion
- GDOI2016 Day1 T2 最长公共子串
- 网络请求——XML解析
- 常见排序算法(二)
- Java并发编程:阻塞队列
- Open-E DSS V7 应用系列之二 系统安装
- Open-E DSS V7 应用系列之二 系统安装
- PHP 升级到5.5后MySQL的代替法
- ROS_DHCP添加路由
- App Links
- Activity和Fragment的生命周期
- Condition线程通信
- 关于scrollview 镶嵌linearlayout布局的控件位于底部的问题 关于scrollview镶嵌RelativeLayout布局失效
- Synchronized关键字
- B
- 2016-5-14总结
- centos下hadoop2.6.0集群搭建详细过程
- 内存对齐与自定义类型
- VS2010 Windows应用程序打包
- Tyvj 1336 火车进站