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


ネストされたビジネス・オブジェクトの複数インスタンスの作成

setWithCreate 機能を使用して、ネストされたビジネス・オブジェクトの複数インスタンスを作成します。

始める前に

以下の XSD ファイルの例には、トップ (親) のビジネス・オブジェクトの 1 レベル下 (子) および 2 レベル下 (孫) のネストされたオブジェクトが含まれています。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:complexType name="Parent">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="child" type="Child" maxOccurs="5"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Child">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="grandChild" type="GrandChild"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="GrandChild">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  
</xsd:schema>
maxOccurs の値で指定するように、親オブジェクトは最大 5 つの子オブジェクトを持つことができることに注意してください。

このタスクについて

配列内で欠落したシーケンスを許可しない、より厳密なポリシーでリストを作成することができます。setWithGet メソッドを使用して、同時に特定のリスト指標項目に現れるデータを指定します。
DataObject parent = ...
parent.setString("child[3]/grandchild/name", "Bob");
この事例では、結果の配列のサイズは 3 ですが、child[1] および child[2] のリスト指標項目の値は未定義です。項目は、ヌル値にするか、または関連したデータ値を持たせることが必要な場合があります。上記のシナリオでは、最初の 2 つの配列指標項目が未定義であるため、例外が throw されます。
リストの指標の値を定義することで、この状況に対処することができます。 指標項目が配列内の既存のエレメントを参照しており、その参照先エレメントがヌル以外である場合 (つまりデータを含む場合)、それが使用されます。参照先エレメントがヌルである場合、そのエレメントが作成されて使用されます。リストの指標がリストのサイズよりも 1 つ大きい場合、新規の値が作成されて追加されます。以下のコード例では、サイズが 2 のリストで、child[1] をヌルに指定し、child[2] にデータを格納した場合に何が起こるかを示したものです。
DataObject parent = ...
// child[1] = ヌル
// child[2] = 既存の子
// child[1] はヌルであり、作成されることから、このコードは機能します。
parent.setString("child[1]/grandchild/name", "Bob");

// child[2] が存在して使用されるため、このコードは機能します。
parent.setString("child[2]/grandchild/name", "Dan");

// 子のリストのサイズは 2 であり、
// リスト項目を 1 つ追加するとリストのサイズが増加するため、
// このコードは機能します。
parent.setString("child[3]/grandchild/name", "Sam");

タスクの結果

2 つの既存項目の値を指定変更して、3 つ目の項目をリスト指標に追加しました。ただし、次にサイズが 4 でない別の項目か、または maxOccurs で指定したサイズよりも大きな項目を追加すると、例外が throw されます。このメソッドのより厳密なポリシーについて、以下のコード例で示します。
注: 以下のコードは、上記の既存のコードに追加することを想定しています。
// リストはサイズが 3 であり、サイズを 4 に増加させる項目を
// 作成していなかったため、このコードは例外を throw します。
parent.setString("child[5]/grandchild/name", "Billy");

task タスク・トピック

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


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


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