您的位置:首页 > 其它

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 {
<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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息