Cloud Software Group, Inc. EBX®
ドキュメント>開発者ガイド>データモデル
ナビゲーションモードドキュメント>開発者ガイド>データモデル

データ型

この章では、TIBCO EBX®でサポートされるデータ型について詳しく説明します。

以下も参照してください。

XMLスキーマに組み込まれた単純型

次の表に、EBX®でサポートされているXMLスキーマで定義されているすべての単純型と、それに対応するJava型を示します。

XMLスキーマタイプ

Javaクラス

メモ

xs:string

java.lang.String

文字列フィールドに定義されているデフォルトの戦略については、文字列フィールドのデフォルトの戦略のセクションで詳しく説明しています。

xs:boolean

java.lang.Boolean

xs:decimal

java.math.BigDecimal

値が15のtotalDigitsファセットは、マップされたテーブル(履歴テーブルまたはレプリケートテーブル)に含まれる10進フィールドにデフォルトで追加されます。ただし、このファセットは、データモデルでより大きな値で上書きできます。

xs:dateTime

java.util.Date

xs:time

java.util.Date

返されるDateの日付部分は常に「1970/01/01」に設定されます。

xs:date

java.util.Date

返されるDateの時間部分は、常に1日の始まり、つまり「00:00:00」です。

xs:anyURI

java.net.URI

xs:Name (xs:string 制限項)

java.lang.String

xs:intxs:decimal 制限項)

java.lang.Integer

xs:integerxs:decimal 制限項)

java.lang.Integer

このマッピングは、XMLスキーマの推奨事項に準拠していません。 XMLスキーマ仕様では、xs:integerには値スペースの制限がないと記載されていますが、実際には、この値スペースはjava.lang.IntegerオブジェクトのJava仕様によって制限されています。

XMLスキーマタイプとJavaタイプの間のマッピングについては、データタイプのマッピングのセクションで詳しく説明しています。

単純型という名前のXMLスキーマ

名前付き単純型は、既存のビルトイン単純型を再定義するためのデータモデルを設計するときに定義できます。 名前付きの単純型は、データモデルで再利用できます。

制限事項:

XMLスキーマ複合型

データモデルを設計するときに、複雑な型を定義できます。 名前付き複合型はデータモデルで再利用できます。

制限事項:

EBX®で定義された拡張単純型

EBX®は、事前定義された単純なデータ型を提供します。

XMLスキーマタイプ

Javaクラス

osd:text (xs:string 制限項)

java.lang.String

osd:html (xs:string 制限項)

java.lang.String

osd:email (xs:string 制限項)

java.lang.String

osd:password (xs:string 制限項)

java.lang.String

osd:color (xs:string 制限項)

java.lang.String

osd:resource (xs:anyURI 制限項)

内部クラス

osd:locale (xs:string 制限項)

java.util.Locale

osd:dataspaceKey (xs:string 制限項)

java.lang.String

osd:datasetName (xs:string 制限項)

java.lang.String

上記のタイプは、内部スキーマcommon-1.0.xsdによって定義されています。それらは次のように定義されます。

osd:text

このタイプは、テキスト情報を表します。 EBX®のデフォルトのユーザーインターフェイスは、入力と表示用に数行の専用エディターで構成されています。

このデータ型の使用は、非常に長いテキストを対象としています。これが、'Text'検索戦略がこのタイプに関連付けられており、変更できない理由です。結果として、タイプosd:textのフィールドはソートの恩恵を受けることができません。さらに、それらのインデックス作成戦略と検索結果は、xs:stringタイプのものとは異なります。詳細については、文字列フィールドのデフォルト戦略を参照してください。

<xs:simpleType name="text">
	<xs:restriction base="xs:string" />
</xs:simpleType>

osd:html

これは、HTML形式の文字列を表します。 WYSIWYGエディターはEBX®で提供されます。

<xs:simpleType name="html">
	<xs:restriction base="xs:string" />
</xs:simpleType>

osd:email

