Freigeben über


XLANG-s-Sprache

XLANG/s wurde für Internetstandards wie XML, XSD und WSDL (Web Services Description Language) entwickelt und verfügt über integrierte Unterstützung für das Arbeiten mit .NET-basierten Objekten und Nachrichten. XLANG/s kann als Nachrichtensprache betrachtet werden, die über einen Teil des Ausdrucksumfangs von C# verfügt. Code kann zwischen XLANG/s und C# jedoch nicht portiert werden.

In XLANG/s wird eine klare Trennung zwischen Prozess und Implementierung umgesetzt. Beispielsweise wird der Geschäftsprozess oder das Geschäftsprotokoll in XLANG/s festgelegt. Die lokalen Aspekte der Anwendung wie Datenbankzugriff werden in anderen .NET-Programmiersprachen wie C# oder Visual Basic.NET implementiert.

Zuweisung und Ausdruckssyntax von XLANG/s wurden anhand von C# entwickelt. Die exakte Syntax finden Sie in den Spezifikationen von C#. In XLANG/s werden viele Konstrukte auf höchster Ebene definiert, die für die Definition von Geschäftsprozessen verwendet werden. Während XLANG/s Datentypen auf niedriger Ebene wie Zeichenfolge und ganzzahlige Datentypen unterstützt, werden auch allgemeine Datentypen definiert: Nachrichten, Ports, Korrelationen und Dienstlinks. Diese Datentypen werden verwendet, um die Semantik, die einem Geschäftsprozess zugeordnet ist, streng zu definieren, und werden durch Prozesssteuerungsanweisungen wie while oder scope ergänzt.

XLANG/s-Anweisungen fallen im Allgemeinen in eine von zwei Kategorien: einfache Anweisungen, die eigenständig handeln, z. B. empfangen oder senden, und komplexe Anweisungen, die einfache Anweisungen oder andere komplexe Anweisungen wie Bereich, Parallel und Lauschen enthalten oder gruppieren. Die Semantik von XLANG/s entspricht der Semantik von BPEL4WS (Business Process Execution Language for Web Services), die in der von Microsoft, IBM und BEA veröffentlichten Spezifikation zur Definition einer Semantik für Geschäftsprozesse definiert ist.

Es ist nicht notwendig mit den wichtigen Konstrukten von XLANG/s vertraut zu sein, da diese im BizTalk Orchestrierungs-Designer als Ergebnis des Zeichnens von Orchestrierungsdiagrammen erstellt werden. Der Orchestrierungs-Designer ist ein grafisches Tool zum visuellen Entwerfen von Geschäftsprozessen. Im Orchestrierungs-Designer werden XLANG/s-Dateien erstellt, die eine ODX-Dateierweiterung haben und zusätzliche visuelle Informationen in der Kopfzeile sowie benutzerdefinierte Attributinformationen im Textkörper enthalten.

Hinweis

Die XLANG/s-Sprache ist eine proprietäre Sprache und nicht vollständig dokumentiert. In diesem Abschnitt werden bestimmte Komponenten der Sprache erläutert, die Sie beim Entwickeln der Orchestrierungen beachten sollten. Das direkte Ändern der ODX-Dateien wird nicht unterstützt.

XLANG/s-Programme

Das einfachste XLANG/s-Programm erfordert eine Definition eines Nachrichtentyps. Dadurch werden der Orchestrierung Daten zur Verarbeitung zur Verfügung gestellt. Die Orchestrierung erhält die Nachricht über einen Port und wird dann beendet. Im Folgenden finden Sie ein Codebeispiel:

module HelloWorldApp  
{  
     private porttype ptPOReceive  
     {  
      oneway opPOReceive  
      {  
       HelloWorldApp.PurchaseOrder  
      }  
     }  
     private porttype ptPOSend  
     {  
      oneway opPOSend  
      {  
       HelloWorldApp.PurchaseOrder  
      }  
     }  
     private service  HelloWorld  
     {  
      port implements HelloWorldApp.ptPOReceive poPOReceive;  
      port uses HelloWorldApp.ptPOSend poPOSend;  
      message HelloWorldApp.PurchaseOrder msgPO;  
      body ()  
      {  
       activate receive (poPOReceive.opPOReceive, msgPO);  
       send (poPOSend.opPOSend, msgPO);  
       }  
     }  
}  

Im vorangehenden XLANG/s-Programm definiert der module Schlüsselwort (keyword) die Kompilierungseinheit für ein XLANG/s-Programm. Alle im Programm verwendeten Typen, z. B. porttype, correlationsettype, servicelinktype und messagetype, werden auf dieser Ebene behandelt.

Ein Port ist ein Konstrukt, das XLANG/s Nachrichten an oder von dort senden oder empfangen kann, und der Port verfügt über einen definierten Typ namens porttype. Das Porttype-Konstrukt definiert eine Auflistung von Vorgängen, die für den Port verwendet werden können. In diesen Vorgängen wird ein einzelner gültiger Nachrichtenaustausch über den Port definiert. Beim Definieren von Porttype-, Messagetype-, Servicelinktype- oder Correlationsettype-Konstrukten erstellt der Autor eines XLANG/s-Programms im Wesentlichen komplexe Datentypdefinitionen. Diese Definitionen haben die gleichen Vorteile wie komplexe Datentypen in anderen Sprachen: Sie abstrahieren die im Datentyp verkörperten Begriffe auf eine höhere Ebene und ermöglichen eine einfache Wiederverwendung des Datentyps.

Der ptPOReceive-Port im vorherigen HelloWorldApp-Modul wird mit dem unidirektionale Empfangsportvorgang opPOReceive definiert. Der Block service HelloWorld definiert die tatsächliche Implementierung der Prozesse und alle Variablen, die möglicherweise verwendet werden, einschließlich der Port- und Nachrichtenvariablen. Die ersten drei Codezeilen in diesem Block definieren die Portvariablen poPOReceive und poPOSend bzw. die Nachricht msgPO . Der Textkörper enthält den Code zur Beschreibung der Dienstparameter und den Code für das Ausführungsverhalten. Alle Variablen, die nicht in einem geschachtelten Bereichsblock definiert werden, sind auf diese Ebene bereichsbezogen. Die receive-Anweisung, bei der es sich um einen activate receive handelt, empfängt die msgPO-Nachricht vom poPOReceive.opPOReceive-Port und erstellt eine neue instance der Orchestrierung. Nach dem Empfang der Nachricht wird diese über die Anweisung send an einen Sendeport weitergeleitet. In den beiden Portdeklarationen im vorherigen Code verwendet poPOReceive den Modifizierer implements, während poPOSend den uses-Modifizierer verwendet. Über den Modifizierer implements wird das Laufzeitmodul benachrichtigt, dass es über diesen Port eine Nachricht empfangen soll. Über den Modifizierer uses wird das Laufzeitmodul benachrichtigt, dass es über diesen Port eine Nachricht senden soll.

In diesem Abschnitt

Weitere Informationen

Info zu BizTalk-Orchestrierungs-Engine