微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Step Function - 动态选择要并行运行的分支

如何解决AWS Step Function - 动态选择要并行运行的分支

我正在研究一种解决方案,其中假设状态函数获取要完成的所需函数(基于输入),然后需要并行触发这些函数,以便我最终获得统一的输出。这可以说明如下 -

State Machine Graph

获取基于输入的需求后,下一个状态可以是以下状态的任意组合,但它们确实需要并行运行,以便我知道所有必需的任务都已完成。我不想保留一堆选择或决策者,因为将来所需步骤的数量可能会增加。是否可以决定哪些分支需要并行运行并运行它们。

解决方法

我们需要在每个分支中进行选择。

enter image description here

{
   "StartAt":"Build Decider Step Output","States":{
      "Build Decider Step Output":{
         "Type":"Pass","Result":{
            "firstReq":true,"secondReq":true,"thridReq":false
         },"ResultPath":"$.decider","Next":"my-parallel"
      },"my-parallel":{
         "Type":"Parallel","End":true,"Branches":[
            {
               "StartAt":"should we run first step?","States":{
                  "should we run first step?":{
                     "Type":"Choice","Choices":[
                        {
                           "Variable":"$.decider.firstReq","BooleanEquals":true,"Next":"First Requirement"
                        }
                     ],"Default":"First Req Skipped"
                  },"First Req Skipped":{
                     "Type":"Pass","End":true
                  },"First Requirement":{
                     "Type":"Pass","End":true
                  }
               }
            },{
               "StartAt":"should we run second step?","States":{
                  "should we run second step?":{
                     "Type":"Choice","Choices":[
                        {
                           "Variable":"$.decider.secondReq","Next":"Second Requirement"
                        }
                     ],"Default":"Second Req Skipped"
                  },"Second Req Skipped":{
                     "Type":"Pass","Second Requirement":{
                     "Type":"Pass",{
               "StartAt":"should we run thrid step?","States":{
                  "should we run thrid step?":{
                     "Type":"Choice","Choices":[
                        {
                           "Variable":"$.decider.thridReq","Next":"Third Requirement"
                        }
                     ],"Default":"Third Req Skipped"
                  },"Third Req Skipped":{
                     "Type":"Pass","Third Requirement":{
                     "Type":"Pass","End":true
                  }
               }
            }
         ]
      }
   }
}

我在第一步输出中模拟了这个 json

{
    "firstReq":true,"thridReq":false
 }

结果如下,跳过第三个分支。 enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。