これは、RFC822標準で指定されている電子メールアドレスを表します。

<xs:simpleType name="email">
	<xs:restriction base="xs:string" />
</xs:simpleType>

osd:password

これは、ハッシュまたは暗号化されたパスワードを表します。 EBX®には特定のエディターが用意されています。

<xs:element name="password" type="osd:password" />

デフォルトのエディターは、SHA-512アルゴリズムを使用してハッシュ計算を実行します。この暗号化関数は、メソッドDirectoryDefault.encryptStringを使用してJavaクライアントからも使用できます。

インターフェイス暗号化を実装するクラスを指定することにより、デフォルトのエディターで別の暗号化メカニズムを使用することもできます。

<xs:element name="password" type="osd:password">
	<xs:annotation>
		<xs:appinfo>
			<osd:uiBean class="com.orchestranetworks.ui.UIPassword">
				<encryptionClass>package.EncryptionClassName</encryptionClass>
			</osd:uiBean>
		</xs:appinfo>
	</xs:annotation>
</xs:element>

別のフィールドへのパスを参照することでソルトを指定することができ、クラスを使用することで、インターフェイスHashComputationを実装します。

<xs:element name="password" type="osd:password">
	<xs:annotation>
		<xs:appinfo>
			<osd:uiBean class="com.orchestranetworks.ui.UIPassword">
				<encryptionClass>package.HashClassName</encryptionClass>
				<saltPath>../login</saltPath>
			</osd:uiBean>
		</xs:appinfo>
	</xs:annotation>
</xs:element>

osd:locale

これは、地理的、政治的、または文化的な場所を表します。

ロケール タイプは、クラス java.util.Localeによって Java に変換されます。

<xs:simpleType name="locale">
	<xs:restriction base="xs:string">
		<xs:enumeration value="ar" osd:label="Arabic" />
		<xs:enumeration value="ar_AE" osd:label="Arabic (United Arab Emirates)" />
		<xs:enumeration value="ar_BH" osd:label="Arabic (Bahrain)" />
		<xs:enumeration value="ar_DZ" osd:label="Arabic (Algeria)" />
		<xs:enumeration value="ar_EG" osd:label="Arabic (Egypt)" />
		<xs:enumeration value="ar_IQ" osd:label="Arabic (Iraq)" />
			...
		<xs:enumeration value="vi_VN" osd:label="Vietnamese (Vietnam)" />
		<xs:enumeration value="zh" osd:label="Chinese" />
		<xs:enumeration value="zh_CN" osd:label="Chinese (China)" />
		<xs:enumeration value="zh_HK" osd:label="Chinese (Hong Kong)" />
		<xs:enumeration value="zh_TW" osd:label="Chinese (Taiwan)" />
	</xs:restriction>
</xs:simpleType>

osd:color

これは、16進数のRGBカラーフォーマットの文字列を表します。 EBX®には、カラーピッカーUIComponentが用意されています。

<xs:simpleType name="color">
	<xs:restriction base="xs:string" />
</xs:simpleType>

osd:resource

これは、モジュールにパッケージ化されたリソースを表します。詳細については、パッケージ化されたリソースを参照してください。このタイプには、ファセットFacetOResourceの定義が必要です。

<xs:simpleType name="resource">
	<xs:restriction base="xs:anyURI" />
</xs:simpleType>

osd:dataspaceKey

このタイプは、データスペースへの参照を表します。

<xs:element name="dataspaceField" type="osd:dataspaceKey" />

EBX®には、参照可能なデータスペースを表示する特定のエディターが用意されています。

xs:annotation/xs:appInfoの下のエレメント osd:dataspaceSetを使用して参照できるデータスペースを指定することができます。エレメント osd:dataspaceSetが定義されていない場合、デフォルトでは、開いているブランチのみを参照できます。

