Claris FileMaker 2023 で新しくスクリプトトリガが追加されました。
「OnWindowTransaction」というトリガで、ファイルオプションで設定するスクリプトトリガです。
例として、監査ログを取得するというような使い方ができます。
概要
- ファイルに設定するスクリプトトリガ
- 任意のフィールド名を指定するか「OnWindowTransaction」というフィールドを設置すると、そのフィールドの値を OnWindowTransaction によって実行されたスクリプトで Get ( スクリプト引数 ) 関数を使って取得できる
- OnWindowTransaction で設定したスクリプトに引数を渡すことはできない
- 監査ログを取得する、というような使い方ができる
最重要ポイント
上記の概要の2番目のものが最重要ポイントかと思います。
指定したフィールドに取得したいデータが全部入るようにしておけば監査ログとして使用できます。
設定方法は2通りあります。
- 「OnWindowTransaction」という名前のフィールドを全テーブルに作っておく
- ログを取りたいテーブルに任意の名称のフィールドを作り、「OnWindowTransaction」スクリプトトリガの設定画面の「フィールド名」のところにそのフィールド名を設定する
どちらにしても、フィールド名の変更に耐えられないので管理しやすい方を選択すれば良いと思います。
OnWindowTransaction スクリプトトリガの開始条件
- スクリプトステップ「トランザクションを開く」を使用し、「トランザクション確定」でトランザクションが正しく確定された時
- レコード確定が正常にされた時
スクリプトトリガの名前が「OnWindowTransaction」ということですので、「トランザクションを開く」や「トランザクション確定」のスクリプトステップを使用していないとスクリプトが開始しないような印象を受けますが(少なくとも私はそう感じました)、どちらかというとレコードが確定されたときにスクリプトが開始される、という方がイメージに近い感じがしています。
設定方法
まずはファイルメニューからファイルオプションを開き、スクリプトトリガタブで「OnWindowTransaction」にチェックを入れてください。
次に呼び出すスクリプトを選択します。
次に「フィールド名」のところに任意のフィールドの名称を設定します。
実際に OnWindowTransaction スクリプトトリガが実行された時に、OnWindowTransaction というフィールドがない場合と、フィールド名を指定しなかった場合は以下のようなJSONがスクリプト引数にセットされます。
{ "OnWindowTransaction_テスト" : { "見積" : [ [ "Modified", 8 , "" ] ] } }
上記JSONの構成は次のようになっています。
内容 | 上記の例の値 | 備考 |
---|---|---|
ファイル名 | OnWindowTransaction_テスト | |
テーブル名 | 見積 | |
操作 | Modified | 「New」「Modified」「Deleted」の3つのどれかが入ります |
レコード番号 | 8 | 編集したレコードのレコード番号 |
指定したフィールド名もしくはOnWindowTransactionという名前のフィールドの値 | 空 | フィールドを指定していない場合と「OnWindowTransaction」という名前のフィールド名がない場合はここは空になります。 |
ファイル名以外は編集したレコードに関する情報が取得できます。
たとえば「見積明細」というテーブルをポータルで設定していて、そのレコードを編集した場合はテーブル名・操作・レコード番号・編集後の値がJSONに含まれます。
基本的な使い方は以上です。
使用例
使用例はやはり、監査ログを取得というところを具体的に見ていきたいと思います。
レコードの編集を開始してから、レコード確定がされるまでの間、Get ( 変更されたフィールド ) 関数を使うことによって現在変更中のフィールドの一覧が取得できます。
そのフィールド一覧と While 関数を組み合わせて変更されたフィールドの情報だけを取得するような計算式を「OnWindowsTransaction」という名称の計算フィールドに設定します。
そしてこの「OnWindowsTransaction」のフィールドの値をログテーブルなどに記録すれば、必要最低限のログを残すことができます。
ご興味がある方へサンプルファイルを作成しました。
サンプルファイルはこちらからダウンロードしてください。
注意点
OnWindowTransaction スクリプトトリガを使用する上での注意点として抑えておきたいポイントがあります。
- OnWindowTransaction スクリプトトリガの設定画面の「フィールド名」はハードコードする必要があるので、各テーブルに作成したフィールド名の変更には注意が必要
- OnWindowTransaction スクリプトトリガを設定したときのフィールド名が存在しないテーブルの場合は値が取得できない
- 「OnWindowTransaction」という名称だが、FileMaker 19.6 で実装された「トランザクションを確定」のスクリプトステップと直接関係があるわけではない(トランザクション関連の記事はこちら)
- スクリプト引数は設定できないので Get ( スクリプト引数 ) は使えないような気がするが、「OnWindowTransaction」スクリプトトリガで取得できる値は、Get ( スクリプト引数 ) で取得する。そのような仕様であることを頭に入れておく必要がある
【 余談 】
最近下記リンク先への流入増大したいこともあり、
流入量が多いとブログの価値が高まりますます投稿を加速していきたいと思います。
リンク先を開いていただけると大変助かります。
Claris International Inc. (日本語)
ご協力いただけましたら幸いです。