SpringBoot整合Activiti7——终止结束事件(十三)

文章目录

  • 终止结束事件
    • 终止结束事件
    • 代码实现
      • xml文件
      • 测试流程
      • 流程执行步骤


终止结束事件

终止结束事件

主要是对流程进行终止的事件,可以在一个复杂的流程中,如果某方想要提前中断这个流程,可以采用这个事件来处理。terminateAll属性,true表示不管是否嵌套或子流程都会被终止,false则终止多实例或子流程。

<!-- 终止结束事件 -->
<endEvent id="sid-4c711416-31a4-441f-91ff-f004e70335a2" name="终止结束事件">
  <!-- terminateAll是否终止全部 -->
  <terminateEventDefinition activiti:terminateAll="true"/>
</endEvent>

代码实现

在这里插入图片描述

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
  <process id="terminate" name="终止事件" isExecutable="true">
    <documentation>终止事件流程</documentation>
    <startEvent id="sid-863bb93b-eb19-4d2a-b9e1-8ee1fab94788" name="开始事件"/>
    <parallelGateway id="sid-580cbd70-e33b-47d6-a18a-05522a7d2025" name="并行网关1"/>
    <sequenceFlow id="sid-cbcee4ab-05e4-42e1-91ee-a2498ac5e0a4" sourceRef="sid-863bb93b-eb19-4d2a-b9e1-8ee1fab94788" targetRef="sid-580cbd70-e33b-47d6-a18a-05522a7d2025"/>
    <userTask id="sid-11eb2beb-26a2-4967-8092-b0f315ff2d21" name="超级管理员" activiti:assignee="${superAdmin}"/>
    <sequenceFlow id="sid-1a627e97-2c6d-4cc4-b171-62a1522f926e" sourceRef="sid-580cbd70-e33b-47d6-a18a-05522a7d2025" targetRef="sid-11eb2beb-26a2-4967-8092-b0f315ff2d21">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <userTask id="sid-90543e88-ec7b-4efc-a995-ef924cbdf42a" name="管理员" activiti:assignee="${admin}"/>
    <sequenceFlow id="sid-f8f0cf12-8fcf-4748-b9ff-cd8d95777d77" sourceRef="sid-580cbd70-e33b-47d6-a18a-05522a7d2025" targetRef="sid-90543e88-ec7b-4efc-a995-ef924cbdf42a">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <userTask id="sid-6a4ff883-3fa4-499d-a380-7373cbcedec0" name="用户" activiti:candidateGroups="${userGroup}"/>
    <sequenceFlow id="sid-4daffcef-5787-4a49-8dd6-10277cee5a8b" sourceRef="sid-580cbd70-e33b-47d6-a18a-05522a7d2025" targetRef="sid-6a4ff883-3fa4-499d-a380-7373cbcedec0">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <parallelGateway id="sid-ba4b2b53-fbfb-4208-90a0-17daf2aa24ff" name="并行网关2"/>
    <sequenceFlow id="sid-e0319c6b-316c-4f11-9818-bb4a3c685a93" sourceRef="sid-90543e88-ec7b-4efc-a995-ef924cbdf42a" targetRef="sid-e8681835-d9c2-46db-988a-69329dd4e8e6"/>
    <endEvent id="sid-87f454a3-dd80-45ed-8cfe-b31533682500" name="结束事件"/>
    <sequenceFlow id="sid-c4348b1d-d319-49c3-996e-4bf53a09668e" sourceRef="sid-ba4b2b53-fbfb-4208-90a0-17daf2aa24ff" targetRef="sid-87f454a3-dd80-45ed-8cfe-b31533682500">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <!-- 终止结束事件 -->
    <endEvent id="sid-4c711416-31a4-441f-91ff-f004e70335a2" name="终止结束事件">
      <!-- terminateAll是否终止全部 -->
      <terminateEventDefinition activiti:terminateAll="true"/>
    </endEvent>
    <exclusiveGateway id="sid-5f9fe128-e1dc-4f95-9806-f11f811cb8c5" name="是否终止结束"/>
    <sequenceFlow id="sid-c22902db-b537-498b-80ca-80f10ef27f69" sourceRef="sid-11eb2beb-26a2-4967-8092-b0f315ff2d21" targetRef="sid-5f9fe128-e1dc-4f95-9806-f11f811cb8c5"/>
    <sequenceFlow id="sid-77f0e117-688d-4ec9-ab8d-708f1e3eda3a" sourceRef="sid-5f9fe128-e1dc-4f95-9806-f11f811cb8c5" targetRef="sid-4c711416-31a4-441f-91ff-f004e70335a2" name="">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${done}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-8f7022c5-98c4-4518-bd66-9df07cb96590" sourceRef="sid-5f9fe128-e1dc-4f95-9806-f11f811cb8c5" targetRef="sid-ba4b2b53-fbfb-4208-90a0-17daf2aa24ff" name="">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!done}]]></conditionExpression>
    </sequenceFlow>
    <subProcess id="sid-e8681835-d9c2-46db-988a-69329dd4e8e6" activiti:exclusive="true" name="子流程">
      <startEvent id="sid-c915ca2e-07ea-4551-9486-071b12ca9a75"/>
      <userTask id="sid-08f8df5d-e397-4c00-8cf6-481c7b3f3b3f" name="保存任务" activiti:assignee="${admin}"/>
      <sequenceFlow id="sid-0ee7ed53-3e26-4b57-967a-7daca3cf7b34" sourceRef="sid-c915ca2e-07ea-4551-9486-071b12ca9a75" targetRef="sid-08f8df5d-e397-4c00-8cf6-481c7b3f3b3f"/>
      <userTask id="sid-a8959d20-bcc8-404f-a57c-488f5cf68ee7" name="删除任务"/>
      <sequenceFlow id="sid-7affbd7a-cf2c-4979-bf71-9038271c0540" sourceRef="sid-08f8df5d-e397-4c00-8cf6-481c7b3f3b3f" targetRef="sid-56b471fa-8b46-4f21-ad10-4d00f38abbda"/>
      <endEvent id="sid-ed37695c-0449-4b66-b978-8b87c3f87062"/>
      <sequenceFlow id="sid-75a8b19e-52c0-4828-a78b-65d97e7445ee" sourceRef="sid-a8959d20-bcc8-404f-a57c-488f5cf68ee7" targetRef="sid-ed37695c-0449-4b66-b978-8b87c3f87062"/>
      <exclusiveGateway id="sid-56b471fa-8b46-4f21-ad10-4d00f38abbda" name="是否终止结束"/>
      <sequenceFlow id="sid-d6e685f3-5451-49e3-8552-ca35b526fd1c" sourceRef="sid-56b471fa-8b46-4f21-ad10-4d00f38abbda" targetRef="sid-a8959d20-bcc8-404f-a57c-488f5cf68ee7" name="">
        <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!done}]]></conditionExpression>
      </sequenceFlow>
      <!-- 子流程终止结束事件 -->
      <endEvent id="sid-27c262f9-1b1c-40aa-b1b2-8ec0b65ef597" name="子流程终止结束事件">
        <!-- terminateAll是否终止全部 -->
        <terminateEventDefinition activiti:terminateAll="false"/>
      </endEvent>
      <sequenceFlow id="sid-ef1f99b2-7898-4cb2-9fb9-dc008e5fc77c" sourceRef="sid-56b471fa-8b46-4f21-ad10-4d00f38abbda" targetRef="sid-27c262f9-1b1c-40aa-b1b2-8ec0b65ef597" name="">
        <conditionExpression xsi:type="tFormalExpression"><![CDATA[${done}]]></conditionExpression>
      </sequenceFlow>
    </subProcess>
    <sequenceFlow id="sid-c25f9150-f65c-4f4f-b68f-435513be2cfe" sourceRef="sid-6a4ff883-3fa4-499d-a380-7373cbcedec0" targetRef="sid-ba4b2b53-fbfb-4208-90a0-17daf2aa24ff"/>
    <sequenceFlow id="sid-b9772e80-3f33-4f9d-baef-b7f43dbd034c" sourceRef="sid-e8681835-d9c2-46db-988a-69329dd4e8e6" targetRef="sid-ba4b2b53-fbfb-4208-90a0-17daf2aa24ff"/>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_terminate">
    <bpmndi:BPMNPlane bpmnElement="terminate" id="BPMNPlane_terminate">
      <bpmndi:BPMNShape id="shape-1f7452d8-2f26-4811-aa95-fa74ad27ebba" bpmnElement="sid-863bb93b-eb19-4d2a-b9e1-8ee1fab94788">
        <omgdc:Bounds x="-295.75" y="-39.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-8b3f6d47-b390-4bc8-9606-2f82b8ac0f09" bpmnElement="sid-580cbd70-e33b-47d6-a18a-05522a7d2025">
        <omgdc:Bounds x="-215.25" y="-44.0" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-ce8ae082-12c5-4461-a4cd-cf0e160a987f" bpmnElement="sid-cbcee4ab-05e4-42e1-91ee-a2498ac5e0a4">
        <omgdi:waypoint x="-265.75" y="-24.0"/>
        <omgdi:waypoint x="-215.25" y="-24.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-7b277561-3677-4f38-8889-6be3eceb0596" bpmnElement="sid-11eb2beb-26a2-4967-8092-b0f315ff2d21">
        <omgdc:Bounds x="-114.97" y="-183.44" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-981075ac-4a51-4605-b21a-882936e6f629" bpmnElement="sid-1a627e97-2c6d-4cc4-b171-62a1522f926e">
        <omgdi:waypoint x="-195.25" y="-43.999996"/>
        <omgdi:waypoint x="-114.96999" y="-143.44"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-d8cf568d-e78a-47d4-b9dc-8c63fcdd1525" bpmnElement="sid-90543e88-ec7b-4efc-a995-ef924cbdf42a">
        <omgdc:Bounds x="-114.97" y="-64.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-8c8cb622-18bf-4356-b422-2d578c600aff" bpmnElement="sid-f8f0cf12-8fcf-4748-b9ff-cd8d95777d77">
        <omgdi:waypoint x="-175.25" y="-24.0"/>
        <omgdi:waypoint x="-114.97" y="-24.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-d65116e4-a530-40c8-83b4-6ba5262266f1" bpmnElement="sid-6a4ff883-3fa4-499d-a380-7373cbcedec0">
        <omgdc:Bounds x="-114.97" y="59.859825" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-85bbffe2-9d89-4304-acab-9a522f8614b7" bpmnElement="sid-4daffcef-5787-4a49-8dd6-10277cee5a8b">
        <omgdi:waypoint x="-195.25" y="-4.0"/>
        <omgdi:waypoint x="-114.97" y="99.859825"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-bac69cf2-0f80-452a-af56-58a55f32860e" bpmnElement="sid-ba4b2b53-fbfb-4208-90a0-17daf2aa24ff">
        <omgdc:Bounds x="472.43527" y="-44.0" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-665eec2e-9e6f-4f12-a86a-2c6b3faf7604" bpmnElement="sid-e0319c6b-316c-4f11-9818-bb4a3c685a93">
        <omgdi:waypoint x="-14.970001" y="-24.0"/>
        <omgdi:waypoint x="23.73204" y="-23.999992"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-23387667-10d7-4565-bfe9-3ff9bc04fa24" bpmnElement="sid-87f454a3-dd80-45ed-8cfe-b31533682500">
        <omgdc:Bounds x="571.7953" y="-39.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-116ef748-963a-489d-86dc-000d59c80918" bpmnElement="sid-c4348b1d-d319-49c3-996e-4bf53a09668e">
        <omgdi:waypoint x="512.4353" y="-24.0"/>
        <omgdi:waypoint x="571.7953" y="-24.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-27350e61-c12e-428f-b400-1250ba36b061" bpmnElement="sid-4c711416-31a4-441f-91ff-f004e70335a2">
        <omgdc:Bounds x="203.17828" y="-233.1627" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-ca2880d9-bc96-45d6-b044-f8eb2a8db79e" bpmnElement="sid-5f9fe128-e1dc-4f95-9806-f11f811cb8c5">
        <omgdc:Bounds x="198.17828" y="-163.43999" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-66f504e4-9c85-485e-be5a-83b57b080811" bpmnElement="sid-c22902db-b537-498b-80ca-80f10ef27f69">
        <omgdi:waypoint x="-14.970001" y="-143.44"/>
        <omgdi:waypoint x="198.17828" y="-143.43999"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-4154d1cb-f311-4d0a-a2ae-e10dc016d67b" bpmnElement="sid-77f0e117-688d-4ec9-ab8d-708f1e3eda3a">
        <omgdi:waypoint x="218.17828" y="-163.43999"/>
        <omgdi:waypoint x="218.17828" y="-203.1627"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-7b1d8532-dd72-4784-848d-1cbcda72f81c" bpmnElement="sid-8f7022c5-98c4-4518-bd66-9df07cb96590">
        <omgdi:waypoint x="238.17828" y="-143.43999"/>
        <omgdi:waypoint x="492.43527" y="-143.44003"/>
        <omgdi:waypoint x="492.43527" y="-44.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-a5f7205f-ade1-4625-9417-a89c629a03e9" bpmnElement="sid-e8681835-d9c2-46db-988a-69329dd4e8e6">
        <omgdc:Bounds x="23.73204" y="-105.08775" width="428.89246" height="162.17552"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-53bc044b-7236-420d-b448-e5b95ba5f124" bpmnElement="sid-c25f9150-f65c-4f4f-b68f-435513be2cfe">
        <omgdi:waypoint x="-14.970001" y="99.85983"/>
        <omgdi:waypoint x="492.43527" y="99.85983"/>
        <omgdi:waypoint x="492.43527" y="-4.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-98938dec-dfac-443f-941d-61352617f002" bpmnElement="sid-c915ca2e-07ea-4551-9486-071b12ca9a75">
        <omgdc:Bounds x="40.701683" y="-53.26657" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-0986c699-6bc6-4792-a8b9-e5407493f7d1" bpmnElement="sid-08f8df5d-e397-4c00-8cf6-481c7b3f3b3f">
        <omgdc:Bounds x="89.83081" y="-78.74213" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-7a1725a0-bfa0-4633-9be7-2d184e3042cc" bpmnElement="sid-0ee7ed53-3e26-4b57-967a-7daca3cf7b34">
        <omgdi:waypoint x="70.70168" y="-38.26657"/>
        <omgdi:waypoint x="89.83081" y="-38.742126"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-acc1260b-a6ea-466c-889e-dd8f8febfe84" bpmnElement="sid-a8959d20-bcc8-404f-a57c-488f5cf68ee7">
        <omgdc:Bounds x="288.61197" y="-78.742134" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-d0b2f31d-d762-4ffe-b756-3bb7dbbbec99" bpmnElement="sid-7affbd7a-cf2c-4979-bf71-9038271c0540">
        <omgdi:waypoint x="189.83081" y="-38.742126"/>
        <omgdi:waypoint x="219.12936" y="-38.742126"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-87c8118d-4545-40dd-90be-6f08f66ebd92" bpmnElement="sid-ed37695c-0449-4b66-b978-8b87c3f87062">
        <omgdc:Bounds x="417.01123" y="-53.742134" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-2165ac9f-237e-4fbc-ae8b-b5aefd5dbc2b" bpmnElement="sid-75a8b19e-52c0-4828-a78b-65d97e7445ee">
        <omgdi:waypoint x="388.61197" y="-38.742134"/>
        <omgdi:waypoint x="417.01123" y="-38.742134"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-e1ff47d6-9b36-48dc-b99d-aa1fc92dc773" bpmnElement="sid-56b471fa-8b46-4f21-ad10-4d00f38abbda">
        <omgdc:Bounds x="219.12936" y="-58.742126" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-7078755c-7ee3-494e-817d-6dac987f283b" bpmnElement="sid-d6e685f3-5451-49e3-8552-ca35b526fd1c">
        <omgdi:waypoint x="259.12936" y="-38.742126"/>
        <omgdi:waypoint x="288.61197" y="-38.742134"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-db69326d-58fb-43c8-820b-012c3c815997" bpmnElement="sid-27c262f9-1b1c-40aa-b1b2-8ec0b65ef597">
        <omgdc:Bounds x="224.12935" y="14.401535" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-4a8cd3a1-e086-4c08-aa6f-4da31d7c750f" bpmnElement="sid-ef1f99b2-7898-4cb2-9fb9-dc008e5fc77c">
        <omgdi:waypoint x="239.12936" y="-18.742126"/>
        <omgdi:waypoint x="239.12935" y="14.401535"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-e6a4a7a6-f742-44ac-b286-9b9aaa32fda0" bpmnElement="sid-b9772e80-3f33-4f9d-baef-b7f43dbd034c">
        <omgdi:waypoint x="452.6245" y="-23.999992"/>
        <omgdi:waypoint x="472.43527" y="-24.0"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

