UI部品 基本編

| この記事でわかること: ・[テーブルのレコード追加/更新時]トリガーの利用方法 ・レコードの更新をきっかけに処理を実行する方法 ・トリガーを使用して通知を自動送信する方法 ・手動連絡を削減する業務フローの構築方法 |
Forguncyのトリガー機能を利用すると、テーブルへのレコード追加や更新をきっかけに、あらかじめ設定した処理を自動で実行できます。
トリガーは通知の送信や定期処理などに活用できますが、特に便利なのがデータの変更履歴を自動で記録できる点です。
誰がいつ、何を変更したのかを記録しておくことで、問い合わせ対応や運用管理に役立ちます。
今回は出荷依頼管理アプリを題材に、出荷依頼テーブルの更新を検知して変更履歴を自動で記録する仕組みを作成します。
また、変更内容を関係者へ通知することで、情報共有を効率化する方法についても学びます。
| プロジェクトファイル (作成バージョン:(10.0.15.0) | trigger_before.fgcp trigger_after.fgcp(実装済みプロジェクトファイル) |
1.プロジェクトを確認する
今回の演習で使用するプロジェクトを確認します。
手順1-1.テーブルを確認
プロジェクトには既にテーブルが内蔵されています。 今回は下記の2つのテーブルを使用します。
なお、出荷依頼変更履歴テーブルにデータはまだありませんが、履歴IDには既に自動採番設定がされています。

手順1-2.ページを確認
プロジェクトには複数のページが内蔵されています。
「出荷依頼一覧」ページは、出荷依頼テーブルに登録されているデータを一覧形式で表示するページです。
「出荷依頼変更」ページはポップアップウィンドウ形式で表示され、出荷依頼テーブルに登録されているデータを編集するページで、更新ボタンを押した際の処理は既に実装されています。
「出荷依頼更新履歴一覧」ページは、出荷依頼の変更を一覧で表示するページです。
今回は、出荷依頼変更ページでデータの変更が行われた際にその変更内容を記録し、出荷依頼更新履歴一覧ページで確認できるように処理を作成していきます。

2. トリガーを設定する
トリガーはサーバーサイド処理のスケジュールタスクから設定できます。
今回は、出荷依頼テーブルが更新された際に実行されるトリガーを作成します。
手順2-1.スケジュールタスクを追加
リボンの[作成]>[サーバーオブジェクト]>[スケジュールタスク]をクリックし、新しくスケジュールタスクを作成します。
スケジュールタスクの設定ウィンドウの[全般]タブで、名前欄に「出荷依頼変更」と入力します。

[トリガー]タブに移動し、タスクの開始を「テーブルのレコード更新時」に設定します。
対象テーブルを「指定したテーブル」に変更し、出荷依頼テーブルに設定します。

この設定により、出荷依頼テーブルのレコードが更新された際にトリガーが実行され、変更されたデータの内容を取得できるようになります。
手順2-2.コマンドの設定
トリガーが作動するときに動作する処理を実装します。
処理の設定は[コマンド]タブの[コマンド…]ハイパーリンクを押下し、開いたスケジュールタスクの設定ウィンドウで行います。

手順2-2-1.出荷依頼番号を取得
まず、更新されたレコードの出荷依頼番号を取得するための変数を作成します。
左上の[新しいコマンド]ボタンをクリックし、変数の設定コマンドを追加します。
変数名に「p出荷依頼番号」と入力し、変数値は「データベースのテーブルを参照」を選択、出荷依頼テーブルを指定します。
[選択]タブで単一のフィールドを指定し、対象フィールドで「出荷依頼番号」を設定します。[クエリー]タブに移動し、下表のように設定を行います。
| フィールド | 条件 | 値 |
|---|---|---|
| [ID] | =(等しい) | =キー |

これにより、後続の処理で出荷依頼番号を利用できるようになります。
手順2-2-2.繰り返しコマンドを追加
更新時トリガーの「データ」パラメーターには、変更された項目の情報が配列形式で格納されています。
変更された項目を取得するため、繰り返しコマンドを追加します。
繰り返し回数、または繰り返し配列欄には「=データ」を取得します。

手順2-2-3.変更のあった項目を取得
繰り返しコマンドの中に変数の設定コマンドを追加します。
変数名に「p変更項目」と入力し、変数値は「値、または数式」を選択したうえで「=Item.ColumnName」と入力します。

手順2-2-4.条件分岐の設定
データの変更履歴を登録する際に、どの項目に変更があった場合でも「更新日時」は登録されるようになっています。
デフォルトの状態だと更新日時だけで1レコード作られるようになってしまっているため、それを除外するため条件分岐コマンドを配置します。
条件式は下表のように設定します。
| 変数 | 条件 | 値 |
|---|---|---|
| P変更項目 | <>(等しくない) | 更新日時 |

これで、更新日時以外の項目が変更された場合のみ後続の処理が実行されるようになります。
手順2-2-5.変更履歴を登録
条件分岐コマンドの中にテーブルデータの更新コマンドを配置し、変更があった項目の数だけ出荷依頼変更履歴テーブルにレコードを追加するように設定します。
処理の種類は「追加」、対象テーブルには出荷依頼変更履歴テーブルを指定します。
項目は下表のように設定します。
| フィールド | 値 |
|---|---|
| 出荷依頼番号 | =p出荷依頼番号 |
| 変更項目 | =Item.ColumnName |
| 変更前値 | =Item.OldValue |
| 変更後値 | =Item.NewValue |
| 更新者 | =実行ユーザー |
| 操作種別 | 変更 |
| 更新日時 | =実行日時 |
| 通知日時 | =実行日時 |

手順2-2-6.メール送信の設定
変更履歴を記録したら通知を行うよう設定を行います。
ForguncyでTeamsに通知を飛ばしたり、メールで通知したりすることができます。
今回はメール通知を行いますが、Teamsに通知を飛ばす方法については下記を参考にしてください。
Forguncyドリル – 在庫が発注点を下回ったらアラートを通知
メール送信コマンドを追加します。
この時、繰り返しコマンドの外に配置するよう気を付けてください。
メール送信コマンドは、以下のように設定します。
| 項目 | 設定内容 |
|---|---|
| 差出人 | no-reply@example.com |
| 宛先 | username@example.com |
| 件名 | 出荷依頼の変更が行われました |
| 本文 | 出荷依頼の情報が更新されました。 更新者:[=実行ユーザー] 更新日時:[=実行日時] |

差出人と宛先のメールアドレスはサンプル用に設定をしていますが、ご自分のアドレスなど任意の値を入力してください。
これでトリガーが実行された際に、更新者と更新日時を含む通知メールが送信されます。
設定は以上で完了です。
3.デバッグを実行する
デバッグを行うには、動作確認したいページを開いた状態でリボンの[ホーム]>[デバッグ実行]>[▶]ボタン、またはForguncy Builderの左上にある▶ボタンを押下してプロジェクトをデバッグ実行します。

プロジェクトを実行すると、出荷依頼一覧ページが表示されます。
リストビューに表示されている[変更]ハイパーリンクを押下すると、出荷依頼編集ページが表示されます。
任意の値を変更し保存ボタンを押下すると、出荷依頼テーブルのデータが更新されます。
また、更新時トリガーが実行され、変更内容が出荷依頼更新履歴テーブルへ自動で登録され、メールで通知が行われます。
出荷依頼更新履歴一覧ページを開くと、変更した内容が履歴として登録されていることが確認できます。

この記事はお役に立ちましたか?
Forguncyのコマンドやサーバーサイド処理についてもっと知る
Forguncyの開発スタートガイドやオンラインヘルプでは、トリガーやサーバーサイド処理、各種コマンドについて詳しく紹介しています。
今回の演習で利用した機能について、さらに理解を深めることができますのでぜひご活用ください。
