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