【问题标题】:How can I pass a complex objects as input when using Cadence CLI tool?使用 Cadence CLI 工具时,如何将复杂对象作为输入传递?
【发布时间】:2021-07-15 03:25:07
【问题描述】:

这是一个示例工作流及其输入结构:

func MyWorkflow(ctx cadence.Context, input MyWorkflowParameters) error {
    ...
}

type MyWorkflowParameters struct {
    SomeString: string,
    SomeInteger: int32
} 

在启动或发出工作流信号时,将上述复杂结构作为 input 参数传递给 Cadence CLI 工具的最佳方法是什么?

【问题讨论】:

    标签: cadence-workflow


    【解决方案1】:

    对于多个参数,使用数组:

    --input '["a","b",123]'
    

    【讨论】:

      【解决方案2】:

      Cadence 命令行工具的input 参数接受几种不同格式的值,具体取决于您的工作流程的预期。以下是三种情况的示例:

      1.单个整数或字符串:

      --input 12345
      --input “my-string"
      

      2。复杂对象:

      当参数是您示例中的结构时,您需要传递一个有效的 JSON 编码对象,如下例所示:

      --输入'{"SomeString":"my-string","SomeInteger":12345}'

      3.多个参数:

      如果您的工作流需要多个参数,则需要传递一个以空格分隔的字符串,其中字符串的每个部分对应于工作流预期的特定参数。下面的例子展示了如何连续传递一个整数、一个字符串和一个结构参数:

      --input '12345 "second param" {"SomeString":"my-string","SomeInteger":12345}'
      

      在相关说明中,在工作流中接受输入参数的推荐方法是使用单个结构参数。尽管 JSON 中的语法糖会稍微污染 CLI 命令,尤其是当您只需要传递一个参数时,但当您开始向工作流传递更多参数时,它就会得到回报。

      【讨论】:

      • 当我传递多个参数时,我会收到此错误。错误 com.uber.cadence.internal.sync.POJOWorkflowImplementationFactory - 在 eventID 43 处为“ProductOrchestrator::serviceAcquired”反序列化信号输入失败。删除它。 com.uber.cadence.converter.DataConverterException: 解析时:""456" "true"" 为以下类型:[class java.lang.String, class java.lang.String]
      猜你喜欢
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多