OpenRPA の各ワークフローには、作成時に割り当てられたワークフロー ID
があります。 ワークフロー ID を
取得するには、 OpenRPA
を 起動 し
、 ワークフロータイトルを 右 クリック
し
、
「Copy ID
」を クリック
するだけ
です。
OpenIAPカテゴリー: 3. OpenRPA
3.8.2. ワークフローをローカルで実行する
このセクションでは、PowerShellを
使用してローカルにワークフローを実行する方法について説明します。
まず、PowerShellの
プロンプトを開きます。
以下のコマンドを実行します。WORKFLOW_ID}には
、実行したいOpenRPA Workflowのワークフロー IDを
指定します。例えば、5f8dfaf243e8cf24d4c25dcdという
idの
ワークフローを実行したい場合は、以下の2番目のコードブロックに従って、コマンドを実行します。
Start-Process -FilePath "C:\\Program Files\\OpenRPA\\OpenRPA.exe" -ArgumentList "-workflowid ${WORKFLOW_ID}"
Start-Process -FilePath "C:\\Program Files\\OpenRPA\\OpenRPA.exe" -ArgumentList "-workflowid 5f8dfaf243e8cf24d4c25dcd"
ここでは 、
Start-Process(https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7)
コマンドレット´`を 使用
します。 コマンドレットが
何か
わからない
場合は
、「コマンドレットの概要(https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/cmdlet-overview?view=powershell-7)
」のページを参照してください。
そして、OpenRPAはOpenFlow上でワークフローを起動したかのように、あるいはOpenRPAのリボン内の再生ボタンをクリックしただけで実行されるようになります。
3.8.3. ワークフローをローカルで実行するようにスケジューリングする
このセクションでは、指定した期間に常に実行されるワークフローをスケジュールする方法について説明します。
まず、Windows 10の検索バーで「 タスクスケジューラー
」を検索する必要があります。
タスクスケジューラーを
開いたら、「 タスクの作成
」をクリックします。
ここで、ユーザーは、タスクに
必要な名前と
その説明を
入力する必要があります。
次に、タスクの
トリガー時に実行される「アクション
」を選択する必要があります。アクション]
タブをクリックし、[新規
…]ボタンをクリックします。
ここで、ユーザーは実行するプログラム
(OpenRPA)を選択する必要があります。そのためには、Browse
…ボタンをクリックして、OpenRPAのインストールフォルダ(デフォルトはC: \Program FilesOpenRPA
)に移動し、OpenRPA.exeの
実行ファイルを選択する必要があります。
次に、「 引数の追加 (オプション):
」入力フィールドに、ユーザーは/workflowid ``
の 後に
、
実行したいワークフローの ``id`
を
挿入する必要があります。この場合、ワークフローの ID は5f9d10719fad3056ccd42714
ですので、作者はこのフィールドに/workflowid 5f9d10719fad3056ccd42714
を挿入しました(下の画像でご覧いただけます)。
Start in (optional):
パラメータにOpenRPAのインストールフォルダ(デフォルトはC: \Program FilesOpenRPA
)を設定する必要があります。3つのパラメータを設定したら、最後にOKボタンをクリックして、タスクが
実行するアクションの
設定を完了します。
最後に、ユーザーはタスクの
実行を有効にするトリガーを
設定します。トリガー]
タブをクリックし、[新規作成]ボタンをクリックするだけです。
ユーザーは、タスクの
実行を開始するイベントを
選択できます。ここでは、デフォルトで設定されている[ スケジュール
]イベントのみを取り上げます。
まず、ワークフローを「1 回
だけ
」「毎日
」「毎週
」「毎月
」のどれで実行するかをチェックボックスで選択します。
次に、カレンダーセレクタでワークフローを開始
する日時を選択します。
また、ユーザーはいくつかの詳細 設定を
選択することができます。例えば、タスクを
「遅延」
、「繰り返し」、 「停止
」、「期限切れ
」にするかどうか、また、一時的に「有効」
または「無効」にするかどうかを選択することができます。トリガー
設定を終了した後、ユーザーはOkボタンをクリックして変更を保存し、もう一度クリックしてタスクの
設定を終了する必要があります。
最後にタスクが
実行され、OpenRPAはタスクが正常に完了したこと、または失敗したことを警告する通知を表示します。
3.9.1. Chrome、Firefox
Chrome、Firefox、Edgeのプラグインは、これらのブラウザでアクティビティを記録するために必要です。プラグインがないと、そこで行われたアクティビティを記録
することができません。
また、OpenRPA.NMツールボックスのすべての機能は、これらのプラグインのインストールに依存しています。
インストールは極めて直感的な操作で行うことができます。OpenRPAGUIの上部リボン、Settings
タブに、各ブラウザのアイコンが表示されます。それをクリックすると、対応するアプリストアが開きます。
Google Chromeを使用している場合、新しいタブでChrome App Storeのページが表示されます。ユーザーは、「Chromeで使用する」をクリックします。ポップアップメッセージが表示され、インストールを確認することができます。
Firefoxを使用している場合、新しいタブでFirefoxアドオンページが表示されます。その後、「Firefoxに追加」をクリックします。その後、ポップアップメッセージが表示され、インストールを確認することができます。
Edgeを使用している場合、新しいタブでChrome App Storeが開きます。EdgeにChrome拡張機能をインストールしたことがない場合、他のストアの拡張機能をEdgeにインストールすることを許可するかどうかを確認するポップアップが表示されます。ユーザーは「Allow extensions from otherstores」ボタンをクリックし、「Add to Chrome」ボタンをクリックして、Edge用のOpenRPAプラグインをインストールする必要があります。
これらのプラグインは、OpenRPAがそれらのウェブブラウザの情報にアクセスするために存在するだけであることに留意してください。これらのプラグインは、データを取得すること自体に責任を負うものではありません。また、これらのプラグインは、OpenRPAの正常な機能を損なうことなく、いつでも削除することができます。
備考
これらのプラグインは、それぞれのアプリストアから直接インストールする必要があります。オフラインで手動でファイルを転送してインストールすることはできません。
3.9.2. AVIレコーダー
AVI Recorderは、ワークフローの実行を記録するために使用されます。このプラグインは、時折失敗するワークフローをデバッグする際に、何が起こっているのか実行状況を注意深く観察することが困難な場合に非常に便利です。
OpenRPAリボン内の設定タブで、プラグインの実行をクリックします。AviRecorder
を選択し、Enabled
チェックボックスをマークして、録画の保存
先
フォルダパスを
設定します。
デフォルトでは、OpenRPAは失敗したワークフローの実行記録のみを保持します(プロセス自体の失敗または他のアクティビティによって強制されたため)。成功したものも失敗したものも含めて、すべての実行を記録したい場合は、 成功したものを残す
チェックボックスをオンにします。
さらに、コーデックと
録画 品質を
調整することで、ハードディスクの容量を節約したり、録画品質を向上させたりすることができます。
3.A.1. ウェブオートメーション
この例では、RPA Input Forms Challenge(http://www.rpachallenge.com/
)が解決されます。
推奨通り、レコーダーは設計を円滑に進めるために使用されます。
その手順は以下の通りです。
-
Excel ファイルを
ダウンロードしてください。 -
Excel ファイルを
読み込む。 -
マップスタートボタン。
-
データセットの行をループさせる。
-
各WebElementの入力フィールドに対応するハンドルを探します。
-
Webページ内の必要事項をすべて入力してください。
-
マップ送信ボタン。
3.A.1.1. Excelファイルをダウンロードする
Excel ファイルを
ダウンロードするには、OpenRPA.Utilitiesの
ツールボックス内にあるDownloadFileアクティビティを使用します。
アクティビティをデザイナ内のメインシーケンスにドラッグします。
.
..ボタンをクリックして、アーカイブを保存するファイルのパスを選択するか、アクティビティのプロパティタブにあるLocalPath
パラメータを割り当てます。
取得したいアーカイブのURLを貼り付けます。URLはOpenRPAが文字
列として取得するため、”"
で囲む必要があることを覚えておくとよいでしょう。この例では、次のようなURLを使用しています。”rpachallenge.com/assets/downloadFiles/challenge.xlsx “です。
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
ボタンを押すだけです。
ここで注意していただきたいのは、録音を終了させないと、あなたが実行したすべてのアクティビティが延々と録音されてしまうということです。
Startボタンをうまくマッピングすると、ワークフローは次ページの最後の画像のようになるはずです。
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
)へのリンクを参照してください。
3.A.1.5. 各WebElementの入力フィールドに対応するハンドルを探す
RPA Input Forms Challenge(http://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を
記録し、その後他のフィールドに進むことをお勧めします。
入力フィールドをクリックすると、InsertTextという
タイトルのプロンプトウィンドウが表示されますので、そのままEnter
キーを押してください。
現在の入力フィールドの記録を停止するには、ESC
ボタンを押すだけです。
ここで注意したいのは、録画を終了させないと、実行したすべてのアクティビティが延々と記録されることです。
すると、Foreach DataRowシーケンスの中に新しいOpenRPA.NM.GetElement
アクティビティが表示されます。
各アクティビティーの名称は、ユーザーが対応する入力フィールドに変更することが望ましい。下の画像に示すように。
備考
アクティビティのパラメータで設定した名前(DisplayName
)を変更するには、アクティビティの名前を2回クリックし、希望の名前を入力してリターンキーを
押すか、プロパティボックスでパラメータDisplayNameを
設定する方法があります。
備考
Recorder を使用して WebElement がクリックされ、OpenRPA がその WebElement が入力値を受け取ることができると判断した場合。プロンプトが自動的に表示され、ユーザーが文字列を入力すると、RecorderはWebElementに入力された文字列を入力するようにアクティビティを生成します。今のところ、ユーザーはこれらを無視して、プロンプトに任意のテキストを入力することができ、これらの割り当てられた値は、DataTabledsから
値を取得するように置換されます。WebElement は自動的にitem
変数に代入されます。
3.A.1.6. ウェブページ内の必須項目をすべて入力する
ハンドルのマッピングができたので、Excelシートで取得した行と列の値を割り当てます。
最初の入力フィールドはFirst Name
で
、RPA.Utilies
ツールボックスにあるAssignアクティビティを使用して割り当てることができます。
左側でitem.Value
を使用してWebElement
のプロパティにアクセスし、右側で必要な入力値 (First Name
列の場合はrow(0).ToString
) を使用します。
FirstNameは
1列目にあるので、インデックス = 0
です。
備考
Assign」アクティビティは、変数に値を参照するために使用します。これを行うには、アクティビティーの左側に、値をマップする変数の名前、またはエイリアスを入力します。必要であれば、Ctrl+K を
押して、自動的に変数を作成するか、手動で作成することができます。右側を使用して、変数に割り当てられる値を入力します。
備考
行の中のそれぞれの列の値はDataCell
オブジェクトである。一時的にインメモリキャッシュとしてオブジェクトが作成され、それぞれの行の中の列の値が保存されます。さらに、Excelの値は文字列型でないオブジェクトである可能性があるため、安全性を考慮して常に文字列にキャストしておくとよいでしょう。セレクタが
返すDOMオブジェクトもString
型なので、item.Valueに
代入する前にStringに
キャストする、つまり型を変更する必要があります。これは、ToString
メソッドを使って行われます。
3.A.1.7. マップ送信ボタン
各項目(各行に対応)は、Submitボタンをクリックして入力した後、入力する必要があります。
各入力の入力プロセス(Submitボタンをクリックする)をマップするには、以下のステップのように、最後のAssignアクティビティの下のスペースに対応する白い三角形をクリックし、Recorderを起動し、ブラウザ内のSubmitボタンをクリックするだけです。
録音を停止するには、ESC
ボタンを押すだけです。
ここで注意したいのは、録画を終了させないと、実行したすべてのアクティビティが延々と記録されることです。
Startボタンをうまくマッピングすると、下の画像のようなワークフローになります。
3.A.1.8. ワークフローの完成
完成したワークフローは、以下のような順序になるはずです。
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のステップに直接進むことができます。
-
- ディテクター
-
-
OpenRPAでDetectorを作成する
-
Node-REDでDetectorノードを設定する。
-
Node-REDにおけるメッセージ操作
-
Node-REDからOpenRPAへの変数の受け渡し
-
-
- フォームです。
-
-
OpenRPAフォーム
-
-
- Windowsオートメーション(Skypeアプリ)/セレクタを使用する
-
-
タスクの記録
-
セレクタを設定する
-
3.A.2.1. 検出器
Detectorはイベントリスナーと同義語です。残念ながら、特定の条件が発生するのを待ち、Node-REDや
OpenRPA
自体にメッセージを発します。
このセクションでは、特定のディレクトリのファイル変更に耳を傾け、新しいファイルが作成されたときにイベントを発生させる、FileWatcher Detector
の作成方法を学びます。この例では、新しいPDF/.pdf
ファイルが
作成されるたびに、ロボットが発火するはずです。
OpenRPAでDetectorを作成する
まず、FileWatcher Detectorを
設定する必要があります。
そのためには、まずOpenRPAのリボン内にある「設定」
バーをクリックする必要があります。
次に、リボン内の「Detectors
」ボタンをクリックします。
その後、「検出器」リボン内の目的の検出器をクリックするだけです。
この例では、使用するDetectorは
FileWatcherDetectorPlugin
です。Detector’sName
– in our caseWindows Automation
as well as thePath
which it will listen to –C:\Usersviere╱Documents╱workflow_example_filesⒸwindows_automation_files
,no quotes. Then set theFile Filter
to*.pdf
– the*
is a wildcard for the filename, that’s, any filename will do.
備考
Detectorが
見つからない場合、インストールされていることを確認してください。疑わしい場合は、インストーラー.msiを
再度実行し、インストール中に含まれていることを確認するだけです。
備考
ワイルドカード(https://ryanstutorials.net/linuxtutorial/wildcards.php)
は、ファイルやディレクトリのセットを定義するパターンを作成するための構成要素のセットです。覚えているように、コマンドラインでファイルやディレクトリを参照するときはいつでも、実際には文字列のパスを参照しています。パスを参照するときは常に、そのパスの中でワイルドカードを使用して、ファイルやディレクトリのセットに変換することもできます。
Node-REDでDetectorノードを設定する。
ここでユーザーは、Node-REDでDetector
ノードを設定します。このノードは、Detectorが
トリガーされたときにNodeRED メッセージの
起点となります。
Node-RED内に新しいフローを作成します。フローはWindows Automation - Workflow Exampleと
名付けます。
次に、検出器
ノードをワークスペースにドラッグします。
検出器
ノードをダブルクリックして、そのプロパティを設定します。ドロップダウン・フィールドに表示される「Detector
」を選択します。さらに、このノードに「Filepath Detector
」などの名前を付けることもできます。フローを整理するために、そうすることをお勧めします。
Node-REDにおけるメッセージ操作
FileWatcher Detector が
起動すると、NodeRED メッセージに
filepath
(作成されたファイルの名前)などの情報が渡されます。
このデータを取得し、ワークフロー起動時の引数として
ロボットに渡すことが望まれます。引数は
msg.payload
オブジェクトを通してロボットに渡すことを忘れないでください。 OpenRPA ワークフローは他の引数を
必要としないので、FileWatcher Detector
ノードを直接ロボット
ノードにプラグインすることが可能です。
OpenRPAのワークフローを呼び出す
ここに、OpenRPAワークフローに変数を渡して実行するロジックがあり、Detectorの
ポジティブシグナルによって起動されます。
ワークスペースにロボット
ノードをドラッグします。このノードによって、Windows 自動化
ワークフローを呼び出すことができます。
もう一度言いますが、ノード名をInvoke Windows Automation Workflowと
適切に命名することをお勧めします。
ワークフローを実行するロボット (または エージェント
)と、実行するワークフロー
の名前(この例ではWindows Automation
)をダブルクリックして指定します。Local Queue
の項目は空白のままでも構いません。
ここで、ユーザーは画面左上の赤い「Deploy」ボタンをクリックして、作成したフローをデプロイする必要があります。
その後、OpenRPA ワークフロー内でCreate Argument
をクリックして新しい引数を定義します。デバッグ
ノードで見たように、渡されるパラメータはfilepath
と呼ばれているので、引数も
全く同じにする必要があります。引数は
入力なので、そのDirectionを
Inに
設定します。
備考
Node-RED の使用を完全に避けたい場合は、先に定義した検出器を含む検出器アクティビティと共に、トライブロックによる無限ループアクティビティ(条件: true=true) を使用することをお勧めします。ユーザーは、Skypeコンタクトに送信されるファイルの固定ファイルパスを
割り当てるために、アクティビティ「Assign」を使用することもできます。ループを使用することで、反復が終了するたびに、ロボットは常に最初に戻り、Detector
がもう一度起動するのを待ち、何か異常が発生した場合には、トライブロックが ワークフローの実行を保証します。
3.A.2.2. フォーム
このセクションでは、Skypeアプリケーションを使用して添付ファイルとテンプレートメッセージを渡すために使用される、電子メール
、Skype コンタクト
、コンタクト 名を
取得するフォームの
作成方法について説明します。
OpenRPAフォーム
ここでは、ユーザーがクライアントから上記の値を収集するための動的なWPFフォームを作成します。
まず、Invoke Formula
スニペットをメインシーケンスにドラッグします。
ここで、「 デザイナーを開く
」をクリックして、フォーム デザイナーを
開きます。
サンプルコードをすべて消去し、以下のコードスニペットをデザイナーのコードエディタに追加します。
<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>
もしあなたがHTMLやその他のマークアップ言語に慣れているなら、この舞台裏で何が起こっているのか理解できるかもしれません。そうでない場合は、OpenRPA Formsのセクションを参照してください。
フォーム作成ボタンを押すと、フォーム デザイナーの
左側パネルにWPFフォームが作成され、プレビューを見ることができます。
その後、ユーザーは変数作成ボタンを押すことで、フォーム デザイナーの
内部で定義されたすべての変数が自動的に作成されます。簡単でしょう?
備考
OpenRPA Formsの
使用を避けたい場合は、Assignアクティビティを使用して変数email
、usernameSkype
、nameに
値を割り当てるだけで、その値を使用して目的のクライアントに添付ファイルとテンプレートメッセージを送信することができます。
備考
フォーム デザイナーは
、クライアントからの入力を収集するために、ユーザーが希望するWPFフォームを作成する場所です。その右側には、入力フォームのプレビューが表示される。その左側には、入力フォームを設計するために使用するコードを入力します。フォーム デザイナーに
コードを追加した後、常にビルドフォームボタンを押して変更を保存し、プレビューを可視化することができます。
3.A.2.3. Windowsオートメーション(Skypeアプリ)/セレクタの使用方法のページです
さて、このワークフローの例では、これまでの旅の最大の山場がやってきました。内蔵のレコーダーは、このセクションで紹介したタスクを効果的に達成するために、ユーザーが通常行うタスクを記録するために使用されます。
タスクの記録
ここでは、Skypeアプリケーション内でコンタクトを検索し、そのコンタクトを選択(またはクリック)して、添付ファイルを含むメッセージを送信するという、通常行われる作業を記録します。
まず、Skypeのアプリケーションを起動します。
これで、Skypeアプリケーションを開いたまま、OpenRPAのリボン内のボタンをクリックしてOpenRPA内のRecorderを起動し、手動で行ったようにタスクを実行することができるようになります。
レコーダーを起動した状態で、「人、 グループ 、 メッセージ
」のプレースホルダーがある「検索」
タブをクリックする必要があります。
検索」
タブ内に、プレースホルダー「Search Skype
」を含む入力フィールドが表示されます。その入力フィールドをクリックすると、InsertText
入力フィールドが表示されます。ユーザは、このセクションで適切なセレクタを
割り当てるためのダミーとして使用される既存のコンタクトを入力する必要があります。Skypeのオートコンプリート機能がユーザーを見つけるのを待ってから、ユーザーは目的のコンタクトをクリックする必要があります。
連絡先をクリックすると、その連絡先の「メッセージ
」タブが表示されます。
ここでユーザーは、右下のセクションにある「 ファイルの追加
」ボタンをクリックする必要があります。
ここでファイルダイアログが表示され、ユーザーは希望のファイルを選択できます。また、InsertTextという
タイトルのOpenRPAからの入力ダイアログが表示され、ここで再びダミーテキストを挿入できます。セレクタは
このダイアログを操作して、次のセクションで見るように、送信されるファイルを選択します。そして、「開く」
ボタンをクリックします。
ここで「Type a message
」プレースホルダーを含む入力フィールドをクリックすると、「InsertText
」というタイトルの別の入力ダイアログが表示されます。ここで再び、任意のダミーテキストを入力することができます。
その後、青色の送信ボタンをクリックしてください。
最後に、検索
タブ内の×ボタンをクリックして検索ダイアログを閉じ、ESC
ボタンを押してレコーダーを終了します。
セレクタを設定する
これで、OpenRPAのデザイナー内に登場した多くのGetElementアクティビティのSelectorが
設定されました。
まず、Skypeアプリケーションペイン内で最初にクリックされる要素に対して、最初のセレクタを
設定します。これは、People, groups & messagesの
プレースホルダーを持つものです。このケースでは、ワークフローに関心を持つ可能性のあるサードパーティによる表示プロセスを容易にするために、その表示名を
Search for people, groups & messages
から
Search Contact GetElementに
変更しました。
特定のフィールド用に生成されたGetElementアクティビティ内の [セレクタを開く] ボタンをクリックします。
この画像では、ユーザーは入力されたダミーユーザー名に対応する「Type Text」アクティビティに気づきます。次のステップで別のアクティビティに置き換えられるので、ユーザーはワークスペースからそのアクティビティを削除することができます。
新しいウィンドウでハイライトボタンをクリックしても、Skypeアプリケーションのウィンドウを開いたままでは、画面内のどの要素もハイライトされないことにお気づきでしょう。そこで、指定された要素を手動で選択する必要があります。
そのためには、まず、Pane Skype
->Document Skype XXXXXXXXXX
->Button Search for people, groups &
messages
という要素をダブルクリックし、この最後の要素を右クリックして、表示されるSelect Elementボタンをクリックします。下図は、この要素を強調表示したものです。
ここで、最初のセレクタのファイル名
属性を変更します。"%ProgramFiles%﹑Microsoft.SkypeApp_15.61.100.0_x86__XXXXX﹑Skype.exe"
で、skypeのバージョンとその次のハッシュ(ここでは{XXXXX}
として指定)をトリミングします。これを行うには、““%ProgramFiles%⇄WindowsApps⇄Microsoft.SkypeApp_*”“¹に変更するだけです。
これで、ユーザーは4番目のセレクタの選択も解除しなければなりません。ここまでの変更はすべて下の画像に示されています。
その後、画面左下の「Ok」ボタンをクリックするだけです。アクティビティ内のHighlightボタンをクリックして、適切なセレクタが
設定されているか、再度確認することをお勧めします。
ここでユーザーは、「検索」
タブ入力のキャプチャを担当するGetElementアクティビティ内で、上記と同じ手順を実行する必要があります。Pane Skype
->Document Skype XXXXXXXXX
->Edit Search Skype
.で要素を選択します。ここで重要なのは、セレクタを開く前にSkypeアプリケーション内にSearch
タブが表示されていなければならないということです。
また、ユーザーは、現在のGetElementアクティビティ内のAssignアクティビティの右側の値を、希望する連絡先のユーザー
名を保持する変数に変更する必要があります。この例では、フォームのセクションで定義したとおり、usernameSkypeが
その変数になります。
ここでユーザーは、ワークフローに「Delay」アクティビティを追加しま す。Delayの Duration
プロパティを00:00:05に
設定し、この遅延が5秒間継続することを意味します。これは、Skypeアプリケーションに組み込まれたオートコンプリート機能のため、明示的に必要です。これは、ロボットが次のステップに進む前にオートコンプリート機能が完了するのを待たなければならないという、ハードコードされた制約です。
次に、ユーザーは、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
ボタンをウィンドウ内の要素として認識することができます。以下は、セレクタが
正しく設定され、ボタンが強調表示された画像です。
Contact
ボタンをキャプチャするGetElementアクティビティに含まれるClick Elementアクティビティ内のPost Wait
プロパティを使用して、ポストウェイトを追加してください。 この値は、00:00:02に
設定する必要があります。ポストウェイトを使用すると、Skypeウィンドウの左ペインに表示される目的のコンタクトボタンをクリックした後、アプリケーション自体がメッセージ
タブをロードするのを待ちます。ポストウェイトを追加したため、Delayアクティビティは必要ありません。
ユーザーは、残りのアクティビティに対して適切なセレクタを
選択するために指定された手順を繰り返し、適切に構成されたときに画面内の要素がハイライトされることを保証する必要があります。要素を正しく選択するために、[Add file]ボタンでウィンドウを開く必要があるかもしれないことを覚えておいてください。
次に、Skypeアプリで送信するファイルのfilepathに
適切な値を設定します。ファイルパス
が設定される入力フィールドに対応する各アサインアクティビティ内で、適切な値を割り当てます。引数を
まだ作成していない場合は、今すぐ作成します。引数の
方向は
Inに
設定する必要があることを忘れないでください。以下は、この引数を適切に設定する方法です。
最後に、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.2.4. ワークフローの完成
このワークフローの出力を、SkypeアプリケーションとNode-REDの両方で表示したのが、こちらの画像です。
3.A.3. 画像検索/OCR
この例では、ファイルから読み込んだ画像に対してOCRを実行し、その結果を検証基準に照らしてチェックすることができます。
このワークフローの例では、アクティビティの範囲を狭めるために、検出された文書が運転免許証かどうかをチェックすることだけを目的としています。
検証方法は以下の通りです。画像内に「DRIVER」という文字があれば、OpenRPAはこのドキュメントを確かに運転免許証であると判断します。
備考
よく知られているように、OCRはテキストの読みやすさと画質の両方が成功率に重要な役割を果たすため、100%成功することを保証するものではありません。