手順 - 事前検証
このセクションでは、事前検証に関連するさまざまな操作で実行する必要があるステップについて説明します。
• 事前検証ステータスの区別
• 役割ベースの事前検証の実装
その他の手順については、次を参照してください。
事前検証ステータスの区別
操作と属性のどちらを検証するかによって、フィルタまたはバリデータから返す検証ステータスが異なります。このセクションでは、シナリオによってどの検証ステータスを返すかを決めるためのいくつかの規則とベストプラクティスについて説明します。
操作事前検証ステータス
検証サービスとクライアントインフラストラクチャは、事前検証操作については、現在 "有効"、"無効"、"非表示" の 3 つのステータスをサポートしています。"有効" ステータスは、操作がユーザーに表示され、ユーザーによる選択が可能であることを意味します。"無効" ステータスは、操作がユーザーに表示されるものの、選択不可能である (操作が "淡色表示" されている) ことを意味します。"非表示" ステータスは、操作がまったくユーザーに表示されないことを意味します。アイコンとしてレンダリングされる "無効" 操作 (テーブルヘッダ、テーブル行などで) は現在サポートされていないことに注意してください。検証サービスが操作アイコンの "無効" ステータスを返すと、クライアントインフラストラクチャはその操作アイコンを非表示にするだけです。
事前検証ロジックを実行するフィルタとバリデータのどちらを実装する場合でも、検証ステータスが (直接または検証結果に内包されて) 検証サービスに返ります(ソリューショングループを実装する場合は、検証サービスは、ソリューショングループによって無効と見なされたすべてのコンポーネントに自動的に "非表示" ステータスを割り当てます)。
バリデータまたはフィルタからどのステータスを返すかを選択するには、以下の規則を目安として使用してください。
• 不明な場合は有効に。操作を使用可能にすべきかどうか確定できない場合は、有効ステータスにします。その後さらにコンテキスト情報がわかってきてから、別の検証で (別のフィルタ、バリデータ、選択後検証など) ユーザーを無効または拒否できる可能性があります。ほとんどあらゆる状況で、ユーザーが実行可能な操作が非表示になっているよりも、実行できない操作が表示されている方がはるかにましです。
• 非表示と無効のどちらを選択するかは、現在のコンテキストで、操作がユーザーに表示される可能性があるかどうかを考えてみてください。表示されていた場合は、ステータスを無効にします。たとえば、"チェックアウト" 操作は、現在チェックアウト中のオブジェクトに対しては有効ではありません。しかし、その同じオブジェクトがチェックアウトされていなければ、そのユーザーは "チェックアウト" 操作を使用できます。その場合は、無効ステータスが適しています。一方、管理者ユーザーにのみ許可する操作があり、ユーザーが管理者ではないとします。その場合は、操作がそのユーザーに対して有効になることは決してないので、非表示ステータスが適しています。
事前検証属性のステータス
検証サービスとクライアントインフラストラクチャは、事前検証属性については、現在 "非表示" (ATTR_HIDDEN)、"値非表示" (ATTR_HIDDEN_VALUE)、"読み取り専用" (ATTR_READ_ONLY)、"表示" (ATTR_VISIBLE) の 4 つのステータスをサポートしています。
"非表示" ステータスは、属性名も値も UI に一切表示されないことを意味します。"値非表示" ステータスは、属性名は表示され、値が表示されないことを意味します。"読み取り専用" ステータスは、属性名と値を表示し、ユーザーによる値の編集はできないことを示すのに使用します。"表示" ステータスは、属性名と値を表示し、フォームまたはウィザードで表示されたときに、ユーザーが値を編集できることを示すのに使用します。
特定の条件で属性に適用されるステータスを判断するには、顧客や製品マネージャなどから補足情報を得なければならない場合があります。すべての属性に適用できるジェネリックな規則というものはありません。
単一フィルタを複数の操作と属性に適用できることを覚えているでしょう。そうすると、操作と属性の両方に適用される場合に、フィルタからどのステータスを返すべきか迷うかもしれません。そのような場合は、操作用のステータスを使用します ("有効"、"無効"、"非表示")。クライアントインフラストラクチャは、"有効" を表示として、"無効" を "読み取り専用" として、"非表示" を "非表示" として扱います。
テーブル内の属性にバリデータを適用すると、列全体にバリデータが適用されます。属性のバリデータを単一のセルに適用することはできません。列で見つかった最も制限されたステータスが列全体に適用されます。たとえば、あるセルは読み取り専用であるセルは非表示の場合、列全体が非表示になります。
役割ベースの事前検証の実装
検証サービスによって実行される 2 番目の事前検証チェックでは、役割ベースの UI サービスを呼び出し、管理者ユーザーがコンポーネントを特定のユーザーに対して非表示または無効に設定しているかどうかを調べます。このチェックは検証サービスに組み込まれているので、カスタマイザの実行は不要です。役割ベースの UI サービスを管理者ユーザーとして設定する方法については、
役割ベース UI 機能のカスタマイズ - 操作の表示を参照してください。