Как перейти из функции выбора состояния шага? - PullRequest
1 голос
/ 13 апреля 2020

Входные данные, отправляемые из предыдущего состояния, имеют следующую форму:

  [
{
"bucketName": "test-heimdall-employee-data",
"executionId": "ca9f1e5e-4d3a-4237-8a10-8860bb9d58be_1586771571368",
"feedType": "lenel_badge",
"chunkFileKeys": "chunkFileLocation/lenel_badge/68ac7180-69a0-401a-b30c-8f809acf3a1c_1586771581154.csv",
"sanityPassFileKeys": "chunkFileLocation/lenel_badge/0098b86b-fe3c-45ca-a067-4d4a826ee2c1_1586771588882.json"
},
  {
"bucketName": "test-heimdall-employee-data",
"executionId": "ca9f1e5e-4d3a-4237-8a10-8860bb9d58be_1586771571368",
"feedType": "lenel_badge",
"errorFilePath": "error/lenel_badge/2a899128-339d-4262-bb2f-a70cc60e5d4e/1586771589234_2e06e043-ad63-4217-9b53-66405ac9a0fc_1586771581493.csv",
"chunkFileKeys": "chunkFileLocation/lenel_badge/2e06e043-ad63-4217-9b53-66405ac9a0fc_1586771581493.csv",
"sanityPassFileKeys": "chunkFileLocation/lenel_badge/f6957aa7-6e22-496a-a6b8-4964da92cb73_1586771588793.json"
  },
 {
"bucketName": "test-heimdall-employee-data",
"executionId": "ca9f1e5e-4d3a-4237-8a10-8860bb9d58be_1586771571368",
"feedType": "lenel_badge",
"errorFilePath": "error/lenel_badge/8050eb12-c5e6-4ae9-8c4b-0ac539f5c189/1586771589293_1bb32e6c-03fc-4679-9c2f-5a4bca46c8aa_1586771581569.csv",
"chunkFileKeys": "chunkFileLocation/lenel_badge/1bb32e6c-03fc-4679-9c2f-5a4bca46c8aa_1586771581569.csv",
"sanityPassFileKeys": "chunkFileLocation/lenel_badge/48960b7c-04e0-4cce-a77a-44d8834289df_1586771588870.json"
  }
  ]

Дизайн рабочего процесса конечного автомата: enter image description here

Как извлечь Значение «feedType» из вышеуказанных входов и переход в следующее состояние, а также передача целых входов в следующее состояние?

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Глядя на ваше предыдущее состояние ввода, похоже, что feed_type является константой. Предполагая, что ключ ко всему вводу - это «ввод», так что это словарь типа {"input":[{...},{...}]} и так далее. Таким образом, для доступа к значению feed_type вы можете просто сделать $.input[0].feed_type.

Состояние выбора по умолчанию передает весь введенный ему ввод на следующую стадию. Таким образом, к какому бы следующему этапу он ни переходил, этот этап будет иметь тот же вклад, который был передан в состояние выбора.

Чтобы лучше это понять или в качестве подтверждения концепции, проверьте следующую функцию шага, в которой Состояние Hello является состоянием choice, а два других состояния являются простыми состояниями передачи.

Sample Step Function

И если вы увидите ниже ввод и вывод состояния выбора. Это то же самое .

enter image description here

Надеюсь, это поможет.

0 голосов
/ 21 апреля 2020

Вы можете получить доступ ко входу JSON, с которого вы запустили машину состояний, используя: $$.Execution.Input.todo. Кроме этого, вы не можете напрямую получить доступ к предыдущему состоянию с одного шага на следующий.

В качестве примера, скажем, у вас есть A->B->C Допустим, вы прошли A, который дал новое поле: a : 1, а затем вы прошли B, и он возвращает b : 2, когда вы доберетесь до C, у вас будет только b : 2. Но если B также вернет a : 1, вы получите {a : 1, b : 2} в C. Как правило, это то, что вы делаете, чтобы передать состояние с шага на несколько шагов раньше.

Есть и другие вещи, которые люди делают, например, хранение данных в корзине s3 и доступ к этой корзине на разных этапах. Вы также можете запросить пошаговую функцию, но это может быть грязно.

Другие хаки включают добавление шага прохода в параллельном блоке, но эти хаки не очень хороши, правильный способ передачи данных между ваши шаги, или, надеюсь, есть то, что вам нужно в вашем вводе выполнения.

...