1
/
5

UiPathのRPAチャレンジ「Shortest Path」の解き方

こんにちは!PLAYのマイカです^^

本日がPLAYのnote転載最終回になります!

どうぞお楽しみ下さい♪


今回は、UiPathのRPAチャレンジ「Shortest Path」の解き方を共有します。なお、本問題がRPA×AIの領域な事もあり(※)、中上級者の方を想定して記事を書きます。

※Google Cloud Vision OCRを使います。

【問題】

以下手順を地図上の赤いボタンがなくなるまで実行せよ、という問題です。

1.人が地図上の赤と緑のボタンを押す。

2.赤と緑のボタンに対応した詳細情報を左側のフォームに転記する。

3.Submit Formを押してContractに情報を転記する。

4.Createを押して入力データを送信する。

初期状態


赤と緑のボタンを押した後の状態


Submit formを押した後の状態


【解き方】

まず全体の処理の流れをフローチャート上に落とし込みます。

・最初に赤と緑のボタンが押された事を検知する、「シーケンス」アクティビティを追加します。

・「フロー条件分岐」アクティビティで、赤と緑のボタンが押された場合、DemandとSupplyの処理をし、そうでないなら処理を終了します。(判定する変数はBoolean型のcanBeExecuted)

・上記手順でエラーがなければ、提出処理を実行し、エラーがあれば処理を最初から実行するようにします。(判定する変数はBoolean型のnoError)


赤と緑のボタンを押したか判定するシーケンスの中身を作成します。

・「ブラウザにアタッチ」アクティビティで、処理対象の画面をUiPathに認識させます。

・「代入」アクティビティで、変数noErrorを初期化します。

・「要素を探す」アクティビティで、DemandのNameを指定し、赤のボタンを押した後か検知します。(出力変数はdemandName、30秒でタイムアウトとします。)

・「要素を探す」アクティビティで、SupplyのNameを指定し、緑のボタンを押した後か検知します。(出力変数はsupplyName、30秒でタイムアウトとします。)


・「条件分岐」アクティビティと「代入」アクティビティで、赤と緑のボタンを押した後では、canBeExecutedをTrueに変更します。


次に、demand処理のシーケンスの中身を作成します。

・「ブラウザにアタッチ」アクティビティで、UiPathに画面を読み込ませます。

・「テキストを取得」アクティビティで、NameのDetailsを取得します。(出力変数はDemand_Name)

・「データスクレイピング」アクティビティで、Detailsを取得します。(Demandは画像なので取得不可、出力変数はDemand_DataTable。)


・「繰り返し」と「OCRでテキストを取得」アクティビティで、Demandの全画像を読み込みます。画像の読み取り結果は、Demand_Keyとし、OCRはGoogle Cloud Vision OCRを利用します。(条件内の Demand_indexNumberの初期値は3)


「OCRでテキストを取得」アクティビティのセレクタは以下の通りです。


・「条件分岐」と「代入」アクティビティで、画像の読み取り結果(Demand_Key)に応じて、Demand_DataTableのDetailsの値を変数に格納します。


なお、「代入」アクティビティの右辺は以下の通りです。


Cargo preferenceやZip Code等他の値も、「条件分岐」と「代入」アクティビティで、画像の読み取り結果(Demand_Key)に応じて、Demand_DataTableのDetailsの値を変数に格納します。


Demandデータの取得は以上です。これからはDemandデータの入力処理をします。

・「文字を入力」アクティビティで、Cargo_Description、ShipDate、Name、Address、Address-2、City、Zipに情報を入力します。


・「条件分岐」「アンカーベース」「要素を探す」「チェック」アクティビティで、Permit RequiredとUrgentのチェックボタンに処理を実行します。

なお、「チェック」アクティビティの操作プロパティが「Check」だと、ボタンに✔が入り、「UnCheck」だと✔が外れます。


・「アンカーベース」「要素を探す」「クリック」アクティビティで、ラジオボタンを選択します。


なお「要素を探す」アクティビティのセレクタは以下のように設定し、Demand情報に応じて探す要素を変更します。


・「項目を選択」アクティビティで、Stateを入力します。

Demand処理は以上です。

Supply処理は、前述のDemand処理と殆ど同一なので割愛し、ここからは提出の処理を作成します。

・「クリック」アクティビティで、Submit Formをクリックします。

・「テキストを取得」アクティビティで、Contract Numberを取得します。

・「文字を入力」アクティビティで、Contract Numberを入力します。

・「クリック」アクティビティで、Createをクリックします。


これで、実装は一通り完了です。

実行します。


精度80%ですが、これはOCRの読み取り精度によるものなので、一旦良しとしましょう。

以上です、お疲れさまでした!

PLAY株式会社's job postings

Weekly ranking

Show other rankings