У меня есть простой вопрос относительно архитектуры моего приложения Amazon Simple Workflow/AWS Flow для Ruby. Для фона у меня есть простой рабочий процесс с одним действием, выполняемым в слое AWS Flow для Ruby на Opsworks. У меня есть отдельный REST API, работающий на уровне сервера приложений Rails на Opsworks, который я хотел бы запустить рабочий процесс.Требуется класс рабочего процесса в стартовом коде рабочего процесса
Код в REST API, который стартует рабочий процесс:
1: domain = AWS::SimpleWorkflow.new.domains['my_domain']
2: workflow_client = AWS::Flow::workflow_client(domain.client, domain) {{from_class: MyWorkflowClass}}
3: workflow_client.start_execution(input_1: @input1, input_2: @input2)
Мое предположение, что мой рабочий процесс и REST основы кода API может быть отделено и что единственный общий компонент будет быть aws-flow
рубин драгоценный камень и require 'aws/decider'
. Тем не менее, я считаю, что мой REST API также должен иметь require 'PATH_TO_MY_WORKFLOW_CLASS'
. Когда я удалить эту строку кода из файла кода в моем REST API, который стартует рабочий процесс, я получаю следующее сообщение об ошибке:
undefined method `_options' for nil:NilClass; ["/Users/MyName/.rvm/gems/ruby-2.0.0-p247/gems/aws-flow-2.2.1/lib/aws/decider/utilities.rb:183:in `interpret_block_for_options'", "/Users/MyName/.rvm/gems/ruby-2.0.0-p247/gems/aws-flow-2.2.1/lib/aws/decider/implementation.rb:73:in `workflow_client'"
(error at line 2 above)
я ошибаюсь? Должен ли я действительно нуждаться в MyWorkflowClass в моем стартовом приложении рабочего процесса (т. Е. Мой REST API), или я делаю что-то неправильно? Я просмотрел документацию и не смог найти четкого ответа на этот вопрос. Все образцы, которые я могу найти, действительно имеют класс рабочего процесса, включенный в код запуска рабочего процесса, но я не уверен, что это связано с тем, что они объединены в простой пример или если это так, потому что это так, как должно быть. Причина, по которой я не беру образцы по номиналу, заключается в том, что требование класса рабочего процесса в стартовом коде рабочего процесса не имеет для меня никакого смысла. Он связывает два приложения слишком жестко по моему вкусу.