更新时间:2024-11-11 GMT+08:00

创建函数流任务

本章节主要介绍如何创建函数流任务和编排函数流任务。您可以根据实际业务场景来创建标准函数流或快速函数流。

  • 标准模式面向普通的业务场景,支持长时间任务,支持执行历史持久化和查询,只支持异步调用,在函数流运行记录页面查询执行结果。
  • 快速模式面向业务执行时长较短,需要极致性能的场景,只支持流程执行时长低于5分钟的场景,不支持执行历史持久化(比如不支持查询执行节点的历史信息),支持同步和异步调用。通过同步执行函数流接口进行函数流的同步执行,接口直接返回函数流执行结果,同时日志页面查看上报到LTS的函数流执行日志。

    快速函数流限时免费,欢迎体验!

前提条件

操作步骤

  1. 登录FunctionGraph控制台,进入“函数流”页面。
  2. 在“函数流”页面,单击“创建标准函数流”或“创建快速函数流”,进入新建函数流页面。

    如果通过DWR侧创建的函数流,在console页面是没有编辑和删除权限,如需相关操作请在DWR侧执行。

  3. 编排函数流任务,请您根据实际应用进行函数流编排。

    1. 在函数流页面,通过拖拽组件进行流程编排。
      图1为例,将开始节点、函数、结束节点拖入编辑框内,并用连接线连接好。
      图1 编排函数流
    2. 单击编辑框中函数节点进行编辑。配置函数参数,参数说明如表1所示,带*参数为必填项。

      配置函数前确保已创建好函数,示例中的函数节点选择函数2(函数执行返回result的值为函数调用事件内的input输入值+2的结果值),参见图2配置。

      图2 函数节点配置
      表1 函数参数说明

      参数

      说明

      *应用

      函数所属应用,用户创建函数时可以进行分组,每个函数应用下面可以创建多个函数,在函数创建时可以指定其归属于某个函数应用。

      *函数

      FunctionGraph中对应的函数。

      说明:
      • 配置的函数节点返回的数据格式必须是json格式,否则会解析失败。
      • 仅对于Go函数支持返回流式数据:在函数详情页的“设置 > 高级设置”下,打开“返回流式数据”开关即可。

      *版本

      FunctionGraph中函数对应的版本。

      *调用方式

      函数流执行函数节点时的调用方式,默认为同步调用

      说明:
      • 同步调用不支持长时间函数,最大执行时长为15分钟
      • 异步调用支持长时间函数,单函数节点的最大执行时长以函数服务支持的最大执行时长为准

      函数参数

      流程中以json格式作为body参数在执行时传入函数。

      Key:填写参数

      Value:填写参数值

      DefaultValue:设置默认值,参数未获取到值时,默认获取默认值

      操作:编辑或删除设置的参数

      输入过滤表达式(JSONPath)

      基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。

      输出过滤表达式(JSONPath)

      基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。

    3. 单击编辑框中的EG节点进行编辑。配置EG参数,参数说明如表2所示,带*参数为必填项。

      配置EG节点前确保已创建好EG自定义事件源和自定义事件通道,参见图3

      图3 EG节点配置
      表2 EG节点参数说明

      参数

      说明

      *事件通道

      事件通道负责接收来自事件源的事件。函数流仅支持编排自定义事件通道:您自行创建的事件通道,用于接收自定义事件源产生的事件。详情请参考事件网格服务关于事件通道的介绍。

      *事件源

      事件源是事件的来源,函数流仅支持自定义的应用作为事件源,通过自定义的事件通道发布事件到事件网格。

      详情请参考事件网格服务关于事件源的介绍

      事件内容格式

      参数“事件负载内容”的内容格式。

      说明:

      目前只支持application/json格式。

      事件负载内容

      事件内容。

      事件发生主题

      事件发生的主题或对象,用以标识哪个具体对象发生了当前事件

      输入过滤表达式(JSONPath)

      基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。

      输出过滤表达式(JSONPath)

      基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。

    4. 若您的函数流任务中配置了流程控制器,请参见表3进行配置,带*参数为必填项。
      表3 流程控制器参数说明

      类型

      参数

      说明

      回调节点

      *回调超时时间(分钟)

      回调节点的最长等待时间,超时无回调响应,该节点执行失败。

      *回调类型

      函数流可供回调的服务节点类型。

      说明:

      目前只支持函数节点。

      *应用

      函数所属应用,用户创建函数时可以进行分组,每个函数应用下面可以创建多个函数,在函数创建时可以指定其归属于某个函数应用。

      *函数

      FunctionGraph中对应的函数。

      说明:
      • 配置的函数节点返回的数据格式必须是json格式,否则会解析失败。
      • 仅对于Go函数支持返回流式数据:在函数详情页的“设置 > 高级设置”下,打开“返回流式数据”开关即可。

      *版本

      FunctionGraph中函数对应的版本。

      *调用方式

      函数流执行函数节点时的调用方式,默认为同步调用

      说明:
      • 同步调用不支持长时间函数,最大执行时长为15分钟
      • 异步调用支持长时间函数,单函数节点的最大执行时长以函数服务支持的最大执行时长为准

      函数参数

      流程中以json格式作为body参数在执行时传入函数。

      Key:填写参数

      Value:填写参数值

      DefaultValue:设置默认值,参数未获取到值时,默认获取默认值

      操作:编辑或删除设置的参数

      输入过滤表达式

      基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。

      输出过滤表达式

      基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。

      子流程

      选择子流程

      选择已创建的函数流任务。

      是否等待子流程完成

      默认选择“是”。

      输入过滤表达式(JSONPath)

      基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。

      输出过滤表达式(JSONPath)

      基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。

      并行分支

      *分支执行完成条件

      • 所有分支执行完成:2个或2个以上分支时选择该条件
      • 一个分支执行完成:只有1个分支时选择该条件
      • 指定数目分支执行完成:2个或2个以上分支时其中某个分支可以选择该条件

      输入过滤表达式(JSONPath)

      基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。

      输出过滤表达式(JSONPath)

      基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。

      指定分支执行完成数目

      当“分支执行完成条件”选择指定数目分支执行完成时,支持自定义执行完成的数目。

      *结果输出路径

      输入并行分支执行结果输出位置,输入值作为key,并行分支执行结果作为value,以json形式输出。若未填写,默认输出路径为:result。

      开始节点

      加入触发器

      用于标识流程的开始,一个流程只能有一个开始节点。如何创建函数流触发器,请参见创建函数流触发器

      异常处理

      *是否重试

      默认关闭,开启后可以控制函数执行失败后的下一步流程。

      • 重试条件(JSONPath):例如: $.status == 500
      • 重试间隔(1-30秒):默认重试间隔1S
      • 最大重试次数(1-8):默认重试次数3次

      *异常分支表达式

      JSONPath表达式,表达式结果为true时,异常捕获成功,函数流执行至异常分支。

      循环节点

      *遍历数组路径(JSONPath)

      需要遍历的数组类型变量地址。

      *迭代变量名称

      每次循环迭代,引用数组中元素的参数名称。

      *结果输出路径(JSONPath)

      指定全部迭代分支执行结果数组的输出位置。

      并发迭代数目

      并发运行迭代分支的数目,限制0-100, 0代表并发拉起的数目无限制。

      并发迭代时间间隔(秒)

      每次迭代间隔的时间。

      输入过滤表达式(JSONPath)

      基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。

      输出过滤表达式(JSONPath)

      基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。

      时间等待

      *延迟时间(秒)

      默认60秒。

      服务节点

      执行模式

      定义服务节点中函数的执行顺序。

      • 串行模式:服务中的函数节点按照连线顺序依次执行,可以严格保证函数的执行顺序
      • 并行模式:服务中的函数节点并行执行,不保证内部函数节点的执行顺序

      输入过滤表达式

      通过JSONPath表达式对节点的输入信息进行过滤。

      输出过滤表达式

      通过JSONPath表达式对节点的输出信息进行过滤。

      条件分支

      *分支类型

      • 条件分支
      • 默认分支

      当一个分支选择条件分支时,必须要有一个分支选择默认分支。

      表达式

      选择“条件分支”,需要输入JSONPath类型表达式。使用方法请参见表达式运算符说明

      输入过滤表达式

      通过JSONPath表达式对节点的输入信息进行过滤。

      输出过滤表达式

      通过JSONPath表达式对节点的输出信息进行过滤。

      结束节点

      流程结束的标志

      后面不能接任何节点。

    5. 流程中的所有节点参数配置完成后,单击右上角的“保存”。

      函数流中的节点改动后,必须先保存信息,再启动函数流任务。

    6. 在新建函数流页面,单击左上角函数流名称右边的,进行参数配置,最后单击“确定”。
      表4 输入配置信息

      参数

      说明

      *名称

      输入函数流名称。

      *企业项目

      选择企业项目。

      合并参数

      将上一个节点的输出与下一个节点的输入合并为输入。

      描述

      输入函数流的简要描述。

      图4 编辑函数流
    7. 单击“启动”,在弹出的启动执行页面,支持输入定义值或者直接启动。此处选择“输入定义值”。
      {
        "input":3
      }
      图5 启动执行配置

      输入定义值必须是JSON格式的内容。

    8. 单击“开始执行”,页面右上角提示“启动函数流xxx成功”。
    9. 单击函数流任务名称,进入函数流任务详情,查看函数流执行结果。

