发布流程
任何与“静态”资源有关的数据(比如流程定义)都可以通过
RepositoryService访问。
从概念上讲,所以静态数据都是Activiti的资源内容。
在src/test/resources/org/activiti/test目录下创建一个新的xml文件
VacationRequest.bpmn20.xml(如果不使用单元测试模板,你也可以在任何地方创建),
内容如下。注意这一章不会解释例子中使用的xml结构。
如果有需要可以先阅读bpmn 2.0章来了解这些。<?xml version="1.0" encoding="UTF-8" ?>
targetNamespace="http://activiti.org/bpmn20"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn">
${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}).
management
${vacationApproved == 'true'}
${vacationApproved == 'false'}
Your manager has disapproved your vacation request for ${numberOfDays} days.
Reason: ${managerMotivation}
${employeeName}
${resendRequest == 'true'}
${resendRequest == 'false'}
为了让Activiti引擎知道这个流程,我们必须先进行“发布”。
发布意味着引擎会把BPMN 2.0 xml解析成可以执行的东西,
“发布包”中的所有流程定义都会添加到数据库中。
这样,当引擎重启时,它依然可以获得“已发布”的流程:ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment()
.addClasspathResource("org/activiti/test/VacationRequest.bpmn20.xml")
.deploy();
Log.info("Number of process definitions: " + repositoryService.createProcessDefinitionQuery().count());
可以阅读发布章来了解更多关于发布的信息。