博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activiti7 通过BpmnModel部署流程并启动实例
阅读量:3950 次
发布时间:2019-05-24

本文共 2385 字,大约阅读时间需要 7 分钟。

activiti7通过BpmnModel创建流程并启动实例

一、前言

博主在学习activit7中,涉及到有关bpmnModel来维护整个工作流的内容。其中最先要实现的功能是创建出BPMN流程图。对此在进行翻阅资料后,大致总结出以下一套模板。

注意:

1.本篇文章目前并不针对Activiti7提供的所有的BpmnModel.class进行解析。只涉及代码的编写流程。
2.本篇文章默认读者已经搭建好了Springboot2+activit7的环境。


二、正文

  • 本次Bpmn将搭建如下图所示的bpmn流程图。

    在这里插入图片描述

  • 创建节点

    // 创建开始StartEvent startEvent = new StartEvent();startEvent.setId("startEvent");startEvent.setName("startEvent");// 创建初级审批人UserTask first = new UserTask();first.setId("first");first.setName("first");// 创建次级审批成员UserTask second = new UserTask();second.setId("second");second.setName("second");// 创建结束点EndEvent endEvent = new EndEvent();endEvent.setId("endEvent");endEvent.setName("endEvent");
  • 创建连线

    // 创建连线SequenceFlow s1 = new SequenceFlow();s1.setId("s1");s1.setName("s1");s1.setSourceRef("startEvent");s1.setTargetRef("first");SequenceFlow s2 = new SequenceFlow();s2.setId("s2");s2.setName("s2");s2.setSourceRef("first");s2.setTargetRef("second");SequenceFlow s3 = new SequenceFlow();s3.setId("s3");s3.setName("s3");s3.setSourceRef("second");s3.setTargetRef("endEvent");// 连接TaskList
    start2first = new ArrayList<>();start2first.add(s1);startEvent.setOutgoingFlows(start2first);first.setIncomingFlows(start2first);List
    first2Sencond = new ArrayList<>();first2Sencond.add(s2);first.setOutgoingFlows(first2Sencond);second.setIncomingFlows(first2Sencond);List
    second2End = new ArrayList<>();second2End.add(s3);second.setOutgoingFlows(second2End);endEvent.setIncomingFlows(second2End);
  • 构建BpmnModel

    // 创建流程Process process = new Process();process.setName("qingjia");process.setId("qingjia");process.addFlowElement(startEvent);process.addFlowElement(first);process.addFlowElement(second);process.addFlowElement(endEvent);process.addFlowElement(s1);process.addFlowElement(s2);process.addFlowElement(s3);// 创建BpmnmodelBpmnModel bpmnModel = new BpmnModel();bpmnModel.addProcess(process);
  • 部署BpmnModel

    repositoryService.createDeployment()              .name("bpmn")              .addBpmnModel("bpmnModel.bpmn", bpmnModel) // 这个addBpmnModel第一个参数一定要带后缀.bpmn              .deploy().getId();
  • 启动实例

    // id 需要去查看的数据库的 ACT_RE_PROCDEF表,这里面放着可以部署的流程的id    String id = "qingjia:3:145399ab-6f97-11eb-abc9-1e1bb54db19c";     ProcessInstance processInstance = runtimeService.startProcessInstanceById(id);
  • 检验

    最后查看act_ru_task等运行时表,查看是否存在通过上述Id创建的实例,如果存在就没有问题。


三、结尾

完整代码就是,将上述几个模块的代码按照顺序依次往下排即可。

转载地址:http://wxgwi.baihongyu.com/

你可能感兴趣的文章
1031 查验身份证 (15 分)
查看>>
1032 挖掘机技术哪家强 (20 分)
查看>>
1033 旧键盘打字 (20 分)
查看>>
Longest k-Good Segment CodeForces - 616D ( 尺取法)
查看>>
二叉搜索树的实现(BST)(插入+删除+查找+各种遍历+高度)
查看>>
今夕何夕 HDU - 6112 ( 模拟 )
查看>>
Dividing HDU - 1059 ( 多重背包 - 二进制简化 )
查看>>
Robberies HDU - 2955 ( 0-1背包 )
查看>>
FATE HDU - 2459 ( 二维完全背包 )
查看>>
B. Working out CodeForces - 429B (动态规划)
查看>>
10635 - Prince and Princess UVA-10635 (最长公共子序列的O(nlogn)的解法:LCS转换为LIS)
查看>>
Sizeof和Strlen
查看>>
lower_bound和upper_bound
查看>>
Subsequence POJ - 3061 ( 尺取法 )
查看>>
find the safest road HDU - 1596 (迪杰斯特拉dijkstra)
查看>>
关于读入多组测试样例的结束while(scanf()!=EOF)
查看>>
Cure HDU - 5879 (打表预处理)
查看>>
常见HTTP状态码大全
查看>>
Java大数 - 大整数BigInteger
查看>>
Spring配置中的id和name的区别
查看>>