当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

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

发表于: 2012-03-09   作者:awtqty_zhang   来源:转载   浏览次数:
摘要: 很多时候,JBPM自己提供的用户系统是不够用的,这时候就要求我们自己去扩展自己的用户体系,如使用角色来区分用户的权限。JBPM允许外挂一个用户体系。这时我们需要修改一些配置,如下: 一、修改spring-jbpm4.cfg.xml(该文件在配置Spring文件时引入的)。 1、注释<import resource="jbpm.identity.cfg.xml" />

很多时候,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());时,系统则会执行上面重写的方法。

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前面学习的是android的基本控件和布局的使用,可是主要的控件和布局有时候并不能实现复杂的布局。我
假设有如下数据库结构: create table userinfo(id varchar ( 20 ),name varchar ( 20 )); create t
假设有如下数据库结构: create table userinfo(id varchar ( 20 ),name varchar ( 20 )); create t
假设有如下数据库结构: create table userinfo(id varchar ( 20 ),name varchar ( 20 )); create t
假设有如下数据库结构: create table userinfo(id varchar ( 20 ),name varchar ( 20 )); create t
假设有如下数据库结构: create table userinfo(id varchar ( 20 ),name varchar ( 20 )); create t
教为学:JBPM4.4学习之路(三):流程部署的查询、删除、流程图查看 前言 数据库有增删改查。 流程
教为学:JBPM4.4学习之路(三):流程部署的查询、删除、流程图查看 前言 数据库有增删改查。 流程
原帖地址:http://www.cnblogs.com/jiaoweixue/archive/2013/06/01/3112867.html 我坚信初学者更加明
最近由于项目的需要,研究了两个星期的工作流,在java领域,还是属JBOSS 的 JBPM 相对突出,流行。
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号