第一部分续集
看了上一篇的朋友,如果按照上面的弄,肯定是能跑起来的。下面的内容是我对第一部分的补充说明
第一点
请注意这个, 这个id在之后运行实例的时候很重要,他代表的是一个实例的流程图
第二点
将这个流程图的这个文件的后缀名改为 xml 就能看见流程图的本来的面目了。
点击designer 就能看到这个流程图的图片了,可以选择导出来,也可以选择不用管,这个都不影响啥,但是如果之后考虑到流程许的展示,还是把图片需要导出来。这里我是导出来图片的,和 流程图放在同一个位置。
需要注意:最好不要直接导在项目的下面,idea这个好像会报错,我是导在桌面,自己复制进来的。
,之后又把xml后缀给改回去,改为bpmn,
如果是 eclipse,就不需要转为图片了,eclipse里面的插件会自动干这个事。
好了。下面就是一个完整的结构图了。
第三点
还记得activiti第一次运行的时候,会创建好多表吗?
关于这些表的介绍,官网上也详细介绍了这些表的用途。
谷歌浏览器真香,尤其这种翻译。真的好用,下面是对照的翻译
我在站内看到这位朋友的博客写的挺详细的。各位可以参考参考感谢感谢
我这里为了方便直接就截图了
第二部分 启动一个流程。
启动一个流程
还是按照之前的作风,先看官网。
package com.liuchen.navite;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
/**
* @program: che300WorkStudy
* @description:
* @author: lc
* @date: 2020/6/16
**/
public class MainTest1 {
public static void main(String[] args) {
// 读取配置文件,获取 ProcessEngine对象。
String resource = "activiti.cfg.xml";
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(resource);
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
String pName = processEngine.getName();
String ver = ProcessEngine.VERSION;
System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]");
//管理流程定义
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("bpmn/hoilday.bpmn")
.addClasspathResource("bpmn/hoilday.png")
//禁止检查格式。bpmn本质就是个xml文件。这里就是禁止检查xml标签。
.disableSchemaValidation()
.deploy();
//流程定义。他的底层还是去查那些相关的表的。这就是得到一个service,查数据库。
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.deploymentId(deployment.getId()).singleResult();
System.out.println(
"Found process definition ["
+ processDefinition.getName() + "] with id ["
+ processDefinition.getId() + "]");
}
}
数据库肯定是要改变的。看看相关的数据库的改变
在 act_ge_bytearry 里面存放的刚才流程图的bpmn文件和png文件。
在 act_ge_propetry 存放的是全局共用的数据。一般这个和我们没什么关系。
在 act_re_deployment 存放的部署信息,一个流程图就会有一条记录
在 act_re_procedf 存放的是一个流程的定义。上面程序输出的hoilday:1:5 就是这个从这个表中拿的。是这个表的 id
这些表之间的关系看的懂,只要静下心来看。绝对看的懂。这些关系都是挺简单的。如果看不懂,留言吧。
做到这里。才部署了一个流程。下面就是启动一个流程,还记得我们之前说的那个很重要的 id 吗?
如果不知道说啥,请找找 activiti 1
这里也会有数据库表的变化,猜猜,是那些表会变化的。肯定是 以 ru 开头的表会变化的。
关于activiti运行中数据库的变化在之后还是会在说的.
package com.liuchen.navite;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
/**
* @program: che300WorkStudy
* @description:
* @author: lc
* @date: 2020/6/16
**/
public class MainTest1 {
public static void main(String[] args) {
// 读取配置文件,获取 ProcessEngine对象。
String resource = "activiti.cfg.xml";
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(resource);
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
String pName = processEngine.getName();
String ver = ProcessEngine.VERSION;
System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]");
// 因为之前部署过流程图,这里就注销了.
// //管理流程定义
// RepositoryService repositoryService = processEngine.getRepositoryService();
//
// Deployment deployment = repositoryService.createDeployment()
// .addClasspathResource("bpmn/hoilday.bpmn")
// .addClasspathResource("bpmn/hoilday.png")
// //禁止检查格式。bpmn本质就是个xml文件。这里就是禁止检查xml标签。
// .disableSchemaValidation()
// .deploy();
// //流程定义。他的底层还是去查那些相关的表的。这就是得到一个service,查数据库。
// ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
// .deploymentId(deployment.getId()).singleResult();
// System.out.println(
// "Found process definition ["
// + processDefinition.getName() + "] with id ["
// + processDefinition.getId() + "]");
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey("hoilday");
System.out.println("Onboarding process started with process instance id ["
+ processInstance.getProcessInstanceId()
+ "] key [" + processInstance.getProcessDefinitionKey() + "]");
}
}
如果能看到这里,就说明ok啦。现在去看看数据库里面的变化吧
这个也很好理解
act_ru_execution 对应的就是一个流程运行的实例。
act_ru_task 对应的就是一个流程实例当前运行的节点。
别急别急,关于现在代码中看不懂的那些API会在之后写的
睡了睡了。