ユニバーサル マッチ サービスの作成

ユニバーサル マッチ サービスは、任意のマッチ ルールを使用してマッチングを実行し、任意の入力フィールドを受け付けることができるサービスです。このサービスは、マッチ ルール名を入力オプションとして受け取るので、使用するマッチ ルールを API 呼び出しまたは Web サービス要求で指定できます。入力スキーマは事前に定義されていないので、マッチングしたいレコードのタイプにふさわしいフィールドを任意に使用できます。ユニバーサル マッチング サービスを作成すると、マッチ ルールごとにサービスを用意する手間が省け、また、新しいマッチ ルールを追加する場合もサービスを追加する必要がありません。

以下に、ユニバーサル マッチング サービスを作成する手順と、Web サービス要求をユニバーサル マッチング サービスに送る方法の例を示します。

  1. Enterprise Designer で、新しいサービス データフローを作成します。
  2. Input ステージ、Transactional Match ステージ、および Output ステージをキャンバスにドラッグし、連結して以下のようなデータフローを作成します。
  3. Transactional Match ステージをダブルクリックします。
  4. [ロードするマッチ ルール] フィールドで、マッチ ルールを選択します。例えば、デフォルトの [Household] マッチ ルールを選択します。

    マッチ ルールはサービス要求で指定しますが、Transactional Match ステージではデータフローを有効にするためにデフォルトのマッチ ルールを設定する必要があります。マッチ ルールを選択しないと、データフローが検証で無効と判定され、エクスポーズできません。

  5. [OK] をクリックします。
  6. Output ステージをダブルクリックします。
  7. フィールド MatchRecordTypeMatchScore を選択してエクスポーズします。
  8. [OK] をクリックします。
    注: Input ステージではフィールドをエクスポーズする必要はありません。入力フィールドは、ユーザ定義フィールドとしてサービス要求で指定するからです。
  9. [編集] > [データフロー オプション] をクリックします。
  10. [追加] をクリックします。
  11. [Transactional Match] を展開し、[Match Rule] の横にあるボックスをオンにします。

    これでマッチ ルール オプションが実行オプションとしてエクスポーズされ、マッチ ルールをサービス要求で指定できるようになります。

  12. [OK] をクリックし、再び [OK] をクリックして [データフロー オプション] ウィンドウを閉じます。
  13. データフローを保存してエクスポーズします。

これで、ユニバーサル マッチング サービスは完成です。Enterprise Designer の [マッチ ルール管理] で定義したマッチ ルールを使って、マッチングの実行に使用できます。サービスを呼び出すときに、マッチ ルールを MatchRule オプションに指定し、入力フィールドをユーザ定義フィールドとして指定します。

例: ユニバーサル マッチング サービスの呼び出し

[マッチ ルール管理] で、マッチ ルールを AddressAndBirthday という名前で作成しました。このマッチ ルールは、Address フィールドと Birthday フィールドがあるレコードにマッチングします。ユニバーサル マッチング サービスを使って、SOAP Web サービス要求でこのルールに従ってマッチングを実行することを考えています。

これを行うには、SOAP 要求の MatchRule 要素に AddressAndBirthday を指定し、レコードのフィールドを user_fields 要素に指定します。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:univ="http://www.pb.com/spectrum/services/UniversalMatchingService">
   <soapenv:Header/>
   <soapenv:Body>
      <univ:UniversalMatchingServiceRequest>
         <univ:options>
            <univ:MatchRule>AddressAndBirthday</univ:MatchRule>
         </univ:options>
         <univ:Input>
            <univ:Row>
               <univ:user_fields>
                  <univ:user_field>
                     <univ:name>Name</univ:name>
                     <univ:value>Bob Smith</univ:value>
                  </univ:user_field>
                  <univ:user_field>
                     <univ:name>Address</univ:name>
                     <univ:value>4200 Parliament Pl</univ:value>
                  </univ:user_field>
                  <univ:user_field>
                     <univ:name>Birthday</univ:name>
                     <univ:value>1973-6-15</univ:value>
                  </univ:user_field>
               </univ:user_fields>
            </univ:Row>
            <univ:Row>
               <univ:user_fields>
                  <univ:user_field>
                     <univ:name>Name</univ:name>
                     <univ:value>Robert M. Smith</univ:value>
                  </univ:user_field>
                  <univ:user_field>
                     <univ:name>Address</univ:name>
                     <univ:value>4200 Parliament Pl</univ:value>
                  </univ:user_field>
                  <univ:user_field>
                     <univ:name>Birthday</univ:name>
                     <univ:value>1973-6-15</univ:value>
                  </univ:user_field>
               </univ:user_fields>
            </univ:Row>
            <univ:Row>
               <univ:user_fields>
                  <univ:user_field>
                     <univ:name>Name</univ:name>
                     <univ:value>Bob Smith</univ:value>
                  </univ:user_field>
                  <univ:user_field>
                     <univ:name>Address</univ:name>
                     <univ:value>424 Washington Blvd</univ:value>
                  </univ:user_field>
                  <univ:user_field>
                     <univ:name>Birthday</univ:name>
                     <univ:value>1959-2-19</univ:value>
                  </univ:user_field>
               </univ:user_fields>
            </univ:Row>
         </univ:Input>
      </univ:UniversalMatchingServiceRequest>
   </soapenv:Body>
</soapenv:Envelope>

この要求を発行すると、以下のような応答が得られます。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns3:UniversalMatchingServiceResponse xmlns:ns2="http://spectrum.pb.com/"
      xmlns:ns3="http://www.pb.com/spectrum/services/UniversalMatchingService">
         <ns3:Output>
            <ns3:Row>
               <ns3:MatchScore/>
               <ns3:MatchRecordType>Suspect</ns3:MatchRecordType>
               <ns3:user_fields>
                  <ns3:user_field>
                     <ns3:name>Name</ns3:name>
                     <ns3:value>Bob Smith</ns3:value>
                  </ns3:user_field>
                  <ns3:user_field>
                     <ns3:name>Birthday</ns3:name>
                     <ns3:value>1973-6-15</ns3:value>
                  </ns3:user_field>
                  <ns3:user_field>
                     <ns3:name>Address</ns3:name>
                     <ns3:value>4200 Parliament Pl</ns3:value>
                  </ns3:user_field>
               </ns3:user_fields>
            </ns3:Row>
            <ns3:Row>
               <ns3:MatchScore>100</ns3:MatchScore>
               <ns3:MatchRecordType>Duplicate</ns3:MatchRecordType>
               <ns3:user_fields>
                  <ns3:user_field>
                     <ns3:name>Name</ns3:name>
                     <ns3:value>Robert M. Smith</ns3:value>
                  </ns3:user_field>
                  <ns3:user_field>
                     <ns3:name>Birthday</ns3:name>
                     <ns3:value>1973-6-15</ns3:value>
                  </ns3:user_field>
                  <ns3:user_field>
                     <ns3:name>Address</ns3:name>
                     <ns3:value>4200 Parliament Pl</ns3:value>
                  </ns3:user_field>
               </ns3:user_fields>
            </ns3:Row>
         </ns3:Output>
      </ns3:UniversalMatchingServiceResponse>
   </soap:Body>
</soap:Envelope>