5.3. サービスタスクの作成
サービスタスクは、Web サービス呼び出しまたは Java クラスメソッドを基にアクションを実行するタスクです。サービスタスクの例には、これらのタスクがシステムによって実行されたときに電子メールを送信し、メッセージを記録することが含まれます。サービスタスクに関連付けられているパラメーター (入力) と結果 (出力) を定義できます。サービスタスクには、内向きの接続 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.ServiceTaskHandlerWeb サービスを使用してサービスタスクを作成するには、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) の有効期限の日付。
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) の有効期限の日付。
- Save をクリックします。