XLANG-s 语言

XLANG/s 旨在使用 XML 标准(例如 XML、XSD 和 Web 服务描述语言) (WSDL) ,并对使用有嵌入支持。基于网络的对象和消息。 可以使用多个 c # 表达式功能将 XLANG/s 视为消息语言。 但是,代码在 XLANG/s 和 c # 之间不可移植。

XLANG/s 鼓励进程和实现之间的清晰分离。 例如,业务流程或协议在 XLANG/s 中指定,应用程序的本地方面(如数据库访问)是在其他 .net 编程语言(例如 c # 或 .net Visual Basic)中实现的。

XLANG/s 赋值和表达式语法在 c # 后建模,你应该引用适用于确切语法的 c # 规范。 XLANG/s 定义一组丰富的高级构造,用于定义业务流程。 虽然 XLANG/s 提供对字符串和整数等低级别数据类型的支持,但也定义了高级别数据类型:消息、端口、相关和服务链接。 这些数据类型用于严格定义与业务流程关联的语义,并由过程控制语句(如 whilescope)进行求值。

XLANG/s 语句通常属于两个类别之一:简单的语句,它们自行操作,如 receivesend,以及包含简单语句或其他复杂语句的复杂语句,如 作用域并行侦听。 XLANG/s 中所述的语义是在 Microsoft、IBM 和 BEA 发布的针对业务流程语义定义的 Web Services (BPEL4WS) 规范中定义的那些语义。

了解 XLANG/s 的主构造是可选的,因为它们是在 BizTalk 业务流程设计器中绘制业务流程关系图的结果。 业务流程设计器是一种丰富的图形工具,用于以可视方式设计业务流程。 它将生成扩展名为 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 关键字定义 XLANG/s 程序的编译单元。 程序中使用的所有类型(如 porttypecorrelationsettypeservicelinktypemessagetype)都在此级别范围内。

端口是 XLANG/s 可向其发送消息或从其接收消息的构造,并且端口具有称为 porttype的定义类型。 Porttype构造定义了可在端口上使用的操作的集合。 这些操作通过端口定义单个有效消息交换。 在定义 porttypemessagetypeservicelinktypecorrelationsettype 构造时,XLANG/s 程序的作者实质上是创建复杂的数据类型定义。 与使用其他语言的复杂数据类型相比,这些定义具有相同的优点:它们将数据类型中包含的观念抽象到更高的级别,并允许简单地重复使用数据类型。

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

本节内容

另请参阅

关于 BizTalk 业务流程引擎