首页 > 解决方案 > 使用 Cadence CLI 工具时,如何将复杂对象作为输入传递?

问题描述

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

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

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

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

标签: cadence-workflow

解决方案


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

1. 单个整数或字符串:

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

2. 复杂对象:

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

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

3.多个参数:

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

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

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


推荐阅读