属性での継承およびポリモーフィズムの使用
データモデルにPersonエンティティを含めることができる例を考えてみます。このビジネスエンティティには、Addressを含めていくつかの属性があります。この属性には、1つのメインな再利用可能なタイプAddressTypeがあります。Talend Studioでは、AddressTypeから属性を継承しつつ新しいエレメントのコレクションを返すという、継承の再利用可能なタイプを作成できます。これにより、欧州に固有の住所形式1つと米国に固有の別の住所形式1つを返すことが目的です。この例では、欧州と米国の住所形式はどちらもジェネリックな住所形式を拡張します。
始める前に
データモデル、およびデータモデル内のビジネスエンティティが作成済みであること。詳細は、それぞれデータモデルの作成およびデータモデルにビジネスエンティティを作成をご覧ください。
このタスクについて
属性に継承とポリモーフィズムを作成するには、以下のようにします:
手順
次のタスク
ここで、既存のタイプ(AddressType)を拡張して属性レベルで継承を達成し、特定のエレメントを追加して米国と欧州の住所を完成し、他方、メインの住所タイプから属性を継承しました。
実行時にある人の実際の住所インスタンスがEUAddressTypeまたはUSAddressTypeのどちらかになる場合にも、ポリモーフィズムが達成されます。承認済みのビジネスユーザーがTalend MDM Web UIを介してマスターデータレコードを参照する時に、開いているレコード(人)の具体的な住所タイプが自動的に選択されます。ビジネスユーザーは、開いているレコード内にAddress属性のリストも取得します。ビジネスユーザーはこのリストから、Talend Studioで定義済みの任意の複合住所タイプを選択できます。
デフォルトでは、リストにはタイプのコードが表示されますが、Talend Studioでは複合型のラベルを定義することもできます。そのため、複数の言語でラベルを設定でき、リストに表示した際にわかりやすくなります。
ラベルの定義は、[Data Model Types] (データモデルタイプ)パネル、またはデータモデルのソースXMLスキーマで行います。
[Data Model Types] (データモデルタイプ)パネル内に複合型のラベルを定義するには、以下のようにします:
-
複合型を定義したデータモデルを開きます。
-
ラベルを設定する複合型を右クリックし、[Set the labels] (ラベルを設定)を選択します。
-
[Set the Labels] (ラベルを設定)ダイアログボックスが表示されます。
左側のリストから言語を選択し、右側のフィールドに選択した言語に対応するラベルを入力します。
-
右上の[+]ボタンをクリックして、定義済みのラベルを[Language/Label] (言語/ラベル)リストに追加します。
-
OKをクリックして変更の妥当性チェックを行い、ダイアログボックスを閉じます。
ラベルは複合型の[Annotations] (注釈)ノードの下に表示されます。
承認済みのビジネスユーザーがTalend MDM Web UIを使い、アップデートされたデータモデル内のマスターデータレコードを参照すると、注釈で定義した複合型のラベルがAddress属性のリストに表示されます。
データモデルのソースXMLスキーマ内に複合型のラベルを定義するには、以下のようにします:
-
複合型を定義したデータモデルを開きます。
-
エディターの下部で[Schema Source] (スキーマソース)をクリックし、データモデルのソースXMLスキーマを開きます。
-
ラベルを追加し、ビジネスユーザーに特定の順序で表示しようとしている拡張複合型に対応するスキーマに移動します。
-
複合型のルートエレメント内で、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> ...
上記のスキーマで、EUAddressTypeにEU address formatという名前を付け、拡張タイプのリストで2番目に置くという想定です。さらに、USAddressTypeにUS address formatという名前を付け、拡張タイプのリストで最初に置くという想定です。
-
変更をモデルエディター内に保存します。
承認済みのビジネスユーザーがTalend MDM Web UIを使い、アップデートされたデータモデル内のマスターデータレコードを参照すると、注釈で定義した複合型のラベルがAddress属性のリストに表示されるほか、拡張タイプも定義した順序で表示されます。