Activiti 五activiti 自定义流程用户管理 修改怎么解决

Activiti 五 自定义用户管理 修改 - 软件架构设计当前位置:& &&&Activiti 五 自定义用户管理 修改Activiti 五 自定义用户管理 修改&&网友分享于:&&浏览:354次Activiti 5 自定义用户管理 修改
刚接触activiti 5 ,怎么把业务的用户和流程关联起来是个重大的问题,经过探索,得到了实现的方法。
1.spring 配置文件
&!-- Activiti begin --&
&bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"&
&property name="dataSource" ref="dataSource" /&
&property name="transactionManager" ref="transactionManager" /&
&property name="databaseSchemaUpdate" value="true" /&
&property name="jobExecutorActivate" value="false" /&
&property name="history" value="full" /&
&!-- 自动部署 --&
&property name="deploymentResources"&
&value&classpath*:/deployments/*&/value&
&/property&
&!-- 自定义表单字段类型 --&
&property name="customFormTypes"&
&bean class="me.kafeitu.demo.activiti.activiti.form.UsersFormType" /&
&/property&
&property name="customSessionFactories"&
&bean class="com.sanshen.workflow.activiti.CustomUserEntityManagerFactory" /&
&bean class="com.sanshen.workflow.activiti.CustomGroupEntityManagerFactory" /&
&/property&
其中增加了customSessionFactories的配置。
2.用户管理和用户组管理工厂类实现org.activiti.engine.impl.interceptor.SessionFactory接口
public class CustomGroupEntityManagerFactory implements SessionFactory {
private GroupEntityManager groupEntityM
@Autowired
public void setGroupEntityManager(GroupEntityManager groupEntityManager) {
this.groupEntityManager = groupEntityM
public Class&?& getSessionType() {
// 返回原始的GroupEntityManager类型
return GroupEntityManager.
public Session openSession() {
// 返回自定义的GroupEntityManager实例
return groupEntityM
public class CustomUserEntityManagerFactory implements SessionFactory {
private UserEntityManager userEntityM
@Autowired
public void setUserEntityManager(UserEntityManager userEntityManager) {
this.userEntityManager = userEntityM
public Class&?& getSessionType() {
// 返回原始的UserManager类型
return UserEntityManager.
public Session openSession() {
// 返回自定义的UserManager实例
return userEntityM
3.覆盖用户管理和用户组管理的类
package com.sanshen.workflow.
import java.util.L
import org.activiti.engine.identity.G
import org.activiti.engine.identity.U
import org.activiti.engine.impl.P
import org.activiti.engine.impl.UserQueryI
import org.activiti.engine.impl.persistence.entity.IdentityInfoE
import org.activiti.engine.impl.persistence.entity.UserE
import org.activiti.engine.impl.persistence.entity.UserEntityM
import mons.logging.L
import mons.logging.LogF
import org.springframework.beans.factory.annotation.A
import org.springframework.dao.EmptyResultDataAccessE
import org.springframework.stereotype.S
import com.sanshen.js.service.account.AccountM
* 自定义的Activiti用户管理器
* @author dragon
public class CustomUserEntityManager extends UserEntityManager {
private static final Log logger = LogFactory
.getLog(CustomUserEntityManager.class);
@Autowired
private AccountManager accountM
public UserEntity findUserById(final String userCode) {
if (userCode == null)
UserEntity userEntity =
com.sanshen.js.entity.account.User bUser = accountManager.getUser(Long.valueOf(userCode));
userEntity = ActivitiUtils.toActivitiUser(bUser);
return userE
} catch (EmptyResultDataAccessException e) {
public List&Group& findGroupsByUser(final String userCode) {
if (userCode == null)
List&com.sanshen.js.entity.account.Group& bGroups = accountManager.getUser(Long.valueOf(userCode)).getGroupList();
List&Group& gs =
gs = ActivitiUtils.toActivitiGroups(bGroups);
public List&User& findUserByQueryCriteria(UserQueryImpl query, Page page) {
throw new RuntimeException("not implement method.");
public IdentityInfoEntity findUserInfoByUserIdAndKey(String userId,
String key) {
throw new RuntimeException("not implement method.");
public List&String& findUserInfoKeysByUserIdAndType(String userId,
String type) {
throw new RuntimeException("not implement method.");
public long findUserCountByQueryCriteria(UserQueryImpl query) {
throw new RuntimeException("not implement method.");
package com.sanshen.workflow.
import java.util.ArrayL
import java.util.L
import org.activiti.engine.identity.G
import org.activiti.engine.impl.GroupQueryI
import org.activiti.engine.impl.P
import org.activiti.engine.impl.persistence.entity.GroupE
import org.activiti.engine.impl.persistence.entity.GroupEntityM
import mons.logging.L
import mons.logging.LogF
import org.springframework.beans.factory.annotation.A
import org.springframework.dao.EmptyResultDataAccessE
import org.springframework.stereotype.S
public class CustomGroupEntityManager extends GroupEntityManager {
private static final Log logger = LogFactory
.getLog(CustomGroupEntityManager.class);
@Autowired
private AccountManager accountM
public GroupEntity findGroupById(final String groupCode) {
if (groupCode == null)
com.sanshen.js.entity.account.Group bGroup = accountManager.getGroupByGroupId(groupCode);
GroupEntity e = new GroupEntity();
e.setRevision(1);
// activiti有3种预定义的组类型:security-role、assignment、user
// 如果使用Activiti
// Explorer,需要security-role才能看到manage页签,需要assignment才能claim任务
e.setType("assignment");
e.setId(bGroup.getGroupId());
e.setName(bGroup.getName());
} catch (EmptyResultDataAccessException e) {
public List&Group& findGroupsByUser(final String userCode) {
if (userCode == null)
List&com.sanshen.js.entity.account.Group& bGroupList = accountManager.getUser(Long.valueOf(userCode)).getGroupList();
List&Group& gs = new ArrayList&Group&();
for (com.sanshen.js.entity.account.Group bGroup : bGroupList) {
g = new GroupEntity();
g.setRevision(1);
g.setType("assignment");
g.setId(bGroup.getGroupId());
g.setName(bGroup.getName());
gs.add(g);
public List&Group& findGroupByQueryCriteria(GroupQueryImpl query, Page page) {
throw new RuntimeException("not implement method.");
public long findGroupCountByQueryCriteria(GroupQueryImpl query) {
throw new RuntimeException("not implement method.");
其中CustomUserEntityManager和CustomGroupEntityManager有些方法没有实现,所有在使用中要防止调用到那些方法,不然会报错。
提供一个拷贝工具类
public class ActivitiUtils {
public static UserEntity
toActivitiUser(User bUser){
UserEntity userEntity = new UserEntity();
userEntity.setId(bUser.getId().toString());
userEntity.setFirstName(bUser.getName());
userEntity.setLastName(bUser.getLoginName());
userEntity.setPassword(bUser.getPassword());
userEntity.setEmail(bUser.getEmail());
userEntity.setRevision(1);
return userE
public static GroupEntity
toActivitiGroup(Group bGroup){
GroupEntity groupEntity = new GroupEntity();
groupEntity.setRevision(1);
groupEntity.setType("assignment");
groupEntity.setId(bGroup.getGroupId());
groupEntity.setName(bGroup.getName());
return groupE
public static List&org.activiti.engine.identity.Group& toActivitiGroups(List&Group& bGroups){
List&org.activiti.engine.identity.Group& groupEntitys = new ArrayList&org.activiti.engine.identity.Group&();
for (Group bGroup : bGroups) {
GroupEntity groupEntity = toActivitiGroup(bGroup);
groupEntitys.add(groupEntity);
return groupE
这样,自身的用户就可以充当activiti的用户了
修改后,activiti的相关ACT_ID_XXX表就可以删除了。
http://rongjih./blog/static//
http://forums.activiti.org/en/viewtopic.php?f=6&t=2439&hilit=UserManager
http://www.kafeitu.me/activiti//synchronize-or-redesign-user-and-role-for-activiti.html
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&基于Activiti5的自定义工作流系统的研究与实现--《电子科技大学》2015年硕士论文
基于Activiti5的自定义工作流系统的研究与实现
【摘要】:在企事业的信息化投入力量越来越大的今天,对各种OA系统、ERP系统等的业务能力、运行效率、开发效率等等提出了更高的需求。在技术上,随着Java成为世界上应用最广泛的编程语言,在Java领域出现了众多优秀的框架以及组件,这些组件正在慢慢提高编程的效率,拥有更强大的业务处理能力,越来越多企业级应用,使用Java相关技术进行开发。在工作流领域,涌现出多个使用Java语言编写的框架,如OpenWHE、jBPM、Activiti、Shark,甚至在国内市面上出现了不少国产的工作流引擎。这些框架,为构建一个良好的、健壮的、高效率的系统,提供了非常强大的支持与保障。同时也出现了例如框架底层不稳定、运行效率低、缺乏灵活性、难以调整等等一些列有待进一步解决与完善的问题。本文运用当今流行的Java Web开源框架与SSH框架(Struts、Hibernate、Spring),对实际系统实施开发,搭建出一个基于Web的办公自动化系统,使之满足某市编制管理办公室的日常办公需求。在此基础上,采用较为流行的Java工作流框架,基于最新的Activiti5工作流开发框架,实现一套基于Web的自定义工作流政府编制管理系统,使之拥有回退、自定义模板、自由流等功能,其中涉及Activiti5框架源码的分析,SSH、Activiti5、Mybatis等框架的整合,Activiti5工作流框架的功能改进等。最终完成的系统中,工作流功能更为完善与灵活,能更好地为整个管理系统服务。
【关键词】:
【学位授予单位】:电子科技大学【学位级别】:硕士【学位授予年份】:2015【分类号】:TP311.52【目录】:
摘要5-6Abstract6-9第一章 绪论9-14 1.1 研究背景和意义9-10 1.2 工作流引擎发展现状10-11 1.3 论文的研究内容11-12 1.4 章节安排12-14第二章 相关技术及理论14-21 2.1 系统基本构建框架14-15 2.2 Activiti5工作流框架15-20
2.2.1 Activiti5简介15-17
2.2.2 Activiti5的特点与架构17-20 2.3 本章小结20-21第三章 系统需求分析21-33 3.1 系统开发背景21-22 3.2 系统需求分析22-29
3.2.1 树形目录模块需求分析22-23
3.2.2 机构编制23-26
3.2.3 人员信息26-27
3.2.4 业务办理27-29 3.3 系统的功能29-32 3.4 本章小结32-33第四章 系统设计与实现33-79 4.1 系统基础模块设计34-41
4.1.1 机构编制模块设计35-37
4.1.2 人员信息模块设计37-39
4.1.3 用户管理与角色管理设计39-41 4.2 搭建基础框架41-50
4.2.1 对Spring框架在系统中的实现41-45
4.2.2 对Hibernate框架在系统中的实现45-47
4.2.3 对Struts框架在系统中的实现47
4.2.4 对基础框架的自定义封装47-50 4.3 Activiti5工作流框架的整合与工作流实例设计50-62
4.3.1 对Activiti5框架在系统中的实现50-52
4.3.2 Activiti5重要引擎工具包与其作用范围52-53
4.3.3 Activiti5自定义封装的API53-57
4.3.4 实例:某市编办编制管理系统中编制使用审批流程设计57-62 4.4 自定义工作流功能的设计与案例设计62-78
4.4.1 基于WEB的流程设计器Activiti Modeler的整合62-67
4.4.2 拥有自由跳转功能的工作流系统的实现67-76
4.4.3 实例:运用自定义工作流功能对系统原工作流的设计与改进76-78 4.5 小结78-79第五章 系统运行与测试79-83 5.1 测试环境79 5.2 测试用例79-82 5.3 测试结果82-83第六章 总结及展望83-85 6.1 论文总结83 6.2 项目展望83-85致谢85-86参考文献86-88
欢迎:、、)
支持CAJ、PDF文件格式
【相似文献】
中国期刊全文数据库
曹化工,曹强;[J];计算机工程与应用;2000年04期
窦万春,李东波,张世琪;[J];计算机辅助设计与图形学学报;2000年12期
张德壮,李俊海,耿继秀;[J];计算机应用;2000年05期
刘玉林,吴晓群;[J];长春师范学院学报;2000年02期
孙建滨;[J];上海微型计算机;2000年47期
李波,杨建军,邬学礼;[J];高技术通讯;2002年08期
邹畅,曹化工;[J];计算机工程与科学;2002年03期
陈俊侠,常会友;[J];现代计算机(专业版);2002年08期
周世杰,秦志光,刘锦德;[J];电子科技大学学报;2002年02期
陆新,姜浩;[J];东南大学学报(自然科学版);2002年01期
中国重要会议论文全文数据库
卓蔚;陈思;张侃弘;;[A];上海烟草系统2002年度学术论文选编[C];2002年
李晖;王海洋;王文;;[A];第十七届全国数据库学术会议论文集(技术报告篇)[C];2000年
连杰鑫;刘家茂;顾宁;;[A];第二十届全国数据库学术会议论文集(研究报告篇)[C];2003年
李新;薛永生;;[A];第二十届全国数据库学术会议论文集(技术报告篇)[C];2003年
叶寿生;汪涛;郭永林;;[A];第二十一届中国数据库学术会议论文集(技术报告篇)[C];2004年
冯波;徐建良;;[A];第二十一届中国数据库学术会议论文集(技术报告篇)[C];2004年
丁华;王秀坤;周永晖;;[A];第二十二届中国数据库学术会议论文集(技术报告篇)[C];2005年
崔立真;王海洋;;[A];第二十一届中国数据库学术会议论文集(技术报告篇)[C];2004年
欧阳青;;[A];第十八届玻璃钢/复合材料学术年会论文集[C];2010年
吕刚;王坚;严隽薇;董志斌;;[A];第二十届中国控制会议论文集(下)[C];2001年
中国重要报纸全文数据库
庄志澄;[N];中国计算机报;2003年
中国石油勘探开发研究院西北分院
柏东明 曾丽花
郭以东;[N];计算机世界;2011年
中国建设银行湖北分行信息技术部李涛、娄国伟、曾钦祥、吴安平、童海涛;[N];计算机世界;2004年
王沛霖;[N];中国计算机报;2004年
李农、张京辉;[N];中国计算机报;2002年
何吟;[N];计算机世界;2004年
优利系统(中国)有限公司
倪佳;[N];网络世界;2001年
邹洪强;[N];计算机世界;2005年
中国软件评测中心
于春玲;[N];中国计算机报;2004年
山西焦煤集团驻深圳办事处
刘鹏;[N];山西科技报;2002年
中国博士学位论文全文数据库
刘怡;[D];华中科技大学;2007年
刘英博;[D];清华大学;2008年
王睿;[D];山东大学;2009年
吴修国;[D];山东大学;2010年
丁柯;[D];中国科学院研究生院(软件研究所);2003年
肖郑进;[D];浙江大学;2006年
柯飞帆;[D];南京航空航天大学;2006年
田珂;[D];电子科技大学;2006年
程杰;[D];山东大学;2011年
高昂;[D];北京科技大学;2010年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号activiti5.13.1下使用自定义用户数据管理模块 - 推酷
activiti5.13.1下使用自定义用户数据管理模块
此方案可以最简单的方式实现工作流中自定义用户数据管理模块,实现思路放弃使用系列表:ACT_ID_,创建同名的视图。
IF EXISTS act_id_
IF EXISTS act_id_
IF EXISTS act_id_
CREATE or replace VIEW act_id_user(ID_,REV_,FIRST_,LAST_,EMAIL_,PWD_,PICTURE_ID_ ,CONSTRAINT id_pk PRIMARY KEY(ID_) RELY DISABLE NOVALIDATE) AS
TO_CHAR(au.login_name) AS ID_,
to_char(au.user_name_cn)
AS FIRST_,
'' AS LAST_,
to_char(au.email)
AS EMAIL_,
to_char(au.PASSWORD)
AS PICTURE_ID_
FROM base_
CREATE VIEW act_id_group
SELECT ar.name AS ID_,
NULL AS REV_,
ar.name AS NAME_,
'assignment' AS TYPE_
CREATE VIEW act_id_membership
SELECT (SELECT u.username FROM s_user u WHERE u.id=ur.user_id) AS USER_ID_,
(SELECT r.name FROM s_role r WHERE r.id=ur.role_id) AS GROUP_ID_
FROM s_user_
注意事项:
1.创建视图必须删除引擎自动创建的ACT_ID_*表,否则不能创建视图。
2.创建的视图要保证数据类型一致,例如用户的ACT_ID_MEMBERSHIP表的两个字段都是字符型,一般系统中都是用NUMBER作为用户、角色的主键类型,所以创建视图的时候要把数字类型转换为字符型。
3.修改引擎配置&property name=&dbIdentityUsed& value=&false&/&
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 activiti自定义用户表 的文章

 

随机推荐