public class RepostoryServiceTest {private static final Logger LOGGER = LoggerFactory.getLogger(RepostoryServiceTest.class);@Rulepublic ActivitiRule activitiRule = new ActivitiRule();@Testpublic 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();只能返回一个结果,要是多了会报错。