見出し画像

UiPath Academy RPAデベロッパー基礎⑯ 制御フローとは 条件分岐

今日もUiPath Academyの「RPAデベロッパー基礎」で学習していきます


制御フローとは

ソフトウェア プロジェクトでアクティビティが実行または評価される順序

ワークフロー レイアウト

定義済みのワークフロー レイアウトには、
[シーケンス (Sequence)]、[フローチャート (Flowchart)]、
[ステート マシン (State Machine)]、
[グローバル例外ハンドラー (Global Handler)] の 4 つ

  • シーケンスでは、プロセスの各ステップがフローに沿って直線的に連続して実行

  • フローチャートでは、個々のアクティビティの見やすさや編集のしやすさが多少劣りますが、各アクティビティ間のフローがはるかに明確になる
    複雑なシナリオや判定メカニズムに対応するために判断ポイントや分岐が必要な場合にフローチャートを使用

制御フローとは

ワークフローで実行する判定を定義するアクティビティとメソッド
Studio で使用できる制御フロー

  • 条件分岐アクティビティ(意思決定アクティビティ)
    ([条件分岐 (If)]、[Else If]、[スイッチ (Switch)] など)。

  • ループ
    ([繰り返し (前判定) (While)]、
    [繰り返し (後判定) (Do While)]、
    [繰り返し (コレクションの各要素) (For Each)] など)。

制御フローの重要性とは

  1. 制御フローは、オートメーションでアクションを実行する順序を扱う

  2. [条件分岐 (If)]/[Else If] や [繰り返し (コレクションの各要素) (For Each)] などのアクティビティを使用すると、プロジェクトの中でルールを定義し、条件に応じた処理の実行を自動化できる

  3. ループを使用すると、条件が満たされるまで、オートメーションの一部を特定の回数だけ実行できる
    また、無期限に実行することもできる


条件分岐アクティビティ

UiPath における条件分岐アクティビティは以下の要素で構成

  • 検証対象の条件 (想定される結果は True または False)

  • Then 分岐 -
    条件が True の場合に実行する一連のアクション

  • Else 分岐 -
    条件が False の場合に実行する一連のアクション

Studio では、選択したワークフロー レイアウトの種類に応じて、使用できる条件分岐アクティビティが異なる

  • シーケンスで使用する [条件分岐 (If)] アクティビティ

  • フローチャートで使用する [フロー条件分岐 (Flow Decision)] アクティビティ

また、VB.NET の If 演算子を式の中で使用することもできるStudio の [Else If] アクティビティは、主にシーケンスで使用するように設計
Else 分岐に複数の条件を追加する機能がある

  • 最初の条件が満たされると、その下に記述したアクションが実行される

  • この条件が満たされない場合のために、2 つ目の [Else If] を使用して条件を追加
    その条件が True の場合は、その下に記述したアクションが実行される
    False の場合を考慮し、[Else If] を使用して別の条件を追加

  • どの条件も満たされない場合は、 [Else] の中に記述した最後のアクションが実行される

[Else If] と [Else] の 2 つのドロップダウン オプションを持つ [Else If] アクティビティ

設計がわかりやすく、実行が容易

条件分岐アクティビティを使用する事例

  • 支払ステータス (完了/未完了) を確認し、それぞれの場合に応じて一連の操作を実行

  • シーケンス内の前の操作が成功していることを確認

  • 口座残高が請求額を支払ううえで十分な額であることを確認

  • システムに何らかの変化があったかどうか (要素や画像が存在するかどうかなど) を確認し、それに基づいてアクションを実行



デモ:シーケンス内で [条件分岐 (If)] アクティビティを使用して、うるう年を確認

通常、ワークフロー内のアクティビティは表示されている順、つまり、上から下の順で実行
またはフローチャートの矢印に従って実行
ただし、制御フローのアクティビティでは、意思決定、ループ、および分岐を使用することによって実行のフローを分割し、アクティビティの特定のブロックを条件に応じて実行できるようにする

条件:西暦が 4 で割り切れる。例外として、西暦が 100 でも割り切れるが、400 では割り切れない場合は、うるう年ではない

❶[シーケンス ] を追加し、その表示名を「条件分岐を使用してうるう年を判定」として、注釈も追加

❷ユーザーから西暦の値を取得するために [入力ダイアログ ] アクティビティを追加

Int32 型変数を作成、[入力ダイアログ ] の [結果] フィールドに追加

❸ワークフローに [条件分岐 ] アクティビティを追加
表示名を「うるう年判定するための If 条件分岐」
[条件 ] フィールドに式を入力(VB.Net 構文)
((Year mod 4 = 0) and (Year mod 100 <>0)) or (Year mod 400 = 0)

[メッセージ ボックス] アクティビティを追加
[Then] 分岐に、メッセージ「うるう年です。」を表示するように設定
[Else] に「うるう年ではありません。」を表示するように設定

デバック→実行


リボンの [新規] > [フローチャート ] をクリック

ワークフローから [入力ダイアログ] アクティビティをコピーして、[開始] ノードに接続

Int32 型の変数「Year」を作成

[フロー条件分岐 ] アクティビティを追加し、[入力ダイアログ ] アクティビティをそれに接続

2 つの [メッセージ ボックス ] を追加して、
[フロー条件分岐] の [True] 分岐と [False] 分岐に接続

VB の If 演算子は、細かい局所的な条件やデータ演算に非常に役立ち、ブロック全体の処理を 1 つのアクティビティに集約できる場合もある
❶「うるう年判定シーケンス (Leap Year Sequence)」という名前を付け、シーケンスに [注釈 (Annotation)] を追加
❷[入力ダイアログ (Input Dialog)] アクティビティをコピーして変数「Year」を作成し、String 型の「Message」という新しい変数を作成

❸[代入 (Assign)] アクティビティを追加し、[To] フィールドに変数 Message を入力し、[Value] フィールドに VB の If 演算子を使用した式を入力
if(((Year mod 4 = 0) and (Year mod 100 <>0)) or (Year mod 400 = 0), "うるう年です。(This year is a Leap Year.)", "うるう年ではありません。(This year is not a Leap Year.)")

、[メッセージ ボックス (Message Box)] アクティビティを追加して、[テキスト (Text)] プロパティに変数 Message を入力



この記事が気に入ったらサポートをしてみませんか?