非同期の統合
Pega Platform™では、非同期で処理を実行するための複数のメカニズムが提供されています。 たとえば、アプリケーションがバックエンドシステムへの呼び出しを開始し、外部システムの応答をブロックして待機することなく処理を継続できます。 この方法は次の場合に有効です。
- 外部システムの処理時間が問題になる場合
- 処理結果をすぐに必要としない場合
同様の機能は、受信したリクエストをキューに入れることができるサービスでも利用できます(例: Service-REST /Service-Fileルール)。
- 実行モードが同期(即時)に設定されている場合、リクエストは単一のリクエスターコンテキストでただちに処理されます。
- 実行モードが非同期(実行を待ち行列化)に設定されている場合、リクエストはキューに渡され、後で処理されます。
非同期統合のための一般的なアプローチ
一般的に使用される非同期アプローチには、以下のようなものがあります。
- Load-DataPageメソッド
- Connect-Wait方式によるRun-In-Parallelオプション
Load-DataPage
データページはデフォルトでは同期して読み込まれます。 データページを非同期にロードして、他のコンテンツがロードされている間にユーザーがワークアイテムに対してアクションを起こせるようにするには、以下のアクションを実行します。
- アクティビティでLoad-DataPageステップメソッドを使用し、その後、ステップメソッドConnect-Waitを使用してデータページがロードされるのを待ちます。
- 詳細については、Load-DataPageとConnect-Waitを参照してください。
非同期データページは、同じレコードセット全体からフィルタリングされた行を選択するあらゆるプロセスに最適なデザインパターンとなります。 同じ大きなレコードセットを何度も取り出すのは、処理リソースの無駄遣いになります。
実行速度の遅いコネクターがデータページのソースとして使用されているとします。 その場合、アクティビティのLoad-DataPageメソッドを使ってデータページをプリロードしておけば、必要なときに遅延なくデータを利用することができます。 PoolIDを指定することで、複数のLoad-DataPageリクエスターをグループ化できます。 Connect-Waitメソッドを使用すると、指定された間隔または同じPoolIDを持つすべてのリクエスターがデータのロードを完了するまで待機されます。
データページの非同期処理が非効率であることを示すいくつかのアラートは、コードを特定して、修正し、パフォーマンスを向上させるのに役立ちます。
Run-In-ParallelおよびConnect-Wait を使用したバックグラウンドでのコネクターの実行
ほとんどのコネクタールールは、アクティビティからConnect-*メソッドを使用し、RunInParallelオプションを選択して呼び出すことで並行して実行できます。 run-in-parallelオプションを選択すると、コネクタは子リクエスターとして実行されます。 呼び出したアクティビティは、後続のステップの実行を継続します。 Connect-Waitメソッドを使用すると、現在のリクエスターのセッションと子リクエスターのセッションが結合されます。
非同期統合のためのあまり一般的ではないアプローチ
あまり一般的ではない非同期統合アプローチとしては、以下のようなものがあります。
- 非同期サービス処理
- 非同期コネクター処理
非同期サービス処理
ほとんどのサービスタイプは非同期処理に対応しています。 EメールとJSR94サービスは例外です。 非同期処理に対応するサービスタイプは、標準のエージェントキューを利用しています。 これらのサービスルールは、非同期的に実行するように設定したり、サービスを同期的に呼び出す最初の試みが失敗した後に、リクエストを非同期的に実行するように設定することができます。 どちらの場合も、キューに入れられたリクエストを識別するキューアイテムIDが呼び出し側のアプリケーションに返されます。 このアイテムIDは、キューに入れられたリクエストの情報や状態を記録するキューアイテムに対応しています。 サービスリクエストがキューに入ると、Pega-IntSvcsルールセット内のProcessServiceQueueエージェントがキュー内のアイテムを処理してサービスが呼び出されます。 サービスリクエストの結果はインスタンスに格納され、結果が取得されるまでサービスリクエストはキューに保持されます。
その間、サービスリクエストを開始した呼び出し側のアプリケーションは、キューアイテムIDを保存し、実行が継続されます。 ほとんどの場合、呼び出し側のアプリケーションは、キューに入っているサービスリクエストの結果を取得するために、キューアイテムIDを使って後でコールバックします。 標準アクティビティ@baseclass.GetExecutionRequestは、キューに入れられたサービスを取得するために、サービスによってサービスアクティビティとして使用されます。
このオプションをサービスに設定する場合、キューおよびデキューオプションを決定するサービスリクエストプロセッサーを作成する必要があります。 ProcessServiceQueueエージェントでは、この情報がタスク実行のためのサポート情報として使用されます。
非同期コネクター処理
いくつかのコネクタールールは、非同期サービスに似たキュー機能により、非同期実行モードを提供しています。 この機能を利用する場合、コネクターリクエストはPega-IntSvcsルールセット内のProcessConnectQueueエージェントのキューアイテムに格納され、後でサービスの呼び出しを行います。 キューに入れられたコネクターは、ファイア・アンド・フォーゲット(撃ちっ放し)方式で動作します。 これは、コネクターからすぐに利用できるレスポンスがないことを意味します。 この非同期処理メカニズムを使用する前に、ファイア・アンド・フォーゲット方式が要件に適合しているかどうか確認してください。
また、非同期動作に対応したコネクターリクエストプロセッサーの設定も必要です。 この設定は、非同期サービスの設定と似ていますが、キューに入れられるオブジェクトのクラスが異なります。