<xs:element name="dataspaceField" type="osd:dataspaceKey">
	<xs:annotation>
		<xs:appinfo>
			<osd:dataspaceSet>
				<include>
					<pattern>a pattern</pattern>
					<type>all | branch | version</type>
					<includeDescendants>none | allDescendants | allBranchDescendants | allSnapshotDescendants | branchChildren | snapshotChildren</includeDescendants>
				</include>
				<exclude>
					<pattern>a pattern</pattern>
					<type>all | branch | version</type>
					<includeDescendants>none | allDescendants | allBranchDescendants | allSnapshotDescendants | branchChildren | snapshotChildren</includeDescendants>
				</include>
				<filter osd:class="com.foo.MyDataspaceFilter">
					<param1>...</param1>
					<param2>...</param2>
				</filter>
			</osd:dataspaceSet>
		</xs:appinfo>
	</xs:annotation>
</xs:element>
  • includes

    このフィールドで参照できるデータスペースを指定します。 includeを少なくとも定義する必要があります。

    patternデータスペースをフィルタリングするパターンを指定します。パターンは、データスペースの名前と照合されます。このプロパティは必須です。

    typeこのフィールドで参照できるデータスペースのタイプを指定します。定義されていない場合、この制限はブランチに適用されます。 allの場合、ブランチとスナップショットが含まれます。 branchの場合、ブランチのみが含まれます。 スナップショットの場合、スナップショットのみが含まれます。設定されていない場合、このプロパティはデフォルトでbranchになります。

    includeDescendants指定されたパターンに一致するデータスペースの子または子孫をセットに含めるかどうかを指定します。 noneの場合、指定されたパターンに一致するデータスペースの子も子孫も含まれません。 allDescendantsの場合、指定されたパターンに一致するデータスペースのすべての子孫が含まれます。 allBranchDescendantsの場合、指定されたパターンに一致するデータスペースのすべての子孫ブランチが含まれます。 allSnapshotDescendantsの場合、指定されたパターンに一致するデータスペースのすべての子孫スナップショットが含まれます。 directBranchChildrenの場合、指定されたパターンに一致するデータスペースの直接ブランチのみが含まれます。 directSnapshotChildrenの場合、指定されたパターンに一致するデータスペースの直接スナップショットのみが含まれます。設定されていない場合、このプロパティはデフォルトでnoneになります。

  • excludes

    このフィールドで参照できないデータスペースを指定します。Includes(含む)が定義されていない場合、Excludes(除外)は無視されます。

    patternデータスペースをフィルタリングするパターンを指定します。パターンは、データスペースの名前と照合されます。このプロパティは必須です。

    typeこのフィールドで参照できるデータスペースのタイプを指定します。定義されていない場合、この制限はブランチに適用されます。 allの場合、ブランチとスナップショットは除外されます。 branchの場合、ブランチのみが除外されます。 snapshotの場合、スナップショットのみが除外されます。設定されていない場合、このプロパティはデフォルトでbranchになります。

    includeDescendants指定されたパターンに一致するデータセットの子または子孫をセットから除外するかどうかを指定します。 noneの場合、指定されたパターンに一致するデータスペースの子も子孫も除外されません。 allDescendantsの場合、指定されたパターンに一致するデータスペースのすべての子孫が除外されます。 allBranchDescendantsの場合、指定されたパターンに一致するデータスペースのすべての子孫ブランチが除外されます。 allSnapshotDescendantsの場合、指定されたパターンに一致するデータスペースのすべての子孫スナップショットが除外されます。 directBranchChildrenの場合、指定されたパターンに一致するデータスペースの直接ブランチのみが除外されます。 directSnapshotChildrenの場合、指定されたパターンに一致するデータスペースの直接スナップショットのみが除外されます。設定されていない場合、このプロパティはデフォルトでnoneになります。

  • filter

    データセットまたはレコードのコンテキストでデータスペースを受け入れるか拒否するフィルターを指定します。このフィルターは、このフィールドに関連付けられている専用の入力コンポーネントでのみ使用されます。つまり、このフィールドを検証するとき、このフィルターは使用されません。特定の制約を使用して、このフィールドで特定の制御を実行できます。

    属性osd:classは、インターフェイスDataspaceSetFilterを実装するJavaBeanを指定します。

