有没有办法暂停工作流的执行?

Is there a way to pause an execution of a workflow?

有没有办法通过 REST API 以编程方式暂停和恢复工作流?例如,我希望能够从应用程序提交个人休假请求,该应用程序创建并触发工作流。工作流向经理发送通知以供批准,工作流执行暂停,等待经理批准。经理批准请求后,它会调用工作流 API 以恢复工作流的执行。

根据文档,有一个让工作流休眠的选项,我可以用它来定期检查请求的状态,但这会产生额外的费用,因为不知道经理何时会批准请求。

https://cloud.google.com/workflows/docs/reference/syntax

不确定你的use-case,但我想你只能选择在经理批准后执行工作流。

如您所知,有两个部分,第一部分创建工作流。 例如在 https://cloud.google.com/workflows/docs/reference/rest/v1beta/projects.locations.workflows/create api 中。 或者你可以看看 https://cloud.google.com/workflows/docs/creating-updating-workflow.

这不会执行它刚刚创建的工作流。所以可以在后期执行。

要执行工作流,有这个 Api https://cloud.google.com/workflows/docs/reference/executions/rest/v1beta/projects.locations.workflows.executions/create 或者参见 https://cloud.google.com/workflows/docs/executing-workflow

此外,在执行工作流程时,您可以根据需要传入参数。

然后,如果我从 https://cloud.google.com/workflows#section-9 中正确理解定价,那么他们似乎只按执行的步骤向您收费。

抱歉,我已经浏览了很多文档,但没有看到“让工作流休眠的选项”,您能 link 那些文档吗?

我们在这里讨论的是两个独立的工作流程。没有理由暂停或不暂停。

  1. 启动并上升,直到您启动审批流程。
  2. 批准后,触发执行其余步骤的新工作流程。

2021-10-05 更新:

Waiting for an HTTP callback 现在支持:

    - create_callback:
        call: events.create_callback_endpoint
        args:
            http_callback_method: POST # can be GET, PUT, ...
        result: callback_details
    # Send the callback URL somewhere for another service to call
    - await_callback:
        call: events.await_callback
        args:
            callback: ${callback_details}
            timeout: 1800 # optional, in seconds
        result: callback_request

原回复

计划在工作流执行期间等待 HTTP webhook 回调的功能。 (我是工作流程 PM。)

在那之前,你是对的,最好的解决方案是使用 sleep.

轮询标志(Firestore 对此效果很好)