Japan
サイト内の現在位置を表示しています。
OR分岐で処理時間をさらに短縮できるかも?
JobCenter Lab vol.4こんにちは。WebSAM JobCenter ブログ担当の荒尾です。
今回は、JobCenterの部品オブジェクトで、並列処理を行うための「OR分岐」を紹介します。
並列処理の部品には他に「並列分岐」がありますが、「OR分岐」を活用すると、同じ並列処理でも、ジョブ全体の処理時間を更に短縮できる場合があるので、並列処理に適用するときの考え方についても紹介します。
並列分岐とOR分岐の機能の違い
並列処理を行う部品の、並列分岐とOR分岐の機能については以下の通りです。
名 称 | アイコン | 機 能 |
---|---|---|
並列分岐 | ![]() |
複数の単位ジョブ、または、サブジョブ ネットワークを並列に実行します |
OR分岐 | ![]() |
複数の分岐フローのうち1つが終了すると 後続の部品を実行します |
OR分岐で処理時間が更に短縮できるか考えてみよう
ここでは、ジョブフローの検討時、全体の処理時間の短縮を考える場合に、並列処理にOR分岐を適用すると更に実行時間が短縮できるか、考え方について紹介します。
以下は、長方形の横幅が各単位ジョブの処理時間の長さ、矢印が単位ジョブの依存関係を表したジョブフローのイメージ図です。
ジョブBとジョブDは依存関係が無く並列に実行可能です。ジョブCはジョブBの終了を待つ必要がありますが、ジョブDの終了を待つ必要がありません。

並列処理間に依存関係の無いジョブフローのイメージ
上記のジョブフローを、並列分岐とOR分岐でジョブネットワークを作成すると、それぞれ以下になります。(分岐部品のアイコンが異なる以外、見た目は同じです)

並列分岐とOR分岐のジョブフロー例
これらのジョブフローをそれぞれ実行したときの、全体の実行時間は以下のようになります。
全分岐の終了を待つ必要がない並列処理の場合、OR分岐を利用することで、ジョブ全体の実行時間の短縮が期待できます。

並列分岐とOR分岐の全体の実行時間(イメージ)
おわりに
上記の例では、実行時間が「(ジョブB+ジョブC)<(ジョブD)」となる場合は、実行時間の短縮は期待できませんが、条件が合えばOR分岐を活用することで、処理を単に並列化するだけでなく、更に全体の実行時間を短縮することができます。
ジョブフロー作成時、OR分岐の利用も検討してみてください。