xs:annotation/xs:appInfo/osd:dataspaceSetの下のエレメントvalidationを使用して、このタイプに関連付けられた検証メッセージと制御ポリシーをカスタマイズすることもできます。詳細については、重大度のあるファセット検証メッセージおよび制御ポリシーを参照してください。

osd:datasetName

このタイプは、データセットへの参照を表します。

<xs:element name="dataset" type="osd:datasetName" />

EBX®で提供される特定のエディターは、参照可能なデータセットを表示します。

xs:annotation/xs:appInfoの下のエレメント osd:datasetSetを使用して参照できるデータセットを指定することもできます。

<xs:element name="datasetField" type="osd:datasetName">
	<xs:annotation>
		<xs:appinfo>
			<osd:datasetSet>
				<branch>productsBranch</branch>
				<version>productsVersion</version>
				<dataspaceSelector>../dataspaceField</dataspaceSelector>
				<pattern>a pattern</pattern>
				<filter osd:class="com.foo.MyDatasetFilter">
					<param1>...</param1>
					<param2>...</param2>
				</filter>
			</osd:datasetSet>
		</xs:appinfo>
	</xs:annotation>
</xs:element>
  • branch

    ソースブランチを指定します。このブランチに含まれるデータセットのみが、データセット識別子(osd:datasetName)タイプのフィールドで選択できます。

  • version

    ソーススナップショットを指定します。このスナップショットに含まれるデータセットのみが、データセット識別子(osd:datasetName)タイプのフィールドで選択できます。

  • dataspaceSelector

    参照できるデータセットを含むデータスペースを定義する同じデータモデル内のフィールドを指定します。指定されたフィールドは xs:string または osd:dataspaceKey 型でなければなりません。このフィールドの値は、データスペースまたはスナップショットの永続的な識別子の表現に準拠する必要があります。

    参照されるノードは、動的ファセットに存在する制限に従う必要があります。

    以下も参照してください。
  • includes

    このフィールドで参照できるデータセットを指定します。

    patternデータセットをフィルタリングするパターンを指定します。パターンは、データセットの名前と照合されます。このプロパティは必須です。

    includeDescendants指定されたパターンに一致するデータセットの子または子孫をセットに含めるかどうかを指定します。 noneの場合、指定されたパターンに一致するデータセットの子も子孫も除外されません。 directChildrenの場合、指定されたパターンに一致するデータセットの直接の子のみが除外されます。 allDescendantsの場合、指定されたパターンに一致するデータセットのすべての子孫が除外されます。設定されていない場合、このプロパティはデフォルトでnoneになります。

  • excludes

    このフィールドで参照できないデータセットを指定します。Includes(含む)が定義されていない場合、Excludes(除外)は無視されます。

    patternデータセットをフィルタリングするパターンを指定します。パターンは、データセットの名前と照合されます。このプロパティは必須です。

    includeDescendants指定されたパターンに一致するデータセットの子または子孫をセットに含めるかどうかを指定します。 noneの場合、指定されたパターンに一致するデータセットの子も子孫も除外されません。 directChildrenの場合、指定されたパターンに一致するデータセットの直接の子のみが除外されます。 allDescendantsの場合、指定されたパターンに一致するデータセットのすべての子孫が除外されます。設定されていない場合、このプロパティはデフォルトでnoneになります。

  • filter

    データセットまたはレコードのコンテキストでデータセットを受け入れるか拒否するフィルターを指定します。このフィルターは、このフィールドに関連付けられている専用の入力コンポーネントでのみ使用されます。つまり、このフィールドを検証するとき、このフィルターは使用されません。特定の制約を使用して、このフィールドで特定の制御を実行できます。

    属性osd:classは、インターフェイスDatasetSetFilterを実装するJavaBeanを指定します。入力データスペース参照がこのフィルターと一致しない場合、検証メッセージが関連フィールドに追加されます。

