用JSON表示由同步和异步任务组成的工作流

um6iljoc  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(145)

我正在尝试提出一个由同步和异步任务组成的工作流的JSON表示。
例如:

Run A then B 
  
  When B is done 

  Execute C and D at the same time

  wait for C and D to finish

  Execute E 

  Wait for E to finish 

  execute F and G at the same time

  Wait only for G and then 

  Execute H

我不知道是否有一个标准的方式来表示这一点。
这是我的尝试:

{    
    "tasks":[
        {"A":""},
        {"B":""},
        [{"C":""},{"D":""}],
        {"E":""},
        [{"F":""},{"G":""}]
    ]
  }

每个{}都在同一数组中的前一个{}之后串行/同步运行。
即只有在A完成后B才运行.
C和D将在B完成后同时运行。
E将仅在C和D完成时运行。
F和G将在E完成后同时运行。
现在我只想等待G,而不关心F,然后执行H,我不知道如何表示。

i2byvkas

i2byvkas1#

我会采用更明确的方法-对于每个任务,包括其执行所依赖的任务列表:

tasks: {
    {key: "A"},
    {key: "B", dependsOn: ["A"]},
    {key: "C", dependsOn: ["B"]},
    {key: "D", dependsOn: ["B"]},
    {key: "E", dependsOn: ["C", "D"]},
    {key: "F", dependsOn: ["E"]},
    {key: "G", dependsOn: ["E"]},
    {key: "H", dependsOn: ["G"]}
}
xqnpmsa8

xqnpmsa82#

描述这些步骤的另一种方式

{
  "steps": [
   { "start": ["A"],      "after": []         },
   { "start": ["B"],      "after": ["A"]      },
   { "start": ["C", "D"], "after": ["B"]      },
   { "start": ["E"],      "after": ["C", "D"] },
   { "start": ["F", "G"], "after": ["E"]      },
   { "start": ["H"],      "after": ["G"]      },
  ]
}

相关问题