zoukankan      html  css  js  c++  java
  • 选定用户与用户组启动流程(学习笔记)

    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();只能返回一个结果,要是多了会报错。

     

  • 相关阅读:
    自考-信息系统开发与管理(一)首篇概述
    html乱码问题
    Failed to create client: error while trying to communicate with apiserver: 报错解决
    Helm(bitnami)部署zookeeper和kafka集群
    Helm部署RabbitMQ集群
    Kubernetes通过插件,自动发现注册Rabbitmq集群
    Kubernetes使用operator安装Redis集群
    Kubernetes部署单Redis
    Kubernetes搭建RooK+Ceph
    Kubernetes的服务质量(QoS)
  • 原文地址:https://www.cnblogs.com/xk920/p/10688127.html
Copyright © 2011-2022 走看看