エレメントbranchversion、またはdataspaceSelectorのいずれかを定義する必要があります。

xs:annotation/xs:appInfo/osd:datasetSetの下のエレメントvalidationを使用して、このタイプに関連付けられた検証メッセージと制御ポリシーをカスタマイズすることもできます。詳細については、重大度のあるファセット検証メッセージおよび制御ポリシーを参照してください。

EBX®によって定義された複合型

EBX®は、事前定義された複雑なデータ型を提供します。

XMLスキーマタイプ

説明

osd:UDA

ユーザー定義属性:このタイプを使用すると、アクセス権に応じて、すべてのユーザーがUDAカタログと呼ばれるディクショナリで定義された属性に関連付けられた値を定義できます。

osd:UDACatalog

ユーザー定義属性のカタログ:このタイプは、属性を指定できるテーブルで構成されます。このカタログは、同じデータモデルで宣言されたすべてのosd:UDAエレメントによって使用されます。

osd:UDA

ユーザー定義属性(UDA)は、minOccurs属性とmaxOccurs属性の両方、および対応するカタログのパスを指定する属性osd:UDACatalogPathもサポートします。

<xs:element name="firstUDA" type="osd:UDA" minOccurs="0"
	maxOccurs="unbounded" osd:UDACatalogPath="//insuranceCatalog" />
<xs:element name="secondUDA" type="osd:UDA" minOccurs="1" maxOccurs="1"
	osd:UDACatalogPath="/root/userCatalog" />
<xs:element name="thirdUDA" type="osd:UDA" minOccurs="0" maxOccurs="1"
	osd:UDACatalogPath="//userCatalog" />

マネージャーでは、UDAを操作するときに、エディターは選択した属性のタイプに適応します。

osd:UDACatalog

内部的には、カタログはテーブルとして表されます。パラメーターminOccursおよびmaxOccursを指定する必要があります。

同じデータモデルで複数のカタログを定義できます。

<xs:element name="insuranceCatalog" type="osd:UDACatalog" minOccurs="0" maxOccurs="unbounded">
	<xs:annotation>
		<xs:documentation xml:lang="en-US">Insurance Catalog.</xs:documentation>
		<xs:documentation xml:lang="fr-FR">Catalog assurance.</xs:documentation>
	</xs:annotation>
</xs:element>
<xs:element name="userCatalog" type="osd:UDACatalog" minOccurs="0" maxOccurs="unbounded">
	<xs:annotation>
		<xs:documentation xml:lang="en-US">User catalog.</xs:documentation>
		<xs:documentation xml:lang="fr-FR">Catalogue utilisateur.</xs:documentation>
	</xs:annotation>
</xs:element>

新しい属性の作成に使用できるのは、次のタイプのみです。

  • xs:string

  • xs:boolean

  • xs:decimal

  • xs:dateTime

  • xs:time

  • xs:date

  • xs:anyURI

  • xs:Name

  • xs:int

  • osd:html

  • osd:email

  • osd:password

  • osd:locale

  • osd:text

ユーザー定義の属性とカタログの制限

次の機能は、UDAエレメントではサポートされていません。

UDAカタログは内部的にテーブルと見なされるため、テーブルに適用される制限はUDACatalogエレメントにも存在します。

集約リスト

XML スキーマでは、要素が出現できる最大回数は、その宣言の maxOccurs 属性の値によって決まります。この値が厳密に 1 より大きいか、制限なしである場合、データは複数回出現する可能性があります。 osd:table 宣言が含まれていない場合、この要素は 集約リストと呼ばれます。

Java では、クラス java.util.Listのインスタンスとして表されます。

以下は、借入額に応じてローン商品の価格を定義する集計リストの例です。

