前端做用vue做后台多还是做网站多,常州云之家网站建设公司怎么样,网站建设 价格低,网页制作怎么下载文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介
前面我们已经介绍了Camunda的基本操作、任务、表#xff1a;
Camunda组件与服务与… 文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介
前面我们已经介绍了Camunda的基本操作、任务、表
Camunda组件与服务与基本操作Camunda ScriptTask SendTask ReceiveTask操作Camunda中强大的监听服务Camunda最基本、最常用的表梳理及如何通过服务定位到相关表
这一篇我们介绍一下Camunda的外部任务。
很多时候任务并不是业务老师来完成而是外部系统来完成。
这种情况如何交互呢
提供接口吗
Camunda提供了更好的方式外部服务只需要在流程图中创建一个服务节点配置为External就可以。
然后其他系统可以监听指定的topic流程到了就可以获取到通知完成之后还可以自动完成任务。
流程图 设置为type为External并指定topic。
具体流程图xml我放在最后需要自取。
外部系统
首先我们模拟一个外部系统监听任务。
pom.xml
最主要是camunda-external-task-client
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdvip.meet/groupIdartifactIdcamunda-out-task/artifactIdversion1.0.0/versionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.camunda.bpm/groupIdartifactIdcamunda-external-task-client/artifactIdversion7.15.0/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.5.6/version/dependencydependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.4.0-b180830.0359/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.34/version/dependency/dependenciesbuildplugins/plugins/build/projectlogback.xml
?xml version1.0 encodingUTF-8?
!DOCTYPE configuration
configurationproperty namelog.path valueD:/logs/camunda-out-task /appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{50} - %msg%n/pattern/encoder/appender!--控制框架输出日志--logger nameorg.slf4j levelINFO/logger nameorg.springframework levelINFO/rootappender-ref refSTDOUT levelINFO //root
/configuration监听类
package vip.meet;import lombok.extern.slf4j.Slf4j;
import org.camunda.bpm.client.ExternalTaskClient;Slf4j
public class UpWorker {public static void main(String[] args) {ExternalTaskClient client ExternalTaskClient.create()// 依据实际情况填写程序的IP和端口.baseUrl(http://localhost:8088/engine-rest).asyncResponseTimeout(10000).lockDuration(10000).workerId(监听流程任务).build();client// 要处理的主题.subscribe(起床了)// 流程实例启动设置的业务key
// .businessKey(out-task-key)
// 流程定义时设置的业务key.processDefinitionKeyIn(pi-out-001)
// .processDefinitionId(pi-out-001:2:ae842ab3-4179-11ef-b67d-ac74b10c44ef).lockDuration(30000)// 处理任务逻辑.handler((externalTask, externalTaskService) - {String item externalTask.getVariable(item);Integer money externalTask.getVariable(money);log.info(获取任务参数:item:{},money:{}, money, item);// 完成任务externalTaskService.complete(externalTask);}).open();}
}其中subscribe是要订阅的主题还可以设置businessKey、processDefinitionKey、processDefinitionId等参数来监听指定流程。
处理逻辑可以通过ExternalTask获取相关流程参数ExternalTaskService来完成任务。
有几个参数需要说明一下
lockDuration不是轮询时间只有一个默认的退火轮询策略就是如果没有任务轮询时间间隔会越来越长直到接受到任务重新开始计算时间businessKey是业务流程启动时指定的实例业务key多个实例可以使用相同的keyprocessDefinitionKey是业务流程定义时指定的key多个流程可以使用相同key只是版本号不同processDefinitionId是流程定义Camunda生成的id这个每次都会变不建议使用这个来过滤 启动流程实例
不知道怎么搭建环境的可以先看一下下面这2篇
Camunda组件与服务与基本操作Camunda最基本、最常用的表梳理及如何通过服务定位到相关表
可以直接请求 post urlhttp://localhost:8088/engine-rest/process-definition/key/{流程id}/start
注意版本启动实例接口文档
{money: {value: 1024,type: integer},item: {value: 你干嘛}
}如果流程中没有设置执行人这里可以指派。 然后我们可以在外部系统查看有没有监听到 我们可以看到外部系统已经接收到任务了在回去看可以发现任务已经完成流程结束。
常见问题
Public Key Retrieval is not allowed的解决方法
数据库url链接中添加allowPublicKeyRetrievaltrue参数。
java.lang.reflect.InaccessibleObjectException
Cause: java.lang.reflect.InaccessibleObjectException: Unable to make public int java.util.XXXX.size() accessible: module java.base does not “opens java.util” to unnamed module xxxx
MyBatis Ognl反射出错设置vm参数–add-opens java.base/java.utilALL-UNNAMED 流程图xml
?xml version1.0 encodingUTF-8?
bpmn:definitions xmlns:bpmnhttp://www.omg.org/spec/BPMN/20100524/MODEL xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:dchttp://www.omg.org/spec/DD/20100524/DC xmlns:camundahttp://camunda.org/schema/1.0/bpmn xmlns:dihttp://www.omg.org/spec/DD/20100524/DI xmlns:modelerhttp://camunda.org/schema/modeler/1.0 idDefinitions_1avcqjw targetNamespacehttp://bpmn.io/schema/bpmn exporterCamunda Modeler exporterVersion5.19.0 modeler:executionPlatformCamunda Platform modeler:executionPlatformVersion7.15.0bpmn:process idpi-out-001 name外部任务流程 isExecutabletrue camunda:historyTimeToLive180bpmn:startEvent idStartEvent_1bpmn:outgoingFlow_1giqjon/bpmn:outgoing/bpmn:startEventbpmn:sequenceFlow idFlow_1giqjon sourceRefStartEvent_1 targetRefActivity_1lwbfpu /bpmn:userTask idActivity_1lwbfpu name前置任务 camunda:assigneedemobpmn:incomingFlow_1giqjon/bpmn:incomingbpmn:outgoingFlow_1c1kuaz/bpmn:outgoing/bpmn:userTaskbpmn:sequenceFlow idFlow_1c1kuaz sourceRefActivity_1lwbfpu targetRefActivity_0oezzr5 /bpmn:serviceTask idActivity_0oezzr5 name外部任务 camunda:typeexternal camunda:topic起床了bpmn:incomingFlow_1c1kuaz/bpmn:incomingbpmn:outgoingFlow_0yftk9w/bpmn:outgoing/bpmn:serviceTaskbpmn:endEvent idEvent_17b6xzmbpmn:incomingFlow_0yftk9w/bpmn:incoming/bpmn:endEventbpmn:sequenceFlow idFlow_0yftk9w sourceRefActivity_0oezzr5 targetRefEvent_17b6xzm //bpmn:processbpmndi:BPMNDiagram idBPMNDiagram_1bpmndi:BPMNPlane idBPMNPlane_1 bpmnElementpi-out-001bpmndi:BPMNShape id_BPMNShape_StartEvent_2 bpmnElementStartEvent_1dc:Bounds x179 y102 width36 height36 //bpmndi:BPMNShapebpmndi:BPMNShape idActivity_05oodpp_di bpmnElementActivity_1lwbfpudc:Bounds x310 y80 width100 height80 /bpmndi:BPMNLabel //bpmndi:BPMNShapebpmndi:BPMNShape idActivity_1oc0pm3_di bpmnElementActivity_0oezzr5dc:Bounds x510 y80 width100 height80 /bpmndi:BPMNLabel //bpmndi:BPMNShapebpmndi:BPMNShape idEvent_17b6xzm_di bpmnElementEvent_17b6xzmdc:Bounds x712 y102 width36 height36 //bpmndi:BPMNShapebpmndi:BPMNEdge idFlow_1giqjon_di bpmnElementFlow_1giqjondi:waypoint x215 y120 /di:waypoint x310 y120 //bpmndi:BPMNEdgebpmndi:BPMNEdge idFlow_1c1kuaz_di bpmnElementFlow_1c1kuazdi:waypoint x410 y120 /di:waypoint x510 y120 //bpmndi:BPMNEdgebpmndi:BPMNEdge idFlow_0yftk9w_di bpmnElementFlow_0yftk9wdi:waypoint x610 y120 /di:waypoint x712 y120 //bpmndi:BPMNEdge/bpmndi:BPMNPlane/bpmndi:BPMNDiagram
/bpmn:definitions