1

アクティビティシーケンスフローからメソッドを呼び出そうとしていますが、以下のエラーが発生します。誰かがこの問題の修正を手伝ってくれますか?

<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(AstIdentifier.java:8)の識別子「EscalationListener」を解決できません

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 に答える