扩展activiti使用自己的用户表和群组表

来源:互联网 发布:易语言30000源码百度云 编辑:程序博客网 时间:2024/06/15 10:35

自定义的Activiti用户组管理器,主要重写对用户群组的增删改查等操作。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
importjava.util.ArrayList;
importjava.util.List;
 
importjavax.persistence.EntityManager;
importjavax.persistence.PersistenceException;
importjavax.persistence.Query;
 
importorg.activiti.engine.identity.Group;
importorg.activiti.engine.identity.GroupQuery;
importorg.activiti.engine.impl.GroupQueryImpl;
importorg.activiti.engine.impl.Page;
importorg.activiti.engine.impl.persistence.entity.GroupEntity;
importorg.activiti.engine.impl.persistence.entity.GroupManager;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
importorg.springframework.beans.factory.annotation.Autowired;
 
/**
 * 自定义的Activiti用户组管理器
 *
 */
publicclass CustomGroupManager extendsGroupManager {
    privatestatic final Log logger = LogFactory
            .getLog(CustomGroupManager.class);
 
    @Override
    publicGroupQuery createNewGroupQuery() {
        // TODO Auto-generated method stub
        returnsuper.createNewGroupQuery();
    }
 
    @Override
    publicList<Group> findGroupByQueryCriteria(GroupQueryImpl query, Page page) {
        // TODO Auto-generated method stub
        returnsuper.findGroupByQueryCriteria(query, page);
    }
 
    @Override
    publiclong findGroupCountByQueryCriteria(GroupQueryImpl query) {
        // TODO Auto-generated method stub
        returnsuper.findGroupCountByQueryCriteria(query);
    }
 
    @Override
    publicGroupEntity findGroupById(String groupId) {
        // TODO Auto-generated method stub
        returnsuper.findGroupById(groupId);
    }
 
    @Override
    publicList<Group> findGroupsByUser(String userId) {
        // TODO Auto-generated method stub
        returnsuper.findGroupsByUser(userId);
    }
 
    @Override
    publicList<Group> findPotentialStarterUsers(String proceDefId) {
        returnsuper.findPotentialStarterUsers(proceDefId);
    }
 
 
     
}

注意:如果想使用自己定义的用户组表,请重新这个findGroupById(final String groupCode)和findGroupsByUser(final String userCode),这两个方法是activiti查询的用户组的方法。

2、自定义的Activiti用户组会话工厂,返回类型不要变还是GroupManager,主要是覆盖系统默认添加的用户群组工厂。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
importorg.activiti.engine.impl.interceptor.Session;
importorg.activiti.engine.impl.interceptor.SessionFactory;
importorg.activiti.engine.impl.persistence.entity.GroupManager;
importorg.springframework.beans.factory.annotation.Autowired;
 
/**
 * 自定义的Activiti用户组会话工厂
 */
publicclass CustomGroupManagerFactory implementsSessionFactory {
    privateGroupManager groupManager;
 
    @Autowired
    publicvoid setGroupManager(GroupManager groupManager) {
        this.groupManager = groupManager;
    }
 
    publicClass<?> getSessionType() {
        // 返回原始的GroupManager类型
        returnGroupManager.class;
    }
 
    publicSession openSession() {
        // 返回自定义的GroupManager实例
        returngroupManager;
    }
}
3、自定义的Activiti用户管理器, 主要重写对用户的增删改查等操作。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
importjava.util.List;
 
importorg.activiti.engine.identity.Group;
importorg.activiti.engine.identity.User;
importorg.activiti.engine.impl.Page;
importorg.activiti.engine.impl.UserQueryImpl;
importorg.activiti.engine.impl.persistence.entity.IdentityInfoEntity;
importorg.activiti.engine.impl.persistence.entity.UserEntity;
importorg.activiti.engine.impl.persistence.entity.UserManager;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
 
/**
 * 自定义的Activiti用户管理器
 */
publicclass CustomUserManager extendsUserManager {
    privatestatic final Log logger = LogFactory
            .getLog(CustomUserManager.class);
 
    @Override
    publicUserEntity findUserById(String userId) {
        returnsuper.findUserById(userId);
    }
 
    @Override
    publicList<User> findUserByQueryCriteria(UserQueryImpl query, Page page) {
        // TODO Auto-generated method stub
        returnsuper.findUserByQueryCriteria(query, page);
    }
 
    @Override
    publiclong findUserCountByQueryCriteria(UserQueryImpl query) {
        // TODO Auto-generated method stub
        returnsuper.findUserCountByQueryCriteria(query);
    }
 
    @Override
    publicList<Group> findGroupsByUser(String userId) {
        // TODO Auto-generated method stub
        returnsuper.findGroupsByUser(userId);
    }
 
    @Override
    publicIdentityInfoEntity findUserInfoByUserIdAndKey(String userId,
            String key) {
        // TODO Auto-generated method stub
        returnsuper.findUserInfoByUserIdAndKey(userId, key);
    }
 
    @Override
    publicList<String> findUserInfoKeysByUserIdAndType(String userId,
            String type) {
        // TODO Auto-generated method stub
        returnsuper.findUserInfoKeysByUserIdAndType(userId, type);
    }
 
    @Override
    publicBoolean checkPassword(String userId, String password) {
        // TODO Auto-generated method stub
        returnsuper.checkPassword(userId, password);
    }
 
    @Override
    publicList<User> findPotentialStarterUsers(String proceDefId) {
        // TODO Auto-generated method stub
        returnsuper.findPotentialStarterUsers(proceDefId);
    }
     
}

注意:如果想使用自己定义的用户表,请重新这个findUserById(final String userCode)和findGroupsByUser(final String userCode),这两个方法是activiti查询的用户的方法

4、自定义的Activiti用户会话工厂, ,返回类型不要变还是 UserManager,主要是覆盖系统默认添加的用户工厂。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
importorg.activiti.engine.impl.interceptor.Session;
importorg.activiti.engine.impl.interceptor.SessionFactory;
importorg.activiti.engine.impl.persistence.entity.UserManager;
importorg.springframework.beans.factory.annotation.Autowired;
 
/**
 * 自定义的Activiti用户会话工厂
 */
publicclass CustomUserManagerFactory implementsSessionFactory {
    privateUserManager userManager;
 
    @Autowired
    publicvoid setUserManager(UserManager userManager) {
        this.userManager = userManager;
    }
 
    publicClass<?> getSessionType() {
        // 返回原始的UserManager类型
        returnUserManager.class;
    }
 
    publicSession openSession() {
        // 返回自定义的UserManager实例
        returnuserManager;
    }
}
5、activiti.cfg.xml相应的配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="processEngineConfiguration"
        class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
         
        <property name="jobExecutorActivate"value="false"/>
        <property name="history"value="none"/>
        <property name="customSessionFactories"
            <list> 
               <beanclass="com.xxx.activiti.ext.CustomGroupEntityManagerFactory">
                    <property name="groupEntityManager"
                        <beanclass="com.xxx.activiti.ext.CustomGroupEntityManager"/>
                     </property>
                </bean>
                <beanclass="com.xxx.activiti.ext.CustomUserEntityManagerFactory">
                    <property name="userEntityManager"
                        <beanclass="com.xxx.activiti.ext.CustomUserEntityManager"/>
                     </property>
                 </bean>
  
            </list> 
     </property>
    </bean>
</beans>


原文连接http://my.oschina.net/winHerson/blog/118172
0 0