测试流程

@Test
public void deployAndStartProcess() {
    // 部署流程
    Deployment deploy = repositoryService.createDeployment()
            .addClasspathResource("processes/terminate.bpmn20.xml")
            .deploy();
    System.out.println("deploy = " + deploy);

    // 启动流程
    Map<String, Object> variables = new HashMap<>();
    variables.put("superAdmin", "zhangsan");
    variables.put("admin", "lisi");
    variables.put("userGroup", CollectionUtil.newArrayList("group1", "group2"));
    String processDefinitionKey = "terminate";
    ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, processDefinitionKey + ":100001", variables);
    System.out.println("processInstance = " + processInstance);

    // 输出当前任务列表
    this.printTaskList(processInstance.getId());
}

@Test
public void doneTask() {
    // 查询任务
    Task task = taskService.createTaskQuery().processInstanceId("8cce09c3-4092-11ee-8531-18c04dcd4aee").taskAssignee("lisi").singleResult();
    System.out.println("task = " + task);
    // 完成任务
    Map<String, Object> hashMap = new HashMap<>();
    hashMap.put("done", true); // true则终止流程
    taskService.complete(task.getId(), hashMap);

    // 输出当前任务列表
    this.printTaskList(task.getProcessInstanceId());
}

流程执行步骤

// terminateAll,父流程设置为true,子流程设置为false
// 1.部署并启动流程
// 2.当前任务为超级管理员、管理员、用户
// 3.超级管理员完成任务并done=true,整个流程终止并结束
// 4.管理员完成任务,进入子流程,完成保存任务done=true,终止子流程,继续父流程任务。