<xs:element name="pricing" minOccurs="0" maxOccurs="unbounded"
	osd:access="RW">
	<xs:annotation>
		<xs:documentation>
			<osd:label>Pricing</osd:label>
			<osd:description>Pricing grid </osd:description>
		</xs:documentation>
	</xs:annotation>
	<xs:complexType>
		<xs:sequence>
			<xs:element name="amount" type="xs:int">
				<xs:annotation>
					<xs:documentation>
						<osd:label>Amount borrowed</osd:label>
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="monthly" type="xs:int">
				<xs:annotation>
					<xs:documentation>
						<osd:label>Monthly payment </osd:label>
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="cost" type="xs:int">
				<xs:annotation>
					<xs:documentation>
						<osd:label>Cost</osd:label>
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:element>

集約リストには、EBX®専用のエディターがあります。このエディターを使用すると、オカレンスを追加または削除できます。

注意

maxOccurs> 1 のエレメントに osd:table宣言を追加することは、設計プロセス中に考慮しなければならない非常に重要な考慮事項です。集約リストは、テーブルでサポートされている多くの機能に関して厳しく制限されています。テーブルでサポートされている集約リストでサポートされていない機能は次のとおりです。

  • パフォーマンスとメモリの最適化

  • ルックアップ、フィルター、検索

  • 階層での並べ替え、表示、表示

  • IDの制約(主キーと一意性の制約)

  • レコードレベルでの作成、変更、削除、および特定の権限に関する詳細な権限

  • 詳細な比較とマージ

したがって、集計リストは、高度な要件なしで、少量の単純なデータ(1〜2ダースのオカレンス)にのみ使用する必要があります。大量のデータまたはより高度な機能の場合は、osd:table宣言を使用することを強くお勧めします。

テーブル宣言の詳細については、テーブルと関係を参照してください。

外部データモデルの包含

現在のモデルに別のデータモデルを含めると、そのデータモデルで定義されている再利用可能なタイプを使用できます。したがって、外部データモデルを含めることで、複数のXMLスキーマドキュメント間でデータ型を共有できます。

モデルに別のXMLスキーマドキュメントを含め、それによってモデルが定義するデータ型を含めるには、次のようにxs:includeエレメントを指定します。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:osd="urn:ebx-schemas:common_1.0" xmlns:fmt="urn:ebx-schemas:format_1.0">
  	<xs:include 	schemaLocation="./schemaToInclude.xsd"/>
	...
</xs:schema>

属性schemaLocationは必須であり、含めるXMLスキーマドキュメントへの絶対パスまたは相対パスを指定する必要があります。

XMLスキーマドキュメントを含めることはネームスペースに対応していないため、含まれるすべてのデータ型は同じネームスペースに属している必要があります。結果として、同じ名前のデータ型を定義するXMLスキーマドキュメントを含めることはサポートされていません。

EBX®には、組み込みデータモデルおよびモジュールにパッケージ化されたデータモデルを含めるための特定のURNを備えた拡張機能が含まれています。

埋め込みデータモデルをモデルに含めるには、EBX®で定義されたURNを指定します。以下に例を示します。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:osd="urn:ebx-schemas:common_1.0" xmlns:fmt="urn:ebx-schemas:format_1.0">
	<xs:include schemaLocation="urn:ebx:publication:myPublication"/>
	...
</xs:schema>

モジュールにパッケージ化されたデータモデルを含めるには、EBX®で定義された特定のURNを指定します。以下に例を示します。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:osd="urn:ebx-schemas:common_1.0" xmlns:fmt="urn:ebx-schemas:format_1.0">
	<xs:include schemaLocation="urn:ebx:module:aModuleName:/WEB-INF/ebx/schema/myDataModel.xsd"/>
	...
</xs:schema>

EBX®でサポートされている特定のURNの詳細については、SchemaLocation を参照してください。

注意

パッケージ化されたデータモデルがJavaリソースを使用する場合、データモデルを含むモジュールのクラスローダーは、これらのリソースを解決するために実行時に使用されます。

ドキュメント>開発者ガイド>データモデル