现在我们看这样一个流程:
流程启动后,会等待一个消息(Payment Received),如果已经收到付款,流程继续根据订单的价值确定是否有保险。我们按照前几节的方法发布并执行流程,在Operator中可以看到,流程在等待外部的消息。
现在,我们编写发送消息的客户端代码,向流程发送Payment Received消息。代码如下:
using NLog.Extensions.Logging;
using System;
using System.IO;
using System.Threading.Tasks;
using Zeebe.Client;
namespace ZeebeCSharp
{
class Program
{
private static readonly string ZeebeUrl = "127.0.0.1:26500";
static async Task Main(string[] args)
{
// create zeebe client
var client = ZeebeClient.Builder()
.UseLoggerFactory(new NLogLoggerFactory())
.UseGatewayAddress(ZeebeUrl)
.UsePlainText()
.Build();
var resp=await client.NewPublishMessageCommand()
.MessageName("payment-received")
.CorrelationKey("1234")
.Send();
Console.WriteLine(resp);
}
}
}
执行上面的代码,然后在Operator中查看流程状态:
由于订单1234的价值为99,所有走上面的分支。
发送消息使用的是NewPublishMessageCommand命令:
var resp=await client.NewPublishMessageCommand()
.MessageName("payment-received")
.CorrelationKey("1234")
.Send();
在流程定义中,可以看到这两个参数:
这Correlation Key是表达式,说明使用流程变量orderId作为Key值。