属性での継承およびポリモーフィズムの使用 - 7.1

Talend Data Fabric Studio ユーザーガイド

author
Talend Documentation Team
EnrichVersion
7.1
EnrichProdName
Talend Data Fabric
task
ジョブデザインと開発
EnrichPlatform
Talend Studio

データモデルにPersonエンティティを含めることができるサンプルを考えてみます。このビジネスエンティティには、Addressを含めていくつかの属性があります。この属性には、1つのメインな再利用可能なタイプAddressTypeがあります。Talend Studioでは、AddressTypeから属性を継承しつつ新しいエレメントのコレクションを返すという、継承の再利用可能なタイプを作成することができます。これにより、欧州に固有の住所形式1つと米国に固有の別の住所形式1つを返すことが目的です。このサンプルでは、欧州と米国の住所形式はどちらもジェネリックな住所形式を拡張します。

始める前に

データモデル、およびデータモデル内のビジネスエンティティが作成済みであること。詳細は、それぞれデータモデルの作成およびデータモデルでのビジネスエンティティの作成を参照して下さい。

このタスクについて

属性に継承とポリモーフィズムを作成するには、以下のようにします:

手順

  1. 作成済みのビジネスエンティティとグループタイプを順に展開し、デフォルトの主キーレコードを右クリックし、コンテキストメニューから[Edit Element] (エレメントの編集)を選択します。

    ダイアログボックスが表示されます。

  2. 名前をIdに変更し、[OK]をクリックしてダイアログボックスを閉じます。
  3. Idを右クリックし、コンテキストメニューから[Add Element (after)] (エレメントの追加(後ろ))を選択し、[Add string Element] (文字列エレメントの追加)を選択します。

    ビジネスエンティティへの属性の追加の説明に従い、Firstname、Lastname、DOB、PostalCode、ResolutionおよびAddressPersonエンティティの属性として追加します。

    データモデルは次の図のようになります。

  4. Addressを右クリックし、リストから[Change to a complex type] (複合タイプへの変更)を選択します。

    ダイアログボックスが表示されます。

    複合タイプにより、完全な構造を定義することができます。これは、単一のエレメントだけでなく、Addressに必要です。

  5. 複合タイプの名前を入力し、[Sequence] (シーケンス)オプションを選択して、定義する順序で住所エレメントを表示します。

    [OK]をクリックして変更の妥当性チェックを行い、ダイアログボックスを閉じます。

    複合タイプは、Address属性の下にも[Data Model Types] (データモデルタイプ)パネル内にもリスト表示されます。

  6. ここで、住所にエレメントを作成する必要があります。
    AddressTypeを展開し、デフォルトのサブエレメントの名前をLine1に変更します。
  7. Line1を右クリックし、コンテキストメニューから[Add Element (after)] (エレメントの追加(後ろ))を選択し、[Add string Element] (文字列エレメントの追加)を選択します。別の2つのエレメントを住所に追加します: Line2およびCity

    住所タイプのエレメントがAddress属性の下にもData Model Typesパネル内にも作成されました。

    ここで、米国と欧州の住所の継承タイプを作成する必要があります。EUAddressTypeではメインのAddressTypeを拡張して郵便番号と国を追加しており、USAddressTypeではメインのAddressTypeを拡張してZIPコードと州を追加しています。

  8. [Data Model Types] (データモデルタイプ)パネルを右クリックし、[Create a Complex Type] (複合タイプの作成)を選択します。

    ダイアログボックスが表示されます。

  9. この継承タイプに名前を入力します(このサンプルではEUAddressType)。
    複合タイプリストから、既存のエレメントの継承元とするメインタイプ(このサンプルではAddressType)を選択します。
  10. [OK]をクリックして変更の妥当性チェックを行い、ダイアログボックスを閉じます。

    [Data Model Types] (データモデルタイプ)パネル内に、継承タイプがデフォルトの[subelement] (サブエレメント)エレメントとともに作成されます。

    この継承タイプは、メインのAddressTypeで3つのエレメントを取得します。これで、このタイプに固有のエレメントを追加して、欧州の完全な住所形式を得ることができます。

  11. [subelement] (サブエレメント)PostalCodeに変更し、Countryエレメントを追加します。

    [Data Model Types] (データモデルタイプ)パネルで同じ手順に従って、メインのAddressTypeを継承するUSAddressTypeという別の継承タイプを作成します。ZipCodeエレメントとStateエレメントを追加して、米国の住所形式を完成します。

  12. データモデルを保存します。

次のタスク

ここで、既存のタイプ(AddressType)を拡張して属性レベルで継承を達成し、特定のエレメントを追加して米国と欧州の住所を完成し、他方、メインの住所タイプから属性を継承しました。

