IM-BPM for Accel Platform プログラミングガイド 初版 2016-10-01

3.2. サービスタスク

3.2.1. javaプログラム

サービスタスクは、javaプログラムを指定して実行することができます。
../../../_images/servicetask_1.png
図:サービスタスク
javaプログラムにはいくつかの制約があります。
  • jp.co.intra_mart.activiti.engine.delegate.JavaDelegate インタフェース、もしくは jp.co.intra_mart.activiti.engine.impl.pvm.delegate.ActivityBehavior インタフェースを実装している必要があります。
  • デフォルトコンストラクタが存在しなければなりません。
  • サービスタスクにフィールドを設定した場合、そのフィールド名の jp.co.intra_mart.activiti.engine.delegate.Expression のクラス変数を宣言している必要があります。

コラム

javaプログラムの設定やフィールドの設定の詳細は「IM-BPM Designer 操作ガイド」 - 「サービスタスク」を確認してください。
package sample;

import jp.co.intra_mart.activiti.engine.delegate.DelegateExecution;
import jp.co.intra_mart.activiti.engine.delegate.Expression;
import jp.co.intra_mart.activiti.engine.delegate.JavaDelegate;

public class SampleJavaDelegate implements JavaDelegate {

    protected Expression param1;
    protected Expression param2;

    @Override
    public void execute(DelegateExecution execution) throws Exception {

        // 変数を取得する。
        Object variable1 = execution.getVariable("variable1");
        Object variable2 = execution.getVariable("variable2");

        // 変数を更新する。変数が存在する場合は更新される。
        execution.setVariable("variable1", ((int) variable1) + (Integer.parseInt((String) param1.getValue(execution))));

        // 変数を追加する。変数が存在しない場合は追加される。
        execution.setVariable("variable3", ((int) variable2) + (Integer.parseInt((String) param2.getValue(execution))));
    }
}

3.2.2. EL式

サービスタスクは、EL式の結果を変数に登録することができます。
  • タスクタイプを「式」に設定し、EL式を定義します。
  • 結果変数名に任意の文字列を設定します。
../../../_images/servicetask_2.png
図:サービスタスク
${variable1 + variable2}
暗黙オブジェクトとして、executionが存在するため下記のように変数を設定することも可能です。
${execution.setVariable('key', 'value')}

コラム

タスクタイプの設定や結果変数名の設定の詳細は「IM-BPM Designer 操作ガイド」 - 「サービスタスク」を確認してください。