WebSphere Enterprise Service Bus for z/OS バージョン 6.2.0 オペレーティング・システム: z/OS


ビジネス・オブジェクト内の配列

ビジネス・オブジェクト内のエレメントに配列を定義して、エレメントに複数のデータ・インスタンスを含めることができます。

リスト型を使用して、ビジネス・オブジェクト内の単一の名前付きエレメントに配列を作成することができます。これによって、このエレメントに複数のデータ・インスタンスを格納することができます。例えば、ビジネス・オブジェクト・ラッパー内にストリングとして定義した telephone という名前のエレメント内に、配列を使用して複数の電話番号を保管することができます。また、maxOccurs の値を使用してデータ・インスタンスの数を指定することによって、配列のサイズを定義することもできます。 次のコード例は、エレメントに 3 つのデータ・インスタンスを保持する配列を作成する方法を示したものです。
<xsd:element name="telephone" type="xsd:string" maxOccurs="3"/>
これは、最大 3 つのデータ・インスタンスを保持できるエレメント telephone のリスト指標を作成します。項目が 1 つだけの配列を計画している場合は、値 minOccurs も使用できます。
結果の配列は、以下の 2 つの項目で構成されます。
ただし、この配列を作成するには、ラッパーを定義して中間ステップを実行する必要があります。このラッパーは実際には、エレメントのプロパティーを配列オブジェクトで置換します。上記の例では、ArrayOfTelephone オブジェクトを作成して、エレメント telephone を配列として定義することができます。次のコード例は、このタスクを行う方法を示したものです。
<?xml version="1.0" encoding="UTF-8"?>
 	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 	 	  <xsd:element name="Customer">
 	    <xsd:complexType>
 	      <xsd:sequence>
 	        <xsd:element name="name" type="xsd:string"/>
 	        <xsd:element name="ArrayOfTelephone" type="ArrayOfTelephone"/>
 	      </xsd:sequence>
 	    </xsd:complexType>
 	  </xsd:element>

 	  <xsd:complexType name="ArrayOfTelephone">
 	    <xsd:sequence maxOccurs="3">
 	      <xsd:element name="telephone" type="xsd:string" nillable="true"/>
 	    </xsd:sequence>
 	  </xsd:complexType> 
	</xsd:schema>

telephone エレメントは、ArrayOfTelephone ラッパー・オブジェクトの子として表現されています。

上の例では、telephone エレメントには nillable という名前のプロパティーが組み込まれています。配列指標の特定項目にデータを含めたくない場合は、このプロパティーを true に設定することができます。次のコード例は、配列内でのデータの表現方法を示したものです。
<Customer>
	  <name>Bob</name>
	  <ArrayOfTelephone>
	    <telephone>111-1111</telephone>
	    <telephone xsi:nil="true"/>
	    <telephone>333-3333</telephone>
	  </ArrayOfTelephone>
	</Customer>
このケースでは、telephone エレメントの配列指標の 1 番目と 3 番目の項目にはデータが格納されていますが、2 番目の項目にはデータが格納されていません。nillable プロパティーを telephone エレメントで使用しなかった場合、最初の 2 つのエレメントにデータを格納する必要があります。
WebSphere® Process Server のサービス・データ・オブジェクト (SDO) の Sequence API を、ビジネス・オブジェクト配列内のシーケンスを処理する代替の方法として使用することができます。以下のコード例によって、上記で示したものと同じデータを持つ telephone エレメントの配列が作成されます。
DataObject customer = ...
	customer.setString("name", "Bob");
	 
	DataObject tele_array = customer.createDataObject("ArrayOfTelephone");
	Sequence seq = tele_array.getSequence();  // 配列は順序付けされます
	seq.add("telephone", "111-1111");
	seq.add("telephone", null);
	seq.add("telephone", "333-3333");
以下の例のようなコードを使用して、特定のエレメント配列指標のデータを戻すことができます。
String tele3 = tele_array.get("telephone[3]");  // tele3 = "333-3333"
この例では、tele3 という名前のストリングによって、データ「333-3333」が戻されます。

リスト指標の配列のデータ項目には、JMS または MQ メッセージ・キュー内に配置されている固定幅または区切り文字で区切られているデータを使用して入力できます。また、適切にフォーマット設定されたデータが格納されているフラット・テキスト・ファイルを使用して、このタスクを行うこともできます。


concept 概念トピック

ご利用条件 | フィードバック


タイムスタンプ・アイコン 最終更新: 2010/07/05


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.zseries.doc/doc/cpro_array_define.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています (http://www.eclipse.org)。