文档

云工作流新旧版本差异及兼容性说明

更新时间:

云工作流(CloudFlow)是一个用来协调多个分布式任务执行的全托管云服务。随着云工作流新版本的发布,为您提供更加稳定可靠的新版本升级说明。本文介绍云工作流新旧版本的差异及兼容性说明。

云工作流新版本优势

云工作流旧版本相比,新版本具有如下优势:

  • 完全遵循State Machine的工作流设计规范,提供更通用的工作流编排逻辑能力。

  • 支持近乎全部云产品及场景的编排组合方式,提供更丰富的生态集成方案。

  • 全新Spec YAML语法升级,显著降低对Spec的理解成本。在抽象上对齐行业先进水平,提供编排、执行单元、数据操作符等更多扩展语法。

  • 更便捷的工作流开发体验,提供全新的Studio拖拽形式编辑,提供在线调试及YAML预览,帮助用户快速上手工作流开发。

  • 提供全新Express模式,提升大流量和高并发场景的使用体验,降低整体工作流调用延迟。

API/SDK兼容性说明

云工作流新版本兼容大部分存量API/SDK。例如,您创建了新版本工作流,客户端使用的是最新版SDK,则新版功能全部支持;若您的客户端使用老版本SDK,则无法使用新版Express等新版对应的产品能力。

更多参数,请参见OpenAPI门户网站

功能差异说明

新版本功能差异项

涉及接口

说明

新增Express模式

CreateFlow

UpdateFlow

DescribeFlow

ListFlows

新版本支持创建Express模式。

新版Spec定义

CreateFlow

UpdateFlow

DescribeFlow

ListFlows

支持全新YAML语义创建与执行。

新版执行事件定义

GetExecutionHistory

支持Enter、Exec、Error和Exit四类全新事件类型定义。

新增Workflow Studio能力

-

支持图形化拖拽生成工作流。

新增Workflow在线调试能力

-

支持使用控制台预调试工作流内容。

迁移说明

云工作流新版本与旧版本的主要差异在于YAML定义语法不同,可新创建新版工作流的YAML替代旧版工作流的YAML,完成迁移。

新旧版本YAML差异对比

旧版

新版

version: v1beta1
type: flow
name: my-wkfl
steps:
  - type: pass
    name: Pass
  - type: parallel
    name: myparallel
    inputMappings:
      - target: FieldA
        source: 123
    branches:
      - steps:
        - type: succeed
          name: final-succeed
      - steps:
        - type: choice
          name: mychoice
          choices:
            - condition: $.status == "ready"
              # choice with steps
              steps:
                - type: pass
                  name: pass1
            - condition: $.status == "failed"
              # choice with goto
              goto: pass-toUpperCase
          default:
            # choice with both steps and goto
            steps:
              - type: pass
                name: pass2
            goto: pass-toUpperCase
        - type: pass
          name: pass-toUpperCase
          outputMappings:
            - target: names
              source: [ "A", "B", "C" ]
  - type: foreach
    name: myforeach
    iterationMapping:
      collection: $.names
      item: name
    steps:
      - type: task
        name: task-void
        resourceArn: acs:fc:{region}:{account}:services/fnf_test/functions/toUpperCase
  - type: pass
    name: pass-end
    outputMappings:
      - target: names
        source: ["A", "B", "C"]
End: true
Name: my-wkfl
SpecVersion: V3
StartAt: Pass
States:
- Name: Pass
  Next: myparallel
  Type: Pass
- Branches:
  - StartAt: final-succeed
    States:
    - End: true
      Name: final-succeed
    Type: ParallelBranch
  - StartAt: mychoice
    States:
    - Branches:
      - Condition: $.status == "ready"
        Name: $.status == "ready"
        Next: pass1
      - Condition: $.status == "failed"
        Name: $.status == "failed"
        Next: pass-toUpperCase
      Default: pass2
      Name: mychoice
      Next: pass-toUpperCase
      Type: Choice
    - End: true
      Name: pass-toUpperCase
      OutputConstructor:
        names:
        - A
        - B
        - C
      Type: Pass
    - Name: pass2
      Type: Pass
    - Name: pass1
      Type: Pass
    Type: ParallelBranch
  InputConstructor:
    FieldA: 123
  Name: myparallel
  Next: myforeach
  Type: Parallel
- ItemsPath: <TODO> $Input.names
  Name: myforeach
  Next: pass-end
  Processor:
    StartAt: task-void
    States:
    - Action: <TODO> acs:fc:{region}:{account}:services/fnf_test/functions/toUpperCase
      End: true
      InvocationMode: sync
      Name: task-void
      Type: Integration
    Type: MapProcessor
  Type: MapReduce
- End: true
  Name: pass-end
  OutputConstructor:
    names:
    - A
    - B
    - C
  Type: Pass
Type: Workflow

迁移流程

  1. 下载转换包。云工作流目前提供适用于Linux系统和macOS系统的转换包。

  2. 执行以下命令,转换YAML文件。

    ./f3s-xxx-xxx -action=v2tov3 -f v2.yaml
    说明

    执行完成后,在命令行即可打印转换后的YAML文件。部分表达式内容可能需要微调。

  • 本页导读 (1)
文档反馈