
Array negli oggetti di business
È possibile definire matrici per un elemento in un oggetto di business in modo che l'elemento possa contenere più di un'istanza di dati.
È possibile utilizzare un tipo di elenco per creare un array per un singolo elemento denominato in un oggetto di business. Ciò consentirà di utilizzare tale elemento per contenere più istanze di dati. Ad esempio, è possibile utilizzare un array per memorizzare diversi numeri di telefono all'interno di un elemento denominato
telephone definito come stringa nel relativo wrapper dell'oggetto di business. È inoltre possibile definire la dimensione dell'array specificando il numero di istanze di dati utilizzando il valore maxOccurs . Il codice di esempio seguente mostra come creare un array di questo tipo che conterrà tre istanze di dati per tale elemento:<xsd:element name="telephone" type="xsd:string" maxOccurs="3"/>Verrà creato un indice di elenco per l'elemento telephone che può contenere fino a tre istanze di dati. È anche possibile utilizzare il valore minOccurs se si prevede di avere solo un elemento nell'array.L'array risultante è costituito da due voci:
- il contenuto dell'array
- l'array stesso.
Per creare questo array, tuttavia, è necessario eseguire un passo intermedio definendo un wrapper. Questo wrapper, in effetti, sostituisce la proprietà dell'elemento con un oggetto array. Nell'esempio precedente, è possibile creare un oggetto
ArrayOfTelephone per definire l'elemento telephone come un array. Il seguente esempio di codice mostra come eseguire questa attività:<?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'elemento telephone viene ora visualizzato come elemento secondario dell'oggetto wrapper ArrayOfTelephone .
Notare che nell'esempio precedente, l'elemento
telephone contiene una proprietà denominata nillable. È possibile impostare questa proprietà su true se si desidera che determinati elementi nell'indice di array non contengano dati. Il seguente codice di esempio mostra come possono essere rappresentati i dati in un array:<Customer>
<name>Bob</name>
<ArrayOfTelephone>
<telephone>111-1111</telephone>
<telephone xsi:nil="true"/>
<telephone>333-3333</telephone>
</ArrayOfTelephone>
</Customer>In questo caso, il primo e il terzo elemento nell'indice di array per l'elemento telephone contengono dati, mentre il secondo elemento non contiene dati. Se non è stata utilizzata la proprietà nillable per l'elemento telephone , è necessario che i primi due elementi contengano dati.È possibile utilizzare le API di sequenza SDO (Service Data Object) in IBM® Business Automation Workflow come metodo alternativo per gestire le sequenze negli array di oggetti di business. Il seguente codice di esempio crea un array per l'elemento
telephone con dati identici a quelli mostrati nell'esempio precedente: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");È possibile restituire i dati per un determinato indice di array di elementi utilizzando un codice simile al seguente esempio:String tele3 = tele_array.get("telephone[3]"); // tele3 = "333-3333"In questo esempio, una stringa denominata tele3 restituirà i dati "333-3333".È possibile immettere gli elementi dati per l'array nell'indice dell'elenco utilizzando la larghezza fissa o i dati delimitati inseriti in una coda di messaggi JMS o MQ . È anche possibile eseguire questa attività utilizzando un file di testo semplice che contiene i dati formattati correttamente