Как я могу передать сложные объекты в качестве входных данных при использовании инструмента Cadence CLI?

Вот пример рабочего процесса и его входной структуры:

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

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

Как лучше всего передать сложную структуру, указанную выше, в качестве параметра input в инструмент Cadence CLI при запуске или сигнализации рабочего процесса?


person Emrah Seker    schedule 19.04.2020    source источник


Ответы (2)


Параметр input инструмента командной строки Cadence принимает значения в нескольких различных форматах в зависимости от того, что ожидает ваш рабочий процесс. Вот примеры для трех случаев:

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, особенно когда все, что вам нужно передать, это единственный параметр, это окупается, когда вы начинаете передавать больше параметров в рабочий процесс.

person Emrah Seker    schedule 19.04.2020
comment
Когда я передаю более одного параметра, я получаю эту ошибку. ОШИБКА com.uber.cadence.internal.sync.POJOWorkflowImplementationFactory - Ошибка десериализации входного сигнала для ProductOrchestrator :: serviceAcquired при идентификаторе события 43. Отбрасывание его. com.uber.cadence.converter.DataConverterException: при синтаксическом анализе: 456 true на следующие типы: [класс java.lang.String, класс java.lang.String] - person Hohenheimsenberg; 16.01.2021

Для нескольких параметров используйте массив:

--input '["a","b",123]'
person Prithvi Hv    schedule 14.07.2021