1

我正在尝试从 activiti 序列流中调用一个方法,但出现以下错误,有人可以帮我解决这个问题吗?

<sequenceFlow id="finalTask" name="finalTask" sourceRef="chargeAccount" targetRef="theEnd">
            <extensionElements>
                <activiti:executionListener
                    expression="${EscalationListener.escalate(execution, 'kermit')}"
                    event="end" />
            </extensionElements>
        </sequenceFlow>

错误:

原因:org.activiti.engine.impl.javax.el.PropertyNotFoundException:无法在 org.activiti.engine.impl.juel.AstIdentifier.eval 解析标识符“EscalationListener”(AstIdentifier.java:8

Java代码:

import org.activiti.engine.HistoryService;
import org.activiti.engine.delegate.DelegateExecution;

public class EscalationListener {
    HistoryService historyService;

    public void escalate(DelegateExecution execution, String otherTaskId)
            throws Exception {

        historyService.createHistoricTaskInstanceQuery().taskOwner(otherTaskId)
                .finished();
        //System.out.println("called history service" + otherTaskId);

        // do some stuff with the task
    }

}
4

2 回答 2

3

您需要添加EscalationListener为流程变量:

runtimeService.setVariable(yourExecutionId, "escalationListener" , new EscalationListener());

您还可以在开始流程之前添加流程变量:

runtimeService.startProcessInstanceByKey("someKey", processVariables);

processVariables 是Map<String, Object>您放置EscalationListener对象的位置

或将其声明为 Spring bean 以在流程定义中访问它:

<bean id="EscalationListener" class="com.test.activiti.listener.EscalationListener" >
于 2013-02-27T19:40:30.343 回答
0
<activiti:executionListener
                expression="${EscalationListener.escalate(execution, 'kermit')}"
                event="end" />

尝试在EscalationListener这里更改escalationListener。我有时因此而遇到问题。

可悲的是PropertyNotFoundException: Cannot resolve identifier,当您遇到错误时,这种情况经常发生。至少对我来说,这对你没有帮助......

于 2013-03-01T16:07:36.693 回答