conductor任务域

任务域

任务域有助于支持任务开发。这个想法是相同的“任务定义”可以在不同的“域”中实现。域名开发人员控制的任意名称。因此,当工作流程启动时,调用者可以在工作流中的所有任务中指定哪些任务需要在特定域中运行,然后该域用于轮询客户端上的任务以执行它。

作为一个例子,如果工作流(WF1)有3个任务T1,T2,T3。工作流部署并正常工作,这意味着有T2工作人员轮询和执行。如果您修改T2并在本地运行,则不能保证您的修改后的T2工作人员可以从普通T2队列中获取正在查找的任务。“任务域”功能通过按域分割T2队列来解决此问题,因此当应用程序轮询特定域中的任务T2时,它将获得正确的任务。

启动工作流时,可以将多个域指定为“back”,例如“domain1,domain2”。导体跟踪每个任务的最后轮询时间,因此在这种情况下,它会检查“domain1”是否有活动的工作人员,然后任务被放入“domain1”,如果没有,则对下一个域进行相同的检查按顺序“domain2”等。如果没有工作人员处于活动状态,那么该任务的计划没有域(默认行为)。请注意,这种“回退”类型的域字符串只能在启动工作流时使用,当从客户端轮询时,只能使用一个域。

如何使用任务域

更改轮询呼叫

轮询调用现在必须指定域。

Java客户端

如果您使用的是Java客户端,那么简单的属性更改将强制WorkflowTaskCoordinator将该域传递给该轮询器。

    conductor.worker.T2.domain=mydomain //Task T2 needs to poll for domain "mydomain"
REST调用

GET /tasks/poll/batch/T2?workerid=myworker&domain=mydomain GET /tasks/poll/T2?workerid=myworker&domain=mydomain

更改启动工作流调用

启动工作流程时,请确保通过域映射任务

Java客户端
    Map<String, Object> input = new HashMap<>();
    input.put("wf_input1", "one”); Map<String, String> taskToDomain = new HashMap<>(); taskToDomain.put("T2", "mydomain"); // Other options ... // taskToDomain.put("*", "mydomain") will put all tasks in mydomain // taskToDomain.put("T2", "mydomain,fallbackDomain") If mydomain has no active workers // for T2 then will be put in fallbackDomain. Same can be used with "*" too. StartWorkflowRequest swr = new StartWorkflowRequest(); swr.withName(“myWorkflow”) .withCorrelationId(“corr1”) .withVersion(1) .withInput(input) .withTaskToDomain(taskToDomain); wfclient.startWorkflow(swr); 
REST调用

POST /workflow

{
  "name": "myWorkflow",
  "version": 1, "correlatonId": "corr1" "input": { "wf_input1": "one" }, "taskToDomain": { "T2": "mydomain" } } 

 

转载于:https://www.cnblogs.com/mhc-fly/p/7011540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值