【IT168 技术文档】在Azure Services Platform上对于工作流服务的支持,一直是我很感兴趣的内容。当然也是疑问比较多的领域。鉴于这方面的资料太少,所以今天就从AzureServicesKit中的一个DEMO出发,来大概了解一下这方面相关内容。
注:今天的示例位于AzureServicesKit安装目录\Labs\Ex02-RoutingWithXPath\end文件夹。
该示例场景展示的是一个定单(order)流程,如下图:
注:图中的两个服务可能布置在1台或N台机器上。
在上图中,我们看出在当前场景中存在两个服务,即:
BillService(即定单生成)。
ShipOrderService(定单处理:包括处理定单相关信息等)
其中的BillService的代码如下:
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的代码如下:
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).