Brownさんによるトランザクションについてのシリーズ記事の第3回を紹介します。シリーズの他の記事も合わせてご参照ください。Brown2019/5/8トランザクション処理、その中でレコードを作成/編集/削除するプロセスは、複雑な概念のように思えるかもしれません。一度考え方を理解してしまえば、それらは実際にはどちらかと言えばシンプルです。開始コンテキストから、作成したリレーションを通じて、レコードを作成/編集/削除します。今回はポータルを使ったFileMakerのトランザクション処理を見ていきます。前回の復習トランザクションを開始するときに設定した内容を思い出してみましょう。EstimateかDBTransactionsタイプのいずれかのテーブルの開始コンテキストにいるとします。transactionモジュールと同じように、DBTransactionsテーブルにいるとします。Itemテーブルの間にはリレーションが設定されていて、「レコードの自動作成」がオンになっています。DBTransactionsレイアウトに、名前付きのポータルが設定されています。以下のいずれかの方法でデータが収集されています。Itemのデータ全体をJSONオブジェクトにまとめました。開始コンテキストをそれ自身と関連テーブルからデータを取得できる場所に設定します。Transactionプロセスが所有して(かつ開いて)います。新しいDBTransactionsレコードを作成し、Estimateレコードとその関連レコードを開くときにエラーは発生しませんでした。記録すべきログ情報がある場合は、ここで設定されます。説明が逆になりましたが、リレーションは以下のように設定しました。Itemテーブルに格納します。シンプルで複雑その概念はシンプルでかつ複雑です。レコードは、リレーションを介して作成/編集/削除されます。これはシンプルな部分です。Itemレコードをそれぞれの関連テーブルに作成し始めると、話が複雑になります。それぞれのリレーションのポータルで(今回説明します)、またはポータルなしで(はい、これも可能です。次の記事で説明予定)、です。さあ準備が整いました。Itemにコピーします。このセクションでは、レコードの作成について説明します。他に既存のレコードの編集と削除があります。3つの場合で基本的な考え方は同じですが、それぞれ詳細が若干異なります。Transaction」スクリプトが始まります)。Orderレコードを作成するトランザクション処理の最初のステップは、Orderレコードを作成することです。’order’ポータルに移動します。ポータルの最終行に移動し、JSONオブジェクトのデータを使用してその行のデータを作成します。関連テーブルのフィールドにデータを設定します。留意点ポータルには数個のフィールドしかありません。これらは単にレコードが正しく作成されたことを目で確認するためのものです。どのフィールドでも構いません。ポータルには1つのデータフィールドと、デバッグの目的で任意のユーティリティフィールドを配置することをお勧めします。ポータルの最終行にデータを設定してリレーションを作成したら、レコードの残りの部分にEstimateのJSONデータを入力できます。Orderレコードを作成した瞬間、そのレコードは開いています。DBTransactionsレコードとOrderレコードの2つです。Itemと一緒に作成することなので、今作成したOrderレコードの主キーを取得します。Itemレコードを作成します。Itemを(LineItemsフィールドに)取り込んでいて、それを解析する準備ができています。ここでも同じ操作を行います。itemレコードが作成されると、新しいレコードが開かれます。itemレコードを作成した後、5つのレコードが開かれています。itemレコード常にポータルの最後の行に移動するのは、そこがレコードを作成する場所だからです。上のOrderの作成ステップのように、レコードを1つだけ作成する場合でも、最後の行に移動するようにします。それによって処理の一貫性を保ちます。コミットの問題FileMakerのトランザクションプロセスがポータルを使用してオブジェクト内にレコードを作成するたびに、もう1つレコードが開きます。私はその事実をここでわざわざ強調します。Item)が作成されるまで、これらのレコードを開いたままにしておき、コミットしたくありません。そこで、以下のようなレコードをコミットする操作を行わないようにしてください。検索を実行するフィールドの外をクリックする「レコードを確定」クリプトステップそれでは処理を走らせます。複数レコードをメモリ内に蓄積します。すべてのレコードが作成されたら、それらをまとめてコミットしトランザクションを完了します。問題がある場合は復元(revert)して作成を取り消します。技術的には、FileMakerのトランザクション処理でポータルを使用する必要はありません。修正を加えるだけで、ポータルなしでレコードを作成するためのすべての作業を実行できます。ポータルは開発者がトランザクションをデバッグしてプロセスを監視するための優れた方法です。スクリプトデバッガの実行中に、レコードが作成される(しかしコミットはされていない)ところを見ることができます。ItemテーブルにトランザクションのIDも格納しています。それによって、トランザクションが終了した後も、作成されたレコードをトランザクションを介して引き続き表示できます。FileMakerのトランザクション処理は、まだ続きます次回は、ポータルなしでFileMakerのトランザクション処理がどのように行われるかについて説明します。