動的入力フィールドの追加: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(クリックまたはドラッグして作成)]をクリックしてReturnカードにdisplaynameというフィールドを追加し、Get Multiple関数カードの出力をname(名前)フィールドにドラッグします。
-
[Click or drag to create(クリックまたはドラッグして作成)]をクリックしてReturnカードにname(名前)というフィールドを追加し、Get Multiple関数カードの出力をkey(キー)フィールドにドラッグします。
-
[Click or drag to create(クリックまたはドラッグして作成)]をクリックしてReturnカードにtype(タイプ)というフィールドを追加し、Lookup関数カードの出力をconverted_typeフィールドにドラッグします。
-
[Click or drag to create(クリックまたはドラッグして作成)]をクリックしてReturnカードにrequired(必須)というフィールドを追加し、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(グループの追加)]ボタンの横の[more actions(より多くのアクション)]メニューをクリックし、[Add Dynamic Fields(動的フィールドの追加)]をクリックします。
-
[Group Name(グループ名)]フィールドに取得するフィールドを説明する文字列を入力して更新します。すべての動的フィールドは、1つのグループに含まれます。
-
[Choose Flow(フローの選択)]をクリックします。
-
作成済みのRetrieve Input Fieldsフローを選択します。
-
[Save(保存)]をクリックします。
-
[Deployment(デプロイメント)]タブに移動し、[Deploy test version(テストバージョンのデプロイ)]をクリックしてこれらのフローをテストします。
-
デプロイを完了したら、上部メニューの[Home(ホーム)]をクリックしてフロービルダーに戻ります。
-
新しいフローを作成し、そのフローにコネクターアクションカードを追加します。カードに入力フィールドが表示されるはずです。