我正在使用加入和等待任务创建工作流程,但我真的不明白它是如何工作的。当我尝试时,我收到内部服务器错误。
关于" JOIN"任务,我认为当fork中的不同任务完成时,连接任务已完成但事实并非如此。所以,我真的不了解这项任务的兴趣。
这是我工作流程的一个示例:
[{
"name": "sendMySms",
"description": "Simple http flow",
"version": 3,
"tasks": [{
"name": "fork_join",
"taskReferenceName": "forkx",
"type": "FORK_JOIN",
"forkTasks": [
[{
"startDelay": 0,
"name": "wait_status_affected",
"taskReferenceName": "wait_status_affected",
"type": "WAIT"
},
{
"name": "send_my_sms",
"taskReferenceName": "send_sms",
"inputParameters": {
"http_request": {
"uri": "http://localhost:10200/Notify/NotifySms?phone_number=${workflow.input.phone_number}&message=${workflow.input.message}",
"method": "POST",
"contentType": "application/x-www-form-urlencoded"
}
},
"type": "HTTP",
"startDelay": 0
}
],
[{
"name": "send_my_sms2",
"taskReferenceName": "send_sms_2",
"inputParameters": {
"http_request": {
"uri": "http://localhost:10200/Notify/NotifySms?phone_number=${workflow.input.phone_number}&message=${workflow.input.message2}",
"method": "POST",
"contentType": "application/x-www-form-urlencoded"
}
},
"type": "HTTP",
"startDelay": 0
}]
],
"startDelay": 0
},
{
"name": "Claim Affected",
"taskReferenceName": "ClaimAffected",
"startDelay": 60,
"callbackAfterSeconds": 10,
"type": "JOIN",
"joinOn": [
"send_my_sms",
"send_my_sms2"
]
},
{
"name": "send_my_sms3",
"taskReferenceName": "send_sms_3",
"inputParameters": {
"http_request": {
"uri": "http://localhost:10200/Notify/NotifyEmail?subject=Info&mail_to=test@mytest.com&message=fin",
"method": "POST",
"contentType": "application/x-www-form-urlencoded"
}
},
"type": "HTTP",
"startDelay": 0
}
],
"schemaVersion": 2
}]
答案 0 :(得分:0)
FORK_JOIN任务分配一组并行任务。计划每个集合并行执行。但是集合中的任务是连续执行的。
在您的情况下,您有两组并行任务:[wait_status_affected,send_sms]和[send_sms_2]
WAIT任务保持IN_PROGRESS状态,直到被外部触发器标记为COMPLETED或FAILED(例如Swagger)。
因此,send_sms将不会开始启动,直到wait_status_affected被标记为已完成,因为这两个将被串行调度。
JOIN任务,ClaimAffected等待[send_my_sms,send_my_sms2]。但它们是任务名称,而不是任务引用名称。相应的任务引用名称为send_sms和send_sms_2。
taskReferenceName是工作流中用于引用任务的其他任务的名称。
joinOn属性需要JOIN任务等待完成的任务引用名称列表。因此,将您的joinOn更改为[“send_sms”,“send_sms_2”]