使用 Cadence CLI 工具时如何将复杂对象作为输入传递?

How can I pass a complex objects as input when using Cadence CLI tool?

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

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

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

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

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

1.单个整数或字符串:

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

2。复杂对象:

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

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

3。多个参数:

如果您的工作流程需要多个参数,则需要传递 单个 space 分隔字符串,其中字符串的每个部分对应一个特定参数工作流所期望的。下面的示例显示了如何连续传递一个整数、一个字符串和一个结构参数:

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

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

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

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