1、自定义的Activiti用户组管理器,主要重写对用户群组的增删改查等操作。
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查询的用户组的方法。
2、自定义的Activiti用户组会话工厂,返回类型不要变还是GroupManager,主要是覆盖系统默认添加的用户群组工厂。
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; } }
3、自定义的Activiti用户管理器, 主要重写对用户的增删改查等操作。
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查询的用户的方法
4、自定义的Activiti用户会话工厂, ,返回类型不要变还是 UserManager,主要是覆盖系统默认添加的用户工厂。
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; } }
5、activiti.cfg.xml相应的配置:
<?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>
http://www.kafeitu.me/activiti/2012/04/23/synchronize-or-redesign-user-and-role-for-activiti.html
相关推荐
本文将详细介绍该版本中各个表的结构及其功能,帮助开发者更好地理解和使用Activiti。 #### 表前缀解释 - **ACT_RE_**:RE表示Repository资源库,主要用于保存流程定义、模型等设计阶段的数据。 - **ACT_RU_**:RU...
OpenWebFlow剥离了用户信息表的统一管理,客户程序可以忘掉Activiti的用户表、群组表、成员关系表,详见自定义用户成员关系管理;允许运行时定义activity!彻底满足“中国特色”,并提供了安全的(同时也是优雅的)...
理解这些表之间的关系以及它们如何协作来支持流程的自动化处理,对于使用Activiti构建复杂的应用程序至关重要。通过深入学习这些表结构,开发人员可以更好地利用Activiti的强大功能,提高工作效率并简化业务流程管理...
- **插件开发**: 使用插件机制扩展Activiti功能。 - **API调用**: 利用提供的API实现流程自动化处理。 ##### 3.3 监控与优化 - **性能监控**: 实时监控流程执行情况,优化瓶颈。 - **故障排查**: 提供日志记录与...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...