一、内置用户组(角色)设计表概念

  • 用户和组(或者叫做角色),多对多关联,通过关联表实现
  1. act_id_user 用户表;

  2. act_id_group 用户组表;

  3. act_id_membership 用户与组的关联表,用来实现多对多;

  4. act_id_info 用户信息表;

  1.  act_id_user 用户表;

  • 这里的设计可能和我们想象的不一样,比如_ID,字符串类型 我们直接可以把他当作用户名

    FIRST_ LAST_ 是英文命名习惯  EMAIL_ PWD 邮箱 密码 字段 等等。

  2.  act_id_group 用户组表(或者叫做角色)

 3.  act_id_membership 用户与组的关联表,用来实现多对多

  • 只有两个字段 USER_ID_ 和 GROUP_ID_ 分别关联用户表的主键和组表的主键;

  4.  act_id_info 用户信息表

  • 主要是用来扩展用户信息,以及可以实现组织机构层次关系,比如雇员领导用户设计

  5.  说明

  • 这个是activiti给我们内置的一个用户组设计,
  • 这里说明下:正常的企业级项目都有自己的组织机构用户权限设置表,所以一般不会用到内置的;
  • 但是假如一个很小的系统,例如 学生请假系统 就那么几十个用户,两三中角色,那我们就可以用内置的,用内置的更加方便;

二、IdentityService 基本使用

package com.shyroke.activiti.firstActiviti;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.User;
import org.activiti.engine.impl.persistence.entity.GroupEntity;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import org.junit.Test; public class IdentityTest {
/**
* 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
*/
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); /**
* 添加用户测试
*/
@Test
public void saveUser() {
IdentityService identityService=processEngine.getIdentityService();
User user1=new UserEntity();
user1.setId("张三");
user1.setPassword("123");
User user2=new UserEntity();
user2.setId("李四");
user2.setPassword("456");
identityService.saveUser(user1);
identityService.saveUser(user2);
} /**
* 删除用户
*/
@Test
public void deleteUser() {
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteUser("李四");
} /**
* 测试添加组(角色)
*/
@Test
public void testSaveGroup(){
IdentityService identityService=processEngine.getIdentityService();
Group group=new GroupEntity(); // 实例化组实体
group.setId("管理员");
Group group2=new GroupEntity(); // 实例化组实体
group2.setId("普通用户");
identityService.saveGroup(group);
identityService.saveGroup(group2);
} /**
* 测试删除组(角色)
*/
@Test
public void testDeleteGroup(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteGroup("管理员");
} /**
* 测试添加用户和组(角色)关联关系
*/
@Test
public void testSaveMembership(){
IdentityService identityService=processEngine.getIdentityService();
identityService.createMembership("张三", "普通用户");
} /**
* 测试删除用户和组(角色)关联关系
*/
@Test
public void testDeleteMembership(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteMembership("张三", "普通用户");
} }

Activity服务类-5 IdentityService服务类的更多相关文章

  1. Activity服务类-7 RepositoryService服务类

    Activity服务类-1 RepositoryService服务类一共47个接口1.创建部署//开始创建一个新的部署.DeploymentBuilder createDeployment(); 2. ...

  2. 谢欣伦 - OpenDev原创教程 - 服务端套接字类CxServerSocket

    这是一个精练的服务端套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxServerSocket的使用如下(以某个叫做CSo ...

  3. [改善Java代码]使用package-info类为包服务

    建议50: 使用package-info类为包服务 Java中有一个特殊的类:package-info类,它是专门为本包服务的,为什么说它特殊呢?主要体现在3个方面: (1)它不能随便被创建 在一般的 ...

  4. 服务端套接字类CxServerSocket的使用

    服务端套接字类CxServerSocket的使用 这是一个精练的服务端套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣能),个人习惯而已,如有雷同,纯属巧合. CxS ...

  5. C#中调用Windows系统服务exe程序的工具类与重启服务的流程

    场景 使用C#编写的Windows服务程序,在Winform中进行调用. 常用工具类方法检测服务是否存在或者安装,获取服务状态,启动服务,停止服务的方法. 以在Winform中重启服务为例. 注: 博 ...

  6. Activity、Fragment、Dialog基类简单整理

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 这里简单记录下Activity.Fragment.Dialog基类中的常规写法,后续根据项目需求进行相应的扩展. BaseActiv ...

  7. Android 程式开发:(廿二)服务 —— 22.1 自定义服务

    服务,就是跑在后台的“程序”,不需要和用户进行交互.举个例子,当使用一款应用的时候,可能同时想在后台播放一些音乐.在这种情况下,后来播放音乐的代码不需要和用户进行交互,所以,它就可能被当成一个服务.当 ...

  8. 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景

    ============================================================================ 服务的生命周期: 一.采用start的方式开始 ...

  9. 玩转Windows服务系列——给Windows服务添加COM接口

    当我们运行一个Windows服务的时候,一般情况下,我们会选择以非窗口或者非控制台的方式运行,这样,它就只是一个后台程序,没有界面供我们进行交互. 那么当我们想与Windows服务进行实时交互的时候, ...

随机推荐

  1. Dataframe 新增一列, apply 通用方法

    df['c'] = df.apply(lambda row: 1 if row['a'] < 0 and row['b'] > 0 else 0, axis=1) apply 是一个好方法 ...

  2. stenciljs 学习一 web 组件开发

    stenciljs 介绍参考官方网站,或者 https://www.cnblogs.com/rongfengliang/p/9706542.html 创建项目 使用脚手架工具 npm init ste ...

  3. Maven的dependency type属性

    官方地址: http://maven.apache.org/ref/3.5.2/maven-model/maven.html (搜索:Some examples are jar, war, ejb-c ...

  4. Mac 上 java 究竟在哪里,本文彻底让你搞清楚!

    Mac下当你在[终端]输入java -version时,是执行的哪里的java呢,which java命令可以看到,就是[/usr/bin/java] [/usr/bin/java]只是个替身,实际指 ...

  5. Servlet 串联过滤器

    1. 串联Servlet过滤器的工作流程 2. 创建两个过滤器 MyFilter1和MyFilter2 1) MyFilter1 package com.example.filter; import ...

  6. centos7下svn的安装与配置

    1.环境 centos7 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /www/svndata svnserve -d -r /www/svn ...

  7. R(2) sample

    sample: 从整体中挑出部分样本数据函数 Usage: sample.int(n, size = n, replace = FALSE, prob = NULL) x:可以是R中任何​对象 siz ...

  8. 【selenium】HTMLTestRunner测试报告生成

    __author__ = 'Administrator' #coding=utf-8 from selenium import webdriver from selenium.webdriver.co ...

  9. Exchange 2003服务器中如何在公司资料夹中设置共享行事历

    Exchange 2003服务器中如何在公司资料夹中设置共享行事历 编写人:左丘文 2018-2-23 春节假期归来,开工第一天,感觉还没有从假期中恢复及调整过来.突然想到了我已经荒废了近一年的园子, ...

  10. Qt Creator 预览QtCreator中的界面

    当在QtCreator界面编辑器中放置好布局和控件之后,组合键 Alt + Shift + R 可以实现预览功能.                       也可以通过以下方式更改快捷键: 具体路径 ...