
今天总结一下flowable流程引擎在流转过程中数据表数据的变化情况~~
| Flowable database type | Example JDBC URL | Notes |
|---|---|---|
h2 | jdbc:h2:tcp://localhost/flowable | Default configured database |
mysql | jdbc:mysql://localhost:3306/flowable?autoReconnect=true | Tested using mysql-connector-java database driver |
oracle | jdbc:oracle:thin:@localhost:1521:xe | |
postgres | jdbc:postgresql://localhost:5432/flowable | |
db2 | jdbc:db2://localhost:50000/flowable | |
mssql | jdbc:sqlserver://localhost:1433;databaseName=flowable (jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver) OR jdbc:jtds:sqlserver://localhost:1433/flowable (jdbc.driver=net.sourceforge.jtds.jdbc.Driver) | Tested using Microsoft JDBC Driver 4.0 (sqljdbc4.jar) and JTDS Driver |
ACT_GE_*: 普通数据,各种情况都使用的数据。
保存流程模板
Model saveOrUpdateModel = modelService.createModel(newModel, userDo);

流程部署:
流程模板保存后还不能使用,必须部署后生成流程定义才能被流程引擎使用:
流程模板每次部署会保存在如下三张表:
Deployment deploy = repositoryService.createDeployment().name(existModel.getName()).key(existModel.getKey()).addBpmnModel(existModel.getKey()+".bpmn20.xml", bpmnModel).deploy();



使用同一个模型进行第二次流程部署:可以看到使用同一个模型发布的流程,流程定义中会有版本的概念,已启动的流程还是基于原版本的流程定义继续执行,新启动的流程就会基于最新版本的流程定义进行流转。



启动流程:
如下代码是搜索此次部署对应的流程定义信息,也就是act_re_procdef表的信息查询。然后启动这个流程。
ProcessDefinition pd=repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();ProcessInstance pi=runtimeService.startProcessInstanceById(pd.getId());
首先向act_ru_execution表中插入一条记录,记录的是这个流程定义的执行实例,其中id和proc_inst_id相同都是流程执行实例id,包含流程定义的id外键

然后向act_ru_task插入一条记录,记录的是第一个任务的信息,也就是开始执行第一个任务。包括act_ru_execution表中的execution_id外键和proc_inst_id外键,也就是本次执行实例id。

然后向act_hi_procinst表和act_hi_taskinst表中各插入一条记录,记录的是本次执行实例和任务的历史记录:


启动流程:
完成任务:
Task task = taskService.createTaskQuery().processInstanceId("b8840dfc-a4b5-11eb-90cc-005056c00001").taskDefinitionKey("testUser").singleResult();taskService.setVariable(task.getId(), "var1", "var1");taskService.complete(task.getId());
执行当前任务后,act_ru_task表中当前任务的记录被删除,如果后续还有任务节点,新增后续待执行的任务信息。

同时删除act_ru_execution表中的记录,同理如还存在后续任务,则只会删除当前任务执行实例,然后新增后续任务的执行实例信息。

act_hi_taskinst、act_hi_varinst中的记录保持


执行任务:
长按二维码关注我们

ITSK
博客|yajing8
我知道你在看哟






