Compartir a través de


Lenguaje XLANG-s

XLANG/s se diseñó para usar estándares de Internet como XML, XSD y Lenguaje de descripción de servicios Web (WSDL) y dispone de compatibilidad integrada para trabajar con mensajes y objetos basados en .NET. XLANG/s se puede ver como un lenguaje de mensajería con algunas de las capacidades de expresión de C#. Sin embargo, no se puede exportar el código entre XLANG/s y C#.

XLANG/s recomienda que se realice una separación clara entre el proceso y la implementación. Por ejemplo, el proceso empresarial o protocolo se especifica en XLANG/s y los aspectos locales de la aplicación, como el acceso a las bases de datos, se implementan en otros lenguajes de programación de .NET como C# o Visual Basic.NET.

La sintaxis de expresiones y la asignación de XLANG/s se basan en C#, por lo que debería hacer referencia a la especificación de C# para una sintaxis exacta. XLANG/s define un nutrido conjunto de construcciones de alto nivel que se usan para definir procesos empresariales. Aunque XLANG/s proporciona compatibilidad con tipos de datos de bajo nivel, como cadenas e enteros, también se definen tipos de datos de alto nivel: mensajes, puertos, correlaciones y vínculos de servicio. Estos tipos de datos se usan para definir rigurosamente la semántica asociada a un proceso empresarial y se complementan con instrucciones de control de procesos como while o scope.

Las instrucciones XLANG/s generalmente se dividen en una de estas dos categorías: instrucciones simples que actúan por sí mismas, como recibir o enviar, e instrucciones complejas que contienen o agrupan instrucciones simples u otras instrucciones complejas, como ámbito, paralelo y escucha. Las semánticas incluidas en XLANG/s son una reflexión de las que se definen en la especificación del lenguaje de ejecución de procesos empresariales para servicios Web (BPEL4WS) publicada por Microsoft, IBM y BEA para la definición de semánticas de procesos empresariales.

No es necesario comprender las construcciones principales de XLANG/s ya que son el resultado de dibujar diagramas de orquestación en el Diseñador de orquestaciones de BizTalk. El Diseñador de orquestaciones es una completa herramienta gráfica para diseñar visualmente procesos empresariales. Genera archivos XLANG/s con una extensión .odx que contienen información visual adicional en los encabezados e información de atributos personalizados en el cuerpo.

Nota

El lenguaje XLANG/s es de propietario y no está completamente documentado. En esta sección se explican determinadas partes del lenguaje que es posible que necesite tener en cuenta cuando desarrolle orquestaciones. No se admite la modificación directa de los archivos .odx.

Programas de XLANG/s

El programa más sencillo de XLANG/s necesita que se defina un tipo de mensaje, que dará a la orquestación algunos datos con los que comenzar a trabajar. La orquestación recibe el mensaje a través de un puerto y, a continuación, finaliza. A continuación se muestra un ejemplo de código:

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);  
       }  
     }  
}  

En el programa XLANG/s anterior, la module palabra clave define la unidad de compilaciones para un programa XLANG/s. Todos los tipos usados en el programa (como porttype, correlationsettype, servicelinktype y messagetype) se limitan en este nivel.

Un puerto es una construcción que XLANG/s puede enviar o recibir mensajes hacia o desde, y el puerto tiene un tipo definido denominado porttype. La construcción porttype define una colección de operaciones que se pueden usar en el puerto. Estas operaciones definen un único intercambio de mensajes válido a través del puerto. Al definir construcciones porttype, messagetype, servicelinktype o correlationsettype , el autor de un programa XLANG/s básicamente está creando definiciones complejas de tipos de datos. Estas definiciones tienen las mismas ventajas que los tipos de datos complejos que hacen en otros lenguajes: abstraen las nociones incorporadas en el tipo de datos a un nivel superior y permiten reutilizar fácilmente el tipo de datos.

El puerto ptPOReceive del módulo HelloWorldApp anterior se define con una operación de puerto de recepción unidireccional, opPOReceive. El bloque HelloWorld de servicio define la implementación real del proceso y cualquier variable que pueda usar, incluidas las variables de puertos y de mensajes. Las tres primeras líneas de código dentro de este bloque definen las variables de puerto poPOReceive y poPOSend y el mensaje msgPO respectivamente. El cuerpo contiene el código que describe parámetros al servicio y al comportamiento de ejecución. Todas las variables, excepto que estén definidas con un bloque de ámbito anidado, pertenecen al ámbito de este nivel. La instrucción receive, que es una recepción activada, recibe el mensaje msgPO del puerto poPOReceive.opPOReceive y crea una nueva instancia de la orquestación. Una vez recibido el mensaje, la instrucción de envío dirige el mensaje a un puerto de envío. En las dos declaraciones de puerto del código anterior, poPOReceive usa el modificador implements, mientras que poPOSend usa el modificador uses. El modificador de implementaciones indica el tiempo de ejecución que tardará en recibirse un mensaje a través de ese puerto. El modificador de usos indica el tiempo de ejecución que tardará en enviarse un mensaje a través de ese puerto.

En esta sección

Consulte también

Acerca del motor de orquestaciones de BizTalk