機械翻訳について

適応型検索問合せ

問合せ定義の管理

問合せ定義のリソースURLに必須の標準はありませんが、推奨事項に従います。 次のURLを使用して、GETメソッドの問合せを管理: <root>/custom-actions/queries/<entity-name>は、POSTメソッドには<root>/custom-actions/queries/を使用します。

指示に従って、Prefer Headerを使用して、問合せを格納するかどうかを決定します。

階層に加えられた変更は、適応型検索結果にすぐには表示されません。 これらは、適応型検索の定期的なリフレッシュ後、または階層の所有者またはリソースの完全公開後にのみ表示されます。

階層所有者またはリソースの完全公開を実行するには:
  1. 適応型検索の構成タスクにナビゲートします。
  2. 「設定」>「拡張」>「勘定科目」をクリックします。

  3. 階層の所有者またはリソースを選択し、任意の属性を選択します。
  4. 「公開」をクリックします。

    これにより、階層がリフレッシュされ、適応型検索結果に階層の変更が表示されます。

プリファレンス・ヘッダーの使用

一時問合せ結果はサーバーに格納されないため、'self'または'next'リンクを含めることはできません。 問合せの作成または更新中に'return=query-result'が指定されている場合、問合せ定義が作成され、結果がすぐに返されます。

201 Created
Location: http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries/<uuid>
...
{
  "q":  <query expression>,
  "links": [
  {"rel": "self", "href": "http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries/<uuid>"},
   {"rel": "http://xmlns.oracle.com/rest/queried-collection", "href": "http://example.com/api/v1entities/<pattern>"},
   {"rel": "search", "href": "http://example.com/api/v1/custom-actions/queries/<pattern>"},
   {"rel": "http://xmlns.oracle.com/rest/latest-result", "href": "http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries/<uuid>/results"}
 ]
}

HTTPリクエスト

取得、削除、ポスト、パッチなどのHTTPリクエストを使用して、問合せ定義を管理できます。

問合せの作成

クライアントがPOSTを使用する場合、サーバーはURIを生成します。 PUTを使用するには、クライアントが問合せを識別する<uuid>を指定する必要があります。 問合せが以前に定義されている場合は、新しい問合せによって置き換えられます。 クライアントが新しいuuidを生成すること、およびuuidが一意であるかどうかも保証できないため、問合せを作成するPUT要求に対して400 Bad Requestが返されます。

問合せの取得

各問合せ定義リソースは、標準の単数形のリソースです。 クライアントは、GETリクエストを発行して問合せ定義を取得できます:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries/<uuid>

問合せ結果の取得

最新の問合せ結果を取得するには、次のようなGETリクエストを使用します:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries/<uuid>/results
問合せ結果URLでは、すべてのコレクションで必要な通常のパラメータとは別に、次の追加URLパラメータがサポートされています:
  • totalResults=true - 推定結果数を提供
  • ソート - パラメータ値は、ソートの基準となるフィールド・パスのカンマ区切りの文字列で、それぞれオプションで、列と「asc」または「desc」が続きます。 このパラメータを指定すると、問合せ式自体の指定がオーバーライドされ、ソートされます。 パラメータ値なしで"orderBy"を指定した場合、ソートは妥当性によって行われます。

問合せの取得中

次のリクエストを使用して、ユーザーがアクセスできる問合せおよび非表示ではない問合せをすべて取得できます:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries

ユーザーのデフォルトの問合せは、次のリクエストを使用して取得できます:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries?default

ユーザーがアクセス権を持ち、非表示になっていない特定のトップレベル・エンティティに対するすべての問合せは、次のリクエストを使用して取得できます:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries?entity=Account

すべてのグローバル問合せ(複数のエンティティにまたがる問合せなど)は、次のリクエストを使用して_globalを使用して取得できます:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries/?entity=_global

ユーザーがアクセス権を持ち、非表示になっていない最上位エンティティのセットに対するすべての問合せは、次のリクエストでカンマ区切りリストを使用して取得できます:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries?entity=Account,Contact

<entityName>は、トップレベルのエンティティ名または_globalにすることができます。

