■サイト内検索:
Japan IT Week【春】後期 2019年5月8日(水)〜5月10日(金)@東京ビックサイトAI・業務自動化展 にてRPA導入無料相談会開催!当日の優先ご予約受付中!!不動産・地方自治体・金融・ECなど広くご相談いただいています!!
 

RPA Biz > RPA開発Tips > ステートマシン と ステートアクティビティ

ステートマシン と ステートアクティビティ

2018.12.27

 

 

【ふたつのアクティビティ】

UiPath のステートマシンとステートアクティビティについて調べます。

 

 

UiPath Studio のスタート画面から、

Robotic Enterprise Framework を選択してプロジェクトを作成すると、

 

 

 

 

このようなテンプレートが表示されます。

 

一見、複雑に見えますが、落ち着いてアクティビティのアイコンをよく見てみると、2種類しかありません

 

アクティビティのアイコンの中に、♂マークをひっくり返したような絵が描かれているのが、ステート (State) アクティビティ、四角を円で囲んだ絵が描かれているのが、最終ステート (Final State) アクティビティです。 

 

 

ステートマシンは、これら2つのアクティビティにより構成される、特殊なフローチャートのようなものです。

 

まずは、アクティビティの使い方から調べていきましょう。

 

 

【ステートアクティビティの構成】

UiPath Studio の新規メニューから、ステートマシンを選択してプロジェクトを作成します。

 

アクティビティ検索ボックスに「state」と書くと、目的のアクティビティが表示されます。

 

ステートアクティビティをドラッグ・アンド・ドロップして、Start につなげます。

 

 

 

 

テンプレートにあったステートアクティビティとは少し見た目が違いますが、気にせずダブルクリックして、中身を確認します。

 

 

 

ステートアクティビティが、EntryExitTransition(s) の3つの要素で構成されていることがわかります。

 

 

【ステートアクティビティ:Entry

ステートアクティビティの Entry の部分には、フローがこのアクティビティに到達したときに最初に行うアクションを書きます。

 

Entry にアクティビティを設定すると、省略形の方のステートアクティビティの見た目に、変化が現れます。

 

 

 

左下に、円に矢印が入っていくようなアイコンが追加され、Robotic Enterprise Framework テンプレート内のステートアクティビティと同じ見た目になりました。

 

このアイコンがあるということは、Entry に、何かアクションが設定されている、ということになります。

 

 

 

【ステートアクティビティ:Exit

次は、Exit の部分です。

Exit には、このアクティビティから抜けていくときに実行するアクションを設定します。

 

Entry のときと同じように、Exit にアクションを設定した場合も、ステートアクティビティの見た目が変化します。

 

 

 

 

円から矢印が出ていくようなアイコンが表示されます。

 

Robotic Enterprise Framework テンプレートでは、どのステートアクティビティも Exit が空になっていたため、このアイコンは表示されていませんでした。

 

 

 

【ステートアクティビティ:Transition(s)

ステートアクティビティにマウスをかざして動かすと、他のアクティビティと線をつなぐためのソケットがたくさんあることがわかります。

 

試しに、ステートアクティビティ自身に線をつなげてみましょう。

 

 

 

つなげた線に、T1 という名前が自動的に付けられました。この線が Transition です。

 

ステートアクティビティをダブルクリックして、Transition(s) の部分を見ると、

先ほど作成した T1 が表示されています。

 

 

 

T1 をクリックして、中身を見てみます。

 

 

 

 

Transition には、トリガー、条件判定、条件を満たしたときに実行するアクションを設定できます。

 

最初に見たテンプレートでは、ひとつのステートアクティビティから Transition が何本も出ていました。

ここでも、いくつか追加してみて、それらがどのように表示されるか確認します。

 

 

T2 を追加してから Transitions(s) を見ると、T1 の下に T2 が追加されました。

 

 

 

 

このように、新しいものほど下に表示されます。

 

ちなみに、線の接続位置をずらすと、「再設定された」とみなされるらしく、その Transition は一番下に移動してしまいます。

 

次は、線の根元が T2 と同じようになるように T3 を追加してみます。

 

 

 

T3 をダブルクリックして、中身を確認します。

 

 

 

 

T3 だけでなく、T2 の遷移条件判定とその後のアクションも表示されています。

 

このように、複数の Transition の根元を同じにすると、Trigger を共有することができます。

 

Trigger を共有している場合、Condition の右上あたりに、青い矢印(↑、↓)が表示されます。

 

この矢印をクリックすると、順番を入れ替えられます。

 

 

条件と順番をうまく調整すれば、最後の Transition Switch アクティビティの Default のように扱うことも可能です。

 

 

 

