問題
Cloud Kicks社は、マーケティングロールを持たないユーザーが取引先責任者の[Retail Opt In]という選択リスト項目を”Yes”に更新できないようにしたいと考えています。他のユーザーがこの更新を行えないようにするには、アプリケーション構築者はどのような入力規則を使用するとよいでしょうか。
- AND( $UserRole.Name = ‘Marketing’, ISPICKVAL(Retail_Opt_In__c,”Yes”) )
- AND( $UserRole.Name != ‘Marketing’, ISCHANGED(Retail_Opt_In__c), ISPICKVAL(Retail_Opt_In__c,”Yes”) )
- AND( $UserRole.Name = ‘Marketing’, Retail_Opt_In__c = “Yes” )
- AND( $UserRole.Name != ‘Marketing’, Retail_Opt_In__c = “Yes” )
正解
- AND( $UserRole.Name = ‘Marketing’, ISPICKVAL(Retail_Opt_In__c,”Yes”) )
- AND( $UserRole.Name != ‘Marketing’, ISCHANGED(Retail_Opt_In__c), ISPICKVAL(Retail_Opt_In__c,”Yes”) )
- AND( $UserRole.Name = ‘Marketing’, Retail_Opt_In__c = “Yes” )
- AND( $UserRole.Name != ‘Marketing’, Retail_Opt_In__c = “Yes” )
解説
Cloud Kicks社の要件を満たす入力規則を簡潔に導出するプロセスは以下のようにまとめられます。
- 要件の特定:マーケティングロールを持たないユーザーは「Retail Opt In」を”Yes”に更新できないようにする。
- 条件の特定:この要件を満たすために必要な条件を特定します。
- ユーザーがマーケティングロールではない
- ユーザーが選択リスト項目を”Yes”に更新しようとしている。
- Salesforceの関数と変数の適用: 上記の条件を表現するために必要な関数と変数を選択します。
$UserRole.Name
:ユーザーのロール名を確認する変数ISCHANGED
:項目が変更されたかどうかを確認する関数ISPICKVAL
:選択リストの特定の値を確認する関数
- 論理式の構築:これらの関数を組み合わせて論理式を構築します。必要な論理式は「マーケティングロールを持っていないユーザーが項目を”Yes”に変更しようとした場合にエラーを返す」というものです。これを表現するために、
AND
関数を使用して、上記の条件がすべて真の場合にのみエラーを返す論理式を作成します。
結果的に、適切な入力規則は以下のようになります
AND(
$UserRole.Name != 'Marketing',
ISCHANGED(Retail_Opt_In__c),
ISPICKVAL(Retail_Opt_In__c,"Yes")
)
この規則は、マーケティングロールを持たないユーザーが「Retail Opt In」を”Yes”に更新しようとするとエラーを発生させるため、要件を満たします。
それぞれの選択肢の理由について説明します。
□ AND( $UserRole.Name = ‘Marketing’, ISPICKVAL(Retail_Opt_In__c,”Yes”) )
これは不正解です。この条件は、ユーザーのロールが「Marketing」であり、かつ「Retail_Opt_In__c」が「Yes」に設定されている場合に真となります。しかし、要件はマーケティングロールを持たないユーザーが「Yes」に更新できないようにすることですので、この条件は要件とは逆の状況を表しています。また、更新されているかを確認していません。
□ AND( $UserRole.Name != ‘Marketing’, ISCHANGED(Retail_Opt_In__c), ISPICKVAL(Retail_Opt_In__c,”Yes”) )
これは正解です。この条件は、ユーザーのロールが「Marketing」ではなく、「Retail_Opt_In__c」が変更されており、その新しい値が「Yes」の場合に適用されます。これにより、マーケティングロールを持たないユーザーが「Retail_Opt_In__c」を「Yes」に更新することを効果的に防ぐことができ、Cloud Kicks社の要件を満たします。
□ AND( $UserRole.Name = ‘Marketing’, Retail_Opt_In__c = “Yes” )
これは不正解です。この条件は、ユーザーのロールが「Marketing」の際に入力規則が発動するため、要件を満たしません。また選択リスト(Retail_Opt_In__c)の値は数式では直接指定できず、ISPICKVAL関数を使用する必要があるため、構文エラーが発生します。
□ AND( $UserRole.Name != ‘Marketing’, Retail_Opt_In__c = “Yes” )
これは不正解です。この条件は、ユーザーのロールが「Marketing」ではない場合に入力規則が発動するため、この部分はあっていますが、選択リスト(Retail_Opt_In__c)の値は数式では直接指定できず、ISPICKVAL関数を使用する必要があるため、構文エラーが発生します。
コメント