当前位置:网站首页>Learning records [email protected] Moveactivityidto task fallback special case analysis
Learning records [email protected] Moveactivityidto task fallback special case analysis
2022-07-19 14:46:00 【Coach, I want to learn programming】
This article uses several examples moveActivityIdTo Analysis of the situation of the fallback task , They are all special , It includes gateway and countersignature, that is, multi instance
Note that the interview and next account are countersigned .
flow chart

bpmn
<?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:flowable="http://flowable.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.flowable.org/processdef" exporter="Flowable Open Source Modeler" exporterVersion="6.7.2">
<process id="shenpi1" name=" The examination and approval 1" isExecutable="true">
<startEvent id="startEvent1" flowable:formKey="form1" flowable:formFieldValidation="true"></startEvent>
<userTask id="task1" name="task1" flowable:assignee="${task1User}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-FC6E2281-7982-46E4-8DE1-C0E348423AEE" sourceRef="startEvent1" targetRef="task1"></sequenceFlow>
<endEvent id="sid-046F1A3D-D72A-4E4A-B96E-67CEEDB5546A"></endEvent>
<sequenceFlow id="sid-682B5211-BD85-47CC-A1A4-DFC096B93EA9" sourceRef="task1" targetRef="sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3"></sequenceFlow>
<inclusiveGateway id="sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3"></inclusiveGateway>
<userTask id=" signing " name=" signing " flowable:assignee="${signUser}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<userTask id=" Interview " name=" Interview " flowable:assignee="${interviewUser}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" flowable:collection="interviewUserList" flowable:elementVariable="interviewUser">
<extensionElements></extensionElements>
</multiInstanceLoopCharacteristics>
</userTask>
<userTask id=" Next door " name=" Next door " flowable:assignee="${settledownUser}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" flowable:collection="settledownUserList" flowable:elementVariable="settledownUser">
<extensionElements></extensionElements>
</multiInstanceLoopCharacteristics>
</userTask>
<inclusiveGateway id="sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F"></inclusiveGateway>
<userTask id="task3" name="task3" flowable:assignee="${task3User}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-D0D8A122-4BAD-465F-9E47-0BFE56443C2B" sourceRef="sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F" targetRef="task3"></sequenceFlow>
<userTask id="task4" name="task4" flowable:assignee="${task4User}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-F943C505-8338-4C48-B981-A6F2F5B2B880" sourceRef="task3" targetRef="task4"></sequenceFlow>
<sequenceFlow id="sid-51659918-0236-49D6-8492-7733C325D21E" sourceRef="task4" targetRef="sid-046F1A3D-D72A-4E4A-B96E-67CEEDB5546A"></sequenceFlow>
<sequenceFlow id="sid-41BBDCE1-FF5E-45FD-BDA8-37AD7A2FF3FE" sourceRef="sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3" targetRef=" signing "></sequenceFlow>
<sequenceFlow id="sid-EF358D70-81F5-4A1B-AA65-FEC76F6C1AC8" name=" Whether to leave the account " sourceRef="sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3" targetRef=" Next door ">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${isSettledown}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-308E451E-FB93-404A-937F-D9743F9C394E" name=" Whether to interview " sourceRef="sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3" targetRef=" Interview ">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${isInterview}]]></conditionExpression>
</sequenceFlow>
<userTask id=" After signing " name=" After signing " flowable:assignee="${signafterUser}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-89E68DE4-FC1D-4982-B872-FAC7CD294CB6" sourceRef=" signing " targetRef=" After signing "></sequenceFlow>
<sequenceFlow id="sid-A14E6EDF-2300-4E8C-AC0C-346373724498" sourceRef=" After signing " targetRef="sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F"></sequenceFlow>
<userTask id=" After the interview " name=" After the interview " flowable:assignee="${interviewafterUser}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-A22F3A80-4729-4908-ADE2-A5E57A04D9DC" sourceRef=" Interview " targetRef=" After the interview "></sequenceFlow>
<sequenceFlow id="sid-59A84E5A-A993-402C-ACBD-018F86773CF9" sourceRef=" After the interview " targetRef="sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F"></sequenceFlow>
<userTask id=" After leaving the house " name=" After leaving the house " flowable:assignee="${settledownafterUser}" flowable:formFieldValidation="true">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-2DB7DC75-36E4-4103-9978-2D463273C55E" sourceRef=" Next door " targetRef=" After leaving the house "></sequenceFlow>
<sequenceFlow id="sid-9A371B81-3050-4A98-9EA4-716D8CBDE88B" sourceRef=" After leaving the house " targetRef="sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_shenpi1">
<bpmndi:BPMNPlane bpmnElement="shenpi1" id="BPMNPlane_shenpi1">
<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
<omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task1" id="BPMNShape_task1">
<omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-046F1A3D-D72A-4E4A-B96E-67CEEDB5546A" id="BPMNShape_sid-046F1A3D-D72A-4E4A-B96E-67CEEDB5546A">
<omgdc:Bounds height="28.0" width="28.0" x="1170.0" y="164.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3" id="BPMNShape_sid-958847DE-F754-4CAE-9BDC-A10F4675FAD3">
<omgdc:Bounds height="40.0" width="40.0" x="320.0" y="158.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement=" signing " id="BPMNShape_ signing ">
<omgdc:Bounds height="80.0" width="100.0" x="480.0" y="30.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement=" Interview " id="BPMNShape_ Interview ">
<omgdc:Bounds height="80.0" width="100.0" x="465.0" y="135.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement=" Next door " id="BPMNShape_ Next door ">
<omgdc:Bounds height="80.0" width="100.0" x="480.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F" id="BPMNShape_sid-A43ADF34-6A6C-442D-A852-E361D3B1C81F">
<omgdc:Bounds height="40.0" width="40.0" x="780.0" y="158.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task3" id="BPMNShape_task3">
<omgdc:Bounds height="80.0" width="100.0" x="855.0" y="135.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task4" id="BPMNShape_task4">
<omgdc:Bounds height="80.0" width="100.0" x="990.0" y="138.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement=" After signing " id="BPMNShape_ After signing ">
<omgdc:Bounds height="80.0" width="100.0" x="625.0" y="30.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement=" After the interview " id="BPMNShape_ After the interview ">
<omgdc:Bounds height="80.0" width="100.0" x="625.0" y="138.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement=" After leaving the house " id="BPMNShape_ After leaving the house ">
<omgdc:Bounds height="80.0" width="100.0" x="615.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-A14E6EDF-2300-4E8C-AC0C-346373724498" id="BPMNEdge_sid-A14E6EDF-2300-4E8C-AC0C-346373724498" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.0" flowable:targetDockerY="20.0">
<omgdi:waypoint x="721.235515964831" y="109.95"></omgdi:waypoint>
<omgdi:waypoint x="789.2670527670527" y="168.72961373390558"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-9A371B81-3050-4A98-9EA4-716D8CBDE88B" id="BPMNEdge_sid-9A371B81-3050-4A98-9EA4-716D8CBDE88B" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.0" flowable:targetDockerY="20.0">
<omgdi:waypoint x="714.9499999999999" y="242.2222222222222"></omgdi:waypoint>
<omgdi:waypoint x="788.6075949367088" y="186.58607594936709"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-2DB7DC75-36E4-4103-9978-2D463273C55E" id="BPMNEdge_sid-2DB7DC75-36E4-4103-9978-2D463273C55E" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="579.9499999998759" y="280.0"></omgdi:waypoint>
<omgdi:waypoint x="614.999999999972" y="280.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-59A84E5A-A993-402C-ACBD-018F86773CF9" id="BPMNEdge_sid-59A84E5A-A993-402C-ACBD-018F86773CF9" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.0" flowable:targetDockerY="20.0">
<omgdi:waypoint x="724.9499999999999" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="780.0" y="178.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-51659918-0236-49D6-8492-7733C325D21E" id="BPMNEdge_sid-51659918-0236-49D6-8492-7733C325D21E" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="1089.9499999999825" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="1170.0" y="178.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-FC6E2281-7982-46E4-8DE1-C0E348423AEE" id="BPMNEdge_sid-FC6E2281-7982-46E4-8DE1-C0E348423AEE" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="129.9499984899576" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="174.9999999999917" y="178.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-A22F3A80-4729-4908-ADE2-A5E57A04D9DC" id="BPMNEdge_sid-A22F3A80-4729-4908-ADE2-A5E57A04D9DC" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="564.95" y="175.0"></omgdi:waypoint>
<omgdi:waypoint x="595.0" y="175.0"></omgdi:waypoint>
<omgdi:waypoint x="595.0" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="624.9999999999812" y="178.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-89E68DE4-FC1D-4982-B872-FAC7CD294CB6" id="BPMNEdge_sid-89E68DE4-FC1D-4982-B872-FAC7CD294CB6" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="579.95" y="70.0"></omgdi:waypoint>
<omgdi:waypoint x="625.0" y="70.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-F943C505-8338-4C48-B981-A6F2F5B2B880" id="BPMNEdge_sid-F943C505-8338-4C48-B981-A6F2F5B2B880" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="954.9499999999999" y="176.11"></omgdi:waypoint>
<omgdi:waypoint x="989.9999999999998" y="176.88888888888889"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-D0D8A122-4BAD-465F-9E47-0BFE56443C2B" id="BPMNEdge_sid-D0D8A122-4BAD-465F-9E47-0BFE56443C2B" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="819.8034722222221" y="177.85185185185185"></omgdi:waypoint>
<omgdi:waypoint x="854.9999999999997" y="176.67296650717702"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-EF358D70-81F5-4A1B-AA65-FEC76F6C1AC8" id="BPMNEdge_sid-EF358D70-81F5-4A1B-AA65-FEC76F6C1AC8" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="348.6019627631508" y="189.3472782333503"></omgdi:waypoint>
<omgdi:waypoint x="417.79998779296875" y="282.0"></omgdi:waypoint>
<omgdi:waypoint x="480.0" y="280.89037423468073"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-308E451E-FB93-404A-937F-D9743F9C394E" id="BPMNEdge_sid-308E451E-FB93-404A-937F-D9743F9C394E" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="359.43685852981963" y="178.5"></omgdi:waypoint>
<omgdi:waypoint x="412.5" y="178.5"></omgdi:waypoint>
<omgdi:waypoint x="412.5" y="175.0"></omgdi:waypoint>
<omgdi:waypoint x="465.0" y="175.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-682B5211-BD85-47CC-A1A4-DFC096B93EA9" id="BPMNEdge_sid-682B5211-BD85-47CC-A1A4-DFC096B93EA9" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.5" flowable:targetDockerY="20.5">
<omgdi:waypoint x="274.94999999999806" y="178.21623376623378"></omgdi:waypoint>
<omgdi:waypoint x="320.4130434782609" y="178.4130434782609"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-41BBDCE1-FF5E-45FD-BDA8-37AD7A2FF3FE" id="BPMNEdge_sid-41BBDCE1-FF5E-45FD-BDA8-37AD7A2FF3FE" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="347.3709969788519" y="165.3882175226586"></omgdi:waypoint>
<omgdi:waypoint x="397.5" y="70.0"></omgdi:waypoint>
<omgdi:waypoint x="479.99999999999966" y="70.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
Fallback 1
The red box indicates the current node , Arrows indicate where to go back from .
The process has just passed task1, Now back from the signing node to task1, I originally thought that this operation would bring all parallel nodes back to task1, But it didn't , Instead, it revoked the signing task , Multiple task1, Other next door interview tasks are still , Then submit task1, Then a new household assignment and interview task came into being .
// From signing back to task1, Just finished task1, Did not complete other tasks
@Transactional
public void back1() {
Task task = taskService.createTaskQuery().taskAssignee("signUser").singleResult();
runtimeService.createChangeActivityStateBuilder().processInstanceId(task.getProcessInstanceId()).moveActivityIdTo(task.getTaskDefinitionKey(),"task1").changeState();
}
Actually, follow the above procedure moveActivityIdTo, It's really moving a single ( Not countersignature ) Node to a node , Other parallel tasks will not be rolled back .
Fallback 2
The red box indicates the current node , Arrows indicate where to go back from .
Go back from the interview to task1, Just finished task1, Did not complete other tasks , As a result, other countersignature interview tasks were also returned , This is more reasonable , in real life , Multiple people countersign if one of them rejects the task , Then other countersignature tasks also fall back , Then conduct a new countersignature . Like voting , This vote did not meet the minimum proportion requirement , The vote does not hold , Next time everyone votes again , That's what makes sense .
// Go back from the interview to task1, Just finished task1, Did not complete other tasks
@Transactional
public void back2() {
Task task = taskService.createTaskQuery().taskAssignee("interviewUser1").list().get(0);
runtimeService.createChangeActivityStateBuilder().processInstanceId(task.getProcessInstanceId()).moveActivityIdTo(task.getTaskDefinitionKey(),"task1").changeState();
}
Fallback 3
The red box indicates the current node , Arrows indicate where to go back from .
Back from next account to signing , That is, cross branch jump between parallel branches , I thought it would report an error , But it worked , No report error , But what's the point , Although there is no procedural error , In fact, this operation is unreasonable .
// Back from next account to signing , Just finished task1, Did not complete other tasks
@Transactional
public void back3() {
Task task = taskService.createTaskQuery().taskAssignee("settledownUser1").list().get(0);
runtimeService.createChangeActivityStateBuilder().processInstanceId(task.getProcessInstanceId()).moveActivityIdTo(task.getTaskDefinitionKey(),"task1").changeState();
}
Fallback 4
The red box indicates the current node , Arrows indicate where to go back from .
After the next account, the node returns to the next countersignature node , The result is also reasonable , There are two next door tasks , That is to countersign again .
// Go back to the next account for countersignature
@Transactional
public void back4() {
Task task = taskService.createTaskQuery().taskAssignee("settledownafterUser").list().get(0);
runtimeService.createChangeActivityStateBuilder().processInstanceId(task.getProcessInstanceId()).moveActivityIdTo(task.getTaskDefinitionKey()," Next door ").changeState();
}
Fallback 5
The red box indicates the current node , Arrows indicate where to go back from .
task3 Back to back to interview and countersignature , The result is quite reasonable , There are two interview tasks . While other branches are in the completion state , stay task3 Waiting for .
// from task3 Back to interview and countersignature
@Transactional
public void back5() {
Task task = taskService.createTaskQuery().taskAssignee("task3User").list().get(0);
runtimeService.createChangeActivityStateBuilder().processInstanceId(task.getProcessInstanceId()).moveActivityIdTo(task.getTaskDefinitionKey()," Interview ").changeState();
}
边栏推荐
- C speech Young's matrix · left-hand string · judge whether the string is rotated
- Redis 与 Mysql 的数据一致性
- ospf-LSA
- [Luogu p3220] and not (construction) (digit DP) (inference)
- Alibaba微服务组件Nacos注册中心
- Redis源码与设计剖析 -- 2.链表
- 44、使用OrienMask进行实例分割目标检测,并进行mnn部署和ncnn部署
- si446使用记录(三):MATCH功能
- ClassNotFoundException:com.tongweb.geronimo.osgi.locator.ProviderLocator
- Code runner for vs code, with more than 40million downloads! Support more than 50 languages
猜你喜欢
随机推荐
[Axi] interpret the additional signals of the Axi protocol (QoS signal, region signal, and user signal)
Redis source code and design analysis -- 4 Jump table
Win10 Microsoft Store cannot be opened (enable TLS 1.2)
STM32 positioning hardfault location method and encountered situation in keil environment
Excellent jar package startup shell script collection
SDL image display
Code Runner for VS Code,下载量突破 4000 万!支持超过50种语言
Problème de la valeur maximale de la fenêtre coulissante
Pyside2嵌入Matplotlib的绘图
数据填报、报表展示哪家强?亿信ABI给你答案
Logu: p4516 [jsoi2018] stealth action (tree DP, tree grouping knapsack statistical scheme number)
Sub database and sub table
2021 年全国职业院校技能大赛 网络搭建与应用赛项
ClassNotFoundException:com. tongweb. geronimo. osgi. locator. ProviderLocator
07--- Brewster point
详解C语言文件操作
CompositionAPI 组件开发范式
ospf-LSA
ShanDong Multi-University Training #3
Opencv template








