14.2.3. 委譲設定

委譲クラスは、プロセス実行内から呼ばれるユーザーコードを含みます。最も一般的なサンプルはアクションです。 アクションの場合、ActionHandler インターフェースの実装は、プロセスのイベントに対して呼びだされます。委譲は、processdefinition.xml ファイルで指定されます。委譲を指定するときには、3 つのデータを提供します。
  1. クラス名(必須) : 委譲クラスの完全修飾名
  2. 設定タイプ (任意): 委譲オブジェクトのインスタンス化と設定方法を指定します。 デフォルトでは、デフォルトコンストラクターが利用され、設定情報は無視されます。
  3. 設定 (任意): 設定タイプに応じたフォーマットで記述された委譲オブジェクトの設定
以下は、全設定タイプの説明です。

14.2.3.1. config-type フィールド

これはデフォルト設定タイプです。config-typeは、 委譲クラスのオブジェクトを最初にインスタンス化し、 それから設定で指定されている通りにオブジェクトのフィールドに値を設定します。 設定は XML で、 要素名がクラスのフィールド名に対応しなければなりません。要素の内容テキストは該当のフィールドにおかれます。また、必要で可能であれば、要素の内容テキストは、フィールドタイプに変換されます。
サポートされる型変換
  • 文字列は省略されますが変換されません。
  • int, long, float, double, ...などのプリミティブ型
  • プリミティブ型の基礎ラッパークラス
  • list と, set と collection。 その場合、xml コンテンツの各要素は collection の 要素として扱われ、再帰的に変換しながら パースされます。要素の型がjava.lang.Stringと異なる場合、 完全修飾型名で type 属性を指定することによって示すことができます。 例えば、以下のコードは numbersフィールドに 文字列 の ArrayListをインジェクトします:
    <numbers>
      <element>one</element>
      <element>two</element>
      <element>three</element>
    </numbers>
    要素内のテキストはStringコンストラクターをもつ、いかなるオブジェクトにでも変換できます。 他のString型でない他のものを利用する場合、このフィールドにてelement-typeで指定します。 (この場合はnumbers)
    これがMapの別例です。
    <numbers>
      <entry><key>one</key><value>1</value></entry>
      <entry><key>two</key><value>2</value></entry>
      <entry><key>three</key><value>3</value></entry>
    </numbers>
  • この場合、fieldの各要素には、子要素 key1つとvalue のサブ要素1つが必要です。これらは、変換ルールを利用して再帰的にパースされます。 ちょうど collections と同じように、type 属性が指定されていなければ java.lang.String への変換が想定されます。
  • org.dom4j.Element
  • その他のタイプのために、String コンストラクタが利用されます
このクラスに着目してください。
public class MyAction implements ActionHandler {
  // access specifiers can be private, default, protected or public
  private String city;
  Integer rounds;
  ...
}
これは、このクラスに対して有効な設定です。
...
<action class="org.test.MyAction">
  <city>Atlanta</city>
  <rounds>5</rounds>
</action>
...