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

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

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

  1. Enterprise Designer で、新しいサービス データフローを作成します。
  2. Input ステージ、Transactional Match ステージ、および Output ステージをキャンバスにドラッグし、連結して以下のようなデータフローを作成します。
    Stages in dataflow
  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>