前言
上一篇中我们将工作流的图已经画好了,画好之后需要将该流程部署到数据库中,这样以后才可以用到该流程去完成相应流程工作。
Activiti工作流部署
@Test
public void deployActiviti(){
//默认加载工作流引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//加载RepositoryService
RepositoryService repositoryService = processEngine.getRepositoryService();
//创建部署对象
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
//加载流程配置文件和图片
deploymentBuilder.addClasspathResource("diagrams/MyProcess.bpmn")
.name("ok")
.category("")
.addClasspathResource("diagrams/MyProcess.png");
//部署流程
deploymentBuilder.deploy();
}
可以看到主要是利用上一篇中画好的图部署流程.
主要涉及3张表:
act_re_deployment ->工作流部署表
act_ge_bytearray ->储存二进制相关文件
act_re_procdef ->流程定义数据
建议好好看看这三张表中的数据,以及它们之间的关系。
Activiti流程启动
@Test
public void startProcess(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("activiti_leave");
System.out.println("流程实例ID:"+processInstance.getId());
System.out.println("正在活动的节点ID:"+processInstance.getActivityId());
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
}
流程启动主要是利用RuntimeService指定上一篇中画的图的id即activiti_leave,获取到流程实例ProcessInstance。