JBPM4.4学习三------定义自己的用户关系

很多时候,JBPM自己提供的用户系统是不够用的,这时候就要求我们自己去扩展自己的用户体系,如使用角色来区分用户的权限。JBPM允许外挂一个用户体系。这时我们需要修改一些配置,如下:

一、修改spring-jbpm4.cfg.xml(该文件在配置Spring文件时引入的)。

1、注释<import resource="jbpm.identity.cfg.xml" />
2、增加如下代码:

<transaction-context>
        <hibernate-session current="true"/>    
        <object  class="jbpm.service.IMyJbpmServiceImpl"/>    
</transaction-context>

说明:此步操作是为了让JBPM操作时,调用自己编写的方法,其中jbpm.service.IMyJbpmServiceImpl为我们自己编写的service代码。

二、 建立IMyJbpmServiceImpl类

该类需要实现org.jbpm.pvm.internal.identity.spi.IdentitySession接口。并重写里面的方法,本人测试时使用的方法为findGroupsByUser,所以只重写了该方法。

        注:在编写的过程中,如果需要使用我们自己定义的接口,则获得接口的方法与通过Spring注入时获得的方法不同,需要使用EnvironmentImpl.getFromCurrent方法获得。
       如:

private IUserRightService userRightService =  EnvironmentImpl.getFromCurrent(IUserRightService.class);

 

三、 重写findGroupsByUser方法:

重写时,需要将你自己的分组对应的类实现org.jbpm.api.identity.Group接口,如:我测试时使用的为Role类,则将此类实现Group接口,在findGroupsByUser方法中直接返回查找出来的Role信息。
也可以不需要实现Group接口,直接将你自己查找出的分组信息封装到JBPM的Group中去。
如:

public List<Group> findGroupsByUser(String arg0) {
        List<TRole> list =  new ArrayList<TRole>();
        try {
            list = userRightService.findRoleByUserId(Integer.parseInt(arg0));
        }catch (Exception e) {
            e.printStackTrace();
        }
        List<Group> gList = new ArrayList<Group>();
        for(final TRole r : list){
            if(r == null){
                continue;
            }
            Group g = new Group() {
               
                @Override
                public String getType() {
                    return null;
                }
               
                @Override
                public String getName() {
                    return r.getName();
                }
               
                @Override
                public String getId() {
                    return r.getId().toString();
                }
            };
            gList.add(g);
        }
        return gList;
    }

如此配置后,调用List<Task> taskList = taskService.findGroupTasks(user.getId().toString());时,系统则会执行上面重写的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值