ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
为了区别同一个流程定义下的每个流程实例,需要再添加一个业务标识。好比请假的流程都是一样的(即请假的流程定义是一样的),但是又不是只有一个人会请假,所以为了区分是哪个人请的假,需要再添加一个业务标识。 ```java /** * 启动流程时,添加业务标识 */ @Test public void addBusinessKey() { //1、获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //3、启动流程的过程中,添加businesskey //第一个参数:流程定义的key //第二个参数:业务标识 ProcessInstance instance = runtimeService. startProcessInstanceByKey("myEvection", "1001"); //4、输出 System.out.println("businessKey==" + instance.getBusinessKey()); //1001 } ``` 执行上面的程序就会在表`act_ru_execution`插入业务标识字段。 ![](https://img.kancloud.cn/54/61/546119ec4e52fccb677a017e368c45b9_1344x174.png) 当启动流程后将会调用如下几张表。 ```sql #流程实例执行表,记录当前流程实例的执行情况 #流程实例执行,如果当前只有一个分支时,一个流程实例只有一条记录且执行表的主键id和流程实例id相同, #如果当前有多个分支正在运行则该执行表中有多条记录,存在执行表的主键和流程实例id不相同的记录。 #即不论当前有几个分支总会有一条记录的执行表的主键和流程实例id相同 #一个流程实例运行完成,此表中与流程实例相关的记录被删除。 mysql> select * from act_ru_execution where business_key_="1001"; +-------+------+---------------+---------------+------------+---------------... | ID_ | REV_ | PROC_INST_ID_ | BUSINESS_KEY_ | PARENT_ID_ | PROC_DEF_I ... +-------+------+---------------+---------------+------------+---------------... | 30001 | 1 | 30001 | 1001 | NULL | myEvection:1:17504 | ... +-------+------+---------------+---------------+------------+---------------... #任务执行表,记录当前执行的任务 #启动流程实例,流程当前执行到第一个任务结点,此表会插入一条记录表示当前任务的执行情况,如果任务完成则记录删除。 mysql> select * from act_ru_task; +-------+------+---------------+---------------+--------------------+--------------+-----------------+--------------+---------------+... | ID_ | REV_ | EXECUTION_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | NAME_ | PARENT_TASK_ID_ | DESCRIPTION_ | TASK_DEF_K ... +-------+------+---------------+---------------+--------------------+--------------+-----------------+--------------+---------------+... | 22502 | 1 | 20002 | 20001 | myEvection:1:17504 | 部门经理审批 | NULL | NULL | _5 | NULL | 李四 | ... | 27502 | 1 | 25002 | 25001 | myEvection:1:17504 | 部门经理审批 | NULL | NULL | _5 | NULL | 李四 | ... | 30005 | 1 | 30002 | 30001 | myEvection:1:17504 | 创建出差申请 | NULL | NULL | _3 | NULL | 张三 | ... +-------+------+---------------+---------------+--------------------+--------------+-----------------+--------------+---------------+... #任务参与者,记录当前参与任务的用户或组 mysql> select * from act_ru_identitylink; +-------+------+-----------+-------------+----------+----------+---------------+--------------+ | ID_ | REV_ | GROUP_ID_ | TYPE_ | USER_ID_ | TASK_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | +-------+------+-----------+-------------+----------+----------+---------------+--------------+ | 20006 | 1 | NULL | participant | 张三 | NULL | 20001 | NULL | | 22503 | 1 | NULL | participant | 李四 | NULL | 20001 | NULL | | 25006 | 1 | NULL | participant | 张三 | NULL | 25001 | NULL | | 27503 | 1 | NULL | participant | 李四 | NULL | 25001 | NULL | | 30006 | 1 | NULL | participant | 张三 | NULL | 30001 | NULL | +-------+------+-----------+-------------+----------+----------+---------------+--------------+ #流程实例历史表 #流程实例启动,会在此表插入一条记录,流程实例运行完成记录也不会删除。 mysql> select * from act_hi_procinst; ... +-------+---------------+---------------+--------------------+---------------------+-----------+-----------+----------------+ ... | ID_ | PROC_INST_ID_ | BUSINESS_KEY_ | PROC_DEF_ID_ | START_TIME_ | END_TIME_ | DURATION_ | START_USER_I ... +-------+---------------+---------------+--------------------+---------------------+-----------+-----------+----------------+ ... | 20001 | 20001 | NULL | myEvection:1:17504 | 2021-10-09 17:00:46 | NULL | NULL | NULL | _2 ... | 25001 | 25001 | NULL | myEvection:1:17504 | 2021-10-09 17:11:55 | NULL | NULL | NULL | _2 ... | 30001 | 30001 | 1001 | myEvection:1:17504 | 2021-10-09 17:36:17 | NULL | NULL | NULL | _2 |... +-------+---------------+---------------+--------------------+---------------------+-----------+-----------+ ... #任务历史表,记录所有任务 #开始一个任务,不仅在act_ru_task表插入记录,也会在历史任务表插入一条记录,任务历史表的主键就是任务id,任务完成此表记录不删除。 mysql> select * from act_hi_taskinst ; +-------+--------------------+---------------+---------------+---------------+--------------+-----------------+--------------+--... | ID_ | PROC_DEF_ID_ | TASK_DEF_KEY_ | PROC_INST_ID_ | EXECUTION_ID_ | NAME_ | PARENT_TASK_ID_ | DESCRIPTION... +-------+--------------------+---------------+---------------+---------------+--------------+-----------------+--------------+--... | 20005 | myEvection:1:17504 | _3 | 20001 | 20002 | 创建出差申请 | NULL | NULL | NULL | 张三 | ... | 22502 | myEvection:1:17504 | _5 | 20001 | 20002 | 部门经理审批 | NULL | NULL | NULL | 李四 | ... | 25005 | myEvection:1:17504 | _3 | 25001 | 25002 | 创建出差申请 | NULL | NULL | NULL | 张三 | ... | 27502 | myEvection:1:17504 | _5 | 25001 | 25002 | 部门经理审批 | NULL | NULL | NULL | 李四 | ... | 30005 | myEvection:1:17504 | _3 | 30001 | 30002 | 创建出差申请 | NULL | NULL | NULL | 张三 | ... +-------+--------------------+---------------+---------------+---------------+--------------+-----------------+--------------+--... #活动历史表,记录所有活动 #活动包括任务,所以此表中不仅记录了任务,还记录了流程执行过程的其它活动,比如开始事件、结束事件。 mysql> select * from act_hi_actinst; +-------+--------------------+---------------+---------------+---------+----------+--------------------+--------------+--------... | ID_ | PROC_DEF_ID_ | PROC_INST_ID_ | EXECUTION_ID_ | ACT_ID_ | TASK_ID_ | CALL_PROC_INST_ID_ | ACT_NAME_ | AC. .. +-------+--------------------+---------------+---------------+---------+----------+--------------------+--------------+--------... | 20003 | myEvection:1:17504 | 20001 | 20002 | _2 | NULL | NULL | StartEvent | startEvent | NULL | . .. | 20004 | myEvection:1:17504 | 20001 | 20002 | _3 | 20005 | NULL | 创建出差申请 | userTask | 张三 | ... | 22501 | myEvection:1:17504 | 20001 | 20002 | _5 | 22502 | NULL | 部门经理审批 | userTask | 李四 | ... | 25003 | myEvection:1:17504 | 25001 | 25002 | _2 | NULL | NULL | StartEvent | startEvent | NULL | . .. | 25004 | myEvection:1:17504 | 25001 | 25002 | _3 | 25005 | NULL | 创建出差申请 | userTask | 张三 | ... | 27501 | myEvection:1:17504 | 25001 | 25002 | _5 | 27502 | NULL | 部门经理审批 | userTask | 李四 | ... | 30003 | myEvection:1:17504 | 30001 | 30002 | _2 | NULL | NULL | StartEvent | startEvent | NULL | . .. | 30004 | myEvection:1:17504 | 30001 | 30002 | _3 | 30005 | NULL | 创建出差申请 | userTask | 张三 | ... +-------+--------------------+---------------+---------------+---------+----------+--------------------+--------------+--------... ```