Nachrichtensammlungen können mithilfe von Java™ und der Klasse 'MbMessageCollection' erstellt werden. Die Verwendung einer Nachrichtensammlung ist nützlich, wenn
Nachrichten für die Syntaxanalyse gruppiert werden sollen oder wenn die
Nachrichtensammlung so erstellt werden muss, dass sie eine bestimmte Datenstruktur,
z. B. eine CICS Transaction
Server for z/OS-Kanaldatenstruktur, darstellt.
Eine Nachrichtensammlung ist eine Nachricht, die aus
einem Header vom Typ Properties und einem
einzelnen Domänenelement mit dem Namen
Collection besteht.
Der Ordner Collection enthält eine Reihe
untergeordneter Nachrichten, von denen jede einen Ordner
vom Typ Properties, einige Header (z. B. MQMD)
und einen Hauptteil enthalten kann. Eine Nachrichtensammlung kann auch keine oder
mehrere Attribute haben, die Name/Wert-Paare sind. Der Name eines Attributs
muss innerhalb der Nachrichtensammlung eindeutig sein. Ein Standardattribut für die Nachrichtensammlung ist ein Attribut namens CollectionName.
Die
folgende Abbildung zeigt ein Beispiel für eine Nachrichtensammlungsstruktur.
Sie können mithilfe von Java und der Klasse 'MbMessageCollection' eine Nachrichtensammlung erstellen, um Nachrichten für die Syntaxanalyse zusammenzufassen oder um eine bestimmte Datenstruktur (beispielsweise eine CICS-Kanaldatenstruktur) darzustellen.
So konfigurieren Sie eine Nachrichtensammlung mithilfe von Java:
- Erstellen Sie anhand des folgenden Beispiels eine neue Nachricht:
// Neue Nachricht erstellen
MbMessageCollection outMessage = new MbMessageCollection();
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
- Erstellen Sie für die Sammlung anhand des folgenden Beispiels den Ordner Properties:
// Übergeordneten Ordner 'Properties' und Daten erstellen
MbElement omroot = outMessage.getRootElement();
MbElement properties = omroot.createElementAsFirstChild("Properties");
MbElement property1 = properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myProperty1", "propertyData1");
MbElement property2 = properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myProperty2", "propertyData2");
- Erstellen Sie anhand des folgenden Beispiels Name/Wert-Paare:
// Attribute für Sammlung erstellen (Name/Wert-Paare)
MbElement cn = outMessage.createNameValue("CollectionName", "myCollectionName");
MbElement nv1 = outMessage.createNameValue("NAME1", "Value1");
MbElement nv2 = outMessage.createNameValue("NAME2", 12345);
Wie Nachrichtenordner ist auch das Domänenelement immer das letzte untergeordnete Element der Nachrichteneigenschaft.
- Das folgende Beispiel veranschaulicht die Erstellung einer Nachricht in der Sammlung. Die Schritte 1, 2 und 3 werden wiederholt.
public void evaluate(MbMessageAssembly inAssembly) throws MbException {
MbOutputTerminal out = getOutputTerminal("out");
// Neue Nachricht erstellen
MbMessageCollection outMessage = new MbMessageCollection();
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
// Übergeordneten Ordner 'Properties' und Daten erstellen
MbElement omroot = outMessage.getRootElement();
MbElement properties = omroot.createElementAsFirstChild("Properties");
MbElement property1 = properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myProperty1", "propertyData1");
MbElement property2 = properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myProperty2", "propertyData2");
// Attribute für Sammlung erstellen (Name/Wert-Paare)
MbElement cn = outMessage.createNameValue("CollectionName", "myCollectionName");
MbElement nv1 = outMessage.createNameValue("NAME1", "Value1");
MbElement nv2 = outMessage.createNameValue("NAME2", 12345);
// Ordner 1 erstellen
MbElement folder1 = outMessage.createFolder("folder1");
// Eigenschaften für Ordner 1 erstellen
MbElement folder1properties = folder1.createElementAsFirstChild("Properties");
MbElement folder1property1 = folder1properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myFolder1Property1", "folder1propertyData1");
MbElement folder1property2 = folder1properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myFolder1Property2", "folder1propertyData2");
// Hauptteil von Ordner 1 erstellen
MbElement mrm = folder1.createElementAsLastChild("MRM");
// Nachrichtendomänenelement für Ordner 1 erstellen
MbElement msg = mrm.createElementAsLastChild(MbElement.TYPE_NAME,
"msg", null);
// Daten im Nachrichtenhauptteil für Ordner 1 erstellen
MbElement data = msg.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "data", "myData");
// Ordner 2 erstellen
MbElement folder2 = outMessage.createFolder("Folder2");
// Eigenschaften für Ordner 2 erstellen
MbElement folder2properties = folder2.createElementAsFirstChild("Properties");
MbElement folder2property1 = folder2properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myFolder2Property1", "folder2propertyData1");
MbElement folder2property2 = folder2properties.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myFolder2Property2", "folder2propertyData2");
// Hauptteil von Ordner 2 erstellen
MbElement xmlnsc = folder2.createElementAsLastChild("XMLNSC");
// Nachrichtendomänenelement für Ordner 2 erstellen
MbElement msg2 = xmlnsc.createElementAsLastChild(
MbElement.TYPE_NAME, "msg2", null);
// Daten im Nachrichtenhauptteil für Ordner 2 erstellen
MbElement data2 = msg2.createElementAsLastChild(
MbElement.TYPE_NAME_VALUE, "myData2", "myXMLData");
try {
out.propagate(outAssembly);
} finally {
// 'outMessage' auch im Falle einer Ausnahme löschen
outMessage.clearMessage();
}
}
Die folgende Beispielausgabe eines
Trace-Knotens veranschaulicht die Nachrichtenstruktur, die mit diesem Java-Code erstellt wurde:
TraceOutput: Root ( ['MQROOT' : 0xee3a90]
(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0xae4370]
(0x03000000:NameValue):myProperty1 = 'propertyData1' (CHARACTER)
(0x03000000:NameValue):myProperty2 = 'propertyData2' (CHARACTER)
)
(0x01000000:Name):Collection = ( ['COLLECTION' : 0x58d0b08]
(0x03000000:NameValue):CollectionName = 'myCollectionName' (CHARACTER)
(0x03000000:NameValue):NAME1 = 'Value1' (CHARACTER)
(0x03000000:NameValue):NAME2 = 12345 (INTEGER)
(0x01000000:Name ):Folder1 = ( ['COLLECTIONFOLDER' : 0xee42e8]
(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0xae39e8]
(0x03000000:NameValue):myFolder1Property1 = 'folder1propertyData1' (CHARACTER)
(0x03000000:NameValue):myFolder1Property2 = 'folder1propertyData2' (CHARACTER)
)
(0x01000021:Name+):MRM = ( ['mrm' : 0xdce588]
(0x01000000:Name):msg = (
(0x03000000:NameValue):data = 'myData' (CHARACTER)
)
)
)
(0x01000000:Name ):Folder2 = ( ['COLLECTIONFOLDER' : 0xee3d58]
(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0xae4cf8]
(0x03000000:NameValue):myFolder2Property1 = 'folder2propertyData1' (CHARACTER)
(0x03000000:NameValue):myFolder2Property2 = 'folder2propertyData2' (CHARACTER)
)
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0xee2188]
(0x01000000:Folder):msg2 = (
(0x03000000:PCDataField):myData2 = 'myXMLData' (CHARACTER)
)
)
)
)
)