私の Amazon Simple Workflow / AWS Flow for Ruby アプリのアーキテクチャに関して簡単な質問があります。背景として、Opsworks の AWS Flow for Ruby レイヤーで実行される 1 つのアクティビティを含む単純なワークフローがあります。Opsworks の Rails App Server レイヤーで別の REST API を実行しており、ワークフローを開始したいと考えています。
ワークフローを開始する 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
Ruby の gem と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)
私は間違っていますか?ワークフロー スターター アプリ (つまり、REST API) で MyWorkflowClass を要求する必要が本当にあるのでしょうか?それとも何か間違っていますか? ドキュメントを精査しましたが、これに対する明確な答えが見つかりませんでした。私が見つけたすべてのサンプルには、実際にワークフローのスターター コードにワークフロー クラスが含まれていますが、単純なサンプルとしてバンドルされているためなのか、それが本来の方法であるためなのかはわかりません。サンプルを額面通りに受け取っていないのは、ワークフロー スターター コードでワークフロー クラスを要求しても意味がないからです。私の好みでは、2つのアプリをあまりにも強く結びつける.