3.2. サービスタスク¶
3.2.1. javaプログラム¶
サービスタスクは、javaプログラムを指定して実行することができます。
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式の結果を変数に登録することができます。
暗黙オブジェクトとして、executionが存在するため下記のように変数を設定することも可能です。
${execution.setVariable('key', 'value')}コラム
タスクタイプの設定や結果変数名の設定の詳細は「IM-BPM Designer 操作ガイド」 - 「サービスタスク」を確認してください。