一、自定義的Activiti用戶組管理器,主要重寫對用戶羣組的增刪改查等操做。java
?web
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
|
import
java.util.ArrayList;
import
java.util.List;
import
javax.persistence.EntityManager;
import
javax.persistence.PersistenceException;
import
javax.persistence.Query;
import
org.activiti.engine.identity.Group;
import
org.activiti.engine.identity.GroupQuery;
import
org.activiti.engine.impl.GroupQueryImpl;
import
org.activiti.engine.impl.Page;
import
org.activiti.engine.impl.persistence.entity.GroupEntity;
import
org.activiti.engine.impl.persistence.entity.GroupManager;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.springframework.beans.factory.annotation.Autowired;
/**
* 自定義的Activiti用戶組管理器
*
*/
public
class
CustomGroupManager
extends
GroupManager {
private
static
final
Log logger = LogFactory
.getLog(CustomGroupManager.
class
);
@Override
public
GroupQuery createNewGroupQuery() {
// TODO Auto-generated method stub
return
super
.createNewGroupQuery();
}
@Override
public
List<Group> findGroupByQueryCriteria(GroupQueryImpl query, Page page) {
// TODO Auto-generated method stub
return
super
.findGroupByQueryCriteria(query, page);
}
@Override
public
long
findGroupCountByQueryCriteria(GroupQueryImpl query) {
// TODO Auto-generated method stub
return
super
.findGroupCountByQueryCriteria(query);
}
@Override
public
GroupEntity findGroupById(String groupId) {
// TODO Auto-generated method stub
return
super
.findGroupById(groupId);
}
@Override
public
List<Group> findGroupsByUser(String userId) {
// TODO Auto-generated method stub
return
super
.findGroupsByUser(userId);
}
@Override
public
List<Group> findPotentialStarterUsers(String proceDefId) {
return
super
.findPotentialStarterUsers(proceDefId);
}
}
|
注意:若是想使用本身定義的用戶組表,請從新這個findGroupById(final String groupCode)和findGroupsByUser(final String userCode),這兩個方法是activiti查詢的用戶組的方法。spring
二、自定義的Activiti用戶組會話工廠,返回類型不要變仍是GroupManager,主要是覆蓋系統默認添加的用戶羣組工廠。apache
?ide
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
|
import
org.activiti.engine.impl.interceptor.Session;
import
org.activiti.engine.impl.interceptor.SessionFactory;
import
org.activiti.engine.impl.persistence.entity.GroupManager;
import
org.springframework.beans.factory.annotation.Autowired;
/**
* 自定義的Activiti用戶組會話工廠
*/
public
class
CustomGroupManagerFactory
implements
SessionFactory {
private
GroupManager groupManager;
@Autowired
public
void
setGroupManager(GroupManager groupManager) {
this
.groupManager = groupManager;
}
public
Class<?> getSessionType() {
// 返回原始的GroupManager類型
return
GroupManager.
class
;
}
public
Session openSession() {
// 返回自定義的GroupManager實例
return
groupManager;
}
}
|
三、自定義的Activiti用戶管理器, 主要重寫對用戶的增刪改查等操做。this
?spa
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
|
import
java.util.List;
import
org.activiti.engine.identity.Group;
import
org.activiti.engine.identity.User;
import
org.activiti.engine.impl.Page;
import
org.activiti.engine.impl.UserQueryImpl;
import
org.activiti.engine.impl.persistence.entity.IdentityInfoEntity;
import
org.activiti.engine.impl.persistence.entity.UserEntity;
import
org.activiti.engine.impl.persistence.entity.UserManager;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
/**
* 自定義的Activiti用戶管理器
*/
public
class
CustomUserManager
extends
UserManager {
private
static
final
Log logger = LogFactory
.getLog(CustomUserManager.
class
);
@Override
public
UserEntity findUserById(String userId) {
return
super
.findUserById(userId);
}
@Override
public
List<User> findUserByQueryCriteria(UserQueryImpl query, Page page) {
// TODO Auto-generated method stub
return
super
.findUserByQueryCriteria(query, page);
}
@Override
public
long
findUserCountByQueryCriteria(UserQueryImpl query) {
// TODO Auto-generated method stub
return
super
.findUserCountByQueryCriteria(query);
}
@Override
public
List<Group> findGroupsByUser(String userId) {
// TODO Auto-generated method stub
return
super
.findGroupsByUser(userId);
}
@Override
public
IdentityInfoEntity findUserInfoByUserIdAndKey(String userId,
String key) {
// TODO Auto-generated method stub
return
super
.findUserInfoByUserIdAndKey(userId, key);
}
@Override
public
List<String> findUserInfoKeysByUserIdAndType(String userId,
String type) {
// TODO Auto-generated method stub
return
super
.findUserInfoKeysByUserIdAndType(userId, type);
}
@Override
public
Boolean checkPassword(String userId, String password) {
// TODO Auto-generated method stub
return
super
.checkPassword(userId, password);
}
@Override
public
List<User> findPotentialStarterUsers(String proceDefId) {
// TODO Auto-generated method stub
return
super
.findPotentialStarterUsers(proceDefId);
}
}
|
注意:若是想使用本身定義的用戶表,請從新這個findUserById(final String userCode)和findGroupsByUser(final String userCode),這兩個方法是activiti查詢的用戶的方法.net
四、自定義的Activiti用戶會話工廠, ,返回類型不要變仍是 UserManager,主要是覆蓋系統默認添加的用戶工廠。code
?orm
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
|
import
org.activiti.engine.impl.interceptor.Session;
import
org.activiti.engine.impl.interceptor.SessionFactory;
import
org.activiti.engine.impl.persistence.entity.UserManager;
import
org.springframework.beans.factory.annotation.Autowired;
/**
* 自定義的Activiti用戶會話工廠
*/
public
class
CustomUserManagerFactory
implements
SessionFactory {
private
UserManager userManager;
@Autowired
public
void
setUserManager(UserManager userManager) {
this
.userManager = userManager;
}
public
Class<?> getSessionType() {
// 返回原始的UserManager類型
return
UserManager.
class
;
}
public
Session openSession() {
// 返回自定義的UserManager實例
return
userManager;
}
}
|
五、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>
<bean
class
=
"com.xxx.activiti.ext.CustomGroupEntityManagerFactory"
>
<property name=
"groupEntityManager"
>
<bean
class
=
"com.xxx.activiti.ext.CustomGroupEntityManager"
/>
</property>
</bean>
<bean
class
=
"com.xxx.activiti.ext.CustomUserEntityManagerFactory"
>
<property name=
"userEntityManager"
>
<bean
class
=
"com.xxx.activiti.ext.CustomUserEntityManager"
/>
</property>
</bean>
</list>
</property>
</bean>
</beans>
|