Activiti框架(6)——自定义角色配置

Activiti框架常用-自定义角色方案

在工作中会用到Activiti框架的时候,很多时候我们会根据自己已经有的用户角色表,来关联整个框架,这里也有一套比较完美的方案,用视图的方法,具体操作如下。

一、修改XML配置文件

我们需要修改配置文件,使框架不生成原本的用户角色表

        <!-- 是否使用activiti自带用户:用视图替换activiti用户 -->
        <<property name="dbIdentityUsed" value="false"></property>

二、执行sql语句

我们先创建自定义的用户、角色表,然后根据用户角色表的字段,生成与框架表对应的视图,这样就可以实现自定义的关系实现了。

-- 创建表sql
drop table users;
drop table roles;
drop table userrole;
CREATE TABLE act.users(id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,name varchar(30),age varchar(20),password varchar(30));
CREATE TABLE act.roles(id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,roleName varchar(30));
CREATE TABLE act.userrole(userId int(11),roleId int(11));

-- 插入数据
INSERT INTO act.users (id, name, age, password) VALUES (1, '张三', '25', 'admin');
INSERT INTO act.users (id, name, age, password) VALUES (2, '李四', '25', 'admin');
INSERT INTO act.users (id, name, age, password) VALUES (3, '王五', '25', 'admin');
INSERT INTO act.users (id, name, age, password) VALUES (4, '赵六', '25', 'admin');
INSERT INTO act.users (id, name, age, password) VALUES (5, '田七', '25', 'admin');
INSERT INTO act.users (id, name, age, password) VALUES (6, '胡八', '25', 'admin');
INSERT INTO act.users (id, name, age, password) VALUES (7, '管理员', '25', 'admin');

INSERT INTO act.roles (id, roleName) VALUES (1, '部门主管');
INSERT INTO act.roles (id, roleName) VALUES (2, '部门经理');
INSERT INTO act.roles (id, roleName) VALUES (3, 'CTO');
INSERT INTO act.roles (id, roleName) VALUES (4, '管理员');

INSERT INTO act.userrole (userId, roleId) VALUES (1, 1);
INSERT INTO act.userrole (userId, roleId) VALUES (2, 1);
INSERT INTO act.userrole (userId, roleId) VALUES (3, 2);
INSERT INTO act.userrole (userId, roleId) VALUES (4, 2);
INSERT INTO act.userrole (userId, roleId) VALUES (5, 3);
INSERT INTO act.userrole (userId, roleId) VALUES (6, 3);
INSERT INTO act.userrole (userId, roleId) VALUES (7, 4);

-- 创建的视图要保证数据类型一致,例如用户的ACT_ID_MEMBERSHIP表的两个字段都是字符型,一般系统中都是用NUMBER作为用
-- 户、角色的主键类型,所以创建视图的时候要把数字类型转换为字符型。

-- ACT_ID_USER
CREATE OR REPLACE VIEW ACT_ID_USER_hhh
(id_, rev_, first_, last_, email_, pwd_, picture_id_) as
  SELECT u.id,1,u.name,null,null,u.password,null FROM users u;
-- ACT_ID_GROUP
create or replace view act_id_group
(id_, rev_, name_, type_) as select t.roleName , 1 as rev_,t.roleName ,'' as type_ from roles t;
-- ACT_ID_MEMBERSHIP
create or replace view act_id_membership
(user_id_, group_id_) as select u.name,r.roleName from
users u inner join userrole ur
on u.id=ur.userId inner join roles r on ur.roleId=r.id;



-- select * from users u,roles r inner join userrole ur where u.id = ur.userId and r.id=ur.roleId;

猜你喜欢

转载自blog.csdn.net/qq_28249857/article/details/106207525