2017.2.20《activiti实战第五章--用户与组及部署管理》用户与组

七月流火嗞嗞嗞 七月流火嗞嗞嗞     2022-08-23     559

关键词:

学习资料:《Activiti实战》

 

第五章 用户与组及部署管理(一)用户与组

内容概览:讲解activiti中内置的一套用户、组的关系,以及如何通过API添加、删除、查询。

5.1 用户与组

5.1.1 用户

 1 public class IdentityServiceTest{
 2     @Rule
 3     public ActivitiRule ar = new ActivitiRule();//使用默认的acitiviti.cfg.xml作为参数
 4     
 5     @Test
 6     public void testUser() throws Exception(){
 7         IdentityService is = ar.getIdentityService();
 8 
 9         User user = is.newUser("henryyan");
10         user.setFirstName("Henry");
11         user.setLastName("yan");
12         user.setEmail("[email protected]");
13    
14         is.saveUser(user);
15         
16         User userInDb = is.createUserQuery().userId("henryyan").singleResult();
17         assertNotNull(userInDb);
18         
19         is.deleteUser("henryyan");
20         userInDb = is.createUserQuery().userId("henryyan").singleResult();
21         assertNull(userInDb);
22     }   
23 }

 

5.1.2 组

 1 public class IdentityServiceTest{
 2     @Rule
 3     public ActivitiRule ar = new ActivitiRule();//使用默认的acitiviti.cfg.xml作为参数
 4     
 5     @Test
 6     public void testGroup() throws Exception(){
 7         IdentityService is = ar.getIdentityService();
 8 
 9         Group group = is.newGroup("deptLeader");
10         group .setName("部门领导");
11         group .setType("assignment");
12    
13         is.saveGroup(group);
14         
15         List<Group> groupList = is.createGroupQuery().groupId("deptLeader").list();
16         assertEquals(1,groupList.size());
17         
18         is.deleteGroup("deptLeader");
19         groupList = is.createGroupQuery().groupId("deptLeader").list();
20         assertEquals(0,groupList.size());
21     }   
22 }

 

5.1.3 用户与组的关系

 1 public class IdentityServiceTest{
 2     @Rule
 3     public ActivitiRule ar = new ActivitiRule();//使用默认的acitiviti.cfg.xml作为参数
 4       
 5     @Test
 6     public void testUserAndGroupMembership() throws Exception(){
 7         IdentityService is = ar.getIdentityService();
 8 
 9         Group group = is.newGroup("deptLeader");
10         group .setName("部门领导");
11         group .setType("assignment");
12         is.saveGroup(group);
13         
14         User user = is.newUser("henryyan");
15         user.setFirstName("Henry");
16         user.setLastName("yan");
17         user.setEmail("[email protected]");
18         is.saveUser(user);
19 
20         is.createMembership("henryyan","deptLeader");
21 
22         //查询组deptLeader所拥有的用户
23         User userInGroup = is.createUserQuery().memberOfGroup("deptLeader").singleResult();
24         assertNotNull(userInGroup);
25         assertEquals("henryyan",userInGroup.getId());
26 
27         //查询用户henryyan所属的组
28         Group groupContainsHenryyan = is.createGroupQuery().groupMember("henryyan").singleResult();
29         assertNotNull(groupContainsHenryyan);
30         assertEquals("deptLeader",groupContainsHenryyan.getId());
31     }   
32  }

 

5.1.4 UserTask中的用户与组

假设一个流程图示意图如下:

开始--->用户任务--->结束

共用的xml文件如下:

1 <process id="userAndGroupInUserTask" name="userAndGroupInUserTask">
2     <startEvent id="startEvent1" name="Start"></startEvent>
3     <userTask id="studyUserAndGroupInUserTask" name="学习用户与组在用户任务中的应用"></userTask>
4     <sequenceFlow id="flow1" name="" sourceRef="startEvent1" targetRef="studyUserAndGroupInUserTask"></sequenceFlow>
5     <endEvent id="endEvent1" name="End"></endEvent>
6     <sequenceFlow id="flow2" name="" sourceRef="studyUserAndGroupInUserTask" targetRef="endEvent1"></sequenceFlow>
7 </process>

 

共用的测试代码如下:

 1 public class UserAndGroupInUserTaskTest{
 2     @Before
 3     public void setup() throws Exception(){
 4         //初始化7个Service
 5         super.setUp();
 6 
 7         Group group = identityService.newGroup("deptLeader");
 8         group .setName("部门领导");
 9         group .setType("assignment");
10         identityService.saveGroup(group);
11         
12         User user = identityService.newUser("henryyan");
13         user.setFirstName("Henry");
14         user.setLastName("yan");
15         user.setEmail("[email protected]");
16         identityService.saveUser(user);
17 
18         identityService.createMembership("henryyan","deptLeader");
19     }   
20 
21     @After
22     public void afterInvokeTestMethod() throws Exception(){
23         identityService.deleteMembership("henryyan","deptLeader");
24         identityService.deleteGroup("deptLeader");
25         identityService.deleteUser("henryyan");
26     }
27     ...
28  }

 

