本記事では、サーバー版における「ワークフロー」についての注意点について記載します。
ワークフローは、複数のタスクを矢印でつなぐ・分岐させるなどの設定が可能ですが、個々のタスクはあくまでも独立した個々のタスクとしてエージェントに投入されます。
また、1つのタスクが終了して初めて次のタスクを投入するので、ワークフロー実行時点では最初のタスク以外実行予約はされません。
つまり、1つのエージェントに対して複数のワークフロー内のタスクを割り当てていると、以下のような状況が発生する可能性があります。
(図:1つのエージェントを複数のワークフロー内のタスクで使用、かつタスクは同時に実行されない設定にしていた場合)
どのようにワークフローが設定されていても、エージェントは投入順でしかタスクを実行しません。
タスクAとタスクBは本来連続して実行したい処理であっても、タスクBはタスクAが終了して初めて投入される為、タスクXのほうがタスクBよりも投入が早いゆえタスクXが次に実行されます。
このような処理の割り込みを防ぐならば、以下のいずれかの方法をご検討ください。
(※下記の観点では、「複数のAgentを利用する」ことは考えていないのでご注意ください)
■1. 1つのタスクにする
全て「Main」に処理を書くと長くなる場合は、タスク関数を使用してステップの表記を小分けにすることも可能です。
■2. トリガーを見直す
仮にファイルシステムトリガーでワークフローが投入される場合、ファイルの数だけワークフローが投入されます。
そのため、短時間にファイルが複数投入されると、上記の状況が発生する可能性が大変高くなります。
1回のワークフローが20分で終了する場合、30分周期のスケジュールトリガーにしてファイルを一括で処理する等に変更すると防げます
検索用キーワード:ワークフロー、workflow、エージェント、agent