// terminateAll,父流程设置为true,子流程设置为true
// 1.部署并启动流程
// 2.当前任务为超级管理员、管理员、用户
// 3.超级管理员完成任务并done=true,整个流程终止并结束
// 4.管理员完成任务,进入子流程,完成保存任务done=true,整个流程终止并结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/301341.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql服务多实例运行

1、官网下载mysql安装包 https://downloads.mysql.com/archives/community/ 2、解压安装包 tar -zxvf mysql-8.1.0-linux-glibc2.28-aarch64.tar.xz -C /usr/localmv /usr/local/mysql-8.1.0-linux-glibc2.28-aarch64 /usr/local/mysql 3、创建mysql用户组 groupadd…

某月瓜网站js盾动态调试方案

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;若有侵权&#xff0c;请添加&#xff08;wx&#xff1a;wyqlxl99&#xff09;联系删除 本文章同步微…

express框架

目录 一、express介绍二、express 使用2.1 express下载2.2 express初体验 三、express 路由3.1 路由的使用3.2 获取参数3.3 获取路由参数 四、express响应设置五、express中间件5.1 什么是中间件5.2 中间件的作用5.3 中间件的类型5.3.1 定义全局中间件5.3.2 多个全局中间件5.3.…

一种创新的白细胞检测方法:多级特征融合与变形自注意力DETR(MFDS-DETR)

