前面我们讨论了如何启动新的流程实例和创建Job Worker,这里我们介绍如何将新创建的流程通过客户端部署到Zeebe broker。我们首先使用Zeebe Modeler创建一个新的流程,流程的名称为order-process-new,将这个流程的文件order-process-new.bpmn添加到前面的c#工程中,修改代码如下:
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 = "192.168.0.3:26500";
private static readonly string DemoProcessPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "order-process-new.bpmn");
static async Task Main(string[] args)
{
// create zeebe client
var client = ZeebeClient.Builder()
.UseLoggerFactory(new NLogLoggerFactory())
.UseGatewayAddress(ZeebeUrl)
.UsePlainText()
.Build();
var topology = await client.TopologyRequest()
.Send();
Console.WriteLine(topology);
// deploy
var deployResponse = await client.NewDeployCommand()
.AddResourceFile(DemoProcessPath)
.Send();
Console.WriteLine(deployResponse.Workflows[0].BpmnProcessId);
Console.WriteLine(deployResponse.Workflows[0].Version);
Console.WriteLine(deployResponse.Workflows[0].WorkflowKey);
}
}
}
运行结果如下:
图片.png
如果再次部署会发生什么情况呢?我们再次运行这个程序,发现结果没有变化,也就是如果流程文件没有发生变化,再次部署流程不会增加新的流程定义。
如果我们修改一下流程定义,将Collect Money修改为"收钱":
图片.png
再次运行一下程序,看会发生什么情况。
图片.png
我们看到,流程的bpmn process id没有变化,版本号发生了变化,从版本1变为版本2,流程的key也发生了变化。也就是说,流程的workflowkey可以确定唯一的流程,流程的bpmn process id+版本号也可以确定唯一的流程。