Okta Workflows How-To:Workflowsヘルパーフローをセットアップする

For-Eachカードと[Stream Matching Records(一致するレコードをストリーミング)]オプションを使用してレコードを処理する方法について説明します。

作者について

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

05 12月 2022 読了目安時間: ~

A person wearing headphones is seated at a table, working on a laptop in a warm and inviting library setting

Okta Workflowsは、アイデンティティプロセスを自動化するためのノーコードプラットフォームです。

このブログ記事は、オフィスアワーまたはMacAdmins Slackの#okta-workflowsチャンネルで寄せられた質問、「Workflowsのヘルパーフロー(For-Eachカードとストリーミングカードを使用)をセットアップする方法」に基づいています。

はじめに

Workflowsには、レコードを検索できるカードが多数あります。例えば、Okta – List Users with Filterは、ユーザーをステータス別に一覧表示します。

Okta Workflows "List Users with Filter" card configured to filter ACTIVE users and stream records to a helper flow. ユーザーを検索しています

検索カードは、レコードのリストを作成します。次に、ヘルパーフローを使用して、リストの各レコードを処理します。上記の例で、ユーザーのリストを取得したら、ユーザーが最後にシステムにサインインした日時を確認できます。

レコードをヘルパーフローに送信するには、2つの方法があります。

  1. レコードのリストがList – For Eachカードに渡されます。For Eachカードは、リスト内の各レコードに対してヘルパーフローを呼び出します。
  2. 検索カードはStream Matching Recordsオプションを使用します。ストリーミングオプションでは、各レコードが選択したヘルパーフローに直接ストリーミングされます。

一般的に、ストリーミングオプションの方がスケーラビリティが高く、処理できるレコード数も大幅に多くなります。アクションカードを使用したデータストリーミングの詳細もご確認ください。

For Eachオプションとストリーミングオプションを使用した例を見てみましょう。

List – For Eachカードの使用

このセクションでは、List – For Eachカードを使用してメインフローとヘルパーフローを設定する方法について説明します。

ヘルパーフローを設定する

ヘルパーフローとは、別のフロー(メインフロー)から呼び出されるフローのことです。最初のカードがOn Demand – Helper Flowの場合、そのフローはヘルパーフローになります。

Okta Workflows "My Connected Apps" dashboard with an orange arrow pointing to the "Helper Flow" icon under Okta Apps. ヘルパーフローイベントの選択
Okta Workflows "On Demand Helper Flow" card showing context variables. ヘルパーフローの最初のカード

ヘルパーフローには、メインフロー(または呼び出し元フロー)から渡される1つ以上の入力があります。以下の例では、ヘルパーフローにUser(型:Object)とemail(型:Text)という2つの入力があります。

Okta Workflows "On Demand Helper Flow" card showing configured input and context parameters. 2つの入力(User、email)を持つヘルパーフロー

ヘルパーフロー全体を見ると、Userとemailの2つの入力値が渡されることがわかります。

Okta Workflows interface showing a helper flow titled Helper_Check user (for each) extracting a user email object. ヘルパーフロー

このフローは、渡された値を読み取る以外に、多くの処理を実行しません。本記事の目的は、ヘルパーフローとメインフローの設定方法を紹介することですので、問題ありません。

Object – Getカードを使用すると、オブジェクトから特定の値を取得できます。この例では、Emailが取得されます。

Flow Control – Assignカードは、ヘルパーフローへのemail入力を受け取り、それを別の値(同じく「email」という名前)に割り当てます。フローの後でこのメールアドレスを使用する場合に役立ちます。

メインフローを見ていきましょう。

メインフローの設定

メインフローは通常のフローであり、ヘルパーフローを呼び出します。まず、レコードのリストを返す検索カードが必要です。以下のフローでは、List Users with Filterカードを使用します。[Options(オプション)]フィールドが[First 200 Matching Records(最初に一致した200件のレコード)]に設定されています。

