ポーリング監視イベントフローを構築する
ポーリング監視イベントは、一定の間隔で自動的に実行され、前回の実行以降に変更されたレコードをAPIにクエリするように設計されています。仕組みは次のとおりです。
-
初期化と実行:ポーリング監視イベントがアクティブ化されると、APIを呼び出してレコードのコレクションを取得し、現在の時点をマークするためのカーソル(通常はタイムスタンプ)を設定します。後続の実行では、カーソルを使用してAPI呼び出しを変更し、前回の実行後に変更されたレコードのみを返すようにします。
-
カーソル機能:カーソルは、反復する実行間でデータをフィルタリングするのに役立つ永続的なメタデータです。たとえば、各レコードに
createdAtタイムスタンプが含まれている場合、カーソルは、前回記録されたカーソル値よりも後のタイムスタンプを持つレコードのみが処理されるようにします。各反復実行の後に、カーソルが最新の実行時間に更新します。 -
ユースケース:ポーリング監視イベントは、リアルタイムWebhookをサポートしていないリモートサービスAPIに役立ちます。指定された時間範囲内のレコードをクエリすることで(
startAtやendAtなどのパラメーターを使用して)、ユーザー作成などのイベントを定期的にチェックできます。 -
実際の応用例:Okta Workflowsでは、これらのイベントを使用して、レコードの作成、更新、削除などの新しいイベントをトリガーするコネクターのイベントカードを作成できます。
注:カーソルのサイズ制限は 10 KB です。カーソルを使用して大量のデータを保存すると、ユーザーがフローを再度有効にしてカーソルをリセットしなければならないエラーが発生する可能性があります。
全体として、ポーリング監視イベントは、スケジュールされたAPI呼び出しと永続カーソルを使用して最近の変更のみが処理されるようにすることで、新しいレコードと変更されたレコードを処理するための体系的なアプローチを提供します。
開始する前に
-
Okta Workflowsにアクセスできるスーパー管理者でなければなりません。
-
コネクターをまだ作成していないときは、次の手順に従って作成します。
-
Okta Workflowsコンソールでコネクタービルダーコンソールのリンクを開きます。
-
コネクタービルダーで
アイコンをクリックしてコネクターを作成します。新しいコネクターに一意の名前と有用な説明を付けます。
-
-
コネクターに、基本的なことからすぐに始めるセクションのタスクで基本的な基盤と認証要素があることを確認してください。
手順
-
新しいコネクターのフロー(Flows)タブで、新規フロー(+ New Flow)をクリックしてフローを作成します。
-
イベントを追加(Add Event)(Add event)をクリックします。イベント(Events)の選択肢から、ポーリング監視(Polling Monitor)を選択します。
カーソル(Cursor)および返答出力(Return Outputs)フロー制御関数カードがフローに自動的に追加されます。例にある初期状態を参照してください。
-
オプションの追加(Add Options)をクリックして、ポーリング監視(Polling Monitor)カードのオプションを宣言します。
-
ポーリング監視イベントフローによって返される出力グループとフィールドを構成するには、返答出力(Add Outputs)カードの出力の追加(Add Outputs)(Return Outputs)をクリックします。
-
ポーリング監視イベントには常にアクティブな実行モードがあるため、実行モードを有効化(Enable run mode)トグルは自動的に有効になり、変更できません。ポーリング監視の実行モードを有効化するを参照してください。
-
出力(Outputs)ダイアログでは、ポーリング監視が返す出力値を指定できます。グループの追加(Add group)をクリックして出力グループを作成し、フィールドの追加(Add Field)をクリックしてグループに各フィールドを追加します。返答出力がオブジェクトである場合、グループはオブジェクト内の最上位のキーと値のペアを形成し、フィールドは第2レベルのキーと値のペアを形成します。
-
適用(Apply)をクリックして、返答出力(Return Outputs)カードへの変更を保存します。
-
-
ポーリング監視フローを構築する:
-
日時(Date & Time) Now関数カードを追加して、
endAtフィールドに新しい値を生成します。これは、APIクエリのフィルターとしてタイムスタンプを使用していることを前提としています。 -
startAtおよびendAtクエリフィルターを使用して、HTTP呼び出しのクエリフィルターを構築します。ポーリング監視(Polling Monitor)イベントカードのカーソル(Cursor)出力をstartAt日付の入力としてドラッグします。カーソルがタイムスタンプではなくオブジェクトである場合は、オブジェクト(Object) Getカードを使用して、カーソルオブジェクトからタイムスタンプを取得します。
-
フロー呼び出し(Call Flow)カードを追加して、接続の既存のhttpHelperフローを実行し、リモートサービスのAPIを呼び出します。
-
作成したクエリフィルターをフロー呼び出し(Call Flow)カードのクエリ(query)フィールドの入力としてドラッグします。
-
ポーリング監視(Auth)イベントカードの認証(Auth)(Polling Monitor)フィールドで定義された接続を使用します。
-
-
カーソル(Cursor)カードのプロパティー入力を使用して、新しいNow値を次回のスケジュールされた実行のカーソルとして保存します。これにより、元のカーソル(Cursor)値が上書きされます。
-
カーソルがタイムスタンプではなくオブジェクトである場合は、オブジェクト(Object) Constructカードを使用して、カーソルオブジェクト内のタイムスタンプを更新します。
-
コネクタの展開後、この ポーリング モニター(Polling Monitor)イベントカードを使用するアクティブな外部フローごとに、一意のカーソル値が保持されます。
-
-
API呼び出しからのペイロード応答をオブジェクトのリストにフォーマットします。各オブジェクトには、グループの最上位レベルのキーと、グループフィールドの第2レベルのキーが含まれます。
-
フォーマットされたAPI応答を返答出力(Return Outputs)カードのリスト(List)フィールドにマッピングします。
-
-
保存(Save)をクリックし、フローに名前を付けます。
例
このポーリング監視フローの例では、カーソルオブジェクトを使用してタイムスタンプを保存し、リモートサービスに追加された新しいユーザーに関する情報を記録します。
これは、ポーリング監視(Polling Monitor)イベントカードを作成するときの初期ビューです。これには、ポーリング監視(Polling Monitor)イベントカードと、フロー制御(Flow Control)のカーソル(Cursor)および 返答出力(Return Outputs)カードが含まれています。
このポーリング監視イベントフローの構築方法の詳細を次に示します。
-
ポーリング監視(Polling Monitor)イベントカードでは、カーソルにタイムスタンプに加えてレコード情報も含まれるため、カーソル(Cursor)フィールドのタイプは
Objectになります。 -
オブジェクト(Object) Get関数カードは、カーソルオブジェクトからタイムスタンプを取得します。これは、
cursor_valueというキーに格納されています。この例では、カードの出力は、
saved start dateというタイプの日時(Date & Time)フィールドです。 -
日時(Date & Time) Nowカードは、ポーリング監視のこの実行に対して新しいタイムスタンプを生成します。便宜上、フィールド名は
date - New end dateに編集されます。 -
saved start dateとdate - New end dateフィールドは、Object Constructカードに結合され、outputというクエリオブジェクトを作成します。 -
フロー制御(Flow Control)のフロー呼び出し(Call Flow)カードは外部APIを呼び出します。コネクターには
httpHelperフローと、/v1/usersエンドポイントへのGET呼び出しを使用します。時間枠でレコードを選択するための APIクエリフィルターを構築します。たとえば、1 か月間のユーザー作成イベントをチェックするクエリオブジェクトを次に示します。
{ "createdBefore": 2025-02-01T00:00:00.000Z, "createdAfter": 2025-01-01T00:00:00.000Z }フロー制御(Flow Control)Call Flowカードは接続認可のポーリング監視(Polling Monitor)カードで提供される接続(Connection)を使用します。
この例では、このカードは
newUsersListというオブジェクトのリストを返します。 -
ステップ4と5のカードは、ブランチング(Branching) If Errorカードの試す(Try)ブロックで囲まれています。
API呼び出しが成功した場合、試す(Try)カードの出力は新規ユーザーのリストになります。このオブジェクトのリストは、返答出力(Return Outputs)カードに送信されます。
この関数のIf Errorブロックは表示されません。ただし、カーソルオブジェクトの設定時またはAPI呼び出し時に発生したエラーを処理するプロセスを指定します。
-
オブジェクト(Object) Constructカードはカーソルオブジェクトを更新します。
cursor_valueキーに保存されている以前のタイムスタンプ値をdate - New end date値と置き換えます。これは最新のタイムスタンプを表し、ポーリング監視の次の反復処理ではsaved start dateフィールドにその値が使用されます。 -
フロー制御(Flow Control)のCursorカードは、この特定のユーザーのポーリング監視フローカーソルの プロパティー(Properties)値を更新します。
-
返答出力(Return Outputs)カードは、ポーリング監視を呼び出したフローに新しいユーザーのリストを返し、この特定の実行を完了します。
ポーリング監視イベントをテストする
コネクタービルダーでポーリング監視イベントをテストするには、実行(Cursor)ダイアログでカーソル(Cursor)(Run)値を設定できます。
カーソル値をシミュレーションするには、ポーリング監視実行の前回の反復処理からの値を入力します。
カーソルをnull値のままにして、最初のポーリング監視の実行をシミュレーションすることもできます。
次の手順