(1)候选组

修改上面的UserTask如下:属于这个组的用户都可以签收任务。一旦有一个人签收,其他人的用户任务里就没有这个任务了。

1 <userTask id="studyUserAndGroupInUserTask" 
2      name="学习用户与组在用户任务中的应用"
3      activiti:candidateGroups="deptLeader">
4 </userTask>

 

在类userAndGroupTestInUserTask添加方法如下:

 

 

(2)候选人

2017.2.20activiti实战--第一章--认识activiti

学习资料:《Activiti实战》 第一章认识Activiti内容概览:讲解activiti的特点、接口概览、架构等基本信息。1.3Activiti的特点1.使用mybatis2.原生支持spring,可以轻松集成spring3.引擎的Service接口Activiti引擎提供了7大Service接口,均通... 查看详情

安卓权威编程指南-第五章学习笔记(两个activity)

学习安卓编程权威指南第五章的时候自己写了个简单的Demo来加深理解两个Activity互相传递数据的问题,然后将自己的学习笔记贴上来,如有错误还请指正。 IntentActivityDemo学习笔记题目:ActivityA登录界面(用户名、密码、登陆... 查看详情

机器学习实战第五章logistic回归(代码片段)

defgradAscent(dataMatIn,classLabels):dataMatrix=mat(dataMatIn)#converttoNumPymatrixlabelMat=mat(classLabels).transpose()#converttoNumPymatrixm,n=shape(dataMatrix)alpha=0.001maxCycles=500weights=ones(( 查看详情

spring实战第四版第五章pom.xml

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"& 查看详情

kvm虚拟化实战精讲[第五章利用virsh对虚拟机管理]

650)this.width=650;"src="http://s3.51cto.com/wyfs02/M02/89/41/wKiom1gNwm7ThEqhAAM9UfYsuuE552.jpg-wh_500x0-wm_3-wmp_4-s_1450775902.jpg"style="float:none;"title="KVM虚拟化实战精讲[第五章利用virsh对虚拟机管理]"alt="wKiom1 查看详情

第五章调优案例分析与实战

案例1:15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU、16GB物理内存,操作系统为64位CentOS5.4,Resin作为Web服务器。整个服务器暂时没有部署别的应用,所有硬件资源都可以提供给这访问量并不算太大的网站... 查看详情

《spring实战》学习笔记-第五章:构建springweb应用程序

5.1 SpringMVC起步5.1.1 跟踪SpringMVC的请求  每当用户在Web浏览器中点击链接或提交表单的时候,请求就开始工作了。对请求的工作描述就像是快递投送员。与邮局投递员或FedEx投送员一样,请求会将信息从一个地方带到另一个... 查看详情

《fpga全程进阶---实战演练》第五章基于74hc595的led操作

1基础理论部分1.1分频 分频,是的,这个概念也很重要。分频是指将一单一频率信号的频率降低为原来的1/N,就叫N分频。实现分频的电路或装置称为“分频器”,如把33MHZ的信号2分频得到16.5MHZ的信号,3分频得到11MHZ的... 查看详情

tensorflow实战google深度学习框架第五章5.2.1minister数字识别源代码(代码片段)

1importos2importtab3importtensorflowastf45print"tensorflow5.2"67fromtensorflow.examples.tutorials.mnistimportinput_data89‘‘‘10mnist=input_data.read_data_sets("/asky/tensorflow/mnist_data",one_hot=True 查看详情

zabbix专题:第五章zabbix添加触发器triggers

...://zhang789.blog.51cto.com本节目录大纲触发器(triggers)是什么?实战创建监听80端口的触发器报警级别介绍zabbix触发器依赖关系详解zabbix专题:第五章zabbix添加触发器Triggers触发器(triggers)是什么?触发器使用逻辑表 查看详情

第五章学习小结

查看详情

programminginlua第五章

1,2,3,4,5,6,7,8,9,第9点非常重点。10,  查看详情

html第五章

第五章css美化网页元素1.使用CSS美化网页文本的意义:        ①有效地传递页面信息。        ②使用CSS美化过的页面文本,使页面漂亮,美观,吸引用户。   &... 查看详情

离散数学第四第五章

查看详情

[高项]第五章项目范围管理

查看详情

第五章体检套餐项目

体检套餐管理系统: 主窗体: 套餐集合:项目集合:  查看详情

第五章

示例2publicstaticvoidmain(String[]args){ inti=1;while(i<=100); System.out.println("第"+i+"遍写:好好学习,天天向上!");i++;  } }}示例4publicstaticvoidmain(String[]args){intcount=1;while(coun 查看详情

第五章循环结构

          第五章 循环结构英语新识:while 循环    do 执行    index 牵引    bug 错误    debug 调试equal 相等    step 步骤    error 错误   结构框... 查看详情