メイン コンテンツをスキップする 補完的コンテンツへスキップ

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

データモデルに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属性のリストに表示されるほか、拡張タイプも定義した順序で表示されます。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。