Экземпляр задачи JBPM находится в состоянии IN_PROGRESS, когда экземпляр рабочего процесса завершен.

В alfresco 4.1, используя JBPM, я определил следующий рабочий процесс:

<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="dswf:testworkflow">
    <swimlane name="initiator" />

    <start-state name="start">
        <task name="dswf:startTask" swimlane="initiator"/>
        <transition name="" to="wait" />
    </start-state>

    <task-node name="wait">
        <task name="dswf:waitCompletion">
            <event type="task-create">
                <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                    <script>
                        logger.log("Waiting");
                    </script>
                </action>
            </event>
        </task>
        <transition name="complete" to="completed" />
    </task-node>

    <node name="completed">
        <event type="node-enter">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                    logger.log("Completed");
                </script>
            </action>
        </event>
        <transition name="" to="end" />
    </node>

    <end-state name="end" />
</process-definition>

Используя следующий код Java, я запустил переход от ожидания к завершению:

/* Suppose that workflowInstanceId is the id of an instance of this workflow */
List<WorkflowPath> paths = workflowService.getWorkflowPaths(workflowInstanceId);
if (paths != null && paths.size() != 0) {
    for (WorkflowPath wp : paths) {
        try {
            /* checkTransition() returns true if the path contains the transition "complete" */
            boolean hasComplete = checkTransition(wp, "complete");
            if (hasComplete) {
                workflowService.signal(wp.getId(), "complete");
            }
        }
        catch (WorkflowException ex) {
            ex.printStackTrace();
        }
    }
}

Перед выполнением кода я вижу в консоли рабочего процесса, что экземпляр рабочего процесса находится в правильной задаче и есть переход «завершен».

Когда код выполняется, команда:

показать рабочие процессы все

не возвращает никаких рабочих процессов.

Вроде все нормально, но есть проблема. Экземпляр задачи «ожидание» все еще находится в состоянии «IN_PROGRESS», поэтому он возвращается веб-скриптом, даже если экземпляр рабочего процесса больше не существует.


person Community    schedule 24.06.2014    source источник
comment
вы используете jbpm, потому что вы должны это делать? вместо этого используйте activiti, если вам разрешено это делать   -  person alfrescian    schedule 24.06.2014
comment
Привет Альфресиан, ты пытаешься уйти от вопроса? :) Да, я должен использовать jbpm. Спасибо за помощь!   -  person    schedule 24.06.2014
comment
нет, я просто больше не знаком с интеграцией jbpm и jbpm в alfresco, так как начиная с Alfresco 3.4 есть активность   -  person alfrescian    schedule 24.06.2014


Ответы (1)


Это старый вопрос, но у меня есть ответ. Я не уверен, что это правильный ответ для вас.

У меня была такая же проблема, и сигнализация не работала. Поэтому я использовал следующее

<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                    <variable name="wf_ended" access="read,write" />
                    <expression>wf_ended = true;</expression>
                </script>
            </action>
            <script>
                executionContext.getTaskMgmtInstance().endAll();
            </script>
person Tahir Malik    schedule 04.02.2015
comment
Спасибо Таир. Не помню как решил проблему. Я забыл обновить этот вопрос. У меня нет времени проверять правильность вашего вопроса. Как вы думаете, что не так в моем коде? - person ; 16.05.2015
comment
Проблема с сигналом в том, что он переходит к следующему шагу. Но если этот шаг завершен, он не завершает задачу, поэтому вы видите статус in_progress. Таким образом, заканчивая его, он действительно заканчивает и завершает его. - person Tahir Malik; 17.05.2015