優先順位ルールの作成操作

構成Webサービスには、優先順位ルールを作成する2つの操作があります。

2つの作成操作は次のとおりです。
  • putPrecedenceRules操作は、指定の各優先順位ルールを作成するか、そのルールがすでに存在する場合は更新します。操作で指定されない既存のルールは影響を受けません。
  • importPrecedenceRules操作は、最初に既存の優先順位ルールをすべて削除してから指定のルールを追加します。新しい優先順位ルールのセットが必要な場合、この操作を使用します。

優先順位ルールは、Dgraphにロードされるとすぐに有効になります。優先順位ルールはDgraphプロセスによってデータ・ファイルにレコードとして格納されるため、優先順位ルールはDgraphプロセスが再起動されるたびに自動的に再ロードされます。

どちらの操作も、precedenceRule要素の同じスキーマ構文を使用します。
<mdex:precedenceRule 
   key="ruleName" 
   triggerAttributeKey="triggerAttrName"
   triggerAttributeValue="mval|sval" 
   targetAttributeKey="targetAttrName"
   isLeafTrigger="true|false"/>
precedenceRule属性の意味は次のとおりです。
precedenceRule属性 意味
key 優先順位ルールの一意の識別子(つまり、ルールの名前)を指定します。識別子は文字列で、NCName書式に従う必要はありません。
triggerAttributeKey 優先順位ルールをトリガーするEndeca標準属性または管理属性の名前を指定します。つまり、ユーザーがターゲット属性を表示する前に、指定された属性を選択する必要があります。
triggerAttributeValue オプション。使用する場合、ユーザーがターゲット属性を表示する前に、選択する必要がある属性値(管理値の仕様または標準属性値)を指定します。使用しない場合、トリガー属性の値により、ルールがトリガーされます。実際にtriggerAttributeValueを使用すると、トリガーは特定の標準値または管理値にさらに絞り込まれます。
targetAttributeKey トリガー属性値の選択後に表示されるEndeca標準属性または管理属性の名前を指定します。
isLeafTrigger トリガーが管理属性の場合、isLeafTriggerでは、トリガー属性値のタイプを示すブール値を指定します。
  • trueの場合、トリガー属性はリーフ・タイプになります。これは、リーフ値が選択される場合のみ優先順位ルールが始動することを意味します。つまり、トリガー管理属性のリーフ管理値に問合せを行うと、ターゲット管理値が表示されます(多数のトリガー、1つのターゲット)。
  • false (デフォルト)の場合、トリガー属性は非リーフ・タイプになります。これは、値が選択されると優先順位ルールが始動することを意味します。つまり、トリガーとして指定された管理値またはそのいずれかの子孫がナビゲーション状態にある場合、ターゲットが表示されます(1つのトリガー、1つのターゲット)。

isLeafTriggerはEndeca標準属性に適用されない点に注意してください。優先順位ルールの作成時にこれを指定する必要がありますが、ルールの実行時、使用するどの値もDgraphによって無視されます。

putPrecedenceRulesの例

次に、CityRuleという優先順位ルールを作成するputPrecedenceRules操作の例を示します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:ns="http://www.endeca.com/MDEX/config/services/types/2/0" 
   xmlns:ns1="http://www.endeca.com/MDEX/config/XQuery/2009/09">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:configTransaction>
         <ns:putPrecedenceRules>
             <ns1:precedenceRule
                key="CityRule" 
                triggerAttributeKey="DimGeography_StateProvinceName" 
                triggerAttributeValue="Victoria" 
                targetAttributeKey="DimGeography_City" 
                isLeafTrigger="true"/>
         </ns:putPrecedenceRules>
      </ns:configTransaction>
   </soapenv:Body>
</soapenv:Envelope>