トリガ

設計者

トリガは、フル機能版フォームの構成要素のひとつで、サーバにおいて、起点となるフォームの計算処理が実行される度に、そのフォームにあらかじめ関連付けられた計算処理を自動的に実行するために用います。計算処理は別のフォームあるいはスクリプトとして定義出来ます。

トリガは、[マネージャ] のフォーム設計画面(フル機能版フォーム)から設定することができます。

トリガの仕様

  • ひとつのフォームに対してひとつ以上のトリガを設定できます。

  • ひとつのトリガに対してひとつのアクション(スクリプトまたはフォーム)を設定します。

  • それぞれのアクションを実行する際のパラメータ、業務責任単位、元帳版等には、起点フォームの情報が使われます。なお、パラメータについては、起点フォームのパラメータ値及び起点フォームのデフォルト設定値にて指定されたメンバが引き渡されます(前者が優先されます)。起点フォームの情報が、アクションの要件を満たさない場合(例: パラメータの不足)、実行時にエラーが発生します。

  • トリガは、フォームの計算処理が実行される箇所で、起点フォームの計算処理の後、定義された実行順にしたがって順番に実行されます。計算処理が実行される箇所とトリガの実行有無については後述します。

  • トリガから実行されるフォームおよびスクリプトから実行されるフォームにトリガが設定されていても、それらは実行されません。

  • トリガは、起点フォーム自身が計算処理を含むかどうかに関わらず実行されます。

  • アクションの本体(フォームやスクリプト)自体を削除する際、トリガでの使用有無のチェックはありません。削除後に当該トリガを実行すると、エラーが発生します。

  • エラーが発生した場合、それ以降のトリガは実行されません。

  • 起点フォーム、各トリガ経由のすべての計算処理は、それぞれ固有のデータベーストランザクション内で実行されます。エラーが発生した場合でも、それまでの正常終了分はデータベースに反映されています。

  • それぞれの計算処理が実行タイムアウト時間(デフォルト: 600秒)を超えると、エラーが発生します。

フォームの計算処理実行箇所とトリガの実行有無

フォームの計算処理が実行されるすべての箇所と、それぞれの箇所におけるトリガの実行有無を以下に示します。

機能 実行箇所 トリガの実行 クライアントプログラム

フォーム

フォームからのデータ反映

[ブラウザ][コントリビュータ](照会/帳票画面)

業務プロセス管理

提出パッケージの受付

[コントリビュータ]

業務プロセス管理

提出パッケージの再取込

[コントリビュータ]

業務プロセス管理

共有作業版へのデータ公開

[マネージャ]

業務プロセス管理

共有作業版からのデータ取込

[マネージャ]

業務プロセス管理

業務定義最新化

[マネージャ]

業務プロセス管理

パッケージ入力データ反映

[コントリビュータ](ワークスペース画面)、[Excel-Link](パッケージ入力用のみ)

[Web API], リクエスタ

「フォームを用いた計算処理の実行
(CALCULATE_BY_FORM)」処理時

[Web API], リクエスタ

フォーム

計算処理


(※1)

[ブラウザ][コントリビュータ]

トリガ

フォームアクションの実行


(※2)

各種

スクリプト

forms!<FORM_LABEL>.calculate メソッドの実行


(※3)

[マネージャ]、トリガ

(※1) フォームの計算処理を実行しただけでは,トリガは実行されない。

(※2) トリガとして登録されたフォームの計算処理実行時には当該フォームのトリガは実行されない。

(※3) スクリプト内で、.calculate メソッドを実行した時、対象フォームのトリガは実行されない。

トリガの実行結果

トリガでエラーが発生した場合、クライアント側でエラーメッセージが出力されます。何もエラーが出力されなければ、トリガの実行は正常に終了しています。

アクションによって最終的にデータが更新されなかった場合も、そのトリガの実行結果は正常終了となります。

トリガの実行時間に関する注意事項

起点フォームやトリガのそれぞれの計算処理の間、クライアントプログラムへのレスポンスは一切行われません。

そのため、それぞれの処理が実行タイムアウト時間(デフォルト: 600 秒)以内で完了したとしても、すべてのサーバ側処理の合計実行時間によってはプロキシ等のタイムアウト制限を超過することがあります。その場合、クライアントプログラム側ではエラーが発生しますが、サーバ側では処理は続行されます。

サーバ側の処理実行状況は、[マネージャ] から確認することができます(詳細については「サーバサイド非同期処理状況を確認する」を参照のこと)。