当前位置: 首页 > 知识库问答 >
问题:

bpm方案(Alfresco的Activiti 6)中计时器事件后存在服务任务或脚本任务时出错

戈曾琪
2023-03-14

我使用Activiti 6,我有一些问题。如果我将服务任务或脚本任务放在bpm方案中的计时器事件之后,则会出现错误,并且进程不会继续并保持在计时器上。如果是服务任务,则存在以下错误:

couldn't instantiate <full_name_of_the_class>

其中是服务任务的“class”属性中指定的类的完整限定名

如果是脚本任务,则存在以下错误:

Can't find scripting engine for 'groovy'

同时,服务任务中指定的所有类都存在,并且“groovy”库已连接。

有趣的是,这适用于5-10种情况中的一种,并且不会出现错误。

它也适用于Activiti Modeler。总是我不明白为什么它在我的应用程序中不起作用(我在我的工作应用程序和简单的测试应用程序中都试过了)。

PS这是我的测试bpm方案:

        <?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="MaxShulTest_v20" name="MaxShulTest" isExecutable="true">
    <documentation>test process</documentation>
    <startEvent id="startEvent1"></startEvent>
    <userTask id="Task1" name="Task1"></userTask>
    <userTask id="Task4" name="Task4"></userTask>
    <userTask id="Task2" name="Task2"></userTask>
    <sequenceFlow id="sid-FEBA8018-5838-4AF2-8AE5-DED45EF36229" sourceRef="Task1" targetRef="Task2"></sequenceFlow>
    <sequenceFlow id="sid-A71A6EB8-293E-4EA7-A876-670C8E4ABF7C" sourceRef="Task2" targetRef="ExclusiveGateway1"></sequenceFlow>
    <sequenceFlow id="sid-1691D37B-9B00-452F-B031-124B3845912B" sourceRef="Task4" targetRef="ExclusiveGateway1"></sequenceFlow>
    <endEvent id="endEvent1"></endEvent>
    <sequenceFlow id="sid-EAC37DEB-9666-407E-8EE0-27C11CEC4302" sourceRef="ExclusiveGateway1" targetRef="endEvent1"></sequenceFlow>
    <exclusiveGateway id="ExclusiveGateway1"></exclusiveGateway>
    <boundaryEvent id="boundary_timer1" attachedToRef="Task1" cancelActivity="true">
      <timerEventDefinition>
        <timeDuration>PT1M</timeDuration>
      </timerEventDefinition>
    </boundaryEvent>
    <sequenceFlow id="sid-88CC1D13-0907-44CC-ACAE-6E2FC01C8A3F" sourceRef="startEvent1" targetRef="service_task_1"></sequenceFlow>
    <serviceTask id="service_task_1" name="service_task_1" activiti:class="ru.maxlich.app.test.activiti.model.service.LogDelegateService"></serviceTask>
    <sequenceFlow id="sid-B9705ABC-78B3-460A-80ED-613EE3147491" sourceRef="service_task_2" targetRef="Task1"></sequenceFlow>
    <intermediateCatchEvent id="timer_1" name="timer_1">
      <timerEventDefinition>
        <timeDuration>PT3M</timeDuration>
      </timerEventDefinition>
    </intermediateCatchEvent>
    <sequenceFlow id="sid-49554231-BC08-4237-8B48-6D5484289319" sourceRef="service_task_1" targetRef="timer_1"></sequenceFlow>
    <sequenceFlow id="sid-7C4E0E46-E680-45F2-847F-8C37FFB16C53" sourceRef="timer_1" targetRef="service_task_2"></sequenceFlow>
    <serviceTask id="service_task_2" name="service_task_2" activiti:class="ru.maxlich.app.test.activiti.model.service.LogDelegateService"></serviceTask>
    <sequenceFlow id="sid-727BA009-3FE2-48DE-B41E-693FCE3D2F53" sourceRef="boundary_timer1" targetRef="service_task_3"></sequenceFlow>
    <serviceTask id="service_task_3" name="service_task_3" activiti:class="ru.maxlich.app.test.activiti.model.service.LogDelegateService"></serviceTask>
    <sequenceFlow id="sid-7F9D801A-5C8F-4623-987E-2E3FC936126E" sourceRef="service_task_3" targetRef="Task4"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_MaxShulTest_v20">
    <bpmndi:BPMNPlane bpmnElement="MaxShulTest_v20" id="BPMNPlane_MaxShulTest_v20">
      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
        <omgdc:Bounds height="30.0" width="30.0" x="30.0" y="185.943858356366"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="Task1" id="BPMNShape_Task1">
        <omgdc:Bounds height="80.0" width="100.0" x="559.25" y="134.5"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="Task4" id="BPMNShape_Task4">
        <omgdc:Bounds height="80.0" width="100.0" x="855.0" y="286.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="Task2" id="BPMNShape_Task2">
        <omgdc:Bounds height="80.0" width="100.0" x="783.25" y="135.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endEvent1" id="BPMNShape_endEvent1">
        <omgdc:Bounds height="28.0" width="28.0" x="1122.25" y="189.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ExclusiveGateway1" id="BPMNShape_ExclusiveGateway1">
        <omgdc:Bounds height="40.0" width="40.0" x="1019.5" y="183.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="boundary_timer1" id="BPMNShape_boundary_timer1">
        <omgdc:Bounds height="31.0" width="31.0" x="608.0803504247281" y="199.943858356366"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="service_task_1" id="BPMNShape_service_task_1">
        <omgdc:Bounds height="71.0" width="110.0" x="135.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="timer_1" id="BPMNShape_timer_1">
        <omgdc:Bounds height="31.0" width="31.0" x="303.13336181640625" y="158.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="service_task_2" id="BPMNShape_service_task_2">
        <omgdc:Bounds height="82.0" width="107.0" x="390.0" y="133.5"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="service_task_3" id="BPMNShape_service_task_3">
        <omgdc:Bounds height="82.0" width="107.0" x="630.0" y="285.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-727BA009-3FE2-48DE-B41E-693FCE3D2F53" id="BPMNEdge_sid-727BA009-3FE2-48DE-B41E-693FCE3D2F53">
        <omgdi:waypoint x="630.9660814288677" y="229.07107294829532"></omgdi:waypoint>
        <omgdi:waypoint x="661.2786598187816" y="285.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-FEBA8018-5838-4AF2-8AE5-DED45EF36229" id="BPMNEdge_sid-FEBA8018-5838-4AF2-8AE5-DED45EF36229">
        <omgdi:waypoint x="659.25" y="174.61160714285714"></omgdi:waypoint>
        <omgdi:waypoint x="783.25" y="174.88839285714286"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B9705ABC-78B3-460A-80ED-613EE3147491" id="BPMNEdge_sid-B9705ABC-78B3-460A-80ED-613EE3147491">
        <omgdi:waypoint x="497.0" y="174.5"></omgdi:waypoint>
        <omgdi:waypoint x="559.25" y="174.5"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-EAC37DEB-9666-407E-8EE0-27C11CEC4302" id="BPMNEdge_sid-EAC37DEB-9666-407E-8EE0-27C11CEC4302">
        <omgdi:waypoint x="1059.5" y="203.0"></omgdi:waypoint>
        <omgdi:waypoint x="1122.25" y="203.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-A71A6EB8-293E-4EA7-A876-670C8E4ABF7C" id="BPMNEdge_sid-A71A6EB8-293E-4EA7-A876-670C8E4ABF7C">
        <omgdi:waypoint x="883.25" y="181.7795571220596"></omgdi:waypoint>
        <omgdi:waypoint x="1021.9182556711604" y="200.5817443288396"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-88CC1D13-0907-44CC-ACAE-6E2FC01C8A3F" id="BPMNEdge_sid-88CC1D13-0907-44CC-ACAE-6E2FC01C8A3F">
        <omgdi:waypoint x="59.73834151603846" y="198.15436210137352"></omgdi:waypoint>
        <omgdi:waypoint x="135.0" y="183.90973937655264"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-49554231-BC08-4237-8B48-6D5484289319" id="BPMNEdge_sid-49554231-BC08-4237-8B48-6D5484289319">
        <omgdi:waypoint x="245.0" y="173.71295813578445"></omgdi:waypoint>
        <omgdi:waypoint x="303.13348175202987" y="173.93804900670392"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-7C4E0E46-E680-45F2-847F-8C37FFB16C53" id="BPMNEdge_sid-7C4E0E46-E680-45F2-847F-8C37FFB16C53">
        <omgdi:waypoint x="335.13323251092316" y="174.0643254128607"></omgdi:waypoint>
        <omgdi:waypoint x="390.0" y="174.28491016247852"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-7F9D801A-5C8F-4623-987E-2E3FC936126E" id="BPMNEdge_sid-7F9D801A-5C8F-4623-987E-2E3FC936126E">
        <omgdi:waypoint x="737.0" y="326.0"></omgdi:waypoint>
        <omgdi:waypoint x="855.0" y="326.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-1691D37B-9B00-452F-B031-124B3845912B" id="BPMNEdge_sid-1691D37B-9B00-452F-B031-124B3845912B">
        <omgdi:waypoint x="948.8221673355974" y="286.0"></omgdi:waypoint>
        <omgdi:waypoint x="1029.1648250460405" y="212.6648250460405"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

共有1个答案

易祖鹤
2023-03-14

我找到了它不起作用的原因。Activiti Modeler是并行启动的,它使用相同的数据库。我还使用了使用Activiti Modeler的Activiti Admin。这一切都在Apache Tomcat上运行。我关掉了雄猫,一切都很顺利。

 类似资料:
  • 我在Spring 3中使用@Scheduled annotation。我需要每周或每两周运行一些任务,所以我使用cron表达式作为参数,例如。 我的问题是,如果我将创建必须每7天运行一次的计划任务,并且在第6天我将重新启动服务器(与战争重新部署),它会重置这个计划任务(我需要再次等待7天)还是它会保存其状态并在第7天触发此任务?

  • 基本上,我想做的是制作一个计时器,在x秒后运行一个特定的TimerTask,但是TimerTask可以重新安排计时器在y秒后执行任务。下面是一个示例,它在我试图在TimerTask run中调度此任务的行上给出了一个错误“线程中的异常”Timer-0“java.lang.IllegalStateException:任务已调度或已取消”。

  • 我试图在Netty 4.0中实现一个服务器应用程序,它通过TCP/IP Socket与客户端通信。一旦建立连接,客户端将进行初始连接。服务器将每隔X分钟向客户端发送一个ping消息,每个客户端的X可能不同。一旦客户端成功获得“ping”,客户端将尝试上载/传输文件到服务器。服务器接收文件,并将其写入磁盘。 我想知道在Netty中做这件事的最佳方法是什么,主要是调度部分(在cron基础上发送ping

  • 如果Activiti Modeler与我的应用程序同时运行,并且它对Activiti引擎使用与我的应用程序相同的数据库,那么定时器(边界定时器事件和中间捕获事件)后面的服务任务和脚本任务将不工作,并导致错误。错误描述如下:“不能实例化”--对于服务任务(如果指定了类),“不能找到用于'groovy'的脚本引擎”--对于脚本任务。如果我使用Spring,并为服务任务分配一个bean,那么我会得到一个

  • 问题内容: 我正在寻找可以提供超时的ExecutorService实现。如果提交到ExecutorService的任务花费的时间超过了超时时间,则这些任务将被中断。实现这样的野兽并不是一个困难的任务,但是我想知道是否有人知道现有的实现。 这是我根据以下一些讨论得出的。任何意见? 问题答案: 你可以为此使用ScheduledExecutorService。首先,你只提交一次即可立即开始,并保留创建的

  • 我使用Timer和TimerTask为聊天应用程序长轮询新消息。我想研究两种“稍微”不同的可能性: 1:计时器声明为局部变量 *问题:每次调用该方法时,我都会看到创建了一个新线程,[Timer-1]、[Timer-2]等等。。在Eclipse调试窗口中,即使在getLastMessages(..)之后,它们似乎都在运行完成运行并向客户端返回值。如果计时器实际使用线程,并且在几次事务之后,服务器最终