5.3. サービスタスクの作成
サービスタスクは、Web サービス呼び出しまたは Java クラスメソッドを基にアクションを実行するタスクです。サービスタスクの例としては、これらのタスクを実行する際の電子メールの送信やメッセージのロギングなどがあります。サービスタスクに関連付けられているパラメーター (入力) と結果 (出力) を定義できます。1 つのオブジェクトに対する全入力を含めて、ラップパラメーターを定義することも可能です。ラップパラメーターを定義するには、データ割り当てで Wrapped` : `True
を使用して、新しいワークアイテムハンドラーを作成します。サービスタスクには、内向きの接続 1 つと外向きの接続 1 つが必要です。
手順
- Business Central で、画面の右上隅にある Admin アイコンを選択し、Artifacts を選択します。
- Upload をクリックして、Artifact upload ウィンドウを開きます。
.jar
ファイルを選択し、 をクリックします。重要.jar
ファイルには、Web サービスのデータタイプ (データオブジェクト)、および Java サービスタスクの Java クラスが含まれます。- 使用するプロジェクトを作成します。
- プロジェクトの Settings → Dependencies に移動します。
-
Add from repository をクリックしてアップロードした
.jar
ファイルを見つけ、Select をクリックします。 - プロジェクトの Settings → Work Item Handler を開きます。
指定のフィールドに以下の値を入力します。
-
Name:
Service Task
-
Value -
new org.jbpm.process.workitem.bpmn2.ServiceTaskHandler(ksession, classLoader)
-
Name:
プロジェクトを保存します。
Web サービスタスクの作成例
BPMN2 仕様のサービスタスクのデフォルトの実装は Web サービスです。Web サービスのサポートは Apache CXF 動的クライアントをベースとしています。これは、
WorkItemHandler
インターフェイスを実装する専用のサービスタスクハンドラーを提供します。org.jbpm.process.workitem.bpmn2.ServiceTaskHandler
Web サービスを使用してサービスタスクを作成するには、Web サービスを設定する必要があります。
- ビジネスプロセスを作成します。
- 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
- Imports プロパティーで をクリックし、Imports ウィンドウを開きます。
WSDL Imports の横にある +Add をクリックして、必要な WSDL (Web Services Description Language) の値をインポートします。以下に例を示します。
場所:
http://localhost:8080/sample-ws-1/SimpleService?wsdl
この場所は、サービスの WSDL ファイルを参照します。
名前空間:
http://bpmn2.workitem.process.jbpm.org/
名前空間は、WSDL ファイルの
targetNamespace
と一致している必要があります。
- プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
- Service Task を選択します。
- プロセスデザイナーキャンバスの空白エリアをクリックします。
必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。
表5.4 Web サービスタスクパラメーター
ラベル 説明 名前
サービスタスクの名前。サービスタスクシェイプをダブルクリックして名前を編集することもできます。
ドキュメント
タスクの説明を入力します。このフィールドのテキストは、プロセスのドキュメントに含まれています。プロセスデザイナーキャンバスの左上にある Documentation タブをクリックして、プロセスドキュメントを表示します。
Implementation
Web サービスを指定します。
Interface
CountriesPortService
などのスクリプトの実装に使用されるサービス。操作
getCountry
などのインターフェイスによって呼び出される操作。割当
クリックしてローカル変数を追加します。
アドホックの自動開始
これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。
非同期です
このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。
Is Multiple Instance
このタスクに複数のインスタンスがある場合に選択します。
MI 実行モード
複数のインスタンスが並列または順次実行されるかどうかを選択します。
MI コレクション入力
inputCountryNames
などの、新規インスタンスが作成される要素のコレクションを表す変数を指定します。MI データ入力
Parameter
などの Web サービスに転送される入力データ割り当てを指定します。MI コレクション出力
outputCountries
などの Web サービスタスクから返された値を保存する配列の一覧。MI データ出力
Result
などのサーバーでのクラス実行の結果を保存する Web サービスタスクの出力データ割り当てを指定します。MI 完了条件 (mvel)
指定した複数のインスタンスノードを完了できるかどうかを確認するために、完了済みの各インスタンスを評価する MVEL 式を指定します。
開始時アクション
タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプト。
終了時アクション
タスクの終了時のアクションを指定する Java、JavaScript、または MVEL スクリプト。
SLA 期日
サービスレベルアグリーメント (SLA) の有効期限の日付。
Metadata Attributes
メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。
メタデータ属性は、BPMN 図に新しい
metaData
拡張を可能にし、タスク全体の動作を変更します。
Java サービスタスクの作成例
Java メソッドを使用してサービスタスクを作成する場合、メソッドにはパラメーターを 1 つだけ含み、単一の値を返すことができます。Java メソッドを使用してサービスタスクを作成するには、Java クラスをプロジェクトの依存関係に追加する必要があります。
- ビジネスプロセスを作成します。
- プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
- Service Task を選択します。
- プロセスデザイナーキャンバスの空白エリアをクリックします。
- 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。
表5.5 Java サービスタスクパラメーター
ラベル 説明 名前
サービスタスクの名前。サービスタスクシェイプをダブルクリックして名前を編集することもできます。
ドキュメント
タスクの説明を入力します。このフィールドのテキストは、プロセスのドキュメントに含まれています。プロセスデザイナーキャンバスの左上にある Documentation タブをクリックして、プロセスドキュメントを表示します。
Implementation
タスクが Java に実装されるように指定します。
Interface
org.xyz.HelloWorld
などのスクリプトの実装に使用されるクラス。操作
sayHello
などのインターフェイスによって呼び出されるメソッド。割当
クリックしてローカル変数を追加します。
アドホックの自動開始
これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。
非同期です
このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。
Is Multiple Instance
このタスクに複数のインスタンスがある場合に選択します。
MI 実行モード
複数のインスタンスが並列または順次実行されるかどうかを選択します。
MI コレクション入力
InputCollection
などの、新規インスタンスが作成される要素のコレクションを表す変数を指定します。MI データ入力
Java クラスに転送される入力データ割り当てを指定します。たとえば、入力データの割り当てを
Parameter
およびParameterType
に設定できます。ParameterType
は、Parameter
のタイプを表し、Java メソッドの実行に引数を送信します。MI コレクション出力
OutputCollection
など、Java クラスから返される値を保存する配列リスト。MI データ出力
Result
など、サーバーでクラス実行の結果を保存する Java サービスタスクへの出力データ割り当てを指定します。MI 完了条件 (mvel)
指定した複数のインスタンスノードを完了できるかどうかを確認するために、完了済みの各インスタンスを評価する MVEL 式を指定します。たとえば、
OutputCollection.size() <= 3
は、3 人以上のユーザーがアドレス指定されていないことを示します。開始時アクション
タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプト。
終了時アクション
タスクの終了時のアクションを指定する Java、JavaScript、または MVEL スクリプト。
SLA 期日
サービスレベルアグリーメント (SLA) の有効期限の日付。
Metadata Attributes
メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。
メタデータ属性は、BPMN 図に新しい
metaData
拡張を可能にし、タスク全体の動作を変更します。
- Save をクリックします。