注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

変数の再計算の動作

変数を再計算すると、その定義と現在の入力から値が再び計算されます。たとえば、合計費用の変数は数量の変数を入力として使用する場合があります。再計算の動作は、数量を変更したときに合計が自動的に更新されるか、ユーザーが更新を要求するまで待機するかを制御します。

再計算の動作を選択する

Workshop エディターで変数パネルを開き、変数を選択して、変数値の再計算で選択肢を選びます。この設定は、以下に示す対応している変数定義で利用できます。

選択肢動作使用例
自動必要になったときに計算し、入力が変更されたときに再計算します。これがデフォルトです。入力値が変わっていないように見える場合でも、データの更新によって再計算されることがあります。合計や概要をユーザーの選択と同期した状態に保持します。
イベントによるトリガー時のみ明示的な {variable name} を再計算イベントによって計算が要求されるまで待機します。入力の変更や上流の変数のデータ更新では、値は自動的に再計算されません。ユーザーが複数の入力を終えてボタンを選択した後に計算を実行します。
モジュールの読み込み時とイベントによるトリガー時モジュールの読み込み時に初期値を計算します。ただし、遅延読み込みの対象となります。その後は、入力の変更や上流の変数のデータ更新のたびに再計算するのではなく、明示的な {variable name} を再計算イベントがトリガーされたときに再計算します。計算されたデフォルト値から開始し、その後はユーザーが更新するタイミングを決められるようにします。

どちらのイベントベースの選択肢でも、入力を変更したり、上流の変数のデータを更新したりしても、計算された値は自動的には最新になりません。値にこれらの変更を反映する必要がある場合は、再計算イベントを設定します。これらの設定は、変数の定義に基づく計算を制御します。ウィジェットや変数の値を設定イベントは、引き続き値を直接変更できます。

再計算をトリガーする

ボタングループなどのウィジェットに、{variable name} を再計算イベントを追加します。このイベントは、選択されている再計算の選択肢にかかわらず、変数の定義と現在の入力を使用して新しい値を要求します。

イベントでのみ計算する場合は、ユーザーが結果を必要とする前にイベントをトリガーできる方法を用意してください。変数を再計算しても、その入力の設定がイベントを必要とする場合、入力は強制的には再計算されません。先にそれらの入力が準備できていることを確認してください。

対応している変数定義タイプ

利用できるかどうかは使用する定義タイプによって異なり、次の定義タイプに対応しています。

  • 関数
  • オブジェクトセットの集計
  • オブジェクトプロパティ
  • 変数の変換
  • オブジェクトセットフィルター
  • SQLクエリ

読み込みとデータ更新

Workshop は、不要な計算を避けるために変数の遅延読み込みを使用します。自動計算は、表示されているウィジェットやレイアウトが変数を必要とするまで待機する場合があります。これには、ほかの必要な変数がその変数に依存している場合も含まれます。そのため、モジュールの読み込み時とイベントによるトリガー時では、モジュールを開いた直後ではなく、初めて必要になったときに初期値が計算される場合があります。

表示の対象は、画面上に表示される値に限りません。条件付き表示設定など、レイアウトを制御する変数は、制御対象のセクションが非表示であっても、表示されているものとして扱われる場合があります。そのため、セクションを非表示にしても、関連するすべての計算が停止するとは限りません。

アクションの実行やモジュールデータの更新によって、自動計算する変数が再計算されることがあります。これには、関数、集計、オブジェクトプロパティ、変換が含まれます。これらの変数は、自動更新の後にも、結果の値が変わらなくても再計算される場合があります。

オブジェクトセット変数の値と、ウィジェットが表示するオブジェクトデータは別のものです。オブジェクトセットを返す関数の再計算を制御しても、テーブルに表示されるオブジェクトが固定されるわけではありません。ウィジェットは、アクションやデータ更新の後に引き続きデータを再読み込みできます。

既知の制限事項

  • 再計算によってユーザーの変更が上書きされることがあります。 ウィジェットや変数の値を設定イベントが計算される変数を変更した場合、その後の再計算で、その値は定義に基づく結果に置き換えられます。セッション中にこれらの変更を保存する必要がある場合は、対応している変数ではイベントベースの選択肢を使用するか、ユーザーが入力した値を別の静的変数に保持します。
  • イベントは計算の完了を待機しません。 同じイベントリスト内で {variable name} を再計算の後に変数の値を設定を配置しても、新しい結果がコピーされる保証はありません。以前の値や読み込み中の状態がコピーされる場合があります。依存するステップをユーザーがトリガーするインタラクションに分け、計算が完了するまで待ってから続行してください。イベントの実行順序を参照してください。
  • オブジェクトセット定義は再計算の動作に対応していません。 オブジェクトセット定義の変数定義タイプは、再計算の動作に直接対応していません。代わりに、オブジェクトセットフィルターなど、入力として使用される対応済みの変数の動作を設定するか、関数を使用してオブジェクトセットを定義できます。

予期しない再計算のトラブルシューティングを行う際は、変数のリネージュグラフを使用して依存関係を調べ、変数を読み取ったり変更したりするウィジェットを特定します。