Cosminexus ビジネスプロセス管理/エンタープライズサービスバス V8 サービスプラットフォーム 開発ガイド
- 待機アクティビティをキャンバスに配置します。
アクティビティを配置する方法については,「6.4.1 アクティビティを配置する」を参照してください。
- 次のどちらかの方法で[待機アクティビティ]ダイアログを表示させます。
- キャンバスの待機アクティビティをダブルクリックする
- キャンバスの待機アクティビティを選択して右クリックし,[設定]を選択する
[待機アクティビティ]ダイアログが表示されます。
- [待機アクティビティ]ダイアログに必要な情報を入力します。
待機時間には「間隔」または「期限」を選択し,待機時間の間隔または期限をXPath式で指定します。
[待機アクティビティ]ダイアログの詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「1.4.16 待機アクティビティダイアログ」を参照してください。
- [OK]ボタンをクリックします。
待機時間に指定する式はXPath式になります。ビジネスプロセスの処理の中でXPath式を評価し,その結果で得た文字列を待機時間として使用します。XPath式を評価して得ることができる文字列は,BPEL標準規格により一部制限があります。
XPath式を評価して得ることができる文字列を次に説明します。なお,XPathの指定については,「6.6.18 XPathを指定する」を参照してください。
(a) 待機時間に「間隔」を指定する場合
待機時間に「間隔」を指定する場合,XPath式を評価して得ることができる文字列は,XML Schema型duration(xsd:duration)に従っている必要があります。XML Schema型durationとは,PnYnMnDTnHnMnS形式の経過時間を表す文字列を示す変数型です。
待機時間に「間隔」を指定する場合に,XPath式を評価して得ることができる文字列の例を次に示します。
- (例1)1年2か月3日4時間5分6秒間隔を待機時間に指定する場合
- XPath式を評価して得ることができる文字列は,「P1Y2M3DT4H5M6S」になります。
- (例2)10秒間隔を待機時間に指定する場合
- XPath式を評価して得ることができる文字列は,「PT10S」になります。
なお,[待機アクティビティ]ダイアログの[式]には,XPath式を指定する代わりに,「'」または「"」で囲むことで,直接待機する間隔を指定することもできます。「'」または「"」で直接待機する間隔を指定する場合の例を次に示します。
- (例3)1年2か月3日4時間5分6秒間隔を待機時間に指定する場合
- [待機アクティビティ]ダイアログの[式]に,「'P1Y2M3DT4H5M6S'」を直接指定します。
- (例4)10秒間隔を待機時間に指定する場合
- [待機アクティビティ]ダイアログの[式]に,「'PT10S'」を直接指定します。
(b) 待機時間に「期限」を指定する場合
待機時間に「期限」を指定する場合,XPath式を評価して得ることができる文字列は,XML Schema型dateTime(xsd:dateTime)に従っている必要があります。XML Schema型dateTimeとは,CCYY-MM-DDThh:mm:ss.sssTZ形式(.sssとTZは省略できる)の日時を表す文字列を示す変数型です。
待機時間に「期限」を指定する場合に,XPath式を評価して得ることができる文字列の例を次に示します。
- (例1)2010年1月1日0時0分0秒を待機時間に指定する場合
- XPath式を評価して得ることができる文字列は,「2010-01-01T00:00:00」または「2010-01-01T00:00:00.000TZ」になります。
なお,[待機アクティビティ]ダイアログの[式]には,XPath式を指定する代わりに,「'」または「"」で囲むことで,直接待機する期限を指定することもできます。「'」または「"」で直接待機する期限を指定する場合の例を次に示します。
- (例2)日本時間の2010年1月1日0時0分0秒を待機時間に指定する場合
- [待機アクティビティ]ダイアログの[式]に,「'2010-01-01T00:00:00+09:00'」を直接指定します。
- (例3)グリニッジ標準時間(GMT)の2010年1月1日0時0分0秒を待機時間に指定する場合
- [待機アクティビティ]ダイアログの[式]に,「'2010-01-01T00:00:00+00:00'」または「'2010-01-01T00:00:00Z'」を直接指定します。
(3) 定義時の注意事項
- アクティビティ名はビジネスプロセス(スコープ内も含む)内で一意になるように指定してください。
- アクティビティ名は64バイト以内にしてください。
- ダイアログの入力フィールドに制御文字は指定しないでください。
- 必ず待機時間を指定してください。
- 永続化しないビジネスプロセスの場合,待機アクティビティを設定しないでください。
- 待機アクティビティは,応答アクティビティからサービスリクエスタに応答を返したあとに動作させなければならないため,応答アクティビティよりあとに設定してください。応答アクティビティより前に設定した場合,パッケージング時にはエラーになりませんが,ビジネスプロセス実行時にエラーになります。なお,応答アクティビティと,そのあとの受付アクティビティの間に待機アクティビティを設定している場合はエラーになりません。※1※2
- 待機アクティビティの後ろに,受付アクティビティと組になっていない応答アクティビティは設定しないでください。受付アクティビティと組になっていない応答アクティビティを設定した場合,パッケージング時にはエラーになりませんが,ビジネスプロセス実行時にエラーになります。なお,応答アクティビティ以外のアクティビティは設定してもエラーになりません。※1※3
- 注※1
- エラーにならないケースを次に示します。
- (例1)
- 応答アクティビティよりもあとに,待機アクティビティを設定しています。待機処理以降は,非同期のビジネスプロセスとして実行されるため,エラーになりません。
- 待機アクティビティで処理を待機し,待機期限の時刻になったら,サービス呼出アクティビティが実行されます。
- (例2)
- 応答アクティビティよりもあとに,待機アクティビティを設定しています。待機処理以降は,非同期のビジネスプロセスとして実行されるため,エラーになりません。
- サービスリクエスタからの要求に応じて,並列処理として片方の無操作アクティビティの処理が実行されます。サービスリクエスタからもう一方の要求を受けて,一度サービスリクエスタに応答を返したあと,待機処理が実行されます。
- 注※2
- エラーになるケースを次に示します。
- (例1)
- 応答アクティビティよりも前に,待機アクティビティを設定しています。同期のビジネスプロセス内で待機アクティビティが実行されるため,ビジネスプロセスを実行するとエラーになります。
- 注※3
- エラーになるケースを次に示します。
- (例1)
- 待機アクティビティよりもあとに,受付アクティビティと組になっていない応答アクティビティを設定しています。そのため,ビジネスプロセスを実行するとエラーになります。
(4) HCSC簡易セットアップ機能で構築した環境で多重実行する場合の注意事項
HCSC簡易セットアップ機能で構築した環境では,待機アクティビティ後の処理の多重度がデフォルトで1に設定されているため,複数のプロセスインスタンスの待機アクティビティ後の処理は同時に実行されません。複数のプロセスインスタンスから同時に待機アクティビティ後の処理を行うと,あとから処理を開始したプロセスインスタンスの処理は,一つ前の処理が終了してから実行されます。
複数のプロセスインスタンスの待機アクティビティ後の処理を同時に実行したい場合は,usrconf.propertiesのejbserver.ejb.timerservice.maxCallbackThreadsプロパティを変更して,処理の多重度を調節してください。
複数のプロセスインスタンスを実行している場合で,待機アクティビティ後の処理の多重度が1のときと多重度を上げたときの処理の例を次の図に示します。なお,この例では,複数のプロセスインスタンスの処理が待機アクティビティ(待機1)で13:00まで待機したあと,待機後の処理(無操作2および無操作3)に2分掛かるものとします。
図6-10 待機後の処理の多重度が1のときと待機後の処理の多重度を上げたときの処理の例
処理の多重度の設定方法については,マニュアル「Cosminexus アプリケーションサーバ 運用管理ポータル操作ガイド」の「10.9.3 EJBコンテナの設定」を参照してください。
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.