• 选定用户与用户组启动流程(学习笔记)


    public class RepostoryServiceTest {
    
        private static final Logger LOGGER =  LoggerFactory.getLogger(RepostoryServiceTest.class);
    
        @Rule
        public ActivitiRule activitiRule = new ActivitiRule();
    
        @Test
        public void testRepository(){
            //repositoryService最重要的功能就是对流程定义文件的部署
            RepositoryService repositoryService = activitiRule.getRepositoryService();
    
            //创建一个流程部署对象,先根据repositoryService创建一个deploymentBuilder然后
            //用deploymentBuilder构建出一个部署对象,指定名字为测试部署资源,且添加了两个资源文件
            DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
            deploymentBuilder.name("测试部署资源1")
                    .addClasspathResource("my-process.bpmn20.xml")
                    .addClasspathResource("second_approve.bpmn20.xml");
            //当deploy完成以后,就会将我们的部署对象跟两个资源文件存进数据库里面
            Deployment deploy = deploymentBuilder.deploy();
            LOGGER.info("deploy = {}",deploy);
    
            //第二次部署
            DeploymentBuilder deploymentBuilder1 = repositoryService.createDeployment();
            deploymentBuilder1.name("测试部署资源2")
                    .addClasspathResource("my-process.bpmn20.xml")
                    .addClasspathResource("second_approve.bpmn20.xml");
            deploymentBuilder1.deploy();
    
            //查看部署对象里面有什么,deploymentQuery内涵各种查询方法查询流程定义对象
            DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();
            Deployment deployment = deploymentQuery.deploymentId(deploy.getId()).singleResult();
    
            //查询出list类型的流程定义对象
            List<ProcessDefinition> definitionList = repositoryService
                    .createProcessDefinitionQuery()
                    .deploymentId(deployment.getId())
                    .listPage(0, 100);
            for (ProcessDefinition processDefinition : definitionList) {
                LOGGER.info("processDefinition = {} , version = {} , key = {} , id = {}",processDefinition,
                        processDefinition.getVersion(),
                        processDefinition.getKey(),
                        processDefinition.getId());
            }
    
            //部署跟流程定义文件可以是一对多的关系
    
        }
    
        /*当有需求需要定义用户与用户组关系时。
        * */
        @Test
        @org.activiti.engine.test.Deployment(resources = {"my-process.bpmn20.xml"})
        public void  testCandidateStarter(){
            RepositoryService repositoryService = activitiRule.getRepositoryService();
            //获取流程定义对象,singleResult获取唯一的结果
            ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult();
    
            //repositoryService只是给我们提供了构建用户用户组与流程关系的方式,并没有提供校验,需要我们自己在业务逻辑中做校验
            repositoryService.addCandidateStarterUser(processDefinition.getId(),"user");
            repositoryService.addCandidateStarterGroup(processDefinition.getId(),"groupM");
    
            //把用户跟用户组设置进去以后如何获取出来呢
            List<IdentityLink> identityLinkList = repositoryService.getIdentityLinksForProcessDefinition(processDefinition.getId());
            //取出来以后输出查看下其内容
            for (IdentityLink identityLink : identityLinkList) {
                 LOGGER.info(" identityLink = {}",identityLink);
            }
            //删除关系
            repositoryService.deleteCandidateStarterUser(processDefinition.getId(),"user");
            repositoryService.deleteCandidateStarterGroup(processDefinition.getId(),"groupM");
          
    
        }
    
    }

    这里singleResult();只能返回一个结果,要是多了会报错。

     

  • 相关阅读:
    第二次冲刺个人工作总结06
    第二次冲刺个人工作总结05
    第十三周学习进度
    第二次冲刺工作总结04
    软件工程课堂作业——寻找水王2
    第二次冲刺个人工作总结03
    第二次冲刺周期个人工作总结02
    第二次冲刺个人工作总结01
    第二次冲刺会议
    git 的更新代码的取消
  • 原文地址:https://www.cnblogs.com/xk920/p/10688127.html
Copyright © 2020-2023  润新知