ボタンクリックなどのイベント(動作)をきっかけに、あらかじめ設定したアクションを実行するものです。トリガでは、データ保存、メール送信、ライト点灯等の様々なアクションがプルダウンメニューで設定できます。条件を指定し、その条件に合う場合のみトリガを実行するよう設定することも可能です。
概要
トリガのロジック
トリガはWhen、If、Then、Elseのロジック構造を使用します。
- When:イベントがTulipに登録されるとき
- If:条件を満たす場合
- Then:アクションを実行する
- Else:条件に当てはまらない場合に別のアクションを実行する
例)変数「測定値」が公差範囲外の場合にエラーを表示させるトリガ
トリガコマンドの種類
トリガでは2種類のコマンドを使用できます。
- アクション:エラーメッセージの表示やメールの送信などステップ変更に関連しない動作
- 遷移:ステップの移動やアプリの完了などの動作
トリガの種類
トリガには次の3つの種類があります。
- アプリレベルのトリガ
- 発動のタイミング
- アプリ開始時
- アプリ完了時
- アプリキャンセル時 - 設定場所
App Editor右ペインの「アプリ」タブ
- 発動のタイミング
- ステップレベルのトリガ
- 発動のタイミング
- ステップ開始時
- ステップ終了時
- タイマ(一定時間間隔)
- マシンとデバイスからのデータ出力時 - 設定場所
App Editor右ペインの「ステップ」タブ
- 発動のタイミング
- ウィジェットトリガ
- 発動のタイミング
ボタンクリック時等各ウィジェットのタイミング - 設定場所
ウィジェット選択後に表示されるApp Editor右ペインの「ウィジェット」タブ
- 発動のタイミング
アプリ上でのトリガ発動のタイミングは下記流れの通りです。
実行できるアクション (一例)
- 変数、テーブルへのデータ保存
- 文字列の操作(連結・取り出し等)
- メールやSMSへの送信
- URLを開く
- ファイルを開く
- データベースにデータを書き込む
- サウンドを鳴らす
- 色の変更
- バーコードのスキャン
- メッセージの表示
- ステップの遷移
- アプリの完了
作成方法
- トリガを設定したいウィジェットやステップ等をクリックし、画面右のタブにあるトリガ項目の「+」をクリックする
- 一番上にトリガ名を入力する
※後から修正しやすくするため、必ずトリガ名を入力してください。「テーブルへの保存」等何をしているのかが分かりやすい名前を付けることを推奨します。 - プルダウンより設定したいアクション・遷移を選択して設定する
保存ボタンをクリックして保存する
トリガ・アクションのコピー・削除
トリガ単位やアクション単位等でコピーしたり削除することができます。
- トリガ
トリガ名横に表示される四角のアイコンよりコピー、ハサミマークをクリックすると削除できます。
コピーしたトリガはctrl+vで同じ種類のトリガに貼り付けられます。 - If/Else If
右上の四角のアイコンをクリックするとコピー、ごみ箱マークをクリックすると削除できます。 - アクション
右側の四角のアイコンをクリックするとコピー、ごみ箱マークをクリックすると削除できます。 - 遷移
右側のごみ箱マークをクリックすると削除できます。
遷移は1つしか設定できないため、コピーはできません。
トリガの実行時の処理
トリガキュー
トリガイベントが発生すると、トリガキューにトリガが追加されます。
実行順序
- トリガは順番に実行されます。つまり、前のトリガが完了してからでないと次のトリガの実行は開始されません。
- トリガ実行順序をトリガキューと呼びます。トリガイベントが発生すると、トリガキューにトリガが追加され、追加された順に実行します。
- トリガキューは、オペレーターの操作 (入力ウィジェットへの入力、ボタンのクリック、カスタム ウィジェットの使用など) やカスタム ウィジェットの JavaScript など、アプリ内の他のタスクとは別に動作します。
変数の入力値の扱い
トリガはトリガ実行時点での変数の値を参照します。
トリガのキャンセル
次の場合、トリガキュー内のトリガはキャンセルされ、実行されません。
- 遷移が実行された場合
ステップの移動やアプリの完了等が実行された場合、トリガキューに残っているトリガはすべてキャンセルされます。 - Tulip Playerを強制的に閉じた場合
Tulip Playerを強制的に閉じてアプリが応答しない場合は、実行中のトリガに残っているアクションと、トリガキューに残っているトリガはすべてキャンセルされます。
エラー処理
次の場合、トリガエラーとそれに続くキャンセルが発生します。
- トリガアクションエラー
トリガ内のアクションにエラーが発生すると、そのトリガ内の残りのアクションはスキップまたはキャンセルされます。
下記に設定されたトリガは「エラー時に残りのトリガを停止」する機能がデフォルトで有効化されているため、
エラーが発生するとトリガキュー内及びトリガイベント内にある残りのトリガは実行されません。
- アプリ開始時
- アプリ完了時
- アプリキャンセル時
- ステップ開始時
- ステップ終了時
その他の全てのタイプのトリガでは、「エラー時にの頃のトリガを停止する」機能がデフォルトで無効化されています。
エラーが発生したとしても後続のトリガは実行されます。 - トリガのタイムアウト
トリガがタイムアウトした場合、トリガキュー内の残りのトリガはすべてキャンセルされます。
タイムアウトについては次に詳しく記載します。
トリガランタイム
- トリガランタイムとはトリガがアクティブに実行されている期間のことです。
- トリガは他のトリガと並行して実行されたり、バックグラウンドで実行されたりすることはありません。実行中のトリガが終了するまで新しいトリガの実行を開始することはできません。
- トリガの実行中でもアプリを操作することは可能です。ボタンクリック等のトリガイベントが実行された場合は、トリガキューにトリガが追加されます。
制限とトリガタイムアウト
- トリガキューにはデフォルトで最大100個のトリガイベントを保持できます。
- ステップ遷移によって起動したトリガを最大100個連続して実行します。
例)ステップ1でボタンをクリックしてステップ2に移動→ステップ2の開始時のトリガを2個実行・ステップ3に移動→ステップ終了時のトリガを3個実行→ステップ3の開始時のトリガを5個実行・・・ - デフォルトのトリガタイムアウト時間は遷移に関するトリガが25秒、その他のトリガが10分です。この時間が経過すると、トリガと残りのアクション、トリガキュー内の残りのトリガもすべてキャンセルされます。
- トリガの実行から30秒後に時間がかかっている旨を伝えるメッセージ、100秒後に時間がかかっている旨を伝えるメッセージをアクションをキャンセルするボタン付きで表示します。10分が経過するとキャンセルされた旨のエラーメッセージが表示されます。
- オプションとして以下の設定が可能です。必要な場合はサポートにお問い合わせください。
- 100秒が経過してもまだ実行されているトリガを手動でキャンセルできる設定を有効化できます。
デフォルトでは無効化されています。 - タイムアウト期間を短縮または延長することが可能です。
Tulipでは動作が完了する可能性を高めるために10分間のタイムアウト期間を初期値として推奨しています。
なおトリガの実行に数分以上かかる場合は以下の点を検討してください。
- トリガを簡素化することで失敗の可能性を減らします。
- バックグラウンドでオートメーション*を実行し、トリガの負荷を軽減します。 *オートメーションは有料です。
- トリガ内のサードパーティシステム(コネクタ関数やAPI)を確認して最適化します。
- 100秒が経過してもまだ実行されているトリガを手動でキャンセルできる設定を有効化できます。
テーブルレコードに関するアクション
レコードの作成・更新
テーブルレコードを作成/更新するアクションとそのレコードに対して保存等のデータ操作を実行する場合、同じトリガ内で連続してアクションを設定することで、レコード作成/更新とデータ操作が1つの動作として実行されます。そのため、すべてが成功するか、すべてが失敗するかのいずれかになります。
すべてのアクションが失敗した場合は、再試行されます。
以下の点に注意が必要です。
- レコード作成/更新・データ操作の後に別のアクションを実行する場合は、レコード作成/更新・データ操作は成功しても別のアクションのみ失敗する可能性がある。
例)レコード作成/更新・データ操作保存を連続して行い、その後にコネクタ関数アクションを実行する - レコード作成/更新とデータ操作アクションの間にテーブルに関係ないアクションを実行する場合、レコード作成/更新とそのレコードに対するデータ操作アクションは1つの動作として認識しない。
例)レコード作成/更新・データ操作保存の間に別のデータ操作アクションを実行する - レコード作成/更新したレコードに対し、そのレコードの情報を読み取ってデータ操作アクションを実行する場合は、1つの動作として認識しない。
例)レコード作成/更新した後にそのレコードの情報を同じレコードの別フィールドに保存する - 集計を使用する場合、集計値はレコード作成/更新が行われる前の集計値が使用される。
例)レコード作成/更新した後にデータ操作アクションで集計を使用する - データ操作アクションで2つの異なるレコードを更新する場合は1つの動作として認識しない。
トリガの再試行
- トリガはテーブルアクション(テーブルデータの書き込み、更新、テーブルの操作等)のみを再試行します。
- 10分以内にテーブルアクションが失敗した場合、最大2分間再試行されます。2分を経過してもアクションの実行に失敗した場合はトリガキューないの残りのアクションとトリガはすべてキャンセルされます。
- トリガのアクションにはテーブル操作とデータ更新のみが含まれるようにしてください。
- トリガアクションの再試行でアクションが誤って2回実行された場合でも、結果が重複することはありません。そのため、テーブルアクションで同じデータが複数回書き込まれることはありません。
ベストプラクティス
- エラーに対応できるようトリガを設定する
エラー発生時に処理を続行するか停止するかを設定する必要があります。トリガは無効な入力・実行エラー・コネクタ関数またはテーブルへの書き込み失敗などによりエラーが発生する可能性があります。- トリガが続行するように設定されている場合、エラーが発生したトリガは停止しますが、次のトリガは続行されます。
- トリガを停止するように設定すると、トリガキュー内の他のトリガはキャンセルされます。
- インタラクティブなウィジェットを使用するステップでは長時間実行されるトリガを避ける
ウィジェットは操作を行うとすぐに状態が変化します。アプリ実行時にはウィジェット上でアクションが即座に実行されるのを確認できますが、ネットワーク速度が遅い場合やコネクタの実行時間が長い場合、ロジックの実行に若干の遅延が生じる可能性があります。 - 遷移(次のステップへ移動等)をクリックした後に他のトリガを操作しない
遷移後にトリガキューに追加されたトリガは実行されません。遷移アクションのあるウィジェットを操作すると、遷移が実行されるまではそのステップに留まりますが、遷移後に追加されたトリガは実行されません。 - 長時間実行されるコネクタとデータ更新は別のステップで実行する
重要データとのやり取りは、長時間実行されるコネクタと同じステップで実行しないことを推奨します。
長時間実行されるトリガまたは遷移をクリックした後にステップを操作した場合、重要なデータが保存されないリスクがあります。 - 変数は各ステップで1つのトリガでのみ入力されるようにする
競合状態を避けるため、変数は1つのトリガでのみ入力・変更されるように設定します。例えばアプリ内の複数のボタンが同じ変数を更新するといった設定をすると、正しい値が入力されない可能性があります。