Okta Workflowsは、アイデンティティプロセスを自動化するためのノーコードプラットフォームです。
このブログ記事は、オフィスアワーまたはMacAdmins Slackの#okta-workflowsチャンネルで寄せられた質問、「Workflowsのヘルパーフロー(For-Eachカードとストリーミングカードを使用)をセットアップする方法」に基づいています。
はじめに
Workflowsには、レコードを検索できるカードが多数あります。例えば、Okta – List Users with Filterは、ユーザーをステータス別に一覧表示します。
ユーザーを検索しています
検索カードは、レコードのリストを作成します。次に、ヘルパーフローを使用して、リストの各レコードを処理します。上記の例で、ユーザーのリストを取得したら、ユーザーが最後にシステムにサインインした日時を確認できます。
レコードをヘルパーフローに送信するには、2つの方法があります。
- レコードのリストがList – For Eachカードに渡されます。For Eachカードは、リスト内の各レコードに対してヘルパーフローを呼び出します。
- 検索カードはStream Matching Recordsオプションを使用します。ストリーミングオプションでは、各レコードが選択したヘルパーフローに直接ストリーミングされます。
一般的に、ストリーミングオプションの方がスケーラビリティが高く、処理できるレコード数も大幅に多くなります。アクションカードを使用したデータストリーミングの詳細もご確認ください。
For Eachオプションとストリーミングオプションを使用した例を見てみましょう。
List – For Eachカードの使用
このセクションでは、List – For Eachカードを使用してメインフローとヘルパーフローを設定する方法について説明します。
ヘルパーフローを設定する
ヘルパーフローとは、別のフロー(メインフロー)から呼び出されるフローのことです。最初のカードがOn Demand – Helper Flowの場合、そのフローはヘルパーフローになります。
ヘルパーフローイベントの選択
ヘルパーフローの最初のカード
ヘルパーフローには、メインフロー(または呼び出し元フロー)から渡される1つ以上の入力があります。以下の例では、ヘルパーフローにUser(型:Object)とemail(型:Text)という2つの入力があります。
2つの入力(User、email)を持つヘルパーフロー
ヘルパーフロー全体を見ると、Userとemailの2つの入力値が渡されることがわかります。
ヘルパーフロー
このフローは、渡された値を読み取る以外に、多くの処理を実行しません。本記事の目的は、ヘルパーフローとメインフローの設定方法を紹介することですので、問題ありません。
Object – Getカードを使用すると、オブジェクトから特定の値を取得できます。この例では、Emailが取得されます。
Flow Control – Assignカードは、ヘルパーフローへのemail入力を受け取り、それを別の値(同じく「email」という名前)に割り当てます。フローの後でこのメールアドレスを使用する場合に役立ちます。
メインフローを見ていきましょう。
メインフローの設定
メインフローは通常のフローであり、ヘルパーフローを呼び出します。まず、レコードのリストを返す検索カードが必要です。以下のフローでは、List Users with Filterカードを使用します。[Options(オプション)]フィールドが[First 200 Matching Records(最初に一致した200件のレコード)]に設定されています。
カードオプション
最初に一致した200件を返すオプション
その後、リストはList – For Eachカードに渡されます。
プロビジョニング解除されたユーザーをヘルパーフローに渡します
次に、各レコードで実行するヘルパーフローを選択します。
これは重要です。ヘルパーフローを選択すると、その入力がFor Eachカードに読み込まれます。
各ヘルパーフローの入力フィールドで、矢印(フィールドの右側)をクリックし、ヘルパーフローに渡す値と型を選択します。型は、ヘルパーフローで想定されているタイプと一致させる必要があります。
ヘルパーフローの選択とその入力の設定
これも重要です。ヘルパーフローの入力を更新した場合は、ヘルパーフローを再度選択する必要があります(少々面倒ではあります)。ヘルパーフローを選択すると、加えた変更に基づいてFor Eachカードの入力が更新されます。
ヘルパーフローに渡される値を設定する方法を、もう一度見てみましょう。
まず、User ➡️(Item、型:Object)を渡します。
ヘルパーフローに渡す値の選択(User)
次に、email ➡️(Email、型:Text)を渡します。
ヘルパーフローに渡す値の選択(email)
メインフローとヘルパーフローの連携、およびデータ受け渡しの仕組みは次のとおりです。
メインフローからヘルパーフローへのデータの受け渡し
メインフローを実行します。
メインフローのテスト
ヘルパーフローの呼び出し回数は、リスト内のレコード数と同じになります(以下の例では、リストに3人のユーザーが含まれています)。
ヘルパーフローの実行(3回)
ストリーミング一致レコードオプションを使用しています
このセクションでは、ストリーミングオプションを使用してメインフローとヘルパーフローを設定する方法について説明します。最初のパートと同様に、まずヘルパーフローから始めます。
ヘルパーフローの設定
前のセクションと同様に、ヘルパーフローは別のフロー(メインフロー)から呼び出されるフローです。最初のカードがOn Demand – Helper Flowの場合、そのフローはヘルパーフローになります。
ヘルパーフロー
ストリーミングオプションを使用すると、ヘルパーフローの入力も定義できます。しかし、入力は少し異なります。
ヘルパーフローの入力を2つ作成する必要があります。
- Record(型:Object)
- State(型:Object)
ストリーミング用の入力を持つヘルパーフロー
Recordは現在の項目です。この例ではUserになります。これは、ヘルパーフローにストリーミング(送信)される項目です。そのすべてのプロパティにアクセスできます。
Stateを使用すると、ヘルパーフローに渡す追加の入力を定義できます。
ヘルパーに戻って、フローの入力を作成します。次に、メインフローを設定します。
メインフローの設定
検索カードに[Stream Matching Records(一致するレコードをストリーミング)]オプションがある場合は、For Eachカードを使用する必要はありません。ストリーミングオプションを使用すると、レコードがヘルパーフローに自動的にストリーミング(送信)されます。
ここで、アクションカードを使用したデータストリーミングの詳細を確認しておくといいでしょう。
では、先ほどの例に戻りましょう。同じカードの[List Users with Filter(フィルター条件に合致するユーザーを一覧表示)]を使用します。
ストリーミングオプションを有効にする前に、カードオプションを[First 200 Matching Records(最初に一致した200件のレコード)]に設定します。ヘルパーフローの入力をテストおよび設定する際に役立ちます。
テスト時には、オプションを[First 200 Matching Records(最初に一致した200件のレコード)]に設定します。
[Status(ステータス)]がDEPROVISIONED(デプロビジョニング済み)に設定されている場合:
デプロビジョニングされたユーザーのリスト
カードをテストするには、クリックしてリスト項目のいずれかを開きます。左側には、ヘルパーフローに渡されるUser JSONオブジェクト(rootとして表示されます)が表示されます。ヘルパーフローですべてのプロパティが利用可能になります。
List Users with Filterカードのテスト
JSONの形式がわかったところで、ヘルパーフローの入力を設定します。
ヘルパーフローを終了する
ヘルパーフローに戻り、入力を定義します。
Recordは現在のアイテムです。この特定のフローでは、IDとEmailを渡しています。これらの値は、上記のJSONオブジェクトの一部であるため使用できます。
別のカードに接続されている、ヘルパーフローの入力
また、Admin emailはどこから取得されるのでしょうか?[State(状態)]で、任意の追加値をヘルパーフローに渡すことができます。メインフローの設定を完了し、Admin emailを渡す方法を確認します。
メインフローを完了する
メインフローを完了するには、[Options(オプション)]に戻り、[Stream Matching Records(一致するレコードをストリーミング)]を選択します。
[Stream Matching Records(一致するレコードをストリーミング)]の設定オプション
次に、ヘルパーフローを選択します。ストリーミングの仕組み上、オブジェクト全体がヘルパーに送信されるため、ヘルパーフローの入力は表示されません。
ヘルパーフローに渡す追加の値を作成する
追加の値(Admin email)を渡すには、オレンジ色の長方形の内側をクリックして新しいフィールドを作成します。
フィールド名(Admin email)とデータ型(Text)は、ヘルパーフロー側のフィールド名(Admin email)およびデータ型(Text)と完全に一致している必要があります。この方法で複数の値を渡すことができます。
ヘルパーフローに追加の値を渡す(管理者のメールアドレス)
これでフローを実行する準備が整いました。
以下は、メインフローを実行したときのスクリーンショットです。[Results(結果)]に、ヘルパーフローにストリーミングされたレコード数が表示されているのがわかります。
メインフローのテスト
ヘルパーフローの実行(合計3回)以下のようになります。
ヘルパーフローの実行
各フローを組み合わせると、次のようになります。
メインフローとヘルパーフローの概要
概要
このブログ記事では、For Eachカードとストリーミングオプションを使用してヘルパーフローをセットアップする方法を学びました。
Workflowsに関するご質問にお答えします
Okta Workflowsについてご質問はありますか?フローの構築方法がわかりませんか?毎週開催されるコミュニティのオフィスアワーにご参加ください。サポートを受けられます。