论文&#xff1a;https://arxiv.org/abs/2401.00926 引言 在标准的医院血液检查中&#xff0c;传统的流程需要医生通过显微镜手动从患者的血液显微图像中分离白细胞&#xff0c;然后通过自动白细胞分类器对分离的白细胞进行分类&#xff0c;以确定血样中不同类型白细胞的数量…

ooTD I 撞色插肩长T真的怎么搭都好看

这款撞色插肩长T真的很难不爱 三种色调&#xff0c;每种撞色都清新自然 青春活力感十足&#xff0c;真的很好看 它用的是32S紧密双纱绒面料 手感细腻柔软&#xff0c;有弹力上身也很舒适 衣服上的印花图案精致又可爱 小朋友穿简直不要太好看 撞色插肩的设计又有弱化肩部…

【REST2SQL】04 REST2SQL第一版Oracle版实现

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 REST2SQL的第一个版本&#xff0c;只支持Oracle数据库&#xff0c;以后会逐步加入其它数据看的支持。 项目文件组织如下&#xff1a; 1 REST2SQL为项目主目录 …

005-Zynq基操之如何去玩EMIO接口(走过路过千万不要错过)

文章目录 前言一、EMIO是啥含义二、两种EMIO的使用1.PS端外设引出来的EMIO2.正常的EMIO口3.PS端驱动源码 总结 前言 今天分享这个主要原因是&#xff0c;把最基础的EMIO接口弄清楚咋操作的&#xff0c;咱们就可以做一些由PS端控制PL端的器件小功能&#xff0c;最常见的就是我们…

