网站建设会遇到哪些问题,wordpress 怎么传递参数 get参数,dw怎么设计网页,织梦网站怎么做seo优化纯干货#xff0c;activiti入门看这一篇就够了‼️‼️
详细讲解了一个activiti流程的从生到死#xff0c;及每个节点数据库表的变化 文章目录 #x1f4d5;一、编写流程文件#x1f5a5;️二、部署流程#x1f516; 三、启动刚刚部署的流程生成流程实例#x1f9e3; 四…纯干货activiti入门看这一篇就够了‼️‼️
详细讲解了一个activiti流程的从生到死及每个节点数据库表的变化 文章目录 一、编写流程文件️二、部署流程 三、启动刚刚部署的流程生成流程实例 四、审批通过第一个节点五、审批通过第二个节点流程结束七、最后的话 本文耗时五小时纯干货讲解了一个activiti工作流的条件流程从部署到结束每个阶段数据库各个表的变化过程看完此文相信你对acticiti的表结构会有一个清晰的认识你的支持对我非常重要‼️觉得有帮助记得点个赞哈 一、编写流程文件 ?xml version1.0 encodingUTF-8?
definitions xmlnshttp://www.omg.org/spec/BPMN/20100524/MODEL xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:activitihttp://activiti.org/bpmn xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:omgdchttp://www.omg.org/spec/DD/20100524/DC xmlns:omgdihttp://www.omg.org/spec/DD/20100524/DI typeLanguagehttp://www.w3.org/2001/XMLSchema expressionLanguagehttp://www.w3.org/1999/XPath targetNamespacehttp://www.activiti.org/processdefprocess idline name连线 isExecutabletruestartEvent idstartEvent1/startEventuserTask iduserTask1 name指定处理人 defaultsid-EDDC5664-19C0-4020-A36D-11F20A1E6962 activiti:assigneeadminextensionElementsmodeler:initiator-can-complete xmlns:modelerhttp://activiti.com/modeler![CDATA[false]]/modeler:initiator-can-complete/extensionElements/userTaskuserTask iduserTask3 name监听器 activiti:assigneetestextensionElementsmodeler:initiator-can-complete xmlns:modelerhttp://activiti.com/modeler![CDATA[false]]/modeler:initiator-can-complete/extensionElements/userTasksequenceFlow idsid-13B085EF-2E80-43D1-BEDF-8950B2A9B783 sourceRefstartEvent1 targetRefuserTask1/sequenceFlowendEvent idsid-9AFEE86D-C779-494A-8ACD-D2AC0E96C5AD/endEventsequenceFlow idsid-DCE668F0-BD17-4EC2-8C65-0334163C1767 sourceRefuserTask3 targetRefsid-9AFEE86D-C779-494A-8ACD-D2AC0E96C5AD/sequenceFlowsequenceFlow idsid-AE551128-BF5C-4F31-89B5-E90744E1C7D9 name拒绝 sourceRefuserTask1 targetRefuserTask3conditionExpression xsi:typetFormalExpression![CDATA[${msg拒绝}]]/conditionExpression/sequenceFlowsequenceFlow idsid-EDDC5664-19C0-4020-A36D-11F20A1E6962 name同意 sourceRefuserTask1 targetRefsid-9AFEE86D-C779-494A-8ACD-D2AC0E96C5ADconditionExpression xsi:typetFormalExpression![CDATA[${msg同意}]]/conditionExpression/sequenceFlow/processbpmndi:BPMNDiagram idBPMNDiagram_linebpmndi:BPMNPlane bpmnElementline idBPMNPlane_linebpmndi:BPMNShape bpmnElementstartEvent1 idBPMNShape_startEvent1omgdc:Bounds height30.0 width30.0 x480.0 y45.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNShape bpmnElementuserTask1 idBPMNShape_userTask1omgdc:Bounds height80.0 width100.0 x445.0 y180.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNShape bpmnElementuserTask3 idBPMNShape_userTask3omgdc:Bounds height80.0 width100.0 x630.0 y285.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNShape bpmnElementsid-9AFEE86D-C779-494A-8ACD-D2AC0E96C5AD idBPMNShape_sid-9AFEE86D-C779-494A-8ACD-D2AC0E96C5ADomgdc:Bounds height28.0 width28.0 x481.0 y454.0/omgdc:Bounds/bpmndi:BPMNShapebpmndi:BPMNEdge bpmnElementsid-13B085EF-2E80-43D1-BEDF-8950B2A9B783 idBPMNEdge_sid-13B085EF-2E80-43D1-BEDF-8950B2A9B783omgdi:waypoint x495.0 y75.0/omgdi:waypointomgdi:waypoint x495.0 y180.0/omgdi:waypoint/bpmndi:BPMNEdgebpmndi:BPMNEdge bpmnElementsid-DCE668F0-BD17-4EC2-8C65-0334163C1767 idBPMNEdge_sid-DCE668F0-BD17-4EC2-8C65-0334163C1767omgdi:waypoint x630.0 y363.64864864864865/omgdi:waypointomgdi:waypoint x506.076673127176 y459.43803104223696/omgdi:waypoint/bpmndi:BPMNEdgebpmndi:BPMNEdge bpmnElementsid-AE551128-BF5C-4F31-89B5-E90744E1C7D9 idBPMNEdge_sid-AE551128-BF5C-4F31-89B5-E90744E1C7D9omgdi:waypoint x545.0 y248.3783783783784/omgdi:waypointomgdi:waypoint x630.0 y296.6216216216216/omgdi:waypoint/bpmndi:BPMNEdgebpmndi:BPMNEdge bpmnElementsid-EDDC5664-19C0-4020-A36D-11F20A1E6962 idBPMNEdge_sid-EDDC5664-19C0-4020-A36D-11F20A1E6962omgdi:waypoint x495.0 y260.0/omgdi:waypointomgdi:waypoint x495.0 y454.0/omgdi:waypoint/bpmndi:BPMNEdge/bpmndi:BPMNPlane/bpmndi:BPMNDiagram
/definitions️二、部署流程
部署时只需要部署xml文件即可流程图png文件会在act_ge_bytearray表自动生成当然也可以手动选择png文件
/*** 部署流程定义*/
Test
public void deploy() {Deployment deployment repositoryService.createDeployment() // 创建部署.addClasspathResource(diagrams/line.bpmn20.xml) // 加载流程资源文件.addClasspathResource(diagrams/line.png) // 加载png文件可选.name(line流程) // 流程名称.deploy(); // 部署System.out.println(流程部署ID: deployment.getId());System.out.println(流程部署Name: deployment.getName());
}act_ge_bytearray 二进制数据表将生成两条记录一条xml文件一条流程图文件 act_re_deployment 部署信息表 将生成一条部署记录 act_re_procdef 流程定义数据表 将生成一条数据 id生成规则流程key版本随机数 三、启动刚刚部署的流程生成流程实例
/*** 启动流程实例*/
Test
public void start() {ProcessInstance pi runtimeService.startProcessInstanceByKey(line); // 流程定义表的KEY字段值System.out.println(流程实例ID: pi.getId());System.out.println(流程定义ID: pi.getProcessDefinitionId());
}act_ru_execution 运行时流程执行实例表 生成两条记录一条根记录 一条主线记录 act_ru_task运行时任务节点表 生成一条记录就是图中这个 act_ru_identitylink 运行时流程人员表主要存储任务节点与参与者的相关信息 表生成一条记录 act_hi_identitylink历史处理人表生成记录 act_hi_procinst历史实例表生成一条记录 act_hi_taskinst历史人物表生成一条记录 act_hi_actinst历史节点表生成两条记录 四、审批通过第一个节点
Test
public void completeTask2() {MapString, Object variables new HashMapString, Object();variables.put(msg, 拒绝);taskService.complete(100005, variables);//10005为taskid
}审批通过后再看各个表变化 由于我们是拒绝所以会走这条线 监听器中固定写死了审批人 新生成了一个task任务
act_ru_task 运行时任务节点表 act_ru_identitylink 运行时流程人员表主要存储任务节点与参与者的相关信息
act_hi_identitylink 历史流程人员表 act_hi_detail 历史详情表提供历史变量的查询 act_hi_procinst 历史流程实例表 没变化 act_hi_taskinst 历史任务实例表 act_hi_actinst 历史节点表 act_hi_varinst 历史变量表 act_ru_variable 运行时流程变量数据表 新生成一个运行时变量 五、审批通过第二个节点流程结束
/*** 完成任务*/
Test
public void completeTask() {taskService.complete(102504); //102504为任务id
}再来看下各个表变化
act_ru_execution 运行时流程执行实例表 为空了 act_ru_task 运行时任务节点表 为空了 act_ru_identitylink 运行时流程人员表主要存储任务节点与参与者的相关信息 为空了 act_hi_identitylink 历史流程人员表 没变化 act_hi_detail 历史详情表提供历史变量的查询 没变化 act_hi_procinst 历史流程实例表 变成已结束了 act_hi_taskinst 历史任务实例表 变成结束了 act_hi_actinst 历史节点表 变成结束了多了个结束节点 act_hi_varinst 历史变量表 没变化 act_ru_variable 运行时流程变量数据表 为空了 七、最后的话
要熟练掌握技巧一定多多练习纸上得来终觉浅绝知此事要躬行。