設問
Universal Containers (UC) には、ユーザが商談レコードを編集できるカスタム Visualforceアプリケーションがいくつか開発されています。UC は、Opportunityレコードのデータの完全性に問題があり、これまでは必須ではなかった特定のフィールドを必須にすることにしました。新たに必須のフィールドは商談のステージに依存しており、商談が後のステージに進んだ場合にのみ特定のフィールドが必要になります。フィールドは2つあります。この新しい要件に対処する最も簡単なアプローチは何でしょうか?
選択肢
A. 商談ページのレイアウトを更新して、これらのフィールドを必須としてマークします。
B. ステージを考慮した各フィールドの入力規則を使用します。
C. 設定でこれらの商談フィールドの定義を必須に更新します。
D. レコードの保存時に各項目をチェックする Apex トリガを作成します。
解答
B. ステージを考慮した各フィールドの入力規則を使用します。
解説
A. 商談ページのレイアウトを更新して必須フィールドを設定する方法です。
不正解です。レイアウト設定でフィールドを必須にしても、この設定は標準ページにしか適用されず、Visualforceアプリケーションには反映されません。そのため、ユーザーがVisualforceアプリケーション経由でデータを入力する場合には、必須条件が適用されず、データの完全性を担保できません。全入力経路で一貫したバリデーションが必要な本ケースでは不適切な解決策です。
B. ステージに応じてフィールドを必須にできる入力規則を使用する方法です。
正解です。入力規則を使用することで、商談のステージに応じて動的に必須条件を設定できるため、ステージが進むにつれて特定フィールドを必須にするという要件を満たせます。さらに、入力規則はVisualforceアプリケーションからの入力にも適用されるため、データの一貫性と完全性が保たれます。この設定はSalesforceの標準機能を利用した最も簡単なアプローチです。
C. フィールドを設定で必須にすると、
不正解です。設定でフィールドを必須にすると、すべてのレコードで無条件に必須化されてしまい、ステージに依存して特定フィールドを必須にするという要件を満たせません。これにより、ステージに関わらず入力を強制することになり、業務フローに適合しない余計な入力を促してしまう可能性があるため、この選択肢は不適切です。
D. Apexトリガで保存時にチェックする方法もありますが、
不正解です。Apexトリガでフィールドの必須チェックを行うことは可能ですが、開発が必要で設定だけで対応できる選択肢に比べて複雑であり、保守コストも発生します。要件に応じた条件設定は可能ですが、Visualforceアプリケーションに設定反映するためにはさらにカスタマイズが必要になる可能性があり、簡単なアプローチではありません。
第97問
こちらをクリック