SqueezeNet:通过紧凑架构彻底改变深度学习

一、介绍 在深度学习领域&#xff0c;对效率和性能的追求往往会带来创新的架构。SqueezeNet 是神经网络设计的一项突破&#xff0c;体现了这种追求。本文深入研究了 SqueezeNet 的复杂性&#xff0c;探讨其独特的架构、设计背后的基本原理、应用及其对深度学习领域的影响。 在创…

vue项目中的录屏插件recordrtc且带声音

vue项目中的录屏插件recordrtc且带声音 一、效果图二、安装插件三、直接上代码 一、效果图 其中窗口录屏不带声音&#xff0c;chrome标签和整个屏幕的录屏是带声音的 二、安装插件 npm i recordrtc 三、直接上代码 <template><div class"record-page">…

Qt优秀开源项目之二十:RedPanda-CPP(小熊猫C++)

小熊猫C是跨平台、轻量易用的开源C/C集成开发环境。 官网&#xff1a;http://royqh.net/redpandacpp github&#xff1a;https://github.com/royqh1979/RedPanda-CPP 小熊猫C&#xff08;原名小熊猫Dev-C 7)是基于Qt开发的Dev-C替代版本。和经典的Dev-C 5.11、新的Embarcadero …

Minio部署在服务器上,分享图片等文件提示,签名不对

