Database trigger event(データベーストリガーイベント)
概要
特定のデータベースの変更が発生したとき、サーバーサイドで実行されるイベントです。変更の方法がどうであれ(ワークフロー/API 呼び出し/手動編集など)、発動します。
Database trigger events は、バックエンドワークフローエディタで定義されます。指定したタイプのデータ(Thing)が変更されたとき、その変更を監視して “Only when…” 条件が真であればワークフローが実行されます。
- Thing(データタイプ)を設定して、どのデータ変更を監視するか指定します。
- “Only when…” フィールドで、どのような変更のときに発火させるかの条件を設定します。
「Thing before change」と「Thing now」
このイベントでは、次の2つのデータソースが利用可能になります。
- Thing before change — 変更前のデータ状態
- Thing now — 変更後のデータ状態
これらは、“Only when…” の条件や、イベント発生後のアクションの中で参照できます。
Created / Deleted(作成・削除されたとき)
変更が「作成」「削除」の場合もトリガーされます。
- Created:Thing が新しく作られたとき。変更前(Thing before change)は空の値になります。
- Deleted:Thing が削除されたとき。変更後(Thing now)は空の値になります。
注意事項
この種のイベントを使う際の注意点は以下のとおりです。
- 一つのワークフロー内で複数回データを変更しても、トリガーは1回だけ発火
→ Thing before change は最初の状態、Thing now は最後の状態を反映します。 - プライバシールール(Privacy rules)の扱い
→ Database trigger イベントは管理者権限で実行され、プライバシールールは適用されません。検索も current user の権限ではなく、すべてのデータにアクセスされます。 - トリガーから別のトリガーを直接呼び出せない
→ 例えばワークフロー内でデータが変わると、その変化で他のトリガーイベントが起動することはありません。もしそのようなことをしたければ、トリガーイベントの中でカスタムイベントか API ワークフローをスケジュールするなどの方法を使います。 - データソースの制限
→ “Only when…” の条件ではThing nowとThing before changeの2つしか使えず、通常の (他のワークフローで使うような) 全データソースが使えるわけではありません。アクション内ではそれ以外のデータソースも使えるようになります。 - ワークロード(Workload)への影響
→ トリガーが頻繁に発生するような変更なら負荷が大きくなります。条件を厳しくして、必要なときだけ動かすように設計することが重要です。
その他設定
- Event name(イベント名):ワークフローにわかりやすい名前をつけます。後でこのトリガーイベントを識別するために使われます。
- Type of thing(対象の Thing の種類):どのデータタイプ(Thing)を監視するかを指定します。
- Timezone selection(タイムゾーンの選択):静的または動的な代替タイムゾーンを設定して、バックエンドトリガーのタイムゾーンをオーバーライドできます。アプリの一般設定で “Enable timezone override controls” を有効にしておく必要があります。
Recurring event(定期イベント)
概要
Bubbleサーバー上で、特定の間隔でトリガーされるイベントです。
Recurring event(定期イベント)
Recurring event は、バックエンドワークフローエディタで定義されます。
以下のスケジュールが設定可能です:
- None(なし)
- Daily(毎日)
- Weekly(毎週)
- Monthly(毎月)
- Quarterly(四半期ごと)
- Yearly(毎年)
スケジュールは “Set/cancel a recurring event” アクションで初めて設定されたときから計算が始まります。
Event name(イベント名)
ワークフローに名前を入力します。この名前は後で Trigger a custom event や Set/cancel a recurring event アクションでこのイベントを選ぶときに使われます。名前自体はワークフローの実行には影響しません。
Type of thing(対象の Thing の種類)
定期イベントを実行する対象(Thing)を指定します。
Ignore privacy rules when running the workflow(ワークフロー実行時にプライバシールールを無視)
- 通常、定期ワークフローは“現在のユーザー”の文脈で実行され、プライバシールールが適用されます。
- それらをバイパスして、認証なしでもデータの全アクセス権を持つ管理者ユーザーとして実行させたい場合、このチェックボックスを有効にします。
警告
これらはセキュリティ・プライバシーに関わるオプションなので、慎重に使ってください。
備考
非常にまれですが、定期イベントが自己再スケジュールを繰り返す「無限ループ」に陥る可能性があります。そのような場合には、Scheduler を一時的に停止し、不要なスケジュールされたタスクを削除し、再び Scheduler を有効にすることで対処できます。
Timezone selection(タイムゾーンの選択)
代替のタイムゾーンを静的または動的な選択で設定することで、定期イベントのタイムゾーンをオーバーライドできます。
この設定を利用するには、まずアプリの一般設定で “Enable timezone override controls” を有効にしておく必要があります。
Plan limits(プランごとの制限)
定期イベントには、データベース中の各Thing(対象)ごとの定期イベント数の制限があります。プランごとの上限は以下の通りです。
| プラン | 一つの Thing(対象)あたり許可される定期イベント数 |
|---|---|
| Starter | 1 |
| Growth | 5 |
| Team | 20 |
Custom events(カスタムイベント)
概要
他のワークフローからトリガーできるイベントです。
Create a custom event…(カスタムイベントを作成する)
Bubble では、複数のワークフローで同じロジックを再利用できるようにカスタムワークフローを定義できます。
- Create a custom event はワークフローを定義するためのトリガーです。
- 名前とラベルを付けることができます。
- 名前 (Name):他のワークフローからこのカスタムイベントをトリガーするときに使うもの。
- ラベル (Label):Bubble のワークフローエディタ上で表示されるもの。
- カスタムイベントをトリガーする方法は2つあります:
- Trigger a custom event アクション
- Schedule a custom event アクション
Event name(イベント名)
ワークフローの名前を入力します。この名前は、Trigger a custom event や Schedule a custom event アクションを使うときに、カスタムイベントのリストに表示されます。
Call parameters(呼び出しパラメータ)
Parameters(パラメータ)
- カスタムイベントをトリガーするときに渡すパラメータを定義できます。まず、カスタムイベント自体にパラメータを定義しておく必要があります。
- Name:パラメータに付ける任意の名前。
- Type:User、Text、Number など、どの型のデータを期待するか。
- Is a list/array:チェックを入れると、リスト(複数の User や Text など)を受け取れるようになります。
- Optional:チェックを入れると、そのパラメータは必須ではなくなります。チェックなしだと、Trigger a custom event または Schedule a custom event アクションでそのパラメータを指定しないと Bubble の問題追跡機能でエラーになります。
Return values(返り値)
- カスタムワークフローで計算結果などを返したい場合は、返り値の型とラベルを指定します。
- パラメータと同様に、返り値も任意のデータ型が使えます。
- カスタムワークフローの中で Return data アクションを使ってデータを返します。
- 条件を使って、いつデータを返すかを制御できます。
- Return data アクションが有効に実行されると、その時点でワークフローの実行は停止します。
Element events(要素イベント)
概要
ページ上の要素をユーザーが操作したときに発生するイベントです。
An element is clicked(要素がクリックされた時)
このイベントは、ユーザーが要素をクリックしたときにトリガーされます。
テキスト、ボタン、画像、アイコンなど、ほとんどの視覚的要素で使用可能です。
An input’s value is changed(入力要素の値が変わった時)
このイベントは、入力要素の値が変わるときに発生します。
テキスト入力の場合、ユーザーが入力後にフォーカスを外したときに発動します。
A map’s marker is clicked(マップのマーカーがクリックされた時)
このイベントは、ユーザーがマップのマーカーをクリックしたときにトリガーされます。
“このマップの現在のマーカー (this map’s current marker)” は、ユーザーがクリックしたマーカーを指します。
A popup is opened(ポップアップが開かれたとき)
このイベントは、ポップアップが開かれたときに発生します。次のいずれかの場合です:
- Show an element/Toggle an element のアクションによって開く
- Animate an element アクションが要素の表示状態を “表示” にする終わり方をする
A popup is closed(ポップアップが閉じられたとき)
このイベントは、ポップアップが閉じられたときに発生します。次のいずれかの場合です:
- Hide an element/Toggle an element のアクションで閉じる
- Animate an element アクションが要素の表示状態を “非表示” にする終わり方をする
- ユーザーが「Esc」キーを押したとき
タイミングに関する注意
ポップアップは “Hide this element” アクションが実行される時点、またはユーザーが Esc キーを押す時点で「閉じた」とみなされます。しかしポップアップはデフォルトでフェードアウトするため、ユーザーに完全に非表示になる前にアクションが走る可能性があります。
このような状況(ワークフローの結果が画面に見えてしまうなど)を避けたい場合は、ポップアップが完全に非表示になるまで約 0.5 秒くらい遅らせてワークフローを実行するために、カスタムイベント (custom event) をスケジュールするのが有効です。
An element has an error running a workflow(指定した要素によって起動されたワークフローでエラーが発生したとき)
このイベントは、指定した要素によって起動されたワークフローでエラーが発生したときにトリガーされます。たとえばログイン失敗など予期されるエラー、またオフライン等でサーバーと通信できないことなどの予期しないエラーも含まれます。
このイベントは、An unhandled error occurs より優先されます。つまり、両方が発生しうる状況では、まず Element has an error running a workflow が実行されます。
Element(要素)
この設定では Bubble がどの要素を監視するかを指定します。たとえばボタンにこのイベントを配置すれば、そのボタンから起動されたワークフロー内で起きたエラーが捕捉されます。
Identifying the error code(エラーコードの特定)
Bubble 内の各エラーには一意のコードがあります。特定のエラーに反応するワークフローを設定したい場合、次の手順で指定可能です:
- データソース Current workflow error’s code を使う
- 全エラーコードの一覧は Settings → Language の言語テキストの最下部で確認できます
- エラーコードは静的(変わら変更されない)です
Returning the error message(エラーメッセージを取得する)
エラーメッセージは、Bubble が通常ユーザーに表示するものを取得できます。コードと組み合わせたり、条件で特定のエラーを識別したりできます。
- データソース Current workflow error’s message を使う
- 全メッセージ一覧は Settings → Language の言語テキスト末尾で確認およびカスタマイズ可能
- メッセージは動的(変わる可能性あり)
General Event(一般イベント)
概要
要素に対するユーザーの操作によって直接発生するとは限らない、特定の条件が発生したときにトリガーされるイベントです。
User is logged in(ユーザーがログインしている)
このイベントは現在のユーザーがログインしているときにトリガーされます。以下の場合に発生します。
- ページ読み込み 時にログインしている場合
- Log the user in アクションが完了したとき
- Sign the user up アクションが完了したとき
User is logged out(ユーザーがログアウトしている)
このイベントは現在のユーザーがログアウトしているときにトリガーされます。
- ページ読み込み時にログインしていない場合
- Log the user out アクションが完了したとき
Go to page アクションは新しいページでも同じページでも発火します。繰り返し発火を避けたいときはカスタムステートなどで制御しましょう。
Page is loaded(ページがロードされた)
指定した秒数ごとにアクションを実行します。リアルタイム更新機能があるため利用頻度は少なめです。
Interval(間隔)
秒数を入力して設定。
頻繁に実行するとパフォーマンスに影響します。特にデータベース操作はワークロード消費が大きいため注意してください。
Do when condition is true(条件が真のときに実行)
指定した条件が真になった瞬間にトリガーされます。
Run this…(実行頻度の設定)
- Only once:ページ読み込みごとに1回のみ
- Every time:条件が真になるたびに実行
条件が頻繁に真になるとパフォーマンスに悪影響がでます。
An unhandled error occurs(ハンドルされていないエラーが発生した)
Bubble がワークフロー内でエラーを検知したときに発火します。
- ログイン失敗など予期されたエラー
- Bubble プラットフォームの不具合など予期しないエラー
An element has an error running a workflow のほうが優先されます。
Catch(キャッチの設定)
- Any workflow error: すべてのエラーで発火。ただしこの設定をすると Bubble の自動エラーメッセージ表示は止まります。
- Element workflow errors only: 要素発のワークフローエラーのみ。特定要素に限定するなら An element has an error running a workflow を使います。
Identifying the error code(エラーコードの特定)
- データソース Current workflow error’s code を利用
- 一覧は Settings → Language の言語テキストで確認
- コードは静的(変わらない)
Returning the error message(エラーメッセージの取得)
- データソース Current workflow error’s message を利用
- 一覧は Settings → Language の言語テキストで確認・編集可
- メッセージは動的(変わる可能性あり)