問合せの更新

問合せ定義の変更はPATCHリクエストによって実行され、リクエストは次で失敗
  • 403 HTTPエラー・コード(問合せがプライベートで、ユーザーが問合せを作成しなかった場合、または問合せがプライベートでなく、ユーザーが管理者でない場合)。
  • 問合せが存在しなくなった場合、404 HTTPエラー・コード。

問合せの削除

クライアントはDELETEリクエストで問合せ定義を削除すると判断でき、リクエストは失敗
  • 403 HTTPエラー・コード(問合せがプライベートで、ユーザーが問合せを作成しなかった場合、または問合せがプライベートでなく、ユーザーが管理者でない場合)。
  • 問合せが存在しなくなった場合、404 HTTPエラー・コード。

問合せ定義

問合せは、次のプロパティを持つJSONオブジェクトです:
  • queryUuid - ストアド問合せ定義の主キー
  • デフォルト - 問合せがユーザーのデフォルトかどうかを示すブール
  • accessLevel - 「非公開」、「公開」、「ロール」、「非表示」など、アクセスのレベルを示します
  • ロール - 保存検索に関連付けられているロールのリスト
  • 更新可能 - ユーザーが問合せを更新できるかどうかを示すブール
  • _entity - 定義の対象となるエンティティの名前
  • 名前 - ユーザー・プリファレンスから取得したユーザーの言語に基づくストアド問合せのローカライズされた名前
  • 説明 - ユーザー・プリファレンスから取得したユーザーの言語に基づくストアド問合せのローカライズされた説明
  • ユーザー - 問合せ定義を作成したリソースのパーティID
  • キーワード - 検索するキーワードを表す文字列(ある場合)
  • keywordsFields - キーワードが検索されるフィールドのJSON配列。デフォルトは"""です。
  • フィールド -
  • excludeFields -
  • 数量 - 問合せの指定
  • ソート - ソート・フィールドの配列、または関連性に基づいてソートするnull
  • アプリケーション・ソフトウェア - アプリケーション問合せパラメータ(カンマ区切りリスト)に含まれる問合せに関連付けられているアプリケーションのサブセット
  • applicationData - 各アプリケーションの問合せに関連付けられているデータ

問合せとアプリケーションの関連付け

1つのアプリケーションで問合せを定義し、別のアプリケーションで使用できる場合があります。 たとえば、FUSE UIで定義した問合せを定義し、モバイル・アプリケーションで使用すると、問合せ結果は異なる方法でレンダリングされる場合があります。 ただし、「Pittsburgh、PAのMy Open Opportunities」などの基本的な問合せは同じままです。

FUSE UIでは、その問合せは探索を可能にするフィルタを使用してレンダリングできますが、モバイルでは、その問合せが異なる方法でレンダリングされる場合があります。 アプリケーションによっては、"their"アプリケーションの問合せのみを取得する必要がある場合と、ユーザーがアクセス権を持つすべての問合せを取得する必要がある場合があります。

ユーザーは、アプリケーションのリストをこのパラメータに指定することで、複数のアプリケーションの保存済検索を取得できます。 ペイロードでは、アプリケーション・データとともに保存済検索定義が返されます。

uuid 1ad55460-b782-11e8-b568-0800200c9a66を持つ特定のアプリケーションに対して非表示ではない、ユーザーがアクセス権を持つすべての問合せを取得するには、次のリクエストを使用します:

GET http://servername.fa.us2.oraclecloud.com/crmRestApi/searchResources/11.13.18.05/custom-actions/queries?applications=1ad55460-b782-11e8-b568-0800200c9a66

問合せ式

問合せ式の各"属性"は、ドキュメント属性パスで指定されたバインド・パラメータまたはフィールドのいずれかです。 適応型検索RESTを参照: 詳細な構文の問合せ式。

ソート・フィールド

各ソート・フィールドは、JET CCA標準に準拠する次のプロパティを持つJSONオブジェクトです:
  • 属性 - 属性への文書フィールド・パス
  • 方向 - 「昇順」または「降順」のいずれか
example :

"sort": [
        {
            "attribute": "PartyUniqueName",
            "direction": "ascending"
        }
    ]

コピー元

コピー元のプロパティは、初期問合せ定義を提供するリソースのURLを指定します。 リクエスト・ペイロードに指定されているプロパティは、ストアド問合せ定義で定義されているものをオーバーライドします。 さらに、ストアド問合せ定義への参照は、オーバーライドされていない部分をコピーすることで、新しい問合せの作成または更新時に削除されます。

"copiedFrom": "<the URL for a stored query definition>"

copiedFromを指定した場合、エンティティ・プロパティを指定する必要はありません。 エンティティ・プロパティを指定する場合は、copiedFromのエンティティと同じである必要があります。

フィールドと除外フィールド

ペイロードを前述のフィールドに制限するには、フィルタに"fields"および"excludeFields"を使用します。これは、適応型検索ソースのフィルタリングの"include"および"exclude"ディレクティブに対応します。 これらはフィールド・パスの配列であり、ディレクティブではワイルドカード(*)がサポートされています。 「_actions」フィールドは、アクションのレイアウト情報を提供するだけの特別なフィールドです。 ユーザーの言語以外の言語の言語固有のフィールドは自動的に省略されます。 たとえば、ユーザーの言語が「US」の場合、US以外の言語フィールドはすべて自動的に省略されます。 すべての言語フィールドを省略するには、除外フィールドに次のパターンを含めます: "*_*".

ローカライズされたフィールドがfieldsパラメータに含まれている場合、ユーザーの言語に対応するローカライズされたフィールドも含まれます。 たとえば、ユーザーがPrimayAddress.CountryCodeをペイロードに含めるようにリクエストした場合、excludeFieldsパターンで省略しないかぎり、ペイロードにはPrimaryAddress.CountryCode_localizedValueも含まれます。

除外フィールドはフィールドより優先されます。

<fields> ::=='['<field>[, <field>]*']<field>::== a string that represents a field or is a wild card expression using '*'<excludeFields> ::== '['<field> [, <field>]*']

リンクの除外

excludeLinksプロパティは、ペイロードから除外する必要があるリンクのリストをリレーション名別に示します

プロパティを除外

excludePropertiesプロパティは、ペイロードから除外する必要があるプロパティのリストです。 たとえば、フィルタ・パネルが表示されない場合に集計を削除するには、"excludeProperties"を指定: ["aggregations\はペイロードから集計を除外

アプリケーション

GETの問合せパラメータとして、アプリケーション・パラメータは問合せを戻すアプリケーションのリストを指定し、レスポンスには指定されたアプリケーションの1つに関連付けられている問合せのみが含まれます。 レスポンス内のアプリケーション・プロパティは、問合せが適用されるアプリケーションのリストになります(これは、問合せパラメータで指定されたカンマ区切りリストのnull以外のサブセットになります)。 さらに、ペイロードには各アプリケーションのアプリケーション・データ(存在する場合)が含まれ、レスポンス内のリンクもアプリケーション問合せパラメータをレプリケートします。

アプリケーション問合せパラメータが指定されていない場合、アプリケーションに関係なく問合せ(または問合せ)が取得され、レスポンスはアプリケーション・プロパティに移入されません。 一方、アプリケーションが問合せパラメータまたはペイロードに指定されている場合、レスポンスには同じ値が含まれます。

アプリケーション・データ

すべてのアプリケーションがJET/VBCSに移動するまでギャップを埋めるために、このRESTサービスでは、アプリケーション・データのCLOB列の格納がサポートされます。 ペイロードから除外できるアプリケーション・データは、アプリケーション固有データのJSONマップを提供します。 アプリケーション・データは、次のBNFに従って、アプリケーション問合せパラメータで指定されたアプリケーションに対してのみ返されます:

<application data> ::== null | \{ "<application uuid>": "<application specific data>" [,"<application uuid>": "<application specific data>"] \}<application specific data> is a string

更新時に、RESTサービスによって更新されるのはペイロードに指定されたエントリのみで、他のアプリケーション・データは残ります。 アプリケーションのデータを削除するには、アプリケーション・データのマップにnull値のエントリのみを含める必要があります。たとえば、次のフラグメントは、uuid: 1ad55460-b782-11e8-b568-0800200c9a66を使用してアプリケーションのアプリケーション固有データを削除

"applicationData": \{"1ad55460-b782-11e8-b568-0800200c9a66": null \}

アプリケーションが、アプリケーションに関係なくユーザーがアクセスできるすべての問合せを取得し、使用可能な場合は1つ以上のアプリケーションのアプリケーション・データを取得する必要がある場合があります。 これは、アプリケーション・データ問合せパラメータで取得するアプリケーションのカンマ区切りリストを指定することで実現されます。

集計

UIまたはチャートの作成で「ファセット」のカウントを取得するために使用される集計。 問合せリクエストには、次のような構造を持つ集計を作成するリクエストを含めることもできます:

<aggregations> ::== \{ <aggregation> [, <aggregation>]* \}<aggregation> ::== <filters aggregation> | <terms aggregation> | <metric aggregation>

クライアントが問合せ結果に関心を持っていない場合、問合せパラメータまたはペイロードとしてlimit=0を指定すると、問合せ結果は返されません。

ファセット検索をサポートするために、各集計で無視する単一の属性を指定できます。 結果セットを定義する問合せ式に「無視」属性を参照する基準が含まれている場合、次の指定された集計と同様に、基礎となるコールでは適応型検索のREST APIの「フィルタ」および「post_filter」機能を利用します:
  • 問合せ式では、単一の基準またはトップレベルの論理ANDを使用する必要があります
  • 問合せ結果が必要な場合、問合せ基準は2つの問合せ式に分割されます:
    • 無視された属性への参照を含むすべての論理積は、再帰的に「事後フィルタ」問合せ式に配置されます(「事後フィルタ」を参照)。
    • 無視された属性への参照を含まないすべての論理和は、再帰的にベース問合せ式に配置されます。
  • フィルタが各集計に追加され、「無視」属性を参照しない「後フィルタ」問合せ式の一部(ある場合)が含まれます

範囲集計

範囲集計では、次のBNFで定義されている属性タイプに応じて、適応型検索の範囲と日付範囲の両方の集計を集計およびカプセル化する範囲を指定します:

<range aggregation> ::== "<aggregation name>" : \{ "range": \{ "attribute": <field>, "ignore": <boolean>, "ranges": \[ <range> [, <range>] \] \} \}<aggregation name> ::== alpha numeric string that cannot contain "_" and uniquely identifies the aggregation within the set of aggregations<field> :== the document attribute path for a field<range> ::== \{"key": <key>, "to": <value> \} | \{"key": <key>, from": <value>, "to": <value> \} | \{"key": <key>, "from": <value> "},<key> ::== the key for the bucket to be returned in the aggregation result<value> :: == value constituting the attribute type for the field. If the field is a date. time, or timestamp, then the value must be a string in "yyyy-MM-dd". "HH:mm:ss.SSS", or "yyyy-MM-dd'T'HH:mm:ss.SSSZ" format or be an Adaptive Search Date Math Expression.

次のコードは、範囲集計の例を示しています。

{ 
   "PrimaryRevenue.WinProb":{ 
      "range":{ 
         "attribute":"PrimaryRevenue.WinProb",
         "ignore":true,
         "ranges":[ 
            { 
               "key":"0...20",
               "from":0,
               "to":20
            },
            { 
               "key":"20...40",
               "from":20,
               "to":40
            },
            { 
               "key":"40...60",
               "from":60,
               "to":80
            },
            { 
               "key":">= 80",
               "from":80
            }
         ]
      }
   }
}

集計名にはドキュメント属性パスを使用しますが、この例では、有効なJSONプロパティ名であり、集計のセット内で一意である場合、集計の名前は何でもかまいません。 結果は、次のBNFで定義されているリクエストと同じ順序で、指定された範囲に対応するバケットのセットを返します:

<range aggregation result> ::== "<aggregation name>": \{ "buckets": \{ <bucket result> , <bucket result>]+ \}<aggregation name> ::== alpha numeric string that cannot contain "_" and uniquely identifies the aggregation within the set of aggregations<bucket result> ::== "<key>": \{ "count": <bucket count> \}<bucket count> ::== the number of documents for the specified key

次のフラグメントは、前述のフィルタ集約に対して可能なレスポンスを定義します。

{ 
   "PrimaryRevenue.WinProb":{ 
      "buckets":{ 
         "0...20":{ 
            "count":10
         },
         "20...40":{ 
            "count":140
         },
         "40...60":{ 
            "count":56
         },
         "60...80":{ 
            "count":45
         },
         ">= 80":{ 
            "count":90
         }
      }
   }
}

条件集計

条件の集計では、最も頻度の高いバケットが動的に作成される属性(一意の値ごとに1つ)を指定します。 また、欠落している集計を計算する機能も提供します。 返されるバケットの最大数は、"maxBuckets"パラメータで指定されます。 「その他」がtrueに設定されている場合、最上位の用語に加えて、最上位の用語と一致しないドキュメントの数に対してカウントが計算されます。 "missing"がtrueに設定されている場合、値が欠落しているドキュメントの数が返されます。"other"の数は、最上位の用語と一致せず、値の欠落がないドキュメントの数になります。 最後に、「localize」プロパティを使用して、キーが参照タイプまたはエンティティの属性のキーである場合に、キーをローカライズする必要があるかどうかを示します。 キーが参照タイプ用である場合、ユーザーの言語を使用して値をローカライズします。 キーが外部キーである属性に対するものである場合、外部キー属性のエンティティの表示属性がローカリゼーションに使用されます。

条件集計は、次のBNF構文に従って指定します:

<terms aggregation> ::== "<aggregation name>":\{ "ignore": <boolean>, "terms": {"attribute": <field>}, "minDocumentCount": <minimum document count>, "maxNumberOfBuckets": <maximum number of buckets> [, "other":true]? [, "missing":true]? [, "localize":true]?\}<ignore> ::== true if the attribute used in the terms should be ignored when building this aggregation and be enforced in post filter<field> ::== the document attribute path for the field to aggregate on<aggregation name> ::== alpha numeric string that cannot contain "_" and uniquely identifies the aggregation within the set of aggregations<minimum document count> is an integer >= 0 that defaults to 1 such that buckets whose counts fall below this value are ignored<maximum number of buckets> is an integer > 0

レスポンスには、次のBNF構文に従ったキーとカウントが含まれます。この構文では、カウントは降順にソートされます。

<terms aggregations response> :: == "<aggregation name>": \{ "buckets": <array of key responses> [, "missing": <count>] [, "other": <count>] \}<array of key responses> ::== \[\] | \[ <key response> [, <key response>]+\]<key response> ::== \{ "key:" <attribute value>, "count": <count> [,"localizedKey": <localized key>]? \}<attribute value> ::== the value for an integer<count> is an integer >= 0 that has the count for the specified attribute value, missing value, or other value

もちろん、特定の値を持つキーがない変性ケースでは、バケット配列は空になります。

次のJSONフラグメントは、最も一般的な5つの営業ステージの用語集計を定義し、上位5にはない欠落している文書値と値の数をさらに計算します。

"SalesStageId": {
    "ignore": true,
    "terms" : {
        "attribute": "SalesStageId",
        "maxNumberOfBuckets" : 5,
        "other": true,
        "missing": true, 
        "localize": "true"
        "includeTerms":[100000012057019,100000012057020],
        "excludeTerms":[100000012057033]
    }
}

ユーザーの言語が「US」であると仮定すると、前述の用語集計に対するレスポンスは次のようになります

"SalesStageId":{ 
      "buckets":[ 
         { "key":100000012057019, "count":305, "localizedKey": "Negotiation"},
         { "key":100000012057020, "count":200, "localizedKey": "Close"},
         { "key":100000012057008, "count":100, "localizedKey": "Discovery"},
         { "key":100000012057017, "count":50,  "localizedKey": "Short List"},
         { "key":100000012057018, "count":2,   "localizedKey": "Closed"}
      ]
      "missing": 2,
      "other: 10
 }

メトリック集計

メトリック集計では、次のBNF構文に従って、指定したフィルタのいずれにも一致しないドキュメントの数をカウントする、オプションのバケットを含むフィルタのセットを指定します:

<metric aggrefation>::=="<aggregation name>":\{ "ignore": <boolean>, "metric": <metric> "attribute": "<field>"\}

説明:

  • <ignore> ::== true。用語で使用されている属性がこの集計の作成時に無視され、事後フィルタで強制される場合
  • <attribute> ::==集計するフィールドのドキュメント属性パス
  • <metric>は次のいずれかです:
    • 平均 - 数値値の平均
    • カーディナリティ - 個別値の近似数
    • 最高 - 数値に対する最大値
    • 最小 - 数値に対する最小値
    • 統計 - 数値の統計集計
    • 合計 - 数値の合計
    • value_count - 数値または値

1つの値を返すメトリックのレスポンスは同じです:

<metric aggregation result> ::== <aggregation result for metric that returns a single value> | <stats aggregation result>
<aggregation result for metric that returns a single value> :: == "<aggregation name>": \{ "value": <number>\}
<stats aggregation result> :: == "<aggregation name>": \{ "count": <number>, "min": <number>, "max": <number>, "avg": <number>, "sum": <number>\}

強調表示

適応型検索では、検索結果の1つ以上のフィールドから強調表示されたスニペットを取得できるため、ユーザーは問合せの一致の場所を確認できます。 適応型検索の問合せでは、次の内容がリクエストの一部として渡された場合に、問合せで使用されるフィールドが強調表示されます。

"highlights" : {"pre": "\<em>", "post": "\</em">, "fields": \[<field> [,<field> [, <field>]+\]\}

フィールドとして指定された各フィールドには、インデックス付きの値と強調表示された値が含まれます。 たとえば、「Pinnacle」を検索していて、PartyUniqueNameフィールドが強調表示フィールドの1つとして指定されている場合、結果セット内のアイテムについて次のように表示されます。

{
    "PartyUniqueName": "Pinnacle Technologies",
    "PartyUniqueName_highlight": "<em>Pinnacle</em> Technologies"
}

問合せ結果

問合せ結果は、ページ区切りをサポートする特別な種類のリソースであるコレクションです。 コレクションのJSONは次のとおりです:
  • "items" - リソースの現在のページを含む配列
  • "count" - 現在のフェッチ内のアイテム数を表す整数
  • "hasMore" - 別の結果ページが可能かどうかを示すブールです
  • "offset" - コレクション内のアイテムのこのページの最初のアイテムのゼロ・ベースの整数オフセット
  • "limit" - 1つのリクエストで返されるアイテムの最大数。 最小値は1で、最大値とデフォルト値を構成できます
  • "totalResults" - コレクション内のアイテム数を表す整数。 -1はサイズが不明であることを示します
問合せ結果アイテムには、次の追加属性が含まれます。
  • timeInMilliseconds

品目

最も簡単なアプローチは、クライアントが各アイテムに関心を持っているフィールドの未加工の値を持つJSONドキュメントを含めることです。 たとえば、クライアントが"PrimaryRevenue.WinProb"、"Name"、"CustomerAccount.PartyId"、"PrimaryRevenue.RevnAmount"、"EffectiveDate"、"Owner.PartyId"および"SalesSategId"のみに関心を持つことを指定した場合は、クライアントがリクエストしたすべてのRAWデータが次のように含まれます。

{
   "PrimaryRevenue.WinProb":10,
   "Name":"Pinnacle Technologies 112 Server Deal",
   "CustomerAccount":999997550268467,
   "PrimaryRevenue.RevnAmount":120000,
   "EffectiveDate":1278907200000,
   "Owner":100010032635399,
   "SalesStageId":100000012057020
}

この種のペイロードはバルク操作には適していますが、ローカリゼーションが必要な場合には十分ではありません。 たとえば、UIが表に表示する商談のリストをリクエストしているというユースケースを考えてみます。 次のペイロードがさらに役立ちます:

{ 
   "PrimaryRevenue.WinProb": "10%",
   "OpportunityName":"Pinnacle Technologies 112 Server Deal",
   "CustomerAccount":"Pinnacle Technologies",
   "PrimaryRevenue.RevnAmount":"120,000 USD",
   "EffectiveDate":"July 13, 2010",
   "Owner":"Dan Foreman",
   "SalesStageId":"Open"
}
UIでは、RAW値をローカライズする必要なく、表内の文字列のみをレンダリングできます。 もちろん、UIにはドリルダウンなどの生の値が必要です。 完全にローカライズされた情報を生の値とともに提供するのではなく、独自のローカリゼーションを行うためにUIで必要な情報を提供すれば十分です。 属性タイプに基づいて、ローカリゼーションに必要な情報を見てみましょう。
  • ブール、日付、パーセント、数値、文字列、テキスト、時間またはタイムスタンプをローカライズするために、RAW値およびユーザーのプリファレンス以外に、クライアントで必要になるものはありません
  • 未処理の値に加えて、通貨のローカリゼーションのために、クライアントで通貨コードが必要です。 metamodelは、通貨属性の通貨コードを保持する属性を示すため、クライアントはペイロードの一部として必要な通貨コード属性をリクエストし、ローカライズに使用できます。
  • クライアントには、ローカリゼーション用の列挙値に関連付けられたローカライズされた文字列が必要です。 適応型検索では、列挙属性のローカライズされた値が、サフィクスが"_"で言語コードが付いた属性の名前である属性に格納されます。 たとえば、属性"SalesStageId"の"US"言語の文字列は"SalesStageId_US"にあります。 言語固有の値をリクエストすることによって、クライアントは列挙をローカライズするために必要な情報を得ます
  • クライアント・コードを簡略化するために、列挙フィールドがリクエストされると、REST APIは、ペイロードから除外されないかぎり、ローカライズされた値を自動的に返します
  • 所有者などの外部キーのローカリゼーションでは、クライアントが外部キーの表示属性をレンダリングする必要があります。 メタ・モデルはエンティティの表示属性を示し、外部キーの表示属性は常に外部キーの非正規化の一部であるため、クライアントはペイロードで適切な属性をリクエストするだけです
  • レコードのローカリゼーションでは、レコードのエンティティの表示属性を使用する必要があります。 metamodelはエンティティの表示属性を示すため、クライアントはペイロードで適切な属性をリクエストするだけです

したがって、追加リクエストなしで前述の属性をクライアントがローカライズするには、次の操作で十分です。

{ 
   "PrimaryRevenue.WinProb":10,
   "Name":"Pinnacle Technologies 112 Server Deal",
   "CustomerAccount.PartyId":999997550268467,
   "CustomerAccount.PartyUniqueName": "Pinnacle Technologies",
   "PrimaryRevenue.RevnAmount":120000,
   "PrimaryRevenue.RevnAmountCurcyCode": "USD",
   "EffectiveDate":1278907200000,
   "Owner.PartyId":100010032635399,
   "Owner.PartyName": "Dan Foreman",
   "SalesStageId":100000012057020,
   "SalesStageId_localizedValue":"Open"
}

ただし、前述のアプローチは、組織の住所など、1対多の関係を埋め込んだ階層コンテンツを考慮する場合にはあまり効果がありません。 この状況を修正するために、次のように、属性をフラット化するのではなく、階層を保持します。

{ 
   "PrimaryRevenue":{ 
      "WinProb":10,
      "RevnAmount":12000,
      "RevnAmountCurcyCode":"USD"
   },
   "Name":"Pinnacle Technologies 112 Server Deal",
   "CustomerAccount":{ 
      "PartyId":999997550268467,
      "PartyUniqueName":"Pinnacle Technologies"
   },
   "EffectiveDate":1278907200000,
   "Owner":{ 
      "PartyId":100010032635399,
      "PartyName":"Dan Foreman"
   },
   "SalesStageId":100000012057020,
   "SalesStageId_US":"Open"
}

ペイロードを前述のフィールドに制限するには、フィルタに"fields"および"excludeFields"を使用します。これは、適応型検索ソースのフィルタリングの"include"および"exclude"ディレクティブに対応します。 ディレクティブではワイルドカード(*)がサポートされています。 たとえば、次のfieldsディレクティブは、適応型検索から取得されるソースを、必要なもののみを含めるように制限します:

"fields":[ 
   "PrimaryRevenue.WinProb",
   "PrimaryRevenue.RevnAmount",
   "PrimaryRevenue.RevnAmountCurcyCode",
   "Name",
   "CustomerAccount.PartyId",
   "CustomerAccount.PartyUniqueName",
   "EffectiveDate",
   "Owner.PartyId",
   "Owner.PartyName",
   "SalesStageId"
]

リンク

問合せの問合せ結果には、次のリンクが含まれている必要があります。
  • 問合せ結果の定義に使用された問合せ定義のURLを参照する"self:"リンク。 問合せが一時問合せの場合は、セルフ・リンクを生成できません
  • 結果セット内の各アイテムを使用するエンティティを参照するhttp://xmlns.oracle.com/rest/queried-collectionリンク。 問合せが複数のエンティティ用である場合、このリンクは生成できません
  • 問合せ結果の定義に使用された問合せ定義のURLを参照する親リンク。 問合せが一時問合せの場合は、セルフ・リンクを生成できません
  • 問合せの作成に使用されたURLを定義する検索リンク
  • 最新の結果を定義するhttp://xmlns.oracle.com/rest/latest-resultリンク。

複数のエンティティでの検索

エンティティ全体の検索が適切で、適応型検索のRESTサービスでこのようなユースケースをサポートする必要がある場合があります。 次の要件を考慮する必要があります。
  • カスタム・オブジェクトなど、問合せの作成後に導入されたエンティティを処理するために、すべての検索可能なエンティティにグローバル検索を適用するように指定する方法が必要です。
  • グローバル検索が検索可能なエンティティの特定のサブセットに適用されるように指定する方法がある必要があります
  • エンティティに対して返されるフィールドをデフォルト設定する方法が必要です。 デフォルトでは、検索可能なエンティティに返されるフィールドには、次のものを含める必要があります
    • 主キーを格納するフィールド
    • 表示キーを格納するフィールド
    • 所有者を格納するフィールド
    • WHO列を格納するフィールド
  • エンティティのフィールドが明示的に伝達されない場合に結果を解釈できるようにするには、主キー、表示キー、所有者およびWHO列を格納するエンティティのフィールドを取得する方法が必要です
  • 各エンティティ・カードに表示される情報は大きく異なる場合があるため、リスト・ビューをサポートするために検索されるオブジェクトに対して返されるフィールドを指定する方法が必要です
  • すべてのドキュメントが同じフィールドを共有しないかぎり、関連性以外のドキュメント間でのソートとしてソート・フィールドを指定する手段はありません。これは、各トップレベルのエンティティでこの条件を適用しないと保証できません
  • 結果をハイライトする手段が必要です
  • キーワード検索を実行する手段が必要です

キーワード・フィールドは、各エンティティのすべてのフィールドに適用され、検索可能なオブジェクト間で切り取る検索の問合せ式では、共有されているフィールド("Owner"、"LastUpdatedBy"、"LastUpdateDate"、"CreatedBy"および"CreationDate"など)のみを利用できます。

「entities」プロパティを使用して検索するエンティティを指定し、null値は、次のBNF構文に従って、検索可能なすべてのオブジェクトにまたがる検索であることを示します:

<entities> ::== \{ "<entity name>" : \{ "fields": \["<field>" [, <field>]* \], "excludeFields": \["<field>" [, <field>]*\] \}

検索するエンティティの"fields"または"excludeFields"プロパティにエントリが指定されていない場合、デフォルトのフィールド、つまり主キー、表示キー、所有者およびWHO列が使用されます。

強調表示タグが指定されている場合は、次のように強調表示がサポートされています:

"highlight" : \{"pre": "\<em\>", "post": "\</em"\>\}

バインド変数の使用およびコピー元の使用は、他の問合せ定義の場合とまったく同じです。

トップレベルのプロパティとして"fields"および"excludeFields"を使用することはできません。

レスポンスの各アイテムには常に「_entity」フィールドが含まれます。 強調表示が有効になっている場合、アイテムには「_highlights」フィールドも含まれます。