3.A.1. ウェブオートメーション

この例では、RPA Input Forms Challenge(http://www.rpachallenge.com/)が解決されます。

推奨通り、レコーダーは設計を円滑に進めるために使用されます。

その手順は以下の通りです。

  1. Excel ファイルをダウンロードしてください。

  2. Excel ファイルを読み込む。

  3. マップスタートボタン。

  4. データセットの行をループさせる。

  5. 各WebElementの入力フィールドに対応するハンドルを探します。

  6. Webページ内の必要事項をすべて入力してください。

  7. マップ送信ボタン。

3.A.1.1. Excelファイルをダウンロードする

Excel ファイルをダウンロードするには、OpenRPA.Utilitiesのツールボックス内にあるDownloadFileアクティビティを使用します。

アクティビティをデザイナ内のメインシーケンスにドラッグします。

...ボタンをクリックして、アーカイブを保存するファイルのパスを選択するか、アクティビティのプロパティタブにあるLocalPathパラメータを割り当てます。

取得したいアーカイブのURLを貼り付けます。URLはOpenRPAが文字列として取得するため、”"で囲む必要があることを覚えておくとよいでしょう。この例では、次のようなURLを使用しています。”rpachallenge.com/assets/downloadFiles/challenge.xlsx “です。

images/openrpa_rpa_challenge_downloadfile.png

3.A.1.2. Excelファイルを読み込む

ReadExcelアクティビティは、Excel ファイルから読み込んで、変数に保存します。

ここでのすべての手順は、「Excelファイルから読み込む方法」で目に見える形で説明されています。

Excelファイルから読み込む方法

OpenRPA.Utilitiesツールボックスの中にあるReadExcelアクティビティをメインシーケンスにドラッグします。

読み込むExcel ファイルを...ボタンで選択し、エクスプローラで読み込むシートがあるファイルパスを探します。

次に、...ボタンをクリックすると、エクスプローラーウィンドウが表示され、そこで使用するExcel ファイルを 選択します。

ReadExcelアクティビティは、このExcel ファイルを読み込んで、変数に保存します。

この変数はまだ存在しないので、最初に作成する必要があります。変数は必ずSystem.Data.DataSet.DataSetという型に設定しなければならないことに注意してください。プロパティ]タブ内のデータセット入力フィールドをクリックし、使用したい変数名を入力してCtrl+Kを押してください。

変数、引数、インポートボックスの中に変数を作成するか、以下の注意事項に従うか、どちらかです。

備考

OpenRPAは、アクティビティ/プロパティに必要な正しい型を持つ新しい変数を自動的に作成することができます。プロパティボックスに新しい変数を作成するには、変数名を入力し、キャレットを入力フィールドに入れたまま、Ctrl+Kを押します。

備考

