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