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

企业级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启动时注入
这里写图片描述

这只是一个简单的实现方法,处理不是很好,如果你有更好的方法,你也可以写博客分享给我一起学习学习,哈哈,

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
首先,Activity是Android系统中的四大组件之一,可以用于显示View。Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了。 在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE 中MVC设计模式已经很经典了,而且分的也比较清晰了,但是在Android中,好多人对MVC在Android开发中的应用不是很清楚,下面我就先来介绍一下MVC在Android开发中的应用: M(Model 模型):Model是应用程序的主体部分,所有的业务逻辑都应该写在这里,在Android中Model层与JavaEE中的变化不大,如:对数据库的操作,对网络等的操作都放在该层(但不是说它们都放在同一个包中,可以分开放,但它们统称为Model层)。 V(View 视图):是应用程序中负责生成用户界面的部分,也是在整个MVC架构中用户唯一可以看到的一层,接收用户输入,显示处理结果;在Android应用中一般采用XML文件里德界面的描述,使用的时候可以非常方便的引入,当然也可以使用JavaScript+Html等方式作为View。 C(Controller控制层)android的控制层的重任就要落在众多的activity的肩上了,所以在这里就要建议大家不要在activity中写太多的代码,尽量能过activity交割Model业务逻辑层处理。 好了,在介绍过Android应用开发中的MVC架构后,我们就可以很明确的知道,在Android中Activity主要是用来做控制的,它可以选择要显示的View,也可以从View中获取数据然后把数据传给Model层进行处理,最后再来显示出处理结果。 介绍过Activity的主要作用后,那么我们就要详细说一下Activity了。 Activity生命周期图 Activity 的生命周期是被以下的函数控制的。 public class Activity extends ApplicationContext { protected void onCreate(Bundle icicle); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onFreeze(Bundle outIcicle); protected void onPause(); protected void onStop(); protected void onDestroy(); } onCreate(Bundle) 函数是你进行初始化的地方,这个也是执行 setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML 编制的UI界面,可以使UI和具体实现完全分离。 onPause()函数是处理用户离开当前 Activity 的地方。更重要的是,任何在当前 Activity中的任何改变都要在这个函数中提交。 Activity有四种状态: 活动状态,当Activity处于Stack(栈)顶时,就是手机当前的现实屏幕,这是 Activity就 处于activity或者运行状态。 运行但是失去焦点,当Activity还处于运行状态时,但是屏幕是有另外一个Activity 处于文档处于焦点状态,当前的Activity就处于pause。 停止,当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在 运行,但是用户却看不见。 结束,当Activity处于pause或者stop时,系统可以结束 Activity,回收资源,这 是Activity就是处于结束状态了。 处于结束状态的是Activity,如果要使用户可见,只要重启才可以。 Activity的响应时间 当前Activity所在的线程为主线程,它的响应时间为5秒,如果在当前运行的Activity中进行耗时的操作且响应时间起过5秒,那么程序就会报ANR错误。所以,这也是不建议在Activity中写太多复杂代码的原因之一。 当然,有些代码只能写在Activity中,不然就运行不了(它们不是生命周期方法),比如你想要获得android系统或者硬件一的些信息,就必须在Activity中写出来,如果单独写一个工具类获得不了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值