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
總結
以上是生活随笔為你收集整理的conductor任务域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的构造函数和构造函数和析构
- 下一篇: Objective-C method及相