ポーリング監視イベント
ポーリング監視は、Webhookイベントフローのサポートが利用できない、または望ましくない場合に、オンラインサービスがスケジュールに基づいて情報を交換するためのメカニズムです。
リモートサービスで特定のイベントが発生すると、そのイベントは追跡されて記録されます。そして、スケジュールされたポーリング監視フローが実行されると、Oktaがリモートサービスにクエリを実行し、リモートサービスが最後に呼び出された後に記録されたすべての情報を取得します。
このメカニズムは、プロセスを自動化し、手動での継続的な介入を必要とすることなく、さまざまなシステムを同期させるためによく利用されます。
ポーリング監視の概要
ポーリング監視フローの構成は、いくつかの一般的な手順から成ります。
-
ポーリング監視をセットアップします。ポーリング監視は、スケジュールされた実行ごとに更新される時間ベースのフィルターを使用して特定のAPIリソースを呼び出すGET要求を作成します。
たとえば、Oktaの管理者は、自社がWorkdayに追加した新しい従業員に関する通知を毎日受信するためのポーリング監視をセットアップできます。
-
カーソルと呼ばれる、保存された増分値を設定します。この保存値は、スケジュールされたポーリング監視が実行される度に更新されます。Okta Workflowsでは、この保存値(通常はタイムスタンプ)はカーソルカードを使用して更新およびアクセスされます。この値は、フローがGET要求を作成してリモートサービスからレコードを取得するたびに使用されます。実装の詳細については、カーソル機能カードを参照してください。
-
イベントトリガーをスケジュールします。ポーリング監視は、スケジュールされたフローと同じ構成ダイアログを使用します。ポーリング監視を設定して、5分~30日の任意の頻度でリモートサービスを呼び出すことができます。
-
ペイロードを取得します。Oktaはフィルタリングされたクエリを含むGET要求をリモートサービスに送信し、リモートサービスから指定された時間枠内に発生したレコードのペイロードが返されます。
-
ペイロードを処理します。受信側アプリは、GET要求によって返されたレコードを処理します。JSONペイロードを解析し、イベントフローを完了します。
ペイロードを処理する場合、2つの側面を考慮してください。
-
要求の集約:受信ペイロードは、収集されたアイテムのバッチとして受信されます。
-
要求のバッチ処理:受信ペイロードが収集バッチとして届いても、イベントフローは各アイテムを個別に処理することも、バッチ全体を1つのアイテムとして処理することもできます。
「ポーリング監視の実行モードを有効化する」を参照してください。
-
ユースケース
ポーリング監視は通常、リモートサービスがユーザーを作成するときなどに新しいレコードを取得するために使用されますが、更新または削除されたレコードも処理できます。
削除または更新されたレコードを処理するには、カーソル値をオブジェクトとしてセットアップできます。そして、クエリフィルターのタイムスタンプとともに、現在の状態の情報をそのオブジェクトに保存することができます。
削除されたユーザー
たとえば、ポーリング監視を使ってリモートサービスで削除されたユーザーを追跡する場合、カーソルカードの[Properties(プロパティー)]入力は次のオブジェクトのようになります。
{
"lastRequest": "2025-01-01-000000",
"currentUsers": [
240013,
230018,
230015
]
}
ポーリング監視イベントフロー内では、GET要求によってリモートサービスからすべてのユーザーが取得され、cursor.currentUsersリストから既存のユーザーが除外されます。最後に、残っている一意の値を、削除されたユーザーのリストとして出力に返します。
この入力フィールドの最大サイズは10 KBです。ポーリング監視イベントの複雑なカーソルを構築する際には、この制限を考慮してください。
コネクタービルダー機能制限のカーソルカードを参照してください。
更新されたユーザー
同様に、更新されたユーザーを追跡するには、ユーザーIDとそのユーザーが最後に更新された時刻の両方の値を持つオブジェクトのリストとしてcursor.currentUsersリストを作成できます。このシナリオでは、カーソルは次のオブジェクトのようになります。
{
"lastRequest": "2025-01-15-000000",
"currentUsers": [
{
"userID": "240013",
"lastUpdated": "2025-01-31-000000"
},
{
"userID": "230018",
"lastUpdated": "2024-12-31-000000"
},
{
"userID": "230015",
"lastUpdated": "2025-01-14-000000"
}
]
}
次に、ポーリング監視はlastRequestの日付以降のすべてのユーザー変更を取得します。最後のステップでは、フローがcursor.currentUsersオブジェクトを処理し、lastUpdated値が変更されたユーザーレコードのみを返します。