问题描述: 上传没问题 下载没问题 就是分享有问题,签名有问题 找了很多解释,什么nginx代理问题啊,什么端口问题啊 什么防火墙问题啊 都是扯淡,一点用没有 最后发现,我的分享链接是127.0.0.1的地址,并不是我的服务器本机的地址 我访问图片都是要把ip改了再去访问,但是一开始并没…

C#,数值计算,求平方根之巴比伦算法(Babylonian algorithm)的源代码

平方根的巴比伦算法。 1 巴比伦算法介绍一 巴比伦算法可能算是最早的用于计算$sqrt{S}$的算法之一&#xff0c;因为其可以用牛顿法导出&#xff0c;因此在很多地方也被成为牛顿法。其核心思想在于为了计算x的平方根&#xff0c;可以从某个任意的猜测值g开始计算。在真实的运算…

【docker】centos 使用 Nexus Repository 搭建私有仓库

Nexus Repository 是一种流行的软件仓库管理工具&#xff0c;它可以帮助您搭建私有仓库&#xff0c;以便在内部网络或私有云环境中存储、管理和分发各种软件包和组件。 它常被用于搭建Maven的镜像仓库。本文演示如何用Nexus Repository搭建docker 私有仓库。 使用Nexus Repos…

【AIGC工具】我找到了使用大模型问答的最短路径!

大家好&#xff0c;我是豆小匠~ 好久没介绍提高效率的工具啦&#xff0c;这次来介绍一个UTools的骚操作&#xff0c;可以极速打开LLM进行提问&#xff01; 完成后的效果是&#xff1a; 快捷键调出输入框&#xff1b;2. 输入问题&#xff1b;3. 选择模型&#xff1b;4. 回车提…

基于单片机设计的智慧农业大棚检测系统

一、设计目标 本项目基于单片机设计一个智慧农业大棚检测系统&#xff0c;以提供实时监测和管理大棚环境的关键参数。系统支持环境温度、湿度检测&#xff0c;光照强度检测&#xff0c;并能根据预设的阀值进行报警提示。为了实现数据的显示和管理&#xff0c;该系统还利用Qt开…

【数据结构】队列

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 队列1.1 队列的概念及结构1.2 队列的实现 2.栈和队列面试题3.概念选择题 1. 队列 1.1 队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c…

Kibana错误【Kibana server is not ready yet】

docker部署kibana成功后&#xff0c;访问http://localhost:5601 ,页面返回“Kibana server is not ready yet” 运行 docker logs kibana 后提示 该错误提示为kibana的版本和es的版本不一致&#xff0c;将两个组件的版本更新一致即可 还有另外一种错误 在kibana的kibana.yml配…

本地部署 gemini-openai-proxy,使用 Google Gemini 实现 Openai API

本地部署 gemini-openai-proxy&#xff0c;使用Google Gemini 实现 Openai API 0. 背景1. 申请 Google Gemini API key2. (Optional)Google Gemini 模型说明3. gemini-openai-proxy Github 地址4. 本地部署 gemini-openai-proxy5. 测试 0. 背景 使用 Google Gemini 实现 Opena…

在pycharm中执行 os.makedirs 提示用户名或密码不正确

问题&#xff1a;在pycharm中运行脚本&#xff0c;在 \10.0.21.249\share 共享目录下创建目录提示错误 发现&#xff1a;手动在该目录下创建目录没有问题。 解决方法&#xff1a; 切换到cmd 命令行运行该脚本成功创建 猜测&#xff1a;感觉应该是pycharm中使用的用户名和密码存…

算法的复杂度分析

[王有志](https://www.yuque.com/wangyouzhi-u3woi/dfhnl0/hqrch62un0cc9sp2?singleDoc# 《&#x1f525;快来关注我》)&#xff0c;一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群&#xff1a;[共同富裕的Java人](https://www.yuque.com/wangyouzhi-u3woi/dfhnl0/n…