技术开发 频道

Azure Services Bus(服务总线)中的工作流

  【IT168 技术文档】在Azure Services Platform上对于工作流服务的支持,一直是我很感兴趣的内容。当然也是疑问比较多的领域。鉴于这方面的资料太少,所以今天就从AzureServicesKit中的一个DEMO出发,来大概了解一下这方面相关内容。

  注:今天的示例位于AzureServicesKit安装目录\Labs\Ex02-RoutingWithXPath\end文件夹。

  该示例场景展示的是一个定单(order)流程,如下图:

  注:图中的两个服务可能布置在1台或N台机器上。

  在上图中,我们看出在当前场景中存在两个服务,即:
  BillService(即定单生成)。
  ShipOrderService(定单处理:包括处理定单相关信息等)

  其中的BillService的代码如下:

[ServiceContract(Name = "Billing", Namespace = "http://Microsoft.ServicePlatformLabs")]
public class BillingService
{
    [OperationContract(Name
= "Invoice", IsOneWay = true)]
    
public void Invoice(string orderId, string total)
    {
        Console.WriteLine(
"Invoice for Order {0} ({1}) generated", orderId, total);
    }
}

  注:上面的ServiceContract属性Name="Billing"和OperationContract属性Name = "Invoice"会以链接方式绑定到工作流CloudServiceBusSend活动(activity)的Action属性上,即http://Microsoft.ServicePlatformLabs/Billing/Invoice
   
  ShippingService的代码如下:

    [ServiceContract(Name = "Shipping", Namespace = "http://Microsoft.ServicePlatformLabs")]
    
public class ShippingService
    {
        [OperationContract(Name
= "ProcessOrder", IsOneWay = true)]
        
public void ProcessOrder(string orderId)
        {
            Console.WriteLine(
"Processing Shipping information for Order {0}", orderId);
        }
    }

  同理,ShippingService会以链接方式绑定到工作流CloudServiceBusSend活动(activity)的
Action属性上,即:http://Microsoft.ServicePlatformLabs/Shipping/ProcessOrder 。而这两个服务都会被暴露到ServiceBus中以便让用户进行访问操作,从而完成一个客户下订单的完整流程(CreateOrder).

0
相关文章