Okta Workflows "List Users with Filter" card with an orange arrow pointing to the Options section. カードオプション
Okta Workflows "List Users with Filter" options dialog set to return the first 200 matching records. 最初に一致した200件を返すオプション

その後、リストはList – For Eachカードに渡されます。

Okta Workflows interface displaying a List Users card passing filtered user data into a For Each card. プロビジョニング解除されたユーザーをヘルパーフローに渡します

次に、各レコードで実行するヘルパーフローを選択します。

これは重要です。ヘルパーフローを選択すると、その入力がFor Eachカードに読み込まれます。

各ヘルパーフローの入力フィールドで、矢印(フィールドの右側)をクリックし、ヘルパーフローに渡す値と型を選択します。型は、ヘルパーフローで想定されているタイプと一致させる必要があります。

Okta Workflows interface listing deprovisioned users and configuring a For Each card. ヘルパーフローの選択とその入力の設定

これも重要です。ヘルパーフローの入力を更新した場合は、ヘルパーフローを再度選択する必要があります(少々面倒ではあります)。ヘルパーフローを選択すると、加えた変更に基づいてFor Eachカードの入力が更新されます。

ヘルパーフローに渡される値を設定する方法を、もう一度見てみましょう。

まず、User ➡️(Item、型:Object)を渡します。

Okta Workflows "List - For Each" card mapping a user item list to a helper flow. ヘルパーフローに渡す値の選択(User)

次に、email ➡️(Email、型:Text)を渡します。

Okta Workflows interface showing user field mapping options for a helper flow. ヘルパーフローに渡す値の選択(email)

メインフローとヘルパーフローの連携、およびデータ受け渡しの仕組みは次のとおりです。

Okta Workflows interface showing data mapping lines connecting a main flow's "For Each" card to inputs in a helper flow. メインフローからヘルパーフローへのデータの受け渡し

メインフローを実行します。

Okta Workflows execution history view showing the execution results of a "List users (for each)" flow. メインフローのテスト

ヘルパーフローの呼び出し回数は、リスト内のレコード数と同じになります(以下の例では、リストに3人のユーザーが含まれています)。

Okta Workflows execution history view showing the helper flow output extracting a user email address. ヘルパーフローの実行(3回)

ストリーミング一致レコードオプションを使用しています

このセクションでは、ストリーミングオプションを使用してメインフローとヘルパーフローを設定する方法について説明します。最初のパートと同様に、まずヘルパーフローから始めます。

ヘルパーフローの設定

前のセクションと同様に、ヘルパーフローは別のフロー(メインフロー)から呼び出されるフローです。最初のカードがOn Demand – Helper Flowの場合、そのフローはヘルパーフローになります。

Okta Workflows "On Demand Helper Flow" card showing context variables. ヘルパーフロー

ストリーミングオプションを使用すると、ヘルパーフローの入力も定義できます。しかし、入力は少し異なります。

ヘルパーフローの入力を2つ作成する必要があります。

  • Record(型:Object)
  • State(型:Object)
Okta Workflows "On Demand Helper Flow" card configured with Record and State inputs. ストリーミング用の入力を持つヘルパーフロー

Recordは現在の項目です。この例ではUserになります。これは、ヘルパーフローにストリーミング(送信)される項目です。そのすべてのプロパティにアクセスできます。

Stateを使用すると、ヘルパーフローに渡す追加の入力を定義できます。

ヘルパーに戻って、フローの入力を作成します。次に、メインフローを設定します。

メインフローの設定

検索カードに[Stream Matching Records(一致するレコードをストリーミング)]オプションがある場合は、For Eachカードを使用する必要はありません。ストリーミングオプションを使用すると、レコードがヘルパーフローに自動的にストリーミング(送信)されます。

ここで、アクションカードを使用したデータストリーミングの詳細を確認しておくといいでしょう。

では、先ほどの例に戻りましょう。同じカードの[List Users with Filter(フィルター条件に合致するユーザーを一覧表示)]を使用します。

ストリーミングオプションを有効にする前に、カードオプションを[First 200 Matching Records(最初に一致した200件のレコード)]に設定します。ヘルパーフローの入力をテストおよび設定する際に役立ちます。

Okta Workflows "List Users with Filter" options panel set to return the first 200 matching records. テスト時には、オプションを[First 200 Matching Records(最初に一致した200件のレコード)]に設定します。

[Status(ステータス)]がDEPROVISIONED(デプロビジョニング済み)に設定されている場合:

Okta Workflows "List Users with Filter" card set to filter DEPROVISIONED users with result output fields expanded. デプロビジョニングされたユーザーのリスト

カードをテストするには、クリックしてリスト項目のいずれかを開きます。左側には、ヘルパーフローに渡されるUser JSONオブジェクト(rootとして表示されます)が表示されます。ヘルパーフローですべてのプロパティが利用可能になります。

Okta Workflows user account details modal displaying user properties and JSON data. List Users with Filterカードのテスト

JSONの形式がわかったところで、ヘルパーフローの入力を設定します。

ヘルパーフローを終了する

ヘルパーフローに戻り、入力を定義します。

Recordは現在のアイテムです。この特定のフローでは、IDとEmailを渡しています。これらの値は、上記のJSONオブジェクトの一部であるため使用できます。

Okta Workflows interface showing an "On Demand Helper Flow" card connected to an "Assign" card. 別のカードに接続されている、ヘルパーフローの入力

また、Admin emailはどこから取得されるのでしょうか?[State(状態)]で、任意の追加値をヘルパーフローに渡すことができます。メインフローの設定を完了し、Admin emailを渡す方法を確認します。

メインフローを完了する

メインフローを完了するには、[Options(オプション)]に戻り、[Stream Matching Records(一致するレコードをストリーミング)]を選択します。

Okta Workflows "List Users with Filter" options dialog set to stream matching records. [Stream Matching Records(一致するレコードをストリーミング)]の設定オプション

次に、ヘルパーフローを選択します。ストリーミングの仕組み上、オブジェクト全体がヘルパーに送信されるため、ヘルパーフローの入力は表示されません。

Okta Workflows "List Users with Filter" card configured to stream deprovisioned user records to a helper flow. ヘルパーフローに渡す追加の値を作成する

追加の値(Admin email)を渡すには、オレンジ色の長方形の内側をクリックして新しいフィールドを作成します。

フィールド名(Admin email)とデータ型(Text)は、ヘルパーフロー側のフィールド名(Admin email)およびデータ型(Text)と完全に一致している必要があります。この方法で複数の値を渡すことができます。

Okta Workflows "List Users with Filter" card streaming deprovisioned users to a helper flow with an Admin email parameter. ヘルパーフローに追加の値を渡す(管理者のメールアドレス)

これでフローを実行する準備が整いました。

以下は、メインフローを実行したときのスクリーンショットです。[Results(結果)]に、ヘルパーフローにストリーミングされたレコード数が表示されているのがわかります。

Okta Workflows execution history view showing successful record streaming for deprovisioned users. メインフローのテスト

ヘルパーフローの実行(合計3回)以下のようになります。

Okta Workflows execution history view showing helper flow execution with streamed user record and state variables mapped to an Assign card. ヘルパーフローの実行

各フローを組み合わせると、次のようになります。

Okta Workflows overview diagram showing record streaming from a main flow to a helper flow. メインフローとヘルパーフローの概要

概要

このブログ記事では、For Eachカードとストリーミングオプションを使用してヘルパーフローをセットアップする方法を学びました。

Workflowsに関するご質問にお答えします

Okta Workflowsについてご質問はありますか?フローの構築方法がわかりませんか?毎週開催されるコミュニティのオフィスアワーにご参加ください。サポートを受けられます。

作者について

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

アイデンティティ施策を推進