子オブジェクトの内容を検索結果に表示する

リレーションオブジェクトパターン(こちら参照)の場合、Edison Matchの検索結果には親オブジェクトの項目のみ表示可能です。子オブジェクトの内容を表示するには、子オブジェクトのレコード内容を親オブジェクトに反映させる処理が必要です。
ここでは、フローを使って子オブジェクトのレコード内容を親オブジェクトに反映させる方法を紹介します

本書で使用するオブジェクト例と検索結果表示イメージ

以下のようにマッチング候補データ格納オブジェクト(こちら参照)が
親オブジェクト:募集
子オブジェクト:スキル
という構成のオブジェクトを使用します。

募集オブジェクト(親)にスキルオブジェクト(子)の内容を反映する「必要スキル」(テキスト型項目)を用意します。
Edison Match検索結果にはこの「必要スキル」を表示することで、子オブジェクトの内容が確認できます。
スキルオブジェクトのレコードが変更されたとき、後述で紹介するフローで「必要スキル」にスキルオブジェクトの内容を反映します。

フローの紹介

子レコードが追加・更新・削除されたときに、子レコードの内容を親レコードに反映します。以下3フローを作成します。

≪自動起動フロー(トリガーなし)≫

・子レコード内容連結&親レコードに反映フロー
  同じ親レコードに紐づく子レコードの内容をカンマ区切り文字列にして、親レコードに反映します。
  下2つのレコードトリガーフローから呼び出されます。

≪レコードトリガーフロー≫

・子レコード追加・更新時に以下「子レコード内容連結&親レコードに反映フロー」を起動する
・子レコード削除時〃
  子レコードが更新されたときに呼び出されるフローです。同じ親を持つ子レコードを取得して、
  上の自動起動フロー(トリガーなし)を呼び出します。内容はほぼ同じですが、
  レコードトリガーフローの起動条件が追加・更新時と削除時で
  別々にしなくてはいけなかったので、上記2本作成しました。 

自動起動フロー(トリガーなし)(1本)

フロー全体像

入力値として以下2つ用意して、呼び出し元のレコードトリガーフローから値を受け取ります。
・子オブジェクトのレコードコレクション(子オブジェクトのレコード型のコレクション)
 親レコードに表示する内容をここから取得します。
・親オブジェクトのレコードID(テキスト型)
 本フローの最後で親レコードを更新するとき、更新対象の親レコードを指定するために使用します。

これらを使って、子レコードの項目をカンマ区切りで連結して、親レコードに反映します。

子レコードの総数取得(割り当て)

number型の変数にフロー入力値の「子オブジェクトのレコードコレクション」のコレクション数を設定します。
後続のループ処理の中のカンマ付与する処理で、コレクションの最後まで処理したかを判定するために使用します。

コレクションをカンマ区切り文字列に置換(ループ)

フロー入力値の「子オブジェクトのレコードコレクション」をループして、後続の処理を行います。

スキルを文字列に追加(割り当て)

検索結果に表示したい項目をテキストに連結します。
テキスト型の変数(下例ではskillsText)を作成し、それにフロー入力値の「子オブジェクトのレコードコレクション」の項目(下例では「スキル」)を連結します。

文字列に追加済スキルカウントカウントアップ(割り当て)

フロー入力値の「子オブジェクトのレコードコレクション」の内、追加したスキルの数をカウントアップします。
後続のカンマ付与処理で、コレクションの最後まで処理したかを判定するために使用します。

最後のスキルでないならカンマを付与(決定)

追加済スキルカウント(下例のcurrentSkillCount)が、コレクションの総数(下例のcurrentSkillCount)と一致していたら、最後のスキル(子オブジェクト)とみなして、カンマを付与しない。

カンマ区切り(割り当て)

スキルをカンマで区切ります。

親レコード更新(レコードを更新)

上のループ処理で作成した子オブジェクト項目を連結した文字列を親レコードに登録します。

レコードトリガーフロー(2本)

フロー全体像

子レコードが追加・更新・削除されたときに起動します。内容はほぼ同じですが、レコードトリガーフローの起動条件が追加・更新時と削除時で別々にしなくてはいけなかったので、2本作成しました。 
細部違いがあるのでこの後で紹介します。

開始

オブジェクトには、子オブジェクト(本例ではスキル)を設定。
トリガーを設定は以下。
追加・更新時:「レコードが作成または更新された」
削除時 :「レコードが削除された」

親が同じ子レコード取得(レコードを取得)

オブジェクトには、子オブジェクト(本例ではスキル)を設定。
スキルレコードを絞り込みは以下。
追加・更新時:追加・更新された子レコードの親オブジェクトレコードIDと一致する。
削除時 :削除された子レコードの親オブジェクトレコードIDと一致する & 削除した子レコードのレコードIDを含まない。

親レコードのスキル項目(カンマ区切り文字列)更新(サブフロー)

作成した自動起動フロー「子レコード内容連結&親レコードに反映フロー」を呼び出します。
親レコードのレコードIDと、上の「レコードを取得」で取得した子レコードを渡します。

TOP