2017-07-15 5 views
0

私は、私たちのワークフローユースケースの1つとして、AzkabanとApache Activitiを調査しています。私が理解していることは、Azkaban内の各作業が別々のプロセスとして実行されること、Activitiと同じこと、またはActivitiのメインプロセス内でActivitiタスクが別々のスレッドとして実行されることです。Apache Activitiワークフロー実行は別のプロセスまたはActivitiプロセス内で行われます

答えて

0

Activitiタスクは、メインエンジンが実行されているのと同じプロセスで実行されます。

フロー内の非同期アクティビティの有無によって、APIの1つを呼び出すときと同じスレッドで実行されるか、バックグラウンドスレッドのプールによって実行されます。

つまり、ワークフローの特定のステップを別のプロセスで実行することを止めるものはありません(たとえば、長時間実行されるバッチ処理など)。これはさまざまな方法で実現できますが、私が好むものは、タスクを「ヒューマンタスク」としてモデル化し、外部スケジューラを使用して実際の実行にActivitiのAPI(RESTまたはJava)を使用してそれらのタスクを選択することです。このアプローチは非常にスケーラブルであり、タスクが複雑すぎたり、実行に長時間かかる場合に発生する可能性のあるトランザクション管理に関するいくつかの落とし穴を回避できます。

0

Activitiエンジンがアプリケーションに組み込まれている場合、タスクはエンジンAPIを呼び出すスレッドで実行されます(サービスタスクまたはユーザータスク)。しかし、私があなたの質問から理解しているのはおそらくActivitiエンジンを呼び出すことに興味があります。remotely REST APIを使用している場合、タスクは明らかにActivitiエンジンをホストするコンテナー内の別のスレッドとして実行されます。

関連する問題