9.2. 作業アイテムの定義

作業アイテムは、アトミックな作業単位を宣言型で表しています。作業アイテムには一意名やパラメーターが含まれており、アイテム毎に結果が表示されるであろう場所に結果を含めることもできます。結果パラメーターやアイコンなしの作業アイテムの通知は、以下のように定義できます。
  Name: "Notification"
  Parameters
  From [String]
  To [String]
  Message [String]
  Priority [String]
作業アイテムの定義は、META-INF ディレクトリのプロジェクトパスにある 1 つまたは複数の設定ファイル (.wid ファイル拡張) で指定します。プロパティは、名前と値のペアで指定します。パラメーターと結果はマッピングされ、各パラメーター名は結果として期待されるデータ型にマッピングされます。設定ファイルには、その作業アイテムの表示名やアイコンも含まれています。

例9.2 MVEL を使用した「通知」作業アイテムの例

import org.drools.process.core.datatype.impl.type.StringDataType;
[
  // the Notification work item
  [
    "name" : "Notification",
    "parameters" : [
      "Message" : new StringDataType(),
      "From" : new StringDataType(),
      "To" : new StringDataType(),
      "Priority" : new StringDataType(),
    ],
    "displayName" : "Notification",
    "icon" : "icons/notification.gif"
  ]

]
アイコンは、.gif か .png 形式でなければなりません。いずれの形式でも、ピクセルサイズは 16x16 とします。また、アイコンは resources ディレクトリに保存するものとします。
project/src/main/resources/icons/notification.gif
作業アイテムにはすべて、アイテム内に定義したプロパティに加え、以下の 3 つのプロパティも含まれています。
  1. Parameter Mapping:
    プロセス内の変数の値を作業アイテムのパラメーターにマッピングします。作業アイテムは、実際のプロセスインスタンスの現在のステータスにしたがいカスタマイズすることが可能です (例えば、通知の優先順位はプロセス固有の情報に左右されるなど)。
  2. Result Mapping:
    結果をプロセス変数にマッピングします。これは作業アイテムが実行された後に返される値で、この変数を残りのプロセスで利用できるようにします。
  3. Wait for completion:
    デフォルトでは、依頼された作業アイテムが完了するまで待機してから、プロセスを継続します。また、Wait for completion を False に設定することで、(結果を待たずに) 作業アイテムの依頼直後にプロセスを継続させることも可能です。
以下のプロセスは、Java を実行するドメイン固有ノードの作成例で、クラスやメソッドパラメーターを依頼しています。これには、カスタムの java.gif アイコンが含まれており、以下のファイルや結果として出されたスクリーンショットなどで構成されています。

例9.3

import org.drools.process.core.datatype.impl.type.StringDataType;
[
  // the Java Node work item located in:
  // project/src/main/resources/META-INF/JavaNodeDefinition.conf
  [
    "name" : "JavaNode",
    "parameters" : [
      "class" : new StringDataType(),
      "method" : new StringDataType(),
    ],
    "displayName" : "Java Node",
    "icon" : "icons/java.gif"
  ]

]