WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Tableaux dans les objets métier

Vous pouvez définir des tableaux pour un élément dans un objet métier afin que cet élément puisse contenir plus d'une instance de données.

Vous pouvez utiliser une Liste pour créer un tableau pour un seul élément nommé dans un objet métier. Vous pourrez ainsi utiliser cet élément pour contenir des instances multiples de données. Par exemple, vous pouvez utiliser un tableau pour stocker plusieurs numéros de téléphone dans un élément nommé telephone et défini en tant que chaîne dans l'encapsuleur d'objet métier. Vous pouvez également définir la taille du tableau en précisant le nombre d'instances de données. Pour cela, vous utiliserez la valeur maxOccurs. L'exemple de code suivant montre comment créer un tel tableau comportant trois instances de données pour cet élément :
<xsd:element name="telephone" type="xsd:string" maxOccurs="3"/>
Cela va créer un index pour l'élément telephone qui peut contenir jusqu'à trois instances de données. Vous pouvez également utiliser la valeur minOccurs si vous envisagez d'avoir un élément dans le tableau.
Le tableau créé se compose de deux éléments :
Pour créer ce tableau, cependant, vous devez effectuer une opération intermédiaire consistant à définir un encapsuleur. Celui-ci remplace en effet la propriété de l'élément par un objet tableau. Dans l'exemple ci-dessus, vous pouvez créer un objet ArrayOfTelephone pour définir l'élément telephone en tant que tableau. L'exemple de code suivant indique comment accomplir cette tâche :
<?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>

L'élément telephone apparaît maintenant en tant qu'enfant de l'objet encapsuleur ArrayOfTelephone.

Vous remarquerez que dans l'exemple ci-dessus, l'élément telephone comprend la propriété nillable. Vous pouvez définir cette valeur sur true si vous voulez que certains éléments dans l'indice de tableau ne contiennent aucune donnée. L'exemple de code suivant indique comment les données d'un tableau peuvent être représentées :
<Customer>
	  <name>Bob</name>
	  <ArrayOfTelephone>
	    <telephone>111-1111</telephone>
	    <telephone xsi:nil="true"/>
	    <telephone>333-3333</telephone>
	  </ArrayOfTelephone>
	</Customer>
Dans ce cas, le premier et le troisième éléments dans l'indice de tableau de l'élément telephone contiennent des données contrairement au deuxième. Si vous n'aviez pas utilisé la propriété nillable pour l'élément telephone, vous auriez alors les deux premiers éléments qui contiennent des données.
Vous pouvez utiliser les API de séquence Service Data Object (SDO) dans WebSphere Process Server comme alternative au traitement des séquences dans les tableaux d'objet métier. L'exemple de code suivant permet de créer un tableau pour l'élément telephone avec des données identiques à celles indiquées plus haut :
DataObject customer = ...
	customer.setString("name", "Bob");
	 
	DataObject tele_array = customer.createDataObject("ArrayOfTelephone");
	Sequence seq = tele_array.getSequence();  // The array is sequenced
	seq.add("telephone", "111-1111");
	seq.add("telephone", null);
	seq.add("telephone", "333-3333");
Vous pouvez renvoyer les données d'un indice de tableau d'élément donné en utilisant un code semblable à l'exemple ci-dessous :
String tele3 = tele_array.get("telephone[3]");  // tele3 = "333-3333"
Dans cet exemple, la chaîne tele3 va renvoyer les données "333-3333".

Vous pouvez remplir les éléments données du tableau dans l'index en utilisant une largeur fixe ou des données délimitées placées dans une file d'attente de messages JMS ou MQ. Vous pouvez également accomplir cette tâche en utilisant un fichier texte à plat contenant les données correctement formatées.


concept Rubrique concept

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cpro_array_define.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).