XLANG-s 语言

XLANG/s 旨在使用 XML、XSD 和 Web 服务描述语言等 Internet 标准 (WSDL) ,并嵌入了对使用 的支持。基于 NET 的对象和消息。 XLANG/s 可以被视为具有 C# 的一些表达式功能的消息传送语言。 但是,代码在 XLANG/s 和 C# 之间不可移植。

XLANG/s 鼓励在流程与实现之间明确分离。 例如,业务流程或协议在 XLANG/s 中指定,应用程序的本地方面(如数据库访问)使用其他 .NET 编程语言(如 C# 或 Visual Basic.NET)实现。

XLANG/s 赋值和表达式语法是按照 C# 建模的,应引用 C# 规范来获取确切的语法。 XLANG/s 定义一组用于定义业务流程的丰富高级构造。 虽然 XLANG/s 支持低级别数据类型(如字符串和整数),但高级数据类型也进行了定义:消息、端口、关联和服务链接。 这些数据类型用于严格定义与业务流程关联的语义,并通过流程控制语句(如 whilescope)进行补充。

XLANG/s 语句通常分为以下两类之一:单独操作的简单语句(例如 接收发送)和包含或分组简单语句或其他复杂语句(如 范围并行侦听)的复杂语句。 XLANG/s 中体现的语义反映了 Microsoft、IBM 和 BEA 发布的用于定义业务流程语义的 Web 服务业务流程执行语言 (BPEL4WS) 规范中定义的语义。

了解 XLANG/s 的main构造是可选的,因为它们是在 BizTalk 业务流程Designer中绘制业务流程关系图的结果生成的。 业务流程Designer是一种丰富的图形工具,用于直观地设计业务流程。 它生成扩展名为 .odx 的 XLANG/s 文件,并在其标头中包含其他视觉信息,并在其正文中包含自定义属性信息。

注意

XLANG/s 语言是专有语言,未完整记录。 本部分介绍开发业务流程时可能需要注意的语言的某些部分。 不支持直接修改 .odx 文件。

XLANG/s 程序

最简单的 XLANG/s 程序需要定义消息类型,这为业务流程提供了一些数据以开始使用。 业务流程通过端口接收消息,然后终止。 下面的代码是一个示例:

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

在前面的 XLANG/s 程序中,module关键字 (keyword) 定义 XLANG/s 程序的编译单位。 程序中使用的所有类型(例如 porttypecorrelationsettypeservicelinktypemessagetype)都在此级别限定。

端口是 XLANG/s 可以向或从中发送或接收消息的构造,端口具有一个名为 porttype 的定义类型。 porttype 构造定义可在端口上使用的操作集合。 这些操作定义通过端口进行的单个有效消息交换。 在定义 porttypemessagetypeservicelinktypecorrelationsettype 构造时,XLANG/s 程序的作者实质上是创建复杂的数据类型定义。 这些定义具有与复杂数据类型在其他语言中相同的优势:它们将数据类型中体现的概念抽象化到更高级别,并且可以轻松重用数据类型。

上述 HelloWorldApp 模块中的 ptPOReceive 端口是使用单向接收端口操作 opPOReceive 定义的。 服务 HelloWorld 块定义进程及其可能使用的任何变量(包括端口和消息变量)的实际实现。 此块中的前三行代码分别定义端口变量 poPOReceivepoPOSend 以及消息 msgPO 。 正文包含描述服务参数和执行行为的代码。 所有变量(除非使用嵌套范围块定义)都限定在此级别。 receive 语句(即激活接收)从 poPOReceive.opPOReceive 端口接收 msgPO 消息,并创建业务流程的新实例。 收到消息后,send 语句会将消息定向到发送端口。 在上述代码的两个端口声明中, poPOReceive 使用实现修饰符,而 poPOSend 使用 using 修饰符。 实现修饰符告知运行时,它将通过该端口接收消息。 使用修饰符告知运行时,它将通过该端口发送消息。

本节内容

另请参阅

关于 BizTalk 业务流程引擎