查看函数流任务

  1. 返回函数工作流控制台,进入“函数流”页面。
  2. 在函数流页面,支持设置函数流任务卡片显示和列表显示。

    图6 设置显示方法
    • 卡片显示
      图7 卡片显示
    • 列表显示
      图8 列表显示

  3. 在函数流页面,可以查看所有已创建的函数流任务,您可以执行如表5中的管理操作。

    表5 操作说明

    操作项

    说明

    编辑

    在函数流任务卡片中,单击“编辑”,进入函数流编辑页面,更新修改函数流任务信息。

    启动

    在函数流任务卡片中,单击“更多 > 启动”,启动该函数流任务。

    删除

    • 支持单个删除任务:在函数流任务卡片中,单击“更多 > 删除”,删除该函数流任务。
    • 批量删除任务:勾选多个函数流任务,单击左上角的“删除”,删除所选函数流任务。

  4. 单击某一个函数流任务名称,查看任务详情。

    • 查看任务基本信息

      在“基本信息”页签,查看任务名称、ID、更新时间和创建时间等信息。

    • 查看任务运行记录

      在“运行记录”页签,查看任务的执行历史记录、输入值、输出值、节点日志等信息。

      若需要修改任务信息,单击右上角的“函数流设计”,进入函数流编辑页面,更新修改任务。

    • 查看函数流监控指标

      在“监控”页签,查看任务的调用次数、运行时间、错误次数、运行中信息。监控指标说明如表5 函数流监控指标所示。

      表6 函数流监控指标

      指标

      单位

      说明

      调用次数

      函数流总的调用请求数,包含了正确、错误和运行中的调用。异步函数流在请求被系统执行时才开始计数。

      运行时间

      毫秒

      时间段内单次函数流执行平均的运行时间。

      错误次数

      指发生异常请求的函数流不能正确执行完,会计入错误次数。

      运行中

      正在运行中的函数流的数量。

      被拒绝次数

      指被限流无法执行函数流的次数