【ステートアクティビティ内の順番】

ステートアクティビティでは、次のような順番で処理が行われます。

 

Entry Transition Trigger Transition Condition Exit Transition Action

 

Exit が最後ではないという点に注意しましょう。

 

 

 

【最終ステートアクティビティ】

最終ステートアクティビティは、フローの最終地点に配置するアクティビティです。

 

他のステートアクティビティの Transition の宛先として設定できます。

 

とてもシンプルで、Entry しかありません。

 

 

 

ちなみに、フローの開始地点となる Start から出る線は、Transition ではないので、Start と最終ステートアクティビティを直接つなぐことはできません。

 

 

 

【練習】

アクティビティに慣れるため、以下のようなステートマシンを作成します。

 

  • ユーザーにフォルダーをひとつ選択してもらう。
  • 選択されたフォルダーをエクスプローラーで開く。
  • 選択されたフォルダーの中にあるテキストファイルを監視する。
  • 選択されたフォルダーの中で、テキストファイルの作成、削除、名前変更が行われたら、メッセージを表示する。
  • 選択されたフォルダーが閉じられたら、終了する。

 

 

UiPath Studio の新規メニューから、ステートマシンを選択します。

 

フローを作るときの順番はいろいろあると思いますが、今回は、すべてのステートアクティビティを並べてから、中身を編集することにしました。

 

 

 

 

先頭の「フォルダー選択」ステートから編集していきます。

Entry に、「フォルダーを選択 (Select Folder)」アクティビティを追加します。

 

 

 

 

後続の処理で、フォルダー名を利用することになるので、ここで取得しておきます。

 

 

 

 

Exit に、選択されたフォルダーをエクスプローラーで開く設定を行います。

Transition には何も設定せず、ただの線として使用します。

 

 

 

 

「イベント監視」ステートでは、イベントが発生したら、次のステートに遷移するように設定します。

 

ファイル変更トリガー (File Change Trigger)」と「システムトリガー (System Trigger)」を使用します。

 

 

ファイルの新規作成を監視するトリガーから作っていきます。

 

Trigger に「イベントを監視 (Monitor Events)」アクティビティを追加し、「無限に繰り返す」オプションを False にします。

 

 

 

 

ファイル変更トリガーを追加し、対象フォルダーのテキストファイルに関する Created イベントだけを検知させます。

 

イベントハンドラーの中では、次のステートに渡すメッセージを設定します。

 

 

 

 

名前変更と削除のトリガーも同様に作成します。

 

フロー終了のきっかけとなる、クリックイベント検知も作成しましょう。

 

システムトリガーを使って、マウスやキーボードの入力に反応できるようにします。

 

 

 

 

「メッセージ表示」ステートは、「イベント監視」ステートから受け取ったメッセージを表示するだけなので、Entry にメッセージボックスを追加したら終わりです。

 

 

「フォルダー存在確認」ステートでは、選択されたフォルダーが、表示されていることを確認します。

 

Entry に「要素の有無を検出 (Element Exists)」アクティビティを追加し、選択されたフォルダーが存在するか調べ、結果をBoolean 型変数に格納します。

 

タイムアウト値を好みの値に設定します。

 

 

 

 

この結果を、Transition Condition で使用します。

  

最終ステートに、「メッセージ表示」ステートで設定したメッセージボックスをコピペすれば完成です。

 

 

 

【ステートマシンを作ってみた感想】

処理の流れを状態の遷移として捉えて作成していくのが、面白かったです。

 

開始から終了まで状態が変わっていく様を、あらかじめイメージしておくことが、大事です。

 

 

  

【おまけ:吹き出しアクティビティ】

練習で作ったステートマシンを実際に動かしてみると、ファイルを作成したりするたびに、「メッセージ表示」ステートの部分で毎回 OK ボタンを押すことになるのが、面倒くさく感じました。

 

メッセージは表示してほしいけれど、いちいち OK ボタンを押したくない、そんなときは、メッセージボックスの代わりに、「吹き出し (Callout)」アクティビティを使います。

 

 

 

 

セレクタや要素で指定したところから漫画の吹き出しのようなものを出し、メッセージを表示する機能で、表示時間をミリ秒単位で設定できます。

 

 

 

 

表示時間中でも、OK ボタンを押せば、消えてくれます。状況によってメッセージボックスと使い分けましょう。

 

 

 

 

 

Japan IT Week【春】後期 2019年5月8日(水)〜5月10日(金)@東京ビックサイトAI・業務自動化展 にてRPA導入無料相談会開催!当日の優先ご予約受付中!!不動産・地方自治体・金融・ECなど広くご相談いただいています!!
topへ
© RPA.biz