国内初!bubble公式開発試験に合格!

【Bubble】Workflowの実行順序の仕様

概要

Workflow構築していると、想定通りに動かない場面に遭遇するかもしれません。これは私たちの実装方法の問題の可能性もありますが、Bubbleの仕様である可能性が考えられます。

本記事では、Workflowの仕様について解説します。

ℹ️ 本記事はこちらのForum記事を参照しています。内容をさらに詳しく学びたい方は記事の方も併せてご覧ください。

同期処理と非同期処理

仕様の解説の前に、同期処理と非同期処理についての理解が必要です。これらは処理の実行順序の違いを表します。

同期処理は、1つずつ順番に実行し、処理が完了したら次の処理に移ります。

処理が完了する順番は、必ず1→2→3の順となります。

Workflowが想定通りに動かせない方は、同期処理の考えを想定しているかもしれません。

しかしBubbleのWorkflowは基本的に、非同期処理に該当します。

非同期処理は、処理の完了を待たずに次の処理を実行します。

図の例だと、処理の開始は1→2→3ですが、処理の完了は2→3→1となります。

非同期処理は、処理の同時進行による効率化がメリットですが、処理順序の制御が難しくなることがデメリットです。

Bubbleではこの非同期処理が基本であることを前提とし、引き続き仕様の解説に移ります。

Workflowの実行順序の仕様

通常のWorkflowは、順に実行されるが、前のStepの処理完了は待たない

Workflowタブから実装できる通常のWorkflowでは、Step1の処理の次にStep2が実行されますが、Step1の処理が終わっていなくてもStep2の処理を開始します。

Step1, Step2という名前はあくまで順番を表すものであり、前のステップの完了を待ってから次のステップを開始するわけではありません。

例えば以下のようなWorkflowがあります。(処理の内容は適当です)

実行の流れをグラフにすると、次のようになります。

例えばもしStep1でDo a Search forを実行した場合、データ取得に時間がかかり、処理時間が長くなります。その結果をStep2で使おうとした場合、正しい結果を得られない可能性があります。

Backend Workflowは、Stepを無視し、Workflowの開始と同時に実行する

ℹ️ Backend Workflowの解説については、こちらの記事をご覧ください。

BubbleのWorkflowは効率化のために、サーバーサイドとフロントエンドで並行に実行されます。

先ほどの通常のWorkflowは、フロントエンドでの処理です。

Backend Workflowはサーバーサイドでの処理なので、Workflowが開始するとすぐに実行されます。

たとえば「Schedule API Workflow」というBackend Workflowを呼び出すActionは、下図のようにStep4に配置していても、Workflowの開始と同時(Step1と同時)に実行されます。

グラフで表すと以下の通りです。

Custom Eventは、処理の完了を待ち、順に実行される

Workflow内では、Custom Eventを作成できます。

下図のように、あらかじめCustom EventとしてWorkflowを定義します。

それを「Trigger a custom event」で呼び出し、実行できるのです。

このとき、Custom Eventは並列でなく順番に実行されます。

上記の例の場合、Step3でCustom Event Aを呼び出しました。この中の2つの処理(Create a new ItemとDelete Item)の完了を待ってから、Step4が実行されます。

ただし、Custom Event内の処理については通常と同様、前のStepの完了を待たずに実行されます。

グラフで表すと、以下通りです。

想定通りの実行順序を実現するための方法

仕様を理解した上で、想定通りの実行順序を実現するための方法を紹介します。

Custom Eventを組み合わせることで実行順序を制御する

Custom Eventの前後では実行順序が保証されるという仕様を利用します。

例えばBackend Workflowを呼び出す「Schedule API Workflow」が最初に実行されないようにするには、Custom Event内へ入れることで制御できます。

Result of new thingを使うことで、順に実行される

前のStepの結果を使用する「Result of new thing」というActionがあります。

これを使用すると、前のStepの完了を待ってからデータを取得し、次の処理を実行できます。

Add a pause before next actionで、Workflowを一時停止させる

Navigation内の「Add a pause before next action」を使うと、Workflowを指定した秒数だけ一時停止させられます。

これを利用し、前Stepの処理時間を確保してから、次の処理へ移ります。

単位はミリ秒なので、画像の場合だと1秒間の一時停止です。

Only whenによる条件分岐は、ActionでなくEventで分岐させる

Workflowを条件付きで実行するために、Only whenという項目があります。

これはActionでもEventでも設定できます。画像はEventで設定しています。

Event内のActionそれぞれに条件をつけられますが、前のActionの完了を待たないため、条件が想定通りに動作しない可能性があります。

その場合は、画像のようにEvent単位で条件を付けることで順序を制御しやすくなります。

資料請求

Swoooのサービス資料をダウンロードいただけます。開発支援をご検討の方はぜひご一読ください。

ご相談・お問い合わせ

お客様の新規事業開発やマーケティング活動における課題解決をサポートします。
お気軽にご相談ください。

料金シミュレーション

たった2分で開発費用が分かります。
簡単な質問に答えるだけでお見積りが可能です。