DataSet オブジェクトはシート全体に対応する.各データテーブル(例えばSheet1)は,Excel ファイル内の各シートに対応する.DataSetクラスは、このExcel ファイル から 消費されるすべてのデータを保存するために作成された、一時的なインメモリキャッシュのオブジェクトです。DataSetクラスの詳細については、MicrosoftのDataSetクラスに関するドキュメント(https://docs.microsoft.com/en-us/dotnet/api/system.data.dataset?view=netcore-3.1)を参照してください。

備考

DataTable オブジェクトは、同じ名前のクラスからDataSet オブジェクトに含まれるインメモリデータの1つのテーブルに対応します。Excel ファイルを読み込むと、それは自動的にDataSetクラスに割り当てられ、すべてのシートは DataTableクラスに保存されます – 0からExcel ファイル内のシートの量に番号が付けられています。ここで、DataTableオブジェクトは大文字と小文字を区別することに注意してください。

3.A.1.3. スタートボタンをマップする

スタートボタンをクリックすると、チャレンジが始まります。

課題を開始するプロセスをマッピングするには、「Read Excel」アクティビティの下のスペースに対応する白い三角形をクリックするだけです。以下のステップに示すように、レコーダーを起動し、ブラウザ内の[開始]ボタンをクリックします。

備考

Recorderを使用するには、Chrome/Mozilla Firefoxのプラグインをインストールする必要があります。詳しくは、Chrome、Firefoxの項をご覧ください。

録音を停止するには、ESCボタンを押すだけです。

ここで注意していただきたいのは、録音を終了させないと、あなたが実行したすべてのアクティビティが延々と録音されてしまうということです。

images/openrpa_workflow_example_rpa_challenge_map_start_button.png
images/openrpa_workflow_example_rpa_challenge_map_start_button_click.png

Startボタンをうまくマッピングすると、ワークフローは次ページの最後の画像のようになるはずです。

images/openrpa_workflow_example_rpa_challenge_map_start_button_final.png

3.A.1.4. データセットの行をループさせる

さて、いよいよページ内の入力フォームに、Excel ファイル から 集めたデータを入力します。

OpenRPAツールボックスの中にあるForeach DataRowアクティビティをドラッグしてください。次に、Foreach DataRowアクティビティの内部で、System.ActivitesツールボックスからSequenceアクティビティをドラッグしてください。

前述のように、Read Excelアクティビティから割り当てられたDataSet内の各シートは、Tables属性内のコレクションとしてインメモリに保存されます。

Tables属性内の各シートは、Excel ファイル内のシートに応じて取得され、これらのシートは0から始まる番号が付いています。 例として、Excel ファイル内のDataTableに行を追加する場合、まずDataTable クラスのオブジェクトに割り当て、アクティビティを使用してテーブルに行を追加することになります。

各行を取得するには、取得したい行に0から始まる番号を1つの変数に代入するか、Foreach DataRowを使って各行を適宜自動的にループさせることができます。この例では、dsという変数にDataSetが代入されており、これがテーブルを取得するための変数となっています。シートが1つしかないので、ds.Tables(0)を使って、Foreach DataRowが値を取得するテーブルを代入しています。

行が取得されるDataTableを割り当てた後、列はForeach DataRowアクティビティの左側に割り当てられた変数内の属性にマッピングされることに注意してください – このケースでは、DataColumnの値を返すか設定するです。

Foreach DataRowループは基本的に、行内のすべての値( 名前 会社 、…) を繰り返し処理し、各フィールドが属する Web ページ内のXPathセレクタ アイテムに割り当てます。これにより、RPA Input Forms Challenge(http://www.rpachallenge.com/) ページ内の値が入力されるようになります。

備考

DataRow オブジェクトはDataTableからマッピングされた各行です。DataRowオブジェクトとそのプロパティ、メソッドを使用することで、ユーザーはDataTable内の値を取得、評価、挿入、削除、更新することができます。また、DataRowCollectionは DataTable内の実際のDataRowオブジェクトを表しています。DataRowCollectionにマッピングされた各カラムは、DataRowクラスオブジェクトの属性であるインデックスを使用して取得することが可能で、行内の1列目を取得する場合は、row(0)を使用します。DataRowクラスの詳細については、MicrosoftのDataRowクラスに関するドキュメント(https://docs.microsoft.com/en-us/dotnet/api/system.data.datarow?view=netcore-3.1)へのリンクを参照してください。

images/openrpa_workflow_example_rpa_challenge_loop_through_each_assign_row.png
images/openrpa_workflow_example_rpa_challenge_excel.png

3.A.1.5. 各WebElementの入力フィールドに対応するハンドルを探す

RPA Input Forms Challengehttp://www.rpachallenge.com/)のページにある各入力欄をRecorderでクリックすると、クリックされた各WebElementに対して最適なハンドルが簡単に見つかります。

このワークフローでは、WebElement の操作を行うため、通常は Element.ID、Element.Name、Element.ClassName などのハンドルが最適です。今回のケースでは、ng-reflect-name属性をXPathセレクタと一緒に使用して、指定された要素を捕捉する手段を提供します。

記録を開始したら、RPA Input Forms Challenge(http://www.rpachallenge.com/)ページ内の入力フィールドを1つクリックします。通常通り、最初のフィールド、つまりFirst Nameを記録し、その後他のフィールドに進むことをお勧めします。

images/openrpa_workflow_example_rpa_challenge_map_web_element.png

入力フィールドをクリックすると、InsertTextというタイトルのプロンプトウィンドウが表示されますので、そのままEnterキーを押してください。

images/openrpa_workflow_example_rpa_challenge_map_web_element_capture_input_field.png

現在の入力フィールドの記録を停止するには、ESCボタンを押すだけです。

ここで注意したいのは、録画を終了させないと、実行したすべてのアクティビティが延々と記録されることです。

すると、Foreach DataRowシーケンスの中に新しいOpenRPA.NM.GetElementアクティビティが表示されます。

images/openrpa_workflow_example_rpa_challenge_map_web_element_sequence_after_capture.png

各アクティビティーの名称は、ユーザーが対応する入力フィールドに変更することが望ましい。下の画像に示すように。

images/openrpa_workflow_example_rpa_challenge_finished_2.png

備考

アクティビティのパラメータで設定した名前(DisplayName)を変更するには、アクティビティの名前を2回クリックし、希望の名前を入力してリターンキーを押すか、プロパティボックスでパラメータDisplayNameを設定する方法があります。

備考

Recorder を使用して WebElement がクリックされ、OpenRPA がその WebElement が入力値を受け取ることができると判断した場合。プロンプトが自動的に表示され、ユーザーが文字列を入力すると、RecorderはWebElementに入力された文字列を入力するようにアクティビティを生成します。今のところ、ユーザーはこれらを無視して、プロンプトに任意のテキストを入力することができ、これらの割り当てられた値は、DataTabledsから値を取得するように置換されます。WebElement は自動的にitem変数に代入されます。

images/openrpa_workflow_example_rpa_challenge_assign_webelement.png
images/openrpa_workflow_example_rpa_challenge_highlight_webelement_handle.png
images/openrpa_workflow_example_rpa_challenge_recorder_insert_text.png

3.A.1.6. ウェブページ内の必須項目をすべて入力する

ハンドルのマッピングができたので、Excelシートで取得した行と列の値を割り当てます。

最初の入力フィールドはFirst Name RPA.UtiliesツールボックスにあるAssignアクティビティを使用して割り当てることができます。

左側でitem.Valueを使用してWebElementのプロパティにアクセスし、右側で必要な入力値 (First Name列の場合はrow(0).ToString) を使用します。

FirstNameは1列目にあるので、インデックス = 0です。

images/openrpa_workflow_example_rpa_assign_handle_activity.png
images/openrpa_workflow_example_rpa_assign_handle_value.png

備考

Assign」アクティビティは、変数に値を参照するために使用します。これを行うには、アクティビティーの左側に、値をマップする変数の名前、またはエイリアスを入力します。必要であれば、Ctrl+K を押して、自動的に変数を作成するか、手動で作成することができます。右側を使用して、変数に割り当てられる値を入力します。

備考

行の中のそれぞれの列の値はDataCellオブジェクトである。一時的にインメモリキャッシュとしてオブジェクトが作成され、それぞれの行の中の列の値が保存されます。さらに、Excelの値は文字列型でないオブジェクトである可能性があるため、安全性を考慮して常に文字列にキャストしておくとよいでしょう。セレクタが返すDOMオブジェクトもString型なので、item.Valueに代入する前にStringにキャストする、つまり型を変更する必要があります。これは、ToStringメソッドを使って行われます。

3.A.1.7. マップ送信ボタン

各項目(各行に対応)は、Submitボタンをクリックして入力した後、入力する必要があります。

各入力の入力プロセス(Submitボタンをクリックする)をマップするには、以下のステップのように、最後のAssignアクティビティの下のスペースに対応する白い三角形をクリックし、Recorderを起動し、ブラウザ内のSubmitボタンをクリックするだけです。

録音を停止するには、ESCボタンを押すだけです。

ここで注意したいのは、録画を終了させないと、実行したすべてのアクティビティが延々と記録されることです。

images/openrpa_workflow_example_rpa_challenge_map_submit_button.png
images/openrpa_workflow_example_rpa_challenge_map_submit_button_click.png

Startボタンをうまくマッピングすると、下の画像のようなワークフローになります。

images/openrpa_workflow_example_rpa_challenge_map_submit_button_final.png

3.A.1.8. ワークフローの完成

完成したワークフローは、以下のような順序になるはずです。

images/openrpa_workflow_example_rpa_challenge_finished_1.png
images/openrpa_workflow_example_rpa_challenge_finished_2.png
images/openrpa_workflow_example_rpa_challenge_finished_3.png
images/openrpa_workflow_example_rpa_challenge_finished_4.png
images/openrpa_workflow_example_rpa_challenge_finished_5.png
images/openrpa_workflow_example_rpa_challenge_finished_6.png

RPAチャレンジのワークフローを完成させました。

3.A.2. Windowsオートメーション

この例では、Skypeを使って、Windowsアプリケーションの自動化がいかに簡単であるかを説明します。

私たちの目標は、ユーザーに連絡先を聞いて、ロボットがSkypeに進み、指定された受信者に.PDF ファイルを 送信することです。

したがって、ここで公開されるOpenRPAの主な機能は以下の通りです。Detector、Form、Selector、そしてRecorderです。

この例は3つのステップに分かれています。 最初のステップはDetectorで、特定のフォルダに新しいファイルが作成されたかどうかをチェックします。 2番目のステップはFormで、受信者の連絡先(メール名前ユーザー名)をユーザーに尋ねます。 最後のステップはWindows Automation (Skype app)/ UsingSelectorで、ユーザーがSkypeコンタクトにメッセージとファイルを送信する手順を記録します。

Windows UIの自動化に関心がある場合は、Windows Automationのステップに直接進むことができます。

  1. ディテクター
    • OpenRPAでDetectorを作成する

    • Node-REDでDetectorノードを設定する。

    • Node-REDにおけるメッセージ操作

    • Node-REDからOpenRPAへの変数の受け渡し

  2. フォームです。
    • OpenRPAフォーム

  3. Windowsオートメーション(Skypeアプリ)/セレクタを使用する
    • タスクの記録

    • セレクタを設定する

3.A.2.1. 検出器

Detectorはイベントリスナーと同義語です。残念ながら、特定の条件が発生するのを待ち、Node-REDや OpenRPA自体にメッセージを発します。

このセクションでは、特定のディレクトリのファイル変更に耳を傾け、新しいファイルが作成されたときにイベントを発生させる、FileWatcher Detector の作成方法を学びます。この例では、新しいPDF/.pdf ファイルが 作成されるたびに、ロボットが発火するはずです。

OpenRPAでDetectorを作成する

まず、FileWatcher Detectorを設定する必要があります。

そのためには、まずOpenRPAのリボン内にある「設定」バーをクリックする必要があります。

images/openrpa_workflow_examples_windows_automation_click_settings.png

次に、リボン内の「Detectors」ボタンをクリックします。

images/openrpa_workflow_examples_windows_automation_click_detectors.png

その後、「検出器」リボン内の目的の検出器をクリックするだけです。

この例では、使用するDetectorは FileWatcherDetectorPluginです。Detector’sName– in our caseWindows Automationas well as thePathwhich it will listen to –C:\Usersviere╱Documents╱workflow_example_filesⒸwindows_automation_files,no quotes. Then set theFile Filterto*.pdf– the*is a wildcard for the filename, that’s, any filename will do.

images/openrpa_workflow_examples_windows_automation_detector_configured.png

備考

Detectorが見つからない場合、インストールされていることを確認してください。疑わしい場合は、インストーラー.msiを再度実行し、インストール中に含まれていることを確認するだけです。

備考

ワイルドカード(https://ryanstutorials.net/linuxtutorial/wildcards.php) は、ファイルやディレクトリのセットを定義するパターンを作成するための構成要素のセットです。覚えているように、コマンドラインでファイルやディレクトリを参照するときはいつでも、実際には文字列のパスを参照しています。パスを参照するときは常に、そのパスの中でワイルドカードを使用して、ファイルやディレクトリのセットに変換することもできます。

Node-REDでDetectorノードを設定する。

ここでユーザーは、Node-REDでDetectorノードを設定します。このノードは、DetectorがトリガーされたときにNodeRED メッセージの起点となります。

Node-RED内に新しいフローを作成します。フローはWindows Automation - Workflow Exampleと名付けます。

images/openrpa_workflow_examples_windows_automation_create_new_node_red_flow.png

次に、検出器ノードをワークスペースにドラッグします。

images/openrpa_workflow_examples_windows_automation_drag_detector_node.png

検出器ノードをダブルクリックして、そのプロパティを設定します。ドロップダウン・フィールドに表示される「Detector」を選択します。さらに、このノードに「Filepath Detector」などの名前を付けることもできます。フローを整理するために、そうすることをお勧めします。

images/openrpa_workflow_examples_windows_automation_set_detector_node_properties.png

Node-REDにおけるメッセージ操作

FileWatcher Detector が起動すると、NodeRED メッセージに filepath(作成されたファイルの名前)などの情報が渡されます。

images/openrpa_workflow_examples_windows_automation_set_debug_detector.png

このデータを取得し、ワークフロー起動時の引数としてロボットに渡すことが望まれます。引数は msg.payloadオブジェクトを通してロボットに渡すことを忘れないでください。 OpenRPA ワークフローは他の引数を必要としないので、FileWatcher Detectorノードを直接ロボットノードにプラグインすることが可能です。

OpenRPAのワークフローを呼び出す

ここに、OpenRPAワークフローに変数を渡して実行するロジックがあり、Detectorのポジティブシグナルによって起動されます。

ワークスペースにロボットノードをドラッグします。このノードによって、Windows 自動化ワークフローを呼び出すことができます。

images/openrpa_workflow_examples_windows_automation_connect_function_node_to_robot.png

もう一度言いますが、ノード名をInvoke Windows Automation Workflowと適切に命名することをお勧めします。

ワークフローを実行するロボット (または エージェント)と、実行するワークフローの名前(この例ではWindows Automation)をダブルクリックして指定します。Local Queueの項目は空白のままでも構いません。

images/openrpa_workflow_examples_windows_automation_set_robot_node_properties.png

ここで、ユーザーは画面左上の赤い「Deploy」ボタンをクリックして、作成したフローをデプロイする必要があります。

images/openrpa_workflow_examples_windows_automation_click_deploy_button.png

その後、OpenRPA ワークフロー内でCreate Argument をクリックして新しい引数を定義します。デバッグノードで見たように、渡されるパラメータはfilepathと呼ばれているので、引数も全く同じにする必要があります。引数は入力なので、そのDirectionを Inに設定します。

images/openrpa_workflow_examples_windows_automation_define_pathFile_argument.png

備考

Node-RED の使用を完全に避けたい場合は、先に定義した検出器を含む検出器アクティビティと共に、トライブロックによる無限ループアクティビティ(条件: true=true) を使用することをお勧めします。ユーザーは、Skypeコンタクトに送信されるファイルの固定ファイルパスを 割り当てるために、アクティビティ「Assign」を使用することもできます。ループを使用することで、反復が終了するたびに、ロボットは常に最初に戻り、Detectorがもう一度起動するのを待ち、何か異常が発生した場合には、トライブロックが ワークフローの実行を保証します。

3.A.2.2. フォーム

このセクションでは、Skypeアプリケーションを使用して添付ファイルとテンプレートメッセージを渡すために使用される、電子メールSkype コンタクトコンタクト 名を取得するフォームの作成方法について説明します。

OpenRPAフォーム

ここでは、ユーザーがクライアントから上記の値を収集するための動的なWPFフォームを作成します。

まず、Invoke Formulaスニペットをメインシーケンスにドラッグします。

ここで、「 デザイナーを開く」をクリックして、フォーム デザイナーを開きます。

images/openrpa_workflow_examples_windows_automation_click_open_designer_button.png

サンプルコードをすべて消去し、以下のコードスニペットをデザイナーのコードエディタに追加します。

<form>   <title>Skype Automation Form</title>   <heading>Invoice Details</heading>   <input type='string' name='email'         label='Email'         tooltip='Enter the email address here.'         icon='pencil'>      <validate must='NotBeEmpty' message='Email is mandatory' />   </input>   <input type='string' name='usernameSkype'         label='Skype contact' icon='pencil'         tooltip='Enter the Skype contact to which the file will be sent here.'>      <validate must='NotBeEmpty' message='Skype contact is mandatory' />   </input>   <input type='string' name='name'         label='Contact name' icon='pencil'         tooltip='Enter the contact name to which the file will be sent here.'>      <validate must='NotBeEmpty' message='Contact name is mandatory' />   </input>   <action name='submit' content='START SKYPE AUTOMATION' icon='check' validates='true' ClosesDialog='true' /></form>
images/openrpa_workflow_examples_windows_automation_openrpa_forms_filled_designer.png

もしあなたがHTMLやその他のマークアップ言語に慣れているなら、この舞台裏で何が起こっているのか理解できるかもしれません。そうでない場合は、OpenRPA Formsのセクションを参照してください。

フォーム作成ボタンを押すと、フォーム デザイナーの左側パネルにWPFフォームが作成され、プレビューを見ることができます。

その後、ユーザーは変数作成ボタンを押すことで、フォーム デザイナーの内部で定義されたすべての変数が自動的に作成されます。簡単でしょう?

images/openrpa_workflow_examples_windows_automation_openrpa_forms_create_variables.png

備考

OpenRPA Formsの使用を避けたい場合は、Assignアクティビティを使用して変数emailusernameSkypenameに値を割り当てるだけで、その値を使用して目的のクライアントに添付ファイルとテンプレートメッセージを送信することができます。

備考

フォーム デザイナーは、クライアントからの入力を収集するために、ユーザーが希望するWPFフォームを作成する場所です。その右側には、入力フォームのプレビューが表示される。その左側には、入力フォームを設計するために使用するコードを入力します。フォーム デザイナーにコードを追加した後、常にビルドフォームボタンを押して変更を保存し、プレビューを可視化することができます。

3.A.2.3. Windowsオートメーション(Skypeアプリ)/セレクタの使用方法のページです

さて、このワークフローの例では、これまでの旅の最大の山場がやってきました。内蔵のレコーダーは、このセクションで紹介したタスクを効果的に達成するために、ユーザーが通常行うタスクを記録するために使用されます。

タスクの記録

ここでは、Skypeアプリケーション内でコンタクトを検索し、そのコンタクトを選択(またはクリック)して、添付ファイルを含むメッセージを送信するという、通常行われる作業を記録します。

まず、Skypeのアプリケーションを起動します。

これで、Skypeアプリケーションを開いたまま、OpenRPAのリボン内のボタンをクリックしてOpenRPA内のRecorderを起動し、手動で行ったようにタスクを実行することができるようになります。

images/openrpa_workflow_examples_windows_automation_skype_app_click_recorder.png

レコーダーを起動した状態で、「人、 グループ メッセージ」のプレースホルダーがある「検索」タブをクリックする必要があります。

images/openrpa_workflow_examples_windows_automation_skype_app_click_search_tab.png

検索」タブ内に、プレースホルダー「Search Skype」を含む入力フィールドが表示されます。その入力フィールドをクリックすると、InsertText入力フィールドが表示されます。ユーザは、このセクションで適切なセレクタを割り当てるためのダミーとして使用される既存のコンタクトを入力する必要があります。Skypeのオートコンプリート機能がユーザーを見つけるのを待ってから、ユーザーは目的のコンタクトをクリックする必要があります。

images/openrpa_workflow_examples_windows_automation_skype_app_search_tab_input_field.png
images/openrpa_workflow_examples_windows_automation_skype_app_search_tab_input_field_filled.png

連絡先をクリックすると、その連絡先の「メッセージ」タブが表示されます。

ここでユーザーは、右下のセクションにある「 ファイルの追加」ボタンをクリックする必要があります。

images/openrpa_workflow_examples_windows_automation_skype_app_click_add_file_button.png

ここでファイルダイアログが表示され、ユーザーは希望のファイルを選択できます。また、InsertTextというタイトルのOpenRPAからの入力ダイアログが表示され、ここで再びダミーテキストを挿入できます。セレクタはこのダイアログを操作して、次のセクションで見るように、送信されるファイルを選択します。そして、「開く」ボタンをクリックします。

images/openrpa_workflow_examples_windows_automation_skype_app_select_file.png

ここで「Type a message」プレースホルダーを含む入力フィールドをクリックすると、「InsertText」というタイトルの別の入力ダイアログが表示されます。ここで再び、任意のダミーテキストを入力することができます。

images/openrpa_workflow_examples_windows_automation_click_type_a_message.png

その後、青色の送信ボタンをクリックしてください。

images/openrpa_workflow_examples_windows_automation_click_send_button.png

最後に、検索タブ内の×ボタンをクリックして検索ダイアログを閉じ、ESCボタンを押してレコーダーを終了します。

images/openrpa_workflow_examples_windows_automation_skype_app_close_search_tab.png

セレクタを設定する

これで、OpenRPAのデザイナー内に登場した多くのGetElementアクティビティのSelectorが設定されました。

まず、Skypeアプリケーションペイン内で最初にクリックされる要素に対して、最初のセレクタを設定します。これは、People, groups & messagesのプレースホルダーを持つものです。このケースでは、ワークフローに関心を持つ可能性のあるサードパーティによる表示プロセスを容易にするために、その表示名を Search for people, groups & messages から Search Contact GetElementに変更しました。

特定のフィールド用に生成されたGetElementアクティビティ内の [セレクタを開く] ボタンをクリックします。

images/openrpa_workflow_examples_windows_automation_skype_app_people_groups_messages_selector.png

この画像では、ユーザーは入力されたダミーユーザー名に対応する「Type Text」アクティビティに気づきます。次のステップで別のアクティビティに置き換えられるので、ユーザーはワークスペースからそのアクティビティを削除することができます。

新しいウィンドウでハイライトボタンをクリックしても、Skypeアプリケーションのウィンドウを開いたままでは、画面内のどの要素もハイライトされないことにお気づきでしょう。そこで、指定された要素を手動で選択する必要があります。

そのためには、まず、Pane Skype->Document Skype XXXXXXXXXX->Button Search for people, groups & messages という要素をダブルクリックし、この最後の要素を右クリックして、表示されるSelect Elementボタンをクリックします。下図は、この要素を強調表示したものです。

images/openrpa_workflow_examples_windows_automation_skype_app_people_groups_messages_selector_element_highlighted.png

ここで、最初のセレクタのファイル名属性を変更します。"%ProgramFiles%﹑Microsoft.SkypeApp_15.61.100.0_x86__XXXXX﹑Skype.exe" で、skypeのバージョンとその次のハッシュ(ここでは{XXXXX} として指定)をトリミングします。これを行うには、“%ProgramFiles%⇄WindowsApps⇄Microsoft.SkypeApp_*”“¹に変更するだけです。

これで、ユーザーは4番目のセレクタの選択も解除しなければなりません。ここまでの変更はすべて下の画像に示されています。

images/openrpa_workflow_examples_windows_automation_skype_app_people_groups_messages_selector_finished.png

その後、画面左下の「Ok」ボタンをクリックするだけです。アクティビティ内のHighlightボタンをクリックして、適切なセレクタが設定されているか、再度確認することをお勧めします。

ここでユーザーは、「検索」タブ入力のキャプチャを担当するGetElementアクティビティ内で、上記と同じ手順を実行する必要があります。Pane Skype->Document Skype XXXXXXXXX->Edit Search Skype.で要素を選択します。ここで重要なのは、セレクタを開く前にSkypeアプリケーション内にSearchタブが表示されていなければならないということです。

images/openrpa_workflow_examples_windows_automation_skype_app_search_tab_selector_finished.png

また、ユーザーは、現在のGetElementアクティビティ内のAssignアクティビティの右側の値を、希望する連絡先のユーザー名を保持する変数に変更する必要があります。この例では、フォームのセクションで定義したとおり、usernameSkypeがその変数になります。

images/openrpa_workflow_examples_windows_automation_skype_app_search_tab_assign_properties_tab.png

ここでユーザーは、ワークフローに「Delay」アクティビティを追加しま す。Delayの Durationプロパティを00:00:05に設定し、この遅延が5秒間継続することを意味します。これは、Skypeアプリケーションに組み込まれたオートコンプリート機能のため、明示的に必要です。これは、ロボットが次のステップに進む前にオートコンプリート機能が完了するのを待たなければならないという、ハードコードされた制約です。

images/openrpa_workflow_examples_windows_automation_skype_app_delay.png

次に、ユーザーは、ContactボタンをキャプチャするGetElementアクティビティ内で、上記の手順を繰り返す必要があります。 Pane Skype->Document Skype XXXXXXX->Group PEOPLE->Button {Contact Name}, {Status}, {Chatted Last}, {Skype Name}– すなわち、この例ではPaulo Veras,Away,Chatted 23 minutes ago,Skype Nameを選択します。 ここで重要なのは、セレクタを開く前にSkypeアプリケーション内にContactボタンが表示されていなければならないということです。これによりOpenRPAはContactボタンをウィンドウ内の要素として認識することができます。以下は、セレクタが正しく設定され、ボタンが強調表示された画像です。

images/openrpa_workflow_examples_windows_automation_desired_contact_selector_finished.png
images/openrpa_workflow_examples_windows_automation_desired_contact_selector_highlighted.png

ContactボタンをキャプチャするGetElementアクティビティに含まれるClick Elementアクティビティ内のPost Waitプロパティを使用して、ポストウェイトを追加してください。 この値は、00:00:02に設定する必要があります。ポストウェイトを使用すると、Skypeウィンドウの左ペインに表示される目的のコンタクトボタンをクリックした後、アプリケーション自体がメッセージタブをロードするのを待ちます。ポストウェイトを追加したため、Delayアクティビティは必要ありません。

ユーザーは、残りのアクティビティに対して適切なセレクタを選択するために指定された手順を繰り返し、適切に構成されたときに画面内の要素がハイライトされることを保証する必要があります。要素を正しく選択するために、[Add file]ボタンでウィンドウを開く必要があるかもしれないことを覚えておいてください。

次に、Skypeアプリで送信するファイルのfilepathに適切な値を設定します。ファイルパスが設定される入力フィールドに対応する各アサインアクティビティ内で、適切な値を割り当てます。引数をまだ作成していない場合は、今すぐ作成します。引数の 方向は Inに設定する必要があることを忘れないでください。以下は、この引数を適切に設定する方法です。

images/openrpa_workflow_examples_windows_automation_set_filepath_inside_getelement.png

最後に、GetElementアクティビティに含まれるAssignアクティビティで、Pane Skype->Document Skype XXXXXXX->Edit a message 対応するセレクタ内の要素について、設定が正しいかどうかを確認し、 item.valueを item.SendKeys に変更します。

ユーザーがこれを控えた場合、OpenRPAはSkypeの編集フィールドの値を変数templateMessageの内容に直接設定しようとします。問題は、そのことです。Skypeはそれを好まないのです!Skypeアプリは、ユーザーがエディットフィールドの値を直接変更する代わりに、一文字ずつ入力することを想定しています。そうしないと、実際のテキストメッセージの上にプレースホルダー「Type a message ” 」が表示されて、UIがめちゃくちゃになります。

一文字ずつ入力するユーザーを模倣するには、item.SendKeysメソッドを使用するのが正しい方法です。

Detectorが適切に設定されていれば、ユーザーは以前に定義されたディレクトリ内に.PDFファイルを挿入して、ワークフロー例をテストすることができます。そうでなければ、以下の注意事項に従うことができます。

備考

このワークフロー例の最初のステップで見たように、ユーザーがFileWatcherDetectorPluginから取得するfilepath引数を設定していない場合、ユーザーはAssignアクティビティを使用して手動でその値を設定する必要があります。

備考

アクティビティのパラメータ内の名前(DisplayName)を変更するには、アクティビティの名前を2回クリックし、希望の名前を入力してリターンキーを押すか、プロパティボックス内のパラメータDisplayNameを設定することができます。

備考

ワイルドカード(https://ryanstutorials.net/linuxtutorial/wildcards.php) は、ファイルやディレクトリのセットを定義するパターンを作成するための構成要素のセットです。覚えているように、コマンドラインでファイルやディレクトリを参照するときは常に、実際にはパスを参照しています。パスを参照するときは常に、パスの中でワイルドカードを使用して、ファイルやディレクトリのセットに変換することもできます。

3.A.3. 画像検索/OCR

この例では、ファイルから読み込んだ画像に対してOCRを実行し、その結果を検証基準に照らしてチェックすることができます。

このワークフローの例では、アクティビティの範囲を狭めるために、検出された文書が運転免許証かどうかをチェックすることだけを目的としています。

検証方法は以下の通りです。画像内に「DRIVER」という文字があれば、OpenRPAはこのドキュメントを確かに運転免許証であると判断します。

備考

よく知られているように、OCRはテキストの読みやすさと画質の両方が成功率に重要な役割を果たすため、100%成功することを保証するものではありません。

3.A.3.1. ファイルから画像を読み込む

Load From File]アクティビティをメインシーケンスにドラッグします。

...ボタンをクリックして、読み込む画像を選択します。

プロパティ] タブを開き、Resultパラメータに変数を割り当て、アクティビティで作成されたImageElementを格納します。

何らかの要素を返すアクティビティから取得したものはすべて、自動的に項目の要素にマッピングされることをユーザーに思い出させるのに便利です。

備考

OpenRPAは、アクティビティ/プロパティに必要な正しい型の新しい変数を自動的に作成することができます。プロパティボックスで新しい変数を作成する場合、変数名を入力した後、入力フィールド内にキャレットを置いたまま、Ctrl+Kを押します。

images/openrpa_workflow_example_image_search_ocr_load_from_file.png

3.A.3.2. テキストを取得する

テキストを取得]アクティビティを[ファイルから読み込む]アクティビティ内のシーケンスにドラッグします。

images/openrpa_workflow_example_image_search_ocr_get_text.png

3.A.3.3. 評価

Ifアクティビティを、Get Textアクティビティの内側のシーケンスにドラッグします。ここでユーザーは検証ロジック全体を実装することになります。

条件入力フィールドの中に、item.Value.Contains("DRIVER")を挿入します。ここでは、Get Textアクティビティを使用して取得したテキスト、つまりitem.Value内にDRIVERという単語が含まれているかどうかがチェックされます。

Ifアクティビティ内のThenシーケンスにAssignアクティビティをドラッグします。 変数containsDriverLicenseTrue に代入します。これは、ワークフローがDRIVER を含む値のインスタンスを見つけた場合、変数containsDriverLicenseの値を自動的にTrue に変更することを意味します。Elseシーケンスには何も含まれていないため、実行は継続されます。

備考

Assign」アクティビティは、変数に値を参照するために使用します。これを行うには、アクティビティーの左側に、値をマップする変数の名前、またはエイリアスを入力します。必要であれば、Ctrl+K を押して、自動的に変数を作成するか、手動で作成することができます。右側を使用して、変数に割り当てられる値を入力します。

images/openrpa_workflow_example_image_search_ocr_if_clause.png

3.A.3.4. お知らせを表示する

次に、「通知を表示」アクティビティをメインシーケンスの最後にドラッグします。これは、バリデーションが成功したかどうかをユーザーに示す方法です。

アクティビティーのダイアログまたはプロパティボックスの メッセージ入力フィールドに、"Is the document a Driver's License? " + containsDriverLicense.ToString.Message” というテキストを挿入します。

ここでは、boolであるcontainsDriverLicenseの値を文字列にキャストして、Show Notificationアクティビティで印刷できるようにしています。

images/openrpa_workflow_example_image_search_ocr_show_notif.png

3.A.3.5. ワークフローの完成

ワークフローを実行した後のプレビューです。出力ウィンドウは、データを表示するために当然切り離されています。

images/openrpa_workflow_example_image_search_ocr_finished_1.png
images/openrpa_workflow_example_image_search_ocr_finished_2.png
images/openrpa_workflow_example_image_search_ocr_finished_3.png
images/openrpa_workflow_example_image_search_ocr_finished_output.png