【问题标题】:Elsa Workflow - Fork (Control Flow)Elsa Workflow - Fork(控制流)
【发布时间】:2021-07-06 08:31:37
【问题描述】:

有人可以解释一下 Elsa Workflow 的 Fork 是如何工作的吗?

我已经设置了 HTTP 端点。之后,我发送 HTTP 请求并获得 JSON 格式的 HTTP 响应。 我想对该响应设置条件(例如 name='John'),以便仅显示数据库中的该行。

我应该使用什么 Elsa 活动? Fork 活动是正确的选择还是其他?

【问题讨论】:

    标签: httprequest workflow httpresponse endpoint elsa-workflows


    【解决方案1】:

    分叉

    Fork 活动只是将工作流执行分叉到多个分支中。添加此活动时,您指定一个或多个分支名称的列表。这些分支名称将被安排为活动结果

    例如,如果您添加带有分支 Do Some RequestTimeout 的 Fork 活动,则 Fork 活动会将这些分支显示为结果。

    当 Fork 活动执行时,两个分支都会执行。例如,这使得您希望等待某些用户输入或某些其他作业完成但不是无限期地完成的场景:您有第二个分支等待超时事件,例如使用定时器活动。

    可以在here 找到描述 Fork 活动在类似场景中的用法的示例工作流。

    这描述了 Fork 活动的用例。但您会想改用 If 活动。

    如果

    使用 HTTP 请求 活动回到您的用例并设置条件,您想要使用 If 而不是 Fork > 活动。

    当您将 If 活动连接到 HTTP 请求 时,您将能够编写一个必须评估为 truefalse 的 JS 表达式。

    例如,假设您的 Send HTTP Request 活动对 https://reqres.in/api/users/2 执行 GET 请求

    确保选中阅读内容复选框。 还要确保为您的发送 HTTP 请求活动命名。例如,SendHttpRequest1

    有了这些,您现在可以在 If 活动的 Condition 字段中编写以下 JS 表达式:

    activities.SendHttpRequest1.ResponseContent().data.first_name == 'Janet'
    

    请注意,activities.SendHttpRequest1.ResponseContent() 返回一个 ExpandoObject,它表示从我在示例中使用的演示 API 端点接收到的 JSON 响应。

    【讨论】:

    • 您好@Sipke,非常感谢您抽出时间和提供有关 Elsa Control Flow 的信息。我想知道如何显示在 IF 之后得到的结果。当我发送 HttpRequest(目标是指向数据库 MS SQL Server 的 API)时,我连接了一个 IF 活动,这就是我卡住的情况。 IF之后我应该怎么做才能显示满足IF条件的结果?
    • 同理。如果你想例如通过发回 HTTP 响应来显示结果,您使用 WriteHttpResponse 活动并将其 Content 字段设置为例如activities.SendHttpRequest1.ResponseContent().data.first_name 简单地呈现名称(使用 JS 语法)。更好的是使用 Liquid 语法,这样您就可以编写更合适的响应(即使它是 JSON)。更多信息:elsa-workflows.github.io/elsa-core/docs/next/expressions/…。如果您还有其他问题,请告诉我。
    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 2022-08-24
    • 2013-02-22
    • 1970-01-01
    • 2020-02-29
    • 2022-01-10
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多