?
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();只能返回一個結果,要是多了會報錯。
?