対話Webサービスの操作

対話Webサービス・インタフェースは、Oracle Endeca Serverに問い合せる操作を提供します。

ここでは、対話Webサービスの操作の概要を示します。

操作の説明

上位レベルでは、対話Webサービスはデータに関するユーザーとの対話を促進します。一般的なリクエストは、フィルタ状態、コンテンツ要素構成および演算子で構成されます。
  • フィルタのStateは、現在選択されているレコードと、それらに到達するために使用された選択を表します。
  • Operator要素は、通常はユーザー・アクションの結果としてのフィルタ状態の変更またはコンテンツ要素の再構成のリクエストを表します。演算子は、絞込み、レコード、範囲のフィルタ、ブレッドクラム、およびナビゲーションに使用可能なその他のフロントエンド・アプリケーションの機能に対して指定できます。
  • ContentElementConfig要素は、Stateに指定されたレコードについて様々なタイプの構成情報を指定します。
Endeca Serverの他のWebサービスとは異なり、対話Webサービスでは、ユーザーが一連の関連するリクエストを作成して、データとのダイアログを作成します。対話Webサービス・ダイアログのアクションのシーケンスは次のとおりです。
  1. ユーザーがフロントエンド・アプリケーションを使用して問合せを発行します。

    対話Webサービスで、リクエストがRequest複合タイプに反映されます(WSDLでは、すべての複合タイプがComplexTypeとしてリストされます)。

    この問合せを使用して、初期フィルタのState(通常は、空であるか単純なレコード・フィルタを含む)およびいくつかのコンテンツ要素構成を作成します。これらのフィルタ状態とコンテンツ要素構成は対話Webサービス・リクエストで送信されます。

  2. この初期リクエストに対するレスポンスは、選択されたレコードと結果のコンテンツ要素を記述するフィルタ状態をState要素で返します。
  3. ユーザーが特定のアクションを選択すると、フロントエンド・アプリケーションが対話Webサービスを通じて新しいリクエストを送信します。通常、この後続のRequestは、対話Webサービス・リクエストの前回の呼出しで返されたResultsから構築されます。特に、このリクエストは、前回のレスポンスで返されたフィルタStateと、ユーザー・アクションに対応する演算子を送信します。 つまり、このリクエストのState要素とContentElementConfig要素は、前のResultsRequest要素から取得されます。

    ContentElementConfigの内容には、Operator要素の数が含まれます。このような要素には、様々な種類の演算子すべてが該当します。これらの演算子によって、Oracle Endeca Serverへのリクエストが前のリクエストとどのように異なるかが示されます。すべての演算子タイプにはOperator複合タイプが対応します。

    リクエスト元は、変更しないままレスポンスで返される任意のXMLを、PassThrough要素を介してリクエストに添付することもできます。

  4. レスポンスは、新しいフィルタStateおよび新しいコンテンツ要素コンテンツ(レスポンス・データ)とともに、変換された問合せを返します。

要約すると、このWebサービスの基礎となる対話は、対話Webサービスがコンテンツ要素のリストといくつかの演算子を提供し、フロントエンド・アプリケーションが演算子を選択し、対話Webサービスが新しいコンテンツ要素と新しい演算子を提供するという段階から構成されます。

リクエスト

Request操作は、次のようになります。
<operation name="Request">
  <input name="request" message="cs:Request"/>
  <output name="response" message="cs:Results"/>
  <fault name="fault" message="cs:Fault"/>
</operation>
Request操作はRequest複合タイプを入力として受け取ります。Request複合タイプのスキーマは次のとおりです。
<complexType name="Request">
  <sequence>
    <element name="OuterTransactionId" minOccurs="0" type="cs_v2_0:NonEmptyString"/>
    <element name="Language" minOccurs="0" type="cs_v2_0:NonEmptyString" default="en"/>
    <element name="State" type="cs_v2_0:State"/>
    <element name="Operator" type="cs_v2_0:Operator" minOccurs="0" maxOccurs="unbounded"/>
    <element name="ContentElementConfig" type="cs_v2_0:ContentElementConfig" 
       minOccurs="0" maxOccurs="unbounded"/>
    <element name="PassThrough" type="cs_v2_0:CatchAll" minOccurs="0"/>
  </sequence>
</complexType>
リクエストは、フィルタ状態、演算子、およびコンテンツ要素構成と計算する演算子のリストから構成されます。各リクエストでは次のように指定します。
要素 説明
OuterTransactionId リクエストの最初の要素にする必要があり、オプションです。リクエストが外部トランザクション内で実行される場合にのみ指定する必要があります。
Language EQL文の解析時に生成されるエラー・メッセージの言語コードを指定します。この要素とそのサポートされる言語コードの詳細は、「EQLフィルタの構文」を参照してください。
State 操作するレコードのセットに影響する入力を含みます。フィルタ状態には、選択した絞込み、検索用語、EQLレコード・フィルタなどが含まれます。
Operator フィルタ状態と構成を変換します。各リクエストには、一連の演算子が含まれる場合があります。よく使用される演算子のタイプ: ApplySpellingSuggestionOperatorRecordKindOperatorRefinementOperatorSearchOperatorSelectionFilterOperatorなど。
たとえば、演算子は次のようにリクエストに指定できます。
<Operator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:type="SearchOperator" Within="false">
   <SearchFilter Mode="AllPartial" RelevanceRankingStrategy="numfields"
      Key="PROD_CATEGORY" EnableSnippeting="false" Language="en">
      electronics
   </SearchFilter>
</Operator>
演算子のタイプはSearchOperatorです。このフィルタに指定された構成情報でSearchFilterを適用します。

フィルタ状態から演算子を削除するには、PopName_of_operatorOperatorを使用できます(Name_of_operatorは、SearchOperatorなど、削除する演算子の名前です)。

ContentElementConfig 特定のフィルタ状態に関連する特定の構成情報の提供を要求するOracle Endeca Serverへのメッセージを表します。様々なタイプのContentElementConfigが存在します。タイプによって、フィルタ状態のサマリーまたは、ブレッドクラムのセット、ナビゲーション・メニュー、グリッドやチャートのデータなど、そこに含まれるデータを記述できます。

typeに指定できる値: AttributeGroupConfigAvailableSearchKeysConfigBreadcrumbConfigLQLConfigNavigationMenuConfigPropertyListConfigRecordCountConfigRecordDetailsConfigRecordListConfigSearchAdjustmentsConfigValueSearchConfig

また、各typeについて、対応するHandlerFunction、ネームスペースおよびIDを次の例のように指定する必要があります。
<ContentElementConfig 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:type="RecordListConfig" 
Id="RecordList" HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010"
HandlerFunction="RecordListHandler">
PassThrough リクエストに任意のXMLを追加するためのプレースホルダ要素。変更されないままレスポンスで返されます。

レスポンス

Request操作は、Resultsレスポンスを出力します。レスポンスには、それを生成したRequest要素と、リクエストされたコンポーネントが含まれます。各コンポーネントは、対応する構成がリクエストで提供されている場合にのみ返されます。つまり、対話Webサービスからのレスポンスには、絞込み、ブレッドクラム、およびナビゲーションに使用可能なその他のフロントエンド・アプリケーションの機能が含まれます。

Results複合タイプ・レスポンスのスキーマは次のとおりです。
<complexType name="Results">
  <sequence>
    <element name="Request" type="cs_v2_0:Request"/>
    <element name="ContentElement" type="cs_v2_0:ContentElement" 
      minOccurs="0" maxOccurs="unbounded"/>
    <element name="PassThrough" type="cs_v2_0:CatchAll" minOccurs="0"/>
  </sequence>
</complexType>

エラーの例

障害時には、SOAPフォルトがスローされます。そのfaultstring要素には、エラーの原因となったリクエストに関する情報が含まれ、detail要素には、リクエストのエラーの場所へのポインタが含まれます。