第60章 ワークアイテムハンドラープロジェクトのカスタマイズ

ワークアイテムハンドラープロジェクトのコードをカスタマイズできます。ワークアイテムハンドラーが必要とする Java メソッドは executeWorkItemabortWorkItem の 2 つです。

表60.1 Java メソッドの説明

Java メソッド説明

executeWorkItem(WorkItem workItem, WorkItemManager manager)

ワークアイテムハンドラーの実行時にデフォルトで実行されます。

abortWorkItem(WorkItem workItem, WorkItemManager manager)

ワークアイテムが中断すると実行します。

いずれのメソッドでも、WorkItemDefinition パラメーターには GUI または API 呼び出しでカスタムタスクに入力したパラメーターが含まれており、WorkItem パラメーターがカスタムタスクの状態を追跡します。

コード構造の例

public class MyWorkItemWorkItemHandler extends AbstractLogOrThrowWorkItemHandler {

  public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
    try {
      RequiredParameterValidator.validate(this.getClass(), workItem);

      // sample parameters
      String sampleParam = (String) workItem.getParameter("SampleParam");
      String sampleParamTwo = (String) workItem.getParameter("SampleParamTwo");

      // complete workitem impl...

      // return results
      String sampleResult = "sample result";
      Map<String, Object> results = new HashMap<String, Object>();
      results.put("SampleResult", sampleResult);
      manager.completeWorkItem(workItem.getId(), results);
    } catch(Throwable cause) {
      handleException(cause);
    }
	}

	@Override
	public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
    // similar
	}
}

表60.2 パラメーターの説明

パラメーター説明

RequiredParameterValidator.validate(this.getClass(), workItem);

全パラメーターに required とマーク付けされていることを確認します。マーク付けされていない場合は、IllegalArgumentException が送出されます。

String sampleParam = (String) workItem.getParameter("SampleParam");

WorkItem クラスからパラメーターを取得する例。名前は、常に文字列です。たとえば、WorkItem です。この例では、SampleParam は常に文字列ですが、これに関連付けられているオブジェクトには多数の型を指定でき、エラーを回避するにはキャストが必要です。

// complete workitem impl…

パラメーターの受信時に、カスタムの Java コードが実行されます。

results.put("SampleResult", sampleResult);

カスタムタスクに結果を渡します。この結果は、カスタムタスクのデータ出力エリアに配置されます。

manager.completeWorkItem(workItem.getId(), results);

ワークアイテムハンドラーを完了とマークします。WorkItemManager はワークアイテムの状態を制御し、WorkItem ID を取得して、取得した結果と正しいカスタムタスクを関連付けます。

abortWorkItem()

カスタムの Java コードを中断します。ワークアイテムが中断されるように設計されていない場合は、空白のままにすることができます。

注記

Red Hat Process Automation Manager には、サポートされるカスタムタスクの限定セットが含まれています。Red Hat Process Automation Manager に含まれていないカスタムタスクはサポートされません。