您的位置:首页 > 编程语言 > Java开发

spring + activiti 实现使用自己的user表和role表来管理流程任务

2017-12-06 17:23 459 查看
企业级activiti应用中,企业都有自己的用户表和权限表之类的,在使用activiti时,一般都不会用到activiti自带的用户表act_id_user和组表act_id_group,其实就是用户和权限差不多,其实实现起来也很简单,重写GroupEntityManager,UserEntityManager中的一下方法就可以了,当然,这些还需要spring扫描注入;下班就直接上代码实现:

(1)创建两个工厂

CustomGroupEntityManagerFactory.java

@Service
public class CustomGroupEntityManagerFactory implements SessionFactory {

private CustomGroupEntityManager customGroupEntityManager;

@Override
public Class<?> getSessionType() {
//注意此处必须为Activiti原生的类,否则自定义类不会生效
return GroupIdentityManager.class;
}

@Override
public Session openSession() {
return customGroupEntityManager;
}

@Autowired
public void setCustomGroupEntityManager(CustomGroupEntityManager customGroupEntityManager) {
this.customGroupEntityManager = customGroupEntityManager;
}


CustomUserEntityManagerFactory.java

@Service
public class CustomUserEntityManagerFactory implements SessionFactory {

private CustomUserEntityManager customUserEntityManager;

@Override
public Class<?> getSessionType() {
//注意此处必须为Activiti原生的类,否则自定义类不会生效
return UserIdentityManager.class;
}

@Override
public Session openSession() {
return  customUserEntityManager;
}

@Autowired
public void setCustomUserEntityManager(CustomUserEntityManager customUserEntityManager) {
this.customUserEntityManager = customUserEntityManager;
}


工厂是用来创建user,和group管理对象的,下面是两个管理对象的代码

CustomUserEntityManager.java

@Component
public class CustomUserEntityManager extends UserEntityManager {

@Resource
private BackendUserMapper backendUserMapper;

@Resource
private BackendRoleMapper backendRoleMapper;

@Override
public List<Group> findGroupsByUser(String userId) {
Long id = Long.valueOf(userId);
if (StringUtils.isBlank(userId)) {
return null;
}
List<BackendRole> backendRoles = backendRoleMapper.queryBackendRoleByUserId(id);
List<Group> groups = new ArrayList<Group>();
GroupEntity groupEntity = null;
for (BackendRole backendRole : backendRoles) {
groupEntity = new GroupEntity();
groupEntity.setRevision(1);
groupEntity.setType("assignment");
groupEntity.setName(backendRole.getEnName());
groups.add(groupEntity);
}

return groups;
}

@Override
public User findUserById(String userId) {
BackendUser backendUser = backendUserMapper.selectByPrimaryKey(Long.valueOf(userId));
UserEntity userEntity = new UserEntity();
userEntity.setId(String.valueOf(backendUser.getId()));
return userEntity;
}


CustomGroupEntityManager.java

@Component
public class CustomGroupEntityManager extends GroupEntityManager {

@Resource
private BackendRoleMapper backendRoleMapper;

@Override
public List<Group> findGroupsByUser(String userId) {
Long id = Long.valueOf(userId);
if (StringUtils.isBlank(userId)) {
return null;
}

List<BackendRole> backendRoles = backendRoleMapper.queryBackendRoleByUserId(id);
List<Group> groups = new ArrayList<Group>();
GroupEntity groupEntity = null;
for (BackendRole backendRole : backendRoles) {
groupEntity = new GroupEntity();
groupEntity.setRevision(1);
groupEntity.setType("assignment");
groupEntity.setName(backendRole.getEnName());
groups.add(groupEntity);
}
return groups;
}


spring启动时注入



这只是一个简单的实现方法,处理不是很好,如果你有更好的方法,
4000
你也可以写博客分享给我一起学习学习,哈哈,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息