ランタイムにある人の実際の住所インスタンスがEUAddressTypeまたはUSAddressTypeのどちらかになる場合にも、ポリモーフィズムが達成されます。承認済みのビジネスユーザーがTalend MDM Web UIを使用してマスターデータレコードを参照するときに、開いているレコード(人)の具体的な住所タイプが自動的に選択されます。ビジネスユーザーは、開いているレコード内にAddress属性のリストも取得します。ビジネスユーザーはこのリストから、Talend Studioで定義済みの任意の複合住所タイプを選択することができます。

デフォルトでは、リストにはタイプのコードが表示されますが、Talend Studioでは複合タイプのラベルを定義することもできます。そのため、複数の言語でラベルを設定することができ、リストに表示した際にわかりやすくなります。

ラベルの定義は、[Data Model Types] (データモデルタイプ)パネル、またはデータモデルのソースXMLスキーマで行います。

注: ロウXMLスキーマエディター内に拡張タイプを表示する順序を設定するには、注釈を手動で追加します。GUIを使用する方法は現在サポートされていません。

[Data Model Types] (データモデルタイプ)パネル内に複合タイプのラベルを定義するには、以下のようにします:

  1. 複合タイプを定義したデータモデルを開きます。

  2. ラベルを設定する複合タイプを右クリックし、[Set the labels] (ラベルの設定)を選択します。
  3. [Set the Labels] (ラベルの設定)ダイアログボックスが表示されます。

    左側のリストから言語を選択し、右側のフィールドに選択した言語に対応するラベルを入力します。

  4. 右上の[+]ボタンをクリックして、定義済みのラベルを[Language/Label] (言語/ラベル)リストに追加します。

  5. [OK]をクリックして変更の妥当性チェックを行い、ダイアログボックスを閉じます。

    ラベルは複合タイプの[Annotations] (注釈)ノードの下に表示されます。

承認済みのビジネスユーザーがTalend MDM Web UIを使用して更新されたデータモデル内のマスターデータレコードを参照するとき、Address属性のリストには、注釈で定義した複合タイプのラベルが表示されます。

データモデルのソースXMLスキーマ内に複合タイプのラベルを定義するには、以下のようにします:

  1. 複合タイプを定義したデータモデルを開きます。

  2. エディターの下部で[Schema Source] (スキーマソース)をクリックし、データモデルのソースXMLスキーマを開きます。

  3. ラベルを追加し、ビジネスユーザーに特定の順序で表示しようとしている拡張複合タイプに対応するスキーマに移動します。

  4. 複合タイプのルートエレメント内で、X_Label_<ISO>注釈を使用して拡張タイプのラベルを追加し、X_Order_Value注釈を使用して拡張タイプの順序を定義します。手順は次のとおりです。

    ...
    <xsd:complexType name="EUAddressType">
     <xsd:annotation>
      <xsd:appinfo source="X_Label_EN">EU address format</xsd:appinfo>
        <xsd:appinfo source="X_Label_FR">format d'adresse UE</xsd:appinfo>
        <xsd:appinfo source="X_Order_Value">2</xsd:appinfo>
     </xsd:annotation>
      <xsd:complexContent>
        <xsd:extension base="AddressType">
          <xsd:sequence maxOccurs="1" minOccurs="1">
            <xsd:element maxOccurs="1" minOccurs="1" name="PostalCode" type="xsd:string"/>
            <xsd:element maxOccurs="1" minOccurs="1" name="Country" type="xsd:string"/>
          </xsd:sequence>
        </xsd:extension>
     </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="USAddressType">
    <xsd:annotation>
       <xsd:appinfo source="X_Label_EN">US address format</xsd:appinfo>
       <xsd:appinfo source="X_Label_FR">format d'adresse US</xsd:appinfo>
       <xsd:appinfo source="X_Order_Value">1</xsd:appinfo>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="AddressType">
        <xsd:sequence maxOccurs="1" minOccurs="1">
        <xsd:element maxOccurs="1" minOccurs="1" name="ZipCode"   type="xsd:string"/>
        <xsd:element maxOccurs="1" minOccurs="1" name="State" type="xsd:string"/>
       </xsd:sequence>
      </xsd:extension>
     </xsd:complexContent>
    </xsd:complexType>
    ...

    上記のスキーマで、EUAddressTypeEU address formatという名前を付け、拡張タイプのリストで2番目に置くという想定です。さらに、USAddressTypeUS address formatという名前を付け、拡張タイプのリストで最初に置くという想定です。

  5. 変更をモデルエディター内に保存します。

承認済みのビジネスユーザーがTalend MDM Web UIを使用して更新されたデータモデル内のマスターデータレコードを参照するとき、Address属性のリストには、注釈で定義した複合タイプのラベルが表示されます。また、拡張タイプも定義した順序で表示されます。