【bubble】リレー形式の承認フロー作成について

みなさま、こんにちは!

現在、リレー形式の承認フローをbubbleで作成しています。
この「リレー」の部分のやり方を調べているのですが、わからずな状態です。
相談室で以下のやり方が書いてあったので試したのですが、できておりません。

◆Dataの状況

・「confirmation(→承認依頼内容を格納)」「checker(承認者リスト)」の2つのTypeを用意。
・confirmation typeにはchecker fieldを作り、list形式でdropdownで指定されたcheckerを格納。
・このlist化されたcheckerに、順番に承認をリレーしたい。

◆DesignとWorkflowの状況

・indexページで承認依頼内容を作成。
・checker typeに格納されている確認者を、index画面右のdropdownから選んで依頼を送信。
・送信ボタンをクリックすると、入力内容がconfirmation type(冒頭記載のようにchecker fieldにcheckerがlist形式で格納)に格納されるとともに、確認者1にparameter(入力した内容のuniqe_idと、承認リレー用のnum)を合わせてメール送信されるようにワークフローを設定。



◆悩んでいるところ
悩み①:
確認者にメール送信するときに、confirmationページのリンクも添付しようとしてますが、そのURLの添付の方法がわかっていません。confirmationページのURLに、パラメータ(uniqu_idを付与して添付すると思うのですが、直接入力+パラメータの付与なやり方でしょうか?
※ ↓の「This url」になっている部分です。

悩み②:
confirmationページで「確認者1」が承認ボタンをクリックしたら、「確認者2」にメール送信をするWorkflowを作りたいと思っています。
冒頭に添付した過去の質問では、「#itemを+1して次に回す」指示をしていると認識したのですが、それができません。

send mail ( 該当する決済’s 確認者’s :item# (get data from page urlでパラメータ=num。typeはnumber) + 1 ’s mail。

イメージは、confirmation typeのcheker fieldに、list形式で格納されているcheckerに順番に送っていくイメージです。こちらのやり方をご教示いただけると幸いです。
現在は2名分しかdropdownを作っていないので、#firstと#lastで指示すれば実装可能なのですが、今後さらに増やした場合は、#を1ずつ増やす必要があると思っております。

もちろん、「こんなやり方じゃない!」ということもあるかと思いますので、アドバイスいただけると幸いです!

悩み1について
送信する画面のType of contentは設定されているでしょうか?
設定されている場合、これが承認を回したいデータとなっていれば、「This url」で自動的にパラメータ付きのURLが取得できます。
もしURLパラメータ(URL?param=xxx)のような形で対応させている場合は、This urlではなく「website home url」を使い、appendでモデルIDを追加、さらに「?param=ユニークとなるパラメータ」を指定すれば、取得できると思います。

悩み2について
chekerテーブルに承認順を指定しているフィールドがある場合であれば、次のように考えると良いのではないかと思います。

考え方)
ログインしているユーザーと一致するレコードを特定し、その処理順より大きいレコード一覧を取得し承認順でソート(Asc)
これで取得したリストのfirst itemを取得

この方法で、自分の次の承認者情報を単一で取得できます。
first itemで取得した後に、承認者名(userテーブル参照)を取得し、そのemailを取得する流れです。

テーブル例
checker
└user(userテーブル参照)
└承認順(数字)

userA 1
userB 2
userC 3

この場合で、userAが承認した場合の後のフロー

  1. Do a search forで「checker」を選択
  2. checkerの検索条件に、承認順 > Do a search for にして「checker」を選択
  3. 2の内部の検索条件にuser = Current user、念のためsort byに優先順、DescendingはNo(昇順ソート)にする
  4. 3の設定を閉じるとSearch for Checkerとなるので、:first item’s 承認順 とする(ここで1の値がとれる)
  5. 4の設定を閉じると、Search for Checkerとなるので、:first item’s userとし、さらに’s emailとする
    (つまり、Search for Checker:first item’s user’s email となる)

気をつけないとならないのは、Bubbleの標準ソート順は作成日時です。
なので、承認順序を基準にソートを行う必要があります。
承認順序でソートして、その中に自分が含まれなければ昇順ソートの場合先頭要素が次の承認者と判断できます。

最終承認者の場合、取得できるレコードがなくなるため取得レコードが0件の場合は承認完了など処理を分岐する必要があります。
(checkerテーブルに最終承認者フラグなどがあればそれを使うのもありです)

ポイントとしては、checkerテーブルに承認者自身は含まれるため、自分の処理順を取得できればその次の数字のユーザーの取得ができるというところかなと思います。

「いいね!」 1

悩み2が説明がわかりにくかったかもと思ったのでサンプル作りました。

左のDropdownでテストA〜D
優先順1、2、3、10として設定しています。
テストAを選択すると、Bが
テストCを選択するとDが表示されるような形です。

右のユーザー、優先度、メールを指定して追加すると、checkerにデータを追加することができます。

■動作サンプル

■エディタ

「いいね!」 1

早速ご丁寧にありがとうございます!

悩み1の方にいただいたアドバイスに着手しましたが、早速つまづいてしまっています。
こちら私の説明が至らなかったと思います。

■Page構造
・indexページで申請内容入力
・承認者は、indexページで承認作業をするのではなく、承認作業用に別に作ったconfirmationページのURLを送り、承認作業を行ってもらう。
・そのため、indexページのワークフローで、This urlやwebsite home urlをリンクとすると、indexページのURLになってしまう。
・また今気づいたのですが、indexページのワークフローは、send mailの後にGo to pageがあり、Go to pageでパラメータを指定しているので、send mailにパラメータが乗っかっていないのでは、と思いました。

「いいね!」 1

また、送信する画面のType of contentsですが、indexページ上で指定するType of contentsのことでしょうか?data typeを指定することがどのようにワークするのか、まだ理解できていなくはありますが。。。大変お手数ですが、こちらもご確認いただけますと幸いです!

ページに対するType of contentは対象のTypeの中の1レコードがオブジェクトとして参照できるようになります。
この場合、ページURLの末尾にそのレコードのユニークIDが設定されるので、This URLで特定のレコードを呼び出すページが作成できるというかたちになります。

ページの構造は理解したので、何かわかりやすそうなサンプル作ってみますね!

わわわ!サンプルコード!ありがとうございます!
ご返信を参考に、自分でもいじってみて、試してみます!

サンプルこんな感じでいかがでしょう?

■申請画面動作サンプル

■申請画面エディタ

■承認画面動作サンプル

■承認画面エディタ

承認画面のURL末尾、163〜の文字列がレコードのIDです。
申請画面で作ったURLの末尾で指定されているユニークIDをもとに、申請情報がworkflow_checkで読み込まれます。

承認のworkflowですと、一般的には差し戻し処理などいくつかのステータス遷移が必要ですが、サンプルは承認が進むのみケースを想定しています。

理解すればあっという間に作れるので、ご確認ください!

ありがとうございます!!!できました!
すごく分かりやすかったです!

パラメータの部分は、workflow_checkページのURLの後ろにuniqe_idを入れるだけで、ページ自体のType of contentを指定していれば表示されることが発見でした。

助かりました!

「いいね!」 1