Activiti7 通过BpmnModel部署流程并启动实例

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");
    
    // 连接Task
    List<SequenceFlow> start2first = new ArrayList<>();
    start2first.add(s1);
    startEvent.setOutgoingFlows(start2first);
    first.setIncomingFlows(start2first);
    
    List<SequenceFlow> first2Sencond = new ArrayList<>();
    first2Sencond.add(s2);
    first.setOutgoingFlows(first2Sencond);
    second.setIncomingFlows(first2Sencond);
    
    List<SequenceFlow> 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);
    // 创建Bpmnmodel
    BpmnModel 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创建的实例,如果存在就没有问题。


三、结尾

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值