動的入力フィールドを追加する:HTTPの例
作成者はヘルパーフローを使用して、利用可能なフィールドのリストを取得するためのAPIへのリクエストが必要な場合、またはオプションセクションでのユーザーの選択に応じてアクションに必要なフィールドのリストが変化する場合に、カードの入力を動的に取り込むことができます。
次の基本的な例では、結果を正しいオブジェクトのリストに成形する処理フローと、フィールドのリスト自体をサービスから取得するフローの2つのフローを使って単純な入力のリストを作成します。これは、ユーザーのインスタンスに対してカスタムフィールドの作成やその他のスキーマの変更がサービスで許可されている場合によく使用されます。これはあくまで例であり、フローの構築に必要な基礎を伝えることを目的としています。
処理フローを構築する
処理フローは、次のセクションで説明する取得フローから返されるアイテムのリストから個々のアイテムを受け取ります。これは、各オブジェクトから必要な情報を抽出し、正しいキーによって正しい形状に整形するために使用されます。
シナリオでは、サービスはユーザーのテナントで利用できるフィールドを表すJSONオブジェクトの単純なリストを返します。処理フローは、各フィールドのオブジェクト(例:概要(Summary)、優先度(Priority)、期日(Due Date))を取り込み、プラットフォームがカードの入力としてリストを表示できるようにフォーマットします。これは、あくまでも説明のための例に過ぎません。
[
{
"required":true,
"schema":{
"type":"string"
},
"name":"Summary",
"key":"summary"
},
{
"required":false,
"schema":{
"type":"number"
},
"name":"Priority",
"key":"priority"
},
{
"required":true,
"schema":{
"type":"date"
},
"name":"Due Date",
"key":"date"
}
]
次のフローの目的は、上述のAPI応答を、Workflowsでサポートされる次のJSONに変換することです。
[
{
"displayname":"Summary",
"name":"summary",
"type":"Text",
"required":true
},
{
"displayname":"Priority",
"name":"priority",
"type":"Number",
"required":false
},
{
"schema":{
"type":"date"
},
"displayname":"Due Date",
"name":"date",
"type":"Date & Time",
"required":true
}
]
-
新規フロー(+ New Flow)をクリックして新しいフローを作成します。
-
フローの最初のカードとしてHelper Flowカードを追加します。
-
保存(Save)をクリックし、フローに
Format Input Fieldsという名前を付けます。 -
フローの説明として
Processes a list of items and reformats the list to be used as an input listと入力し、フローを通過するすべてのデータを保存(Save all data that passes through the flow)を選択して保存(Save)をクリックします。 -
クリックまたはドラッグして作成(Click or drag to create)をクリックして、Helper Flowカードにフィールドを追加します。ラベルを追加して
field_objectという名前を付け、入力(Enter)をクリックします。 -
フィールドタイプとしてObject(オブジェクト)を選択します。
-
フローにGet Multiple関数カードを追加します。
-
Helper Flowカードのfield_objectフィールドをGet Multipleカードのobject入力にドラッグします。
-
Get Multiple関数への出力として抽出する値のキー名を追加します。前述のJSONの例で言えば、
name、key、required、schema.typeとなります。requiredがTrue/Falseのブールフィールドであることに注意してください。 -
Get Multiple関数カードの次にBranching Lookup関数カードを追加します。
-
サービスのフィールドタイプ(schema.type)は、Workflowsで使用されるフィールドタイプとは異なるため、Lookup関数カードを使って変換します。Get Multiple関数カードのschema.typeフィールドをLookup関数カードの値(Value)フィールドにドラッグします。
-
値が次の場合(When Value is)列の下に
stringと入力し、結果(Then Result is)列の下にTextと入力します。 -
値が次の場合(When Value is)列の下に
numberと入力し、結果(Then Result is)列の下にNumberと入力します。 -
値が次の場合(When Value is)列の下に
dateと入力し、結果(Then Result is)列の下にDate & Timeと入力します。 -
不明な型が型として追加されるように、それ以外の場合の結果(Otherwise Result is)フィールドに
Textと入力します。 -
Lookupカードの出力名をconverted_typeに変更します。
-
クリックまたはドラッグして作成(Click or drag to create)(displayname)をクリックしてReturnカードにdisplayname(Click or drag to create)というフィールドを追加し、Get Multiple関数カードの出力を名前(name)フィールドにドラッグします。
-
クリックまたはドラッグして作成(Click or drag to create)(name)をクリックしてReturnカードに名前(name)(Click or drag to create)というフィールドを追加し、Get Multiple関数カードの出力をキー(key)フィールドにドラッグします。
-
クリックまたはドラッグして作成(Click or drag to create)(type)をクリックしてReturnカードにタイプ(type)(Click or drag to create)というフィールドを追加し、Lookup関数カードの出力をconverted_typeフィールドにドラッグします。
-
クリックまたはドラッグして作成(Click or drag to create)(required)をクリックしてReturnカードに必須(required)(Click or drag to create)というフィールドを追加し、Get Multiple関数カードの出力を必須(required)フィールドにドラッグします。
-
フローを保存し、テストダイアログで上述のいずれかのオブジェクトをfield_objectフィールドに貼り付けてテストします。
取得フローを構築する
取得フローは、サービスからオブジェクトのリストを取得するために使用されます。これは、HTTPリクエストを作成してリクエスト内のオブジェクトのリストを特定し、そのリストを前述の入力フィールドをフォーマット(Format Input Fields)処理フローに渡します。リストは、処理フローで適切な形式に整形されます。
-
フロー(Flows)タブに切り替えます。新規フロー(+ New Flow)をクリックして新しいフローを作成します。
-
フローの最初のカードとしてHelper Flowカードを追加します。
-
保存(Save)をクリックし、フローに
Retrieve Input Fieldsという名前を付けます。 -
フローの説明として
Retrieves a list of available fields and format the list to display as inputs on the connector cardと入力し、フローを通過するすべてのデータを保存(Save all data that passes through the flow)を選択して保存(Save)をクリックします。 -
Flow Control Call Flow関数カードをフローの最初のカードとして追加します。
-
フローの選択(Choose Flow)をクリックします。
-
httpHelperフローを構築するか、事前に作成したhttp_helperを選択します。httpHelperフローを構築するを参照してください。カードには、http_helperフローに定義されている入力が自動的に取り込まれます。
-
リクエストメソッドとしてGETを入力します。
-
フィールドリストの取得元となるエンドポイントの相対URLを入力します。
-
Child Flowカードの認証(auth)オブジェクトをCall Flow関数カードの接続(Connection)入力フィールドにドラッグします。
-
Call Flowカードの出力では、http_helperフローの出力と同じキー、ステータスコード(status_code)(数値)、ヘッダー(headers)(オブジェクト)、本文(body)(オブジェクト)を定義する必要があります。
-
フローにList Map関数カードを追加します。
-
Call Flow関数カードの本文(body)フィールドをMap関数カードのリスト(list)フィールドにドラッグします。これは、前述のオブジェクトの例で提供されたものと同じオブジェクト形状を前提としていることに注意してください。
-
フローの選択(Choose Flow)をクリックし、前述の例のList Input Fieldsフローを選択します。
-
フィールドオブジェクト(field_object)の横のドロップダウンを選択し、アイテム(Item)を選択します。これにより、フィールドオブジェクト(field_object)の各アイテムが処理フローに渡され、適切な形式の新しいリストが返されます。
-
Map関数カードの出力名を新しいフィールドオブジェクト(new_field_object)に変更します。
-
クリックまたはドラッグして作成(Click or drag to create)をクリックしてFlow Control Return関数カードにフィールドを作成し、そのフィールドに出力(output)というラベルを付けます。このラベルは、プラットフォームに認識させるために必要です。
注意:このフィールドには出力(output)というラベルが必要です。このフィールドに別のラベルを割り当てると、プラットフォームで認識されなくなります。
-
Map関数カードの新しいフィールドオブジェクト(new_field_object)フィールドをReturnカードのoutputフィールドにドラッグします。
-
フローを保存し、テストします。
入力([Inputs)]ダイアログからフローを呼び出す
これらのフローは、ダイアログの入力(Inputs)セクションから呼び出されます。次に、これらのフローと動的入力機能の使用方法を示す例を示します。
-
フロー(Flows)タブに切り替えます。新規フロー(+ New Flow)をクリックして新しいフローを作成します。
-
フローの最初のカードとしてアクションカードを追加します。
-
保存(Save)をクリックし、フローに
Create Itemという名前を付けます。 -
フローの説明として
Create a new item using the custom fields implemented on your instance.と入力し、フローを通過するすべてのデータを保存(Save all data that passes through the flow)を選択して保存(Save)をクリックします。 -
Connector Actionカードの入力の追加(Add Inputs)をクリックします。
-
グループの追加(Add Group)(Add group)ボタンの横の[more actions(より多くのアクション)]メニューをクリックし、動的フィールドの追加(Add Dynamic Fields)をクリックします。
-
グループ名(Group Name)フィールドに取得するフィールドを説明する文字列を入力して更新します。すべての動的フィールドは、1つのグループに含まれます。
-
フローの選択(Choose Flow)をクリックします。
-
作成済みのRetrieve Input Fieldsフローを選択します。
-
保存(Save)をクリックします。
-
デプロイメント(Deployment)タブに移動し、テストバージョンのデプロイ(Deploy test version)をクリックしてこれらのフローをテストします。
-
デプロイを完了したら、上部メニューのホーム(Home)をクリックしてフロービルダーに戻ります。
-
新しいフローを作成し、そのフローにコネクターアクションカードを追加します。カードに入力フィールドが表示されるはずです。
次の手順