Вопрос по Alfresco's Activiti 6. Если в схеме ставлю после таймера (
intermediate timer catching event
или
boundary timer event
) стоит блок
service task
или
script task
, то сыпятся ошибки, и процесс дальше не идёт. Если стоит блок
service task
, то такая ошибка возникает:
couldn't instantiate <полное_имя_класса>
где
<полное_имя_класса>
- имя класса, прописанное у блока
service task
в свойстве
class
.
Если
script task
- то такая:
Can't find scripting engine for 'groovy'
При этом класс для
service task
в
classpath
есть, и библиотека для движка
groovy
тоже подключена. Самое интересное, что эти ошибки сыпятся не всегда, и в 1 из 5-10 случаев всё срабатывает. Закономерность не нашёл.
ЗЫ Пробовал работать с таймерами и
service task
и в своем рабочем проекте (с
REST
и
Spring Web Mvc
), и в простеньком тестовом приложение, написанном на
Swing
. Ошибки возникают и там, и там.
Если описывать подробно, то для решения данной проблемы были попробовано следующее:
При этом в конечном архиве с приложением (
jar
или
war
класс находился в директории
WEB-INF/classes/<пакеты_класса>
). При этом в рабочем проекте в зависимостях (и, значит, в директории
WEB-INF/lib
или в директории
lib
сервера
Tomcat
) лежал джарник с данным классом, расположенным в нужном пакете, и это тоже не помогло.
ЗЫ Пример моего тестового определения процесса:
spoiler<?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">
//остальные xml-теги
</bpmndi:BPMNDiagram>
</definitions>