Camunda bpmn计时器事件找不到java委托
我有一个简单的bpmn流程:Camunda bpmn计时器事件找不到java委托,java,timer,camunda,Java,Timer,Camunda,我有一个简单的bpmn流程: <?xml version="1.0" encoding="UTF-8"?> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="h
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0m0cnse" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
<bpmn:process id="Process_1aegwvb" isExecutable="true">
<bpmn:sequenceFlow id="Flow_1dfd8um" sourceRef="StartEvent_1" targetRef="Activity_047mv6x" />
<bpmn:endEvent id="Event_1vradpp">
<bpmn:incoming>Flow_19hnbhv</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_19hnbhv" sourceRef="Activity_047mv6x" targetRef="Event_1vradpp" />
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_1dfd8um</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_1ah7red">
<bpmn:timeCycle xsi:type="bpmn:tFormalExpression">0 0/5 * * * ?</bpmn:timeCycle>
</bpmn:timerEventDefinition>
</bpmn:startEvent>
<bpmn:serviceTask id="Activity_047mv6x" name="Get users" camunda:class="*.Cron">
<bpmn:incoming>Flow_1dfd8um</bpmn:incoming>
<bpmn:outgoing>Flow_19hnbhv</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1aegwvb">
<bpmndi:BPMNEdge id="Flow_19hnbhv_di" bpmnElement="Flow_19hnbhv">
<di:waypoint x="370" y="117" />
<di:waypoint x="432" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1dfd8um_di" bpmnElement="Flow_1dfd8um">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Event_1vradpp_di" bpmnElement="Event_1vradpp">
<dc:Bounds x="432" y="99" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_11i5xth_di" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_01expgb_di" bpmnElement="Activity_047mv6x">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
}
2020年9月24日10:40:05.164严重[pool-2-thread-3]org.camunda.commons.logging.BaseLogger.logError引擎-16006 BPMN堆栈跟踪:
活动\u 047mv6x(活动执行,流程实例[4ed42252-fe52-11ea-9efd-12baf36f6a87])
活动\u 047mv6x,名称=获取用户
^
|
StarteEvent_1
2020年9月24日10:40:05.166严重[pool-2-thread-3]org.camunda.commons.logging.BaseLogger.logError ENGINE-16004关闭命令上下文时异常:ENGINE-09008实例化类“.Cron”时异常:ENGINE-09017无法加载类“.Cron”:.Cron
org.camunda.bpm.engine.ProcessEngineeException:engine-09008实例化类“.Cron”时异常:engine-09017无法加载类“*.Cron”:*.Cron
在org.camunda.bpm.engine.impl.util.EngineUtilLogger.ExceptionWhileInstantingClass(EngineUtilLogger.java:81)上
原因:java.lang.ClassNotFoundException:.Cron
位于java.net.URLClassLoader.findClass(URLClassLoader.java:382)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于org.camunda.bpm.engine.impl.util.reflectil.loadClass(reflectil.java:87)
... 92多
您的流程模型包含一个实现类型为Java类的用户任务。 Java类名设置为:*.Cron 因此,当您运行该进程时,引擎正试图查找并实例化一个同名的类 要实现可在流程执行期间调用的类,请 类需要实现 org.camunda.bpm.engine.delegate.JavaDelegate接口,并提供 execute方法中需要的逻辑。当流程执行到达时 在这个特定的步骤中,它将执行在 方法,并将活动保留为默认的BPMN 2.0方式 您需要更改流程模型以引用实际存在的类()或使用其他实现方法 您的Docker映像可能基于Camunda BPM运行。在这个发行版中,可以在userlib文件夹中放置额外的jar。 但是,由于java世界中似乎不适合在家中,所以您可能需要考虑调用服务的不同方法。例如,您可以将服务任务的实现更改为脚本任务或外部服务任务
通过使用Cron类打包创建不同的模块,解决了这个问题。
然后将其添加为另一个web应用程序。由于某些原因,我在创建问题时将实际路径更改为类。类确实存在,若我手动启动该进程,我可以调试它。公共类Cron实现JavaDelegate{@Override public void execute(DelegateExecution DelegateExecution){//some code}}。您需要向Camunda提供完全限定的类名。“无法加载类”.Cron':。”表明您尚未加载类。这堂课的套餐是什么?也许你可以用最新的信息更新问题中的模型和错误。
@Override
public void execute(DelegateExecution delegateExecution) {
System.out.println("Test");
}