はじめに

Uipathアクティビティを使っていると、なんか気になるけど使い方が良く分からないものとして、parallelアクティビティが出てくると思います。最初は、なんか同時に動かせるのかなくらいに思っていましたが、使いこなすと爆発的な威力を発揮するアクティビティになりますので押さえておきましょう。

 

仕様

parallelアクティビティはプロパティによって2種類の使い方ができるのですが、まず、よりよく使うパターンの仕様を説明します。
parallelアクティビティの中に置いた複数のアクティビティは、それらがすべて完了した場合にparallelアクティビティを抜けます。概念的な説明だけではわかりにくいので、parallelアクティビティでないと動作しない例を2つ紹介します。

マクロの中にポップアップが含まれている場合

代表的なparallelアクティビティの使い方の一つ目は、マクロのスクリプト内にメッセージボックスが含まれる時です。

例えば、マクロ実行が終わったことを示すポップアップがマクロ内に組み込まれていたとしましょう。この場合、マクロ実行を行う動作の後に、clickアクティビティを置けばよい感じもしますが、これでは動きません。なぜなら、click動作もマクロ実行動作の中に含まれているからです。

マクロが終わっていないのですから、次のclickアクティビティに動作が移行しないのですね。下は、例1の画像です。

 

アプリケーションを起動する際のポップアップに対応する

代表的な使い方の2つ目に、アプリケーション起動時のポップアップ対応があります。例えば、start processでアプリケーションを開いたときに読み取り専用にするかどうか求められるポップアップが出ることがありますね。これを処理するときにparallelアクティビティを使います。

理屈は同じです。もし、start processアクティビティの後にポップアップ対応のclickアクティビティを置いても動きません。なぜなら、start processのactivity動作の中にポップアップの処理も含まれるからです。start processが終わっていないのに次のClickアクティビティは動かないのです。下は、例2の画像です。

 

その他の便利な使い方

ここまでparallelアクティビティの主な使い方を説明しましたが、propatyのcompletruetion conditionをtrueにすることで、別の使い方をすることができます。こうすることで、parallelアクティビティ内に置いた複数のアクティビティのどれか一つでも完了したら次に進ませることができます。

例えば、アクティビティのプロパティにtimeoutがないものにtimeoutを付けることができるようになります。excel application scopeアクティビティにtimeoutプロパティはありませんが、parallelアクティビティにexcel application scope と、タイムアウトさせたい分のdelayアクティビティを置くことで、疑似的にtimeoutを作り出すことができます。これにより、例えばエクセルがフリーズした場合でも、uipathの処理が止まらず、timeoutで次に流すことができます。
ぜひ使ってみてください。