Altova MobileTogether Designer

Das Ereignis BeiEingebetteterNachricht steht für alle Seiten (Toplevel-Seiten und Unterseiten) zur Verfügung. Eine eingebettete Nachricht ist eine Nachricht, die von einem in eine Webseite eingebetteten IFrame an den Workflow auf dem Server gesendet wird. Der Workflow erwartet einen serialisierten JSON-String.

 

Das Ereignis BeiEingebetteterNachricht funktioniert folgendermaßen:

 

Zur Design-Zeit: Wenn für das Ereignis BeiEingebetteterNachricht eine Aktion definiert wird, wird eine JSON-Seitenquelle mit dem Namen $MT_EMBEDDEDMESSAGE, deren Root-Element den Namen json hat, erstellt. Weitere Nodes können manuell zur Seitenquelle hinzugefügt werden. Design-Komponenten können anschließend über XPath-Ausdrücke auf die Nodes dieser Seitenquelle zugreifen. Anmerkung: Das Aktivieren des Ereignisses BeiEingebetteterNachricht (durch Hinzufügen einer Aktion zum Ereignis) ist eine von zwei Arten, um die Seitenquelle $MT_EMBEDDEDMESSAGE zur Design-Zeit zu erstellen. (Die andere Möglichkeit ist, irgendwo auf der Seite eine Eingebettete Nachricht zurück-Aktion zu definieren.)

Zur Laufzeit: Das Ereignis BeiEingebetteterNachricht erstellt eine JSON-Seitenquelle namens $MT_EMBEDDEDMESSAGE mit einem Root-Element mit dem Namen json. Die Struktur und der Inhalt dieser Seite stammen aus den Daten in der eingebetteten Nachricht. Wenn diese Seitenquelle nicht dieselbe Struktur wie die zur Design-Zeit erstellte Seitenquelle hat, kann die Laufzeitseitenquelle von den XPath-Ausdrücken der Design-Komponenten nicht aufgerufen werden.

 

Anmerkung:Das Ereignis BeiEingebetteterNachricht ist ein Seitenereignis, daher können für jede Seite im Design Aktionen für das jeweilige BeiEingebetteterNachricht-Ereignis definiert werden. Wenn eine Nachricht von der Webseite gesendet wird, wird sie an den gesamten Workflow gesendet (ohne dass eine bestimmte Seite definiert ist). Ausgelöst wird das BeiEingebetteterNachricht-Ereignis der gerade aktiven Seite.

 

Zur Design-Zeit

Die $MT_EMBEDDEDMESSAGE-JSON-Seitenquelle wird automatisch erstellt, wenn für die Ereignisbehandlung von BeiEingebetteterNachricht mindestens eine Aktion definiert wird. Wenn abgesehen von der Erstellung der Seitenquelle $MT_EMBEDDEDMESSAGE keine weiteren Aktionen ausgeführt werden sollen, dann fügen Sie eine Aktion hinzu, die keinen Einfluss auf den Workflow hat, z.B. eine Kommentar-Aktion. Wenn Sie keine Aktion hinzufügen, wird die Seitenquelle $MT_EMBEDDEDMESSAGE nicht erstellt. Wenn Sie anschließend alle definierten Aktionen entfernen, wird auch die Seitenquelle $MT_EMBEDDEDMESSAGE entfernt.

 

Wenn die Seitenquelle $MT_EMBEDDEDMESSAGE erstellt wird, hat sie ein Root-Element mit dem Namen json und sonst nichts. Sie können mit Hilfe der Befehle aus der Symbolleiste des Fensters "Seitenquellen" manuell eine JSON-Struktur zur Seitenquelle hinzufügen. Eine Struktur ist erforderlich, da auf diese Art Design-Komponenten mittels XPath-Ausdrücken auf diese Nodes zugreifen können.

 

Die Design-Zeit und die Laufzeit-Struktur der $MT_EMBEDDEDMESSAGE-Seitenquelle müssen miteinander übereinstimmten, da Laufzeit-Seitenquellen-Nodes sonst nicht mehr mittels XPath-Ausdrücken aus Design-Komponenten gefunden werden.

 

Zur Laufzeit

Wenn zur Laufzeit eine eingebettete Nachricht in Form eines JSON-String empfangen wird, erstellt das Ereignis BeiEingebetteterNachricht die Seitenquelle $MT_EMBEDDEDMESSAGE. (Andernfalls wird diese Seitenquelle nicht erstellt). Die Seitenquelle wird mit einem Root-Element namens json erstellt und hat die in der Nachricht enthaltene Struktur und Daten. Wenn für das Ereignis zusätzliche Aktionen definiert sind, werden diese ausgeführt.

 

Verwendung der eingebetteten Nachricht in der Lösung

Das Ereignis BeiEingebetteterNachricht erwartet die Nachricht in Form eines JSON-String, parst diesen String und generiert anhand der Daten die JSON-Seitenquelle $MT_EMBEDDEDMESSAGE.

 

Je nach Format der Seitenquelle sind zwei Szenarien möglich:

 

JSON-Format: Die JSON-Seitenquelle $MT_EMBEDDEDMESSAGE kann direkt in der Lösung verwendet werden und Daten von dieser Seitenquelle können zurück an die Webseite gesendet werden. In diesem Fall kann für BeiEingebetteterNachricht jede Aktion, die keine Auswirkungen hat (wie z.B. die Aktion Kommentar), definiert werden (siehe Abbildung unten). Dies aktiviert die Ereignisbehandlung und genügt, dass die Seitenquelle $MT_EMBEDDEDMESSAGE erstellt wird.

MTActionOnEmbeddedMsgJSON

Ein Beispiel zum Arbeiten mit JSON-Daten finden Sie unter Senden/Empfangen von JSON-Daten.

 

XML-Format: Zusätzlich zur JSON-Seitenquelle $MT_EMBEDDEDMESSAGE, die bei BeiEingebetteterNachricht automatisch generiert wird, sollte auch eine XML-Seitenquelle erstellt werden, damit die Lösung die Daten in einer Form senden kann, die leichter wieder zurück in das XML-Format der Webseitenquelle konvertiert werden kann. Verwenden Sie die Aktion Aus String laden (siehe Abb. unten), um eine XML-Seitenquelle anhand der Daten in $MT_EMBEDDEDMESSAGE, zu erstellen. Zu diesem Zweck muss der ausgewählte Node in $MT_EMBEDDEDMESSAGE einen String enthalten, der als XML geparst werden kann.

MTActionOnEmbeddedMsgXML

Ein Beispiel zum Arbeiten mit XML-Daten finden Sie unter Senden/Empfangen von XML-Daten.

 

© 2018-2024 Altova GmbH