(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023107749
(43)【公開日】2023-08-03
(54)【発明の名称】ブラウザベースのロボティックプロセスオートメーション(RPA)ロボット設計インターフェース
(51)【国際特許分類】
G06F 3/0481 20220101AFI20230727BHJP
G06F 9/451 20180101ALI20230727BHJP
G06F 9/445 20180101ALI20230727BHJP
G06F 3/14 20060101ALI20230727BHJP
【FI】
G06F3/0481
G06F9/451
G06F9/445
G06F3/14 310E
G06F3/14 400
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023006943
(22)【出願日】2023-01-20
(31)【優先権主張番号】17/648,713
(32)【優先日】2022-01-24
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】1 Vanderbilt Avenue, 60th Floor, New York, NY 10017, United States of America
(74)【代理人】
【識別番号】110003487
【氏名又は名称】弁理士法人東海特許事務所
(72)【発明者】
【氏名】ラズヴァン マリノヴィッチ
【テーマコード(参考)】
5B069
5B376
5E555
【Fターム(参考)】
5B069AA01
5B069BC01
5B069FA06
5B069HA01
5B069HA03
5B069JA01
5B069JA02
5B069JA06
5B376AE20
5B376AE45
5E555AA25
5E555AA28
5E555AA79
5E555BA02
5E555BA03
5E555BA05
5E555BA06
5E555BA14
5E555BA69
5E555BB02
5E555BB03
5E555BB05
5E555BB06
5E555BB14
5E555BC04
5E555BC09
5E555BC17
5E555CA02
5E555CA12
5E555CA18
5E555CB02
5E555CB12
5E555CB20
5E555CB37
5E555CB38
5E555CB52
5E555CB53
5E555CC05
5E555DB41
5E555DB53
5E555DC13
5E555DC31
5E555DC35
5E555DC53
5E555DC61
5E555DC72
5E555DC84
5E555DD07
5E555EA16
5E555FA00
(57)【要約】 (修正有)
【課題】ウェブブラウザにおけるターゲット構成インターフェースのターゲット要素を容易に視覚化する方法、システム及び媒体を提供する。
【解決手段】第1のブラウザウィンドウ/タブ内で遂行するロボティックプロセスオートメーション(RPA)エージェント31は、第2のブラウザウィンドウ/タブ内に表示されるターゲットウェブページに導入されたRPAドライバ25とインタラクションする。ブリッジモジュール34は、RPAエージェントおよびRPAドライバの間の通信チャネルを確立する。RPAエージェントはロボット設計インターフェースを公開し、RPAドライバはターゲットウェブページとのユーザーのインタラクションを検出し、ロボット仕様を構築するためにインタラクションを特徴付けるデータをRPAエージェントに送信する。
【選択図】
図6-A
【特許請求の範囲】
【請求項1】
コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、第1のウェブブラウザプロセス、第2のウェブブラウザプロセス、およびブリッジモジュールを遂行することを含む方法であって、
前記ブリッジモジュールは、前記第1のウェブブラウザプロセスおよび前記第2のウェブブラウザプロセスとの間の通信チャネルをセットアップするように構成され、
前記第1のウェブブラウザプロセスは、
第1のウェブブラウザウィンドウ内に表示されたターゲットウェブページのターゲット要素を示すユーザー入力を検出し、かつ
前記通信チャネルを介して、前記ターゲット要素を特徴付けるターゲット特定データのセットを前記第2のウェブブラウザプロセスに送信するように構成されたロボティックプロセスオートメーション(RPA)ドライバを遂行し、
前記第2のウェブブラウザプロセスは、第2のウェブブラウザウィンドウ内のロボット設計インターフェースを公開し、前記ロボット設計インターフェースは、前記ターゲット要素においてRPAアクティビティを実行するように構成されたRPAロボットの仕様を出力するように構成される、方法。
【請求項2】
前記RPAドライバは、前記第1のウェブブラウザウィンドウ内のポインタの現在位置に応じて、前記ターゲットウェブページの複数のUI要素の中から前記ターゲット要素を特定するように構成される、請求項1に記載の方法。
【請求項3】
前記RPAドライバは、前記ターゲット特定データのセットを決定するために、前記ターゲットウェブページのドキュメントオブジェクトモデル(DOM)を解析するようにさらに構成される、請求項1に記載の方法。
【請求項4】
前記RPAドライバは、前記ターゲット要素を示す前記ユーザー入力を検出することに応答して、前記ターゲット要素の外観を変更して、前記ターゲットウェブページの他の要素に関して前記要素を強調するようにさらに構成される、請求項1に記載の方法。
【請求項5】
前記ターゲット要素の外観を変更することは、前記ターゲット要素の周囲にボーダーを描くことを含む、請求項5に記載の方法。
【請求項6】
前記ターゲット要素の外観を変更することは、前記ターゲット要素の近傍にテキストラベルを表示することを含む、請求項5に記載の方法。
【請求項7】
RPA設計インターフェースは、RPAロボットによって遂行可能な複数のRPAアクティビティから前記RPAアクティビティを選択するユーザー入力を受信するように構成される、請求項1に記載の方法。
【請求項8】
前記ブリッジモジュールは、前記ターゲットウェブページに前記RPAドライバを導入するようにさらに構成される、請求項1に記載の方法。
【請求項9】
前記ブリッジモジュールは、
新しいブラウザウィンドウのインスタンスを検出し、
それに応答して、前記RPAドライバの別のインスタンスを、前記新しいブラウザウィンドウ内に表示されるドキュメントに導入し、
前記第2のウェブブラウザプロセスおよび前記ドキュメントを表示する別のウェブブラウザプロセスの間に別の通信チャネルをセットアップするようにさらに構成される、請求項1に記載の方法。
【請求項10】
前記RPAドライバの前記別のインスタンスは、
前記ドキュメントの要素を示すユーザー入力を検出し、
前記ドキュメントの要素を特徴付けるターゲット特定データの別のセットを前記別の通信チャネルを介して前記第2のウェブブラウザプロセスに送信するように構成される、請求項9に記載の方法。
【請求項11】
前記ブリッジモジュールは、前記RPAドライバから前記ターゲット特定データのセットを受信し、かつ前記第1および第2のウェブブラウザウィンドウとは異なる第3のウェブブラウザウィンドウ内の前記ターゲット特定データの少なくとも一部を表示するようにさらに構成される、請求項1に記載の方法。
【請求項12】
前記第1および第2のウェブブラウザウィンドウは、別個のブラウザタブを含む、請求項1に記載の方法。
【請求項13】
第1のウェブブラウザプロセス、第2のウェブブラウザプロセス、およびブリッジモジュールを遂行するように構成された少なくとも1つのハードウェアプロセッサを含むコンピュータシステムであって、
前記ブリッジモジュールは、前記第1のウェブブラウザプロセスおよび前記第2のウェブブラウザプロセスとの間の通信チャネルをセットアップするように構成され、
前記第1のウェブブラウザプロセスは、
第1のウェブブラウザウィンドウ内に表示されたターゲットウェブページのターゲット要素を示すユーザー入力を検出し、かつ
前記通信チャネルを介して、前記ターゲット要素を特徴付けるターゲット特定データのセットを前記第2のウェブブラウザプロセスに送信するように構成されたRPAドライバを遂行し、
前記第2のウェブブラウザプロセスは、第2のウェブブラウザウィンドウ内のロボット設計インターフェースを公開し、前記ロボット設計インターフェースは、前記ターゲット要素においてRPAアクティビティを実行するように構成されたRPAロボットの仕様を出力するように構成される、システム。
【請求項14】
前記RPAドライバは、前記第1のウェブブラウザウィンドウ内のポインタの現在位置に応じて、前記ターゲットウェブページの複数のUI要素の中から前記ターゲット要素を特定するように構成される、請求項13に記載のコンピュータシステム。
【請求項15】
前記RPAドライバは、前記ターゲット特定データのセットを決定するために、前記ターゲットウェブページのドキュメントオブジェクトモデル(DOM)を解析するようにさらに構成される、請求項13に記載のコンピュータシステム。
【請求項16】
前記RPAドライバは、前記ターゲット要素を示す前記ユーザー入力を検出することに応答して、前記ターゲット要素の外観を変更して、前記ターゲットウェブページの他の要素に関して前記要素を強調するようにさらに構成される、請求項13に記載のコンピュータシステム。
【請求項17】
前記ターゲット要素の外観を変更することは、前記ターゲット要素の周囲にボーダーを描くことを含む、請求項17に記載のコンピュータシステム。
【請求項18】
前記ターゲット要素の外観を変更することは、前記ターゲット要素の近傍にテキストラベルを表示することを含む、請求項17に記載のコンピュータシステム。
【請求項19】
RPA設計インターフェースは、RPAロボットによって遂行可能な複数のRPAアクティビティから前記RPAアクティビティを選択するユーザー入力を受信するように構成される、請求項13に記載のコンピュータシステム。
【請求項20】
前記ブリッジモジュールは、前記ターゲットウェブページに前記RPAドライバを導入するようにさらに構成される、請求項13に記載のコンピュータシステム。
【請求項21】
前記ブリッジモジュールは、
新しいブラウザウィンドウのインスタンスを検出し、
それに応答して、前記RPAドライバの別のインスタンスを、前記新しいブラウザウィンドウ内に現在表示されるドキュメントに導入し、
前記第2のウェブブラウザプロセスおよび前記ドキュメントを表示する別のウェブブラウザプロセスの間に別の通信チャネルをセットアップするようにさらに構成される、請求項13に記載のコンピュータシステム。
【請求項22】
前記RPAドライバの前記別のインスタンスは、
前記ドキュメントの要素を示すユーザー入力を検出し、
前記ドキュメントの要素を特徴付けるターゲット特定データの別のセットを前記別の通信チャネルを介して前記第2のウェブブラウザプロセスに送信するように構成される、請求項21に記載のコンピュータシステム。
【請求項23】
前記ブリッジモジュールは、前記RPAドライバから前記ターゲット特定データのセットを受信し、かつ前記第1および第2のウェブブラウザウィンドウとは異なる第3のウェブブラウザウィンドウ内に前記ターゲット特定データの少なくとも一部を表示するようにさらに構成される、請求項13に記載のコンピュータシステム。
【請求項24】
前記第1および第2のウェブブラウザウィンドウは、別個のブラウザタブを含む、請求項13に記載のコンピュータシステム。
【請求項25】
コンピュータシステムの少なくとも1つのハードウェアプロセッサによって遂行されると、第1のウェブブラウザプロセスおよび第2のウェブブラウザプロセスの間に通信チャネルをセットアップするように構成されたブリッジモジュールを前記コンピュータシステムに形成させる命令を格納する非一時的なコンピュータ読み取り可能な媒体であって、前記第1および第2のウェブブラウザプロセスは前記コンピュータシステム上で遂行し、
前記第1のウェブブラウザプロセスは、
第1のウェブブラウザウィンドウ内に表示されたターゲットウェブページのターゲット要素を示すユーザー入力を検出し、かつ
前記通信チャネルを介して、前記ターゲット要素を特徴付けるターゲット特定データのセットを前記第2のウェブブラウザプロセスに送信するように構成されたRPAドライバを遂行し、
前記第2のウェブブラウザプロセスは、第2のウェブブラウザウィンドウ内のロボット設計インターフェースを公開し、前記ロボット設計インターフェースは、前記ターゲット要素においてRPAアクティビティを実行するように構成されたRPAロボットの仕様を出力するように構成される、非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、ロボティックプロセスオートメーション(RPA)に関し、特に、ウェブブラウザ内でRPAアクティビティを実行することに関する。
【0002】
RPAは、繰り返し行われるコンピューティングタスクを自動化することで生産性を向上させ、人間のオペレータを自由にしてより知的に洗練されたおよび/または創造的なアクティビティを行えるようにすることを目的とした、情報技術の新しい分野である。自動化の対象となる注目すべきタスクは、ドキュメント(請求書、ウェブページなど)からの構造化データの抽出ならびに例えばフォームへの入力、電子メールの送信、およびソーシャルメディアサイトへのメッセージの投稿などのユーザーインターフェースとのインタラクションを含む。
【0003】
RPA開発における明確な推進力は、複数のハードウェアおよびソフトウェアプラットフォームにまたがる幅広い開発者および業界にRPA技術の範囲を拡大することに向けられている。
【発明の概要】
【課題を解決するための手段】
【0004】
1つの態様によると、方法は、コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、第1のウェブブラウザプロセス、第2のウェブブラウザプロセス、およびブリッジモジュールを遂行することを含む。ブリッジモジュールは、第1のウェブブラウザプロセスおよび第2のウェブブラウザプロセスとの間の通信チャネルをセットアップするように構成される。第1のウェブブラウザプロセスは、第1のウェブブラウザウィンドウ内に表示されたターゲットウェブページのターゲット要素を示すユーザー入力を検出し、かつターゲット要素を特徴付けるターゲット特定データのセットを通信チャネルを介して第2のウェブブラウザプロセスに送信するように構成されたRPAドライバを遂行する。第2のウェブブラウザプロセスは、第2のウェブブラウザウィンドウ内にロボット設計インターフェースを公開し、ロボット設計インターフェースは、ターゲット要素においてRPAアクティビティを実行するように構成されたRPAロボットの仕様を出力するように構成される。
【0005】
別の態様によると、コンピュータシステムは、第1のウェブブラウザプロセス、第2のウェブブラウザプロセス、およびブリッジモジュールを遂行するように構成された少なくとも1つのハードウェアプロセッサを含む。ブリッジモジュールは、第1のウェブブラウザプロセスおよび第2のウェブブラウザプロセスとの間の通信チャネルをセットアップするように構成される。第1のウェブブラウザプロセスは、第1のウェブブラウザウィンドウ内に表示されたターゲットウェブページのターゲット要素を示すユーザー入力を検出し、かつターゲット要素を特徴付けるターゲット特定データのセットを通信チャネルを介して第2のウェブブラウザプロセスに送信するように構成されたRPAドライバを遂行する。第2のウェブブラウザプロセスは、第2のウェブブラウザウィンドウ内にロボット設計インターフェースを公開し、ロボット設計インターフェースは、ターゲット要素においてRPAアクティビティを実行するように構成されたRPAロボットの仕様を出力するように構成される。
【0006】
別の態様によると、非一時的なコンピュータ読み取り可能な媒体は、コンピュータシステムの少なくとも1つのハードウェアプロセッサによって遂行されると、第1のウェブブラウザプロセスおよび第2のウェブブラウザプロセスの間に通信チャネルをセットアップするように構成されたブリッジモジュールをコンピュータシステムに形成させる命令を格納し、第1および第2のウェブブラウザプロセスはコンピュータシステム上で遂行する。第1のウェブブラウザプロセスは、第1のウェブブラウザウィンドウ内に表示されたターゲットウェブページのターゲット要素を示すユーザー入力を検出し、かつターゲット要素を特徴付けるターゲット特定データのセットを通信チャネルを介して第2のウェブブラウザプロセスに送信するように構成されたRPAドライバを遂行する。第2のウェブブラウザプロセスは、第2のウェブブラウザウィンドウ内にロボット設計インターフェースを公開し、ロボット設計インターフェースは、ターゲット要素においてRPAアクティビティを実行するように構成されたRPAロボットの仕様を出力するように構成される。
【図面の簡単な説明】
【0007】
本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照することにより、よりよく理解されるであろう。
【0008】
【
図1】本発明のいくつかの実施形態による例示的なロボティックプロセスオートメーション(RPA)環境を示す。
【0009】
【
図2】本発明のいくつかの実施形態によるRPAロボットおよびオーケストレータの例示的なコンポーネントおよび動作を示す。
【0010】
【
図3】本発明のいくつかの実施形態によるRPAパッケージの例示的なコンポーネントを示す。
【0011】
【
図4】本発明のいくつかの実施形態による様々なRPAホストシステムを示す。
【0012】
【
図5】本発明のいくつかの実施形態によるRPAホストシステム上で遂行する例示的なソフトウェアコンポーネントを示す。
【0013】
【
図6-A】本発明のいくつかの実施形態によるブラウザ内でRPAアクティビティを実施するための例示的な構成を示す。
【0014】
【
図6-B】本発明のいくつかの実施形態によるブラウザ内でRPAアクティビティを実施するための別の例示的な構成を示す。
【0015】
【
図7】本発明のいくつかの実施形態によるエージェントブラウザウィンドウによって公開される例示的なロボット設計インターフェースを示す。
【0016】
【
図8】本発明のいくつかの実施形態による例示的なアクティビティ構成インターフェースを示す。
【0017】
【
図9】本発明のいくつかの実施形態による、ターゲットブラウザウィンドウ内の公開された例示的なターゲットウェブページ、およびターゲット特定データのセットを示す。
【0018】
【
図10】本発明のいくつかの実施形態による例示的なターゲット構成インターフェースを示す。
【0019】
【
図11】本発明のいくつかの実施形態によるブリッジモジュールによって実施されるステップの例示的なシーケンスを示す。
【0020】
【
図12】本発明のいくつかの実施形態によるRPAエージェントによって実行されるステップの例示的なシーケンスを示す。
【0021】
【
図13】本発明のいくつかの実施形態によるRPAドライバによって実行されるステップの例示的なシーケンスを示す。
【0022】
【
図14】本発明のいくつかの実施形態による例示的なターゲットおよびアンカーハイライトを示す図である。
【0023】
【
図15】本発明のいくつかの実施形態によるブリッジモジュールによって実行されるステップの別の例示的なシーケンスを示す。
【0024】
【
図16】本発明のいくつかの実施形態によるRPAエージェントによって実行されるステップの別の例示的なシーケンスを示す。
【0025】
【
図17】本発明のいくつかの実施形態によるRPAドライバによって実行されるステップの別の例示的なシーケンスを示す。
【0026】
【
図18】本明細書に記載される方法のいくつかを遂行するようにプログラムされたコンピュータシステムの例示的なハードウェア構成を示す。
【発明を実施するための形態】
【0027】
(好ましい実施形態の詳細な説明)
以下の説明において、構造間のすべての言及された接続は、直接的な動作可能な接続または仲介構造を介した間接的に動作可能な接続であり得ることが理解される。要素のセットは、1または複数の要素を含む。要素のいかなる言及も、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。「または」の使用は、非排他的な「または」として意味される。特に必要とされない限り、記載された方法ステップは、必ずしも特定の図示された順序で実行される必要はない。第2の要素から導かれる第1の要素(例えば、データ)は、第2の要素に等しい第1の要素と、第2の要素を処理することによって生成される第1の要素と、任意に他のデータとを包含する。パラメータに従って判断または決定を行うことは、パラメータに従って判断または決定を行うこと、および任意に他のデータに従って判断または決定を行うことを包含する。特に指定がない限り、ある量/データの指標は、量/データそのものであってもよいし、量/データそのものとは異なる指標であってもよい。コンピュータプログラムは、タスクを実行するプロセッサ命令のシーケンスである。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、独立したソフトウェアエンティティまたは他のコンピュータプログラムのサブエンティティ(例えば、サブルーチン、ライブラリ)であり得る。プロセスは、コンピュータプログラムのインスタンスであり、インスタンスは、少なくとも遂行スレッドとそれに割り当てられた別の仮想メモリ空間とを有することによって特徴づけられ、ここで、それぞれの仮想メモリ空間のコンテンツは、遂行可能コードを含む。本明細書では、「データベース」という用語は、組織化された検索可能なデータの集合を示すために使用される。コンピュータ読み取り可能な媒体は、磁気、光学、および半導体記憶媒体(例えば、ハードディスク、光ディスク、フラッシュメモリ、DRAM)などの非一時的な媒体、ならびに導電性ケーブルおよび光ファイバーリンクなどの通信リンクを包含する。いくつかの実施形態によると、本発明は、特に、本明細書に記載の方法を実行するようにプログラムされたハードウェア(例えば、1または複数のプロセッサ)、ならびに本明細書に記載の方法を実行するための命令をエンコードするコンピュータ読み取り可能な媒体を含むコンピュータシステムを提供する。
【0028】
以下の説明は、本発明の実施形態を例示するものであり、必ずしも限定するものではない。
【0029】
図1は、本発明のいくつかの実施形態による例示的なロボティックプロセスオートメーション(RPA)環境10を示す。環境10は、特定のタスクの自動化を実現するために協働する様々なソフトウェアコンポーネントを含む。例示的なRPAシナリオでは、企業の従業員は、ビジネスアプリケーション(例えば、ワードプロセッサ、スプレッドシートエディタ、ブラウザ、電子メールアプリケーション)を使用して、例えば、様々なクライアントに請求書を発行するといった繰り返しのタスクを実行する。実際にそれぞれのタスクを実行するために、従業員は、Microsoft Excel(登録商標)スプレッドシートを開く、クライアントの会社の詳細を調べる、それぞれの詳細を請求書テンプレートにコピーする、購入したアイテムを示す請求書フィールドを埋める、電子メールアプリケーションに切り替える、それぞれのクライアントへの電子メールメッセージを作成する、新しく作成した請求書をそれぞれのメールメッセージに添付する、および「送信」ボタンをクリックするなど一連の動作/アクションを実行する。RPA環境10の様々な要素は、それぞれのタスクを実行する過程でそれぞれの人間のオペレータによって実行される操作のセットを模倣することによって、それぞれのプロセスを自動化し得る。
【0030】
人間の動作/アクションを模倣することは、本明細書では、人間のオペレータがコンピュータ上でそれぞれの動作/アクションを実行するときに生じるコンピューティングイベントのシーケンスを再現すること、および人間のオペレータがコンピュータ上でそれぞれの動作を実行した結果を再現することを包含すると理解される。例えば、グラフィカルユーザーインターフェース(GUI)のボタンをクリックするアクションを模倣することは、オペレーティングシステムにマウスポインタをそれぞれのボタンに移動させ、マウスクリックイベントを発生させることを含んでもよく、またはそれぞれのGUIボタン自体をクリックされた状態にトグルすることを代替的に含んでもよい。
【0031】
RPAオートメーションの典型的なターゲットとなるアクティビティは、支払処理、請求書発行、ビジネスクライアントとのコミュニケーション(例えば、ニュースレターおよび/または製品提供の配布)、内部コミュニケーション(例えば、メモ、会議および/またはタスクのスケジューリング)、監査、および給与処理などを含む。いくつかの実施形態では、専用のRPA設計アプリケーション30(
図2)は、人間の開発者が、一連の人間のアクションを効果的に自動化するワークフローを実装するためのソフトウェアロボットを設計することを可能にする。本明細書においてワークフローは、カスタムオートメーションステップのシーケンスを示し、本明細書ではRPAアクティビティとみなされる。各RPAアクティビティは、ボタンのクリック、ファイルの読み取り、スプレッドシートセルへの書き込みなど、ロボットによって実行される少なくとも1つのアクションを含む。アクティビティは、入れ子にされ(nested)および/または埋め込まれ得る。いくつかの実施形態では、RPA設計アプリケーション30は、ワークフローの実行順序およびワークフローのRPAアクティビティ間の関係の制御を開発者に与えるユーザーインターフェースおよびツールのセットを公開する。RPA設計アプリケーション30の実施形態の商業的な一例は、UiPath StudioX(商標)である。本発明のいくつかの実施形態では、RPA設計アプリケーション30の少なくとも一部は、以下に詳細に説明するように、ブラウザ内で遂行し得る。
【0032】
ワークフローのいくつかのタイプには、シーケンス、フローチャート、有限状態機械(FSM)、および/またはグローバル例外ハンドラなどを含み得るが、これらに限定されない。シーケンスは、ワークフローを乱雑にすることなく、あるアクティビティから別のアクティビティへのフローを可能にする、線形プロセスに特に適し得る。フローチャートは、特により複雑なビジネスロジックに適し得、複数の分岐ロジックオペレータを介して、より多様な方法で意思決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)またはアクティビティによりトリガされる有限の数の状態をそれらの遂行中に使用し得る。グローバル例外ハンドラは、遂行エラーに遭遇したときのワークフローの挙動を決定したり、プロセスをデバッグしたりするのに特に適し得る。
【0033】
RPAワークフローが開発されると、それは、コンピュータ読み取り可能な形態でエンコードされ、RPAパッケージ40(
図2)としてエクスポートされ得る。
図3に示されるようないくつかの実施形態では、RPAパッケージ40は、ソフトウェアロボットのための命令のセットを含むRPAスクリプト42のセットを含む。RPAスクリプト(複数可)42は、例えば、拡張可能マークアップ言語(XML)、JavaScript(登録商標)Object Notation(JSON)、またはC#、Visual Basic(登録商標)、Java(登録商標)、JavaScript(登録商標)などのプログラミング言語のバージョンなどで、本技術分野で既知の任意のデータ仕様に従って定式化され得る。あるいは、RPAスクリプト(複数可)42は、バイトコードのRPA固有のバージョンで、または英語、スペイン語、日本語などの自然言語で定式化された命令のシーケンスとしてでさえ定式化され得る。いくつかの実施形態では、RPAスクリプト(複数可)42は、ネイティブプロセッサ命令(例えば、機械コード)のセットに予めコンパイルされる。
【0034】
いくつかの実施形態では、RPAパッケージ40は、遂行中にそれぞれのロボットによって使用されるプロセスリソースのセットを示すリソース仕様44をさらに含む。例示的なプロセスリソースは、とりわけ、資格情報のセット、コンピュータファイル、キュー、データベース、およびネットワーク接続/通信リンクを含む。本明細書における資格情報は、特定のRPAホストマシンにアクセスするためおよび/または特定のソフトウェアコンポーネントを遂行するために必要なプライベートデータ(例えば、ユーザー名、パスワード)を概して示す。資格情報は、暗号化されたデータを含んでいてもよく、そのような状況では、遂行しているロボットは、それぞれのデータを復号化するための暗号鍵を所有し得る。いくつかの実施形態では、資格情報リソースはコンピュータファイルの形態をとり得る。あるいは、例示的な資格情報リソースは、実際の資格情報を保持するデータベースへのルックアップキー(たとえば、ハッシュインデックス)を含み得る。このようなデータベースはしばしば、本技術分野では資格情報保管庫(credential Vault)として知られる。本明細書では、キューは、同じタイプのアイテム(例えば、コンピュータファイル、構造化データオブジェクト)の順序付けられた集合を保持するコンテナを示す。例示的なキューは、とりわけ、請求書の集合および電子メールの受信箱のコンテンツを含む。キューアイテムの順序は、それぞれのアイテムが遂行するロボットによって処理されるべき順序を示し得る。
【0035】
いくつかの実施形態では、各プロセスリソースについて、仕様44は、それぞれのリソースを特徴付けるメタデータのセットを含む。例示的なリソース特性/メタデータは、とりわけ、それぞれのリソースのリソースタイプのインジケータ、それぞれのリソースにアクセスするためのファイル名、ファイルシステムパスおよび/または他のロケーションインジケータ、それぞれのリソースのサイズ、およびバージョンインジケータを含む。リソース仕様44は、例えば、XMLまたはJSONスクリプト、関係データベースなど、本技術分野において既知の任意のデータ形式に従って定式化され得る。
【0036】
当業者は、RPA設計アプリケーション30が複数のコンポーネント/モジュールを含み得、それらが別個の物理的マシン上で遂行し得ることを理解するであろう。一例では、RPA設計アプリケーション30は、クライアント-サーバー構成で遂行し得、アプリケーション30の1つのコンポーネントは、クライアントコンピュータのユーザーに対してロボット設計インターフェースを公開してもよく、そしてサーバーコンピュータ上で遂行するアプリケーション30の別のコンポーネントは、ロボットワークフローを組み立てかつRPAパッケージ40を定式化/出力し得る。例えば、ソフトウェア定式化パッケージ40が、実際にサーバーコンピュータ上で実行する間、開発者は、クライアントコンピュータ上で実行するウェブブラウザを介してロボット設計インターフェースにアクセスし得る。
【0037】
一旦定式化されると、RPAスクリプト(複数可)42は、ロボット12a~12cのセット(
図1)によって遂行されてもよく、これらはさらにオーケストレータ14によって制御および調整され得る。ロボット12a~12cおよびオーケストレータ14はそれぞれ、複数のコンピュータプログラムを含み得、これらは同じ物理的マシン上で遂行してもしていなくてもよい。ロボット12a~12cおよびオーケストレータ14の例示的な商用実施形態は、それぞれ、UiPath Robots(登録商標)およびUiPath Orchestrator(登録商標)を含む。本発明のいくつかの実施形態では、RPAロボットの少なくとも一部は、以下に詳細に説明するように、ブラウザ内で遂行し得る。
【0038】
ロボット12a~12cのタイプは、アテンディッドロボット、アンアテンディッドロボット、開発ロボット(アンアテンディッドロボットと同様であるが、開発およびテストの目的で使用される)、および非生産ロボット(アテンディッドロボットと同様であるが、開発およびテストの目的で使用される)を含むが、これらに限定されない。
【0039】
アテンディッドロボットは、ユーザーイベントおよび/またはコマンドによってトリガされ、同じコンピューティングシステム上で人間のオペレータと共に動作する。いくつかの実施形態では、アテンディッドロボットは、ロボットトレイからまたはコマンドプロンプトからのみで開始され得、したがって、オーケストレータ14から制御され得ず、例えば、ロックされた画面の下で実行することはできない。アンアテンディッドロボットは、遠隔仮想環境において無人で実行され得、遠隔遂行、監視、スケジューリング、および作業キューのサポートの提供を担当し得る。
【0040】
オーケストレータ14は、複数のロボット12a~12cの遂行を制御し、調整する。そのため、オーケストレータ14は、プロビジョニング、展開(デプロイメント(deployment))、構成、スケジューリング、キューイング、監視、ロギング、および/またはロボット12a~12cの相互接続性の提供を含むが、これらに限定されない様々な能力を有し得る。プロビジョニングは、ロボット12a~12cとオーケストレータ14との間の接続を作成および維持することを含み得る。展開は、遂行のためにロボット12a~12cへのソフトウェア(例えば、RPAスクリプト42)の正しい配信を保証することを含み得る。構成は、ロボット環境、リソース、およびワークフロー構成の保守および配信を含み得る。スケジューリングは、特定のスケジュール(例えば、1日の特定の時間帯、特定の日付、毎日など)に従って様々なタスクを遂行するようにロボット12a~12cを構成することを含み得る。キューイングは、ジョブキューの管理を提供することを含み得る。監視は、ロボット状態の追跡を維持し、ユーザーの権限を維持することを含み得る。ロギングは、データベースおよび/または別のストレージメカニズム(例えば、SQL、ElasticSearch(登録商標)、Redis(登録商標))へのログの格納およびインデックス付けを含み得る。オーケストレータ14はさらに、サードパーティーソリューションおよび/またはアプリケーションのための通信の集中点として機能し得る。
【0041】
図2は、本発明のいくつかの実施形態によるロボット12およびオーケストレータ14の例示的なコンポーネントを示す。例示的なRPAロボット12は、Microsoft, Inc.のWindows(登録商標)Workflow Foundation Application Programming Interfaceを使用して構築される。ロボット12は、ロボットエグゼキュータ22およびロボットマネージャ24のセットを含み得る。ロボットエグゼキュータ22は、人間のオペレータの動作を模倣するRPAアクティビティのシーケンスを示すRPAスクリプト(複数可)42を受信し、それぞれのクライアントマシンでアクティビティのそれぞれのシーケンスを自動的に実行するように構成される。いくつかの実施形態では、ロボットエグゼキュータ(複数可)22は、RPAスクリプト(複数可)42を、それぞれのスクリプト(複数可)にエンコードされたRPAアクティビティを実行するためのプロセッサ命令を含む実行時オブジェクトに翻訳するように構成されたインタプリタ(例えば、ジャストインタイムインタプリタまたはコンパイラ)を含む。したがって、スクリプト(複数可)42を遂行することは、RPAスクリプト(複数可)42を翻訳し、かつ得られる実行時パッケージをメモリにロードし、実行時パッケージを遂行し始めるようにそれぞれのホストマシンのプロセッサに指示するエグゼキュータ(複数可)22を含み得る。
【0042】
ロボットマネージャ24は、ロボットエグゼキュータ(複数可)22の動作を管理し得る。例えば、ロボットマネージャ24は、人間のオペレータからの入力に従っておよび/またはスケジュールに従って、ロボットエグゼキュータ(複数可)22による遂行のためのタスク/スクリプトを選択し得る。マネージャ24は、ジョブを開始および停止し、エグゼキュータ(複数可)22の様々な動作パラメータを構成し得る。ロボット12が複数のエグゼキュータ22を含む場合、マネージャ24は、それらのアクティビティおよび/またはプロセス間通信を調整し得る。マネージャ24は、RPAロボット12、オーケストレータ14、および/または他のエンティティ間の通信をさらに管理し得る。
【0043】
いくつかの実施形態では、ロボット12およびオーケストレータ14は、クライアント-サーバー構成で遂行し得る。クライアント側、サーバー側、またはその両方が、本発明の範囲から逸脱することなく、いずれかの所望の数のコンピューティングシステム(例えば、物理マシンまたは仮想マシン)を含むことができることに留意すべきである。このような構成では、エグゼキュータ(複数可)22およびロボットマネージャ24を含むロボット12は、クライアント側で遂行し得る。ロボット12は、いくつかのジョブ/ワークフローを同時に実行し得る。ロボットマネージャ24(例えば、Windows(登録商標)service)は、複数のエグゼキュータ22の単一のクライアント側の接点として機能し得る。マネージャ24は、ロボット12およびオーケストレータ14の間の通信をさらに管理し得る。いくつかの実施形態では、通信は、マネージャ24によって開始され、それは、オーケストレータ14へのWebSocketチャネルを開くことができる。マネージャ24は、その後、チャネルを使用して、各エグゼキュータ22の状態に関する通知を、例えばハートビート信号として、オーケストレータ14に送信し得る。次に、オーケストレータ14は、チャネルを使用して、承認、ジョブ要求、ならびにRPAスクリプト(複数可)42およびリソースメタデータなどの他のデータをロボット12に送信し得る。
【0044】
オーケストレータ14は、場合によっては複数の物理的および/または仮想的なマシンに分散して、サーバー側で遂行し得る。そのような一実施形態では、オーケストレータ14は、ウェブアプリケーションであってもよいオーケストレータユーザーインターフェース(UI)17と、サービスモジュール19のセットとを含み得る。オーケストレータUIのいくつかの例については後述する。サービスモジュール19は、オープンデータプロトコル(OData)表現状態転送(representational state transfer)(REST)アプリケーションプログラミングインターフェース(API)エンドポイントのセットと、サービスAPI/ビジネスロジックのセットとを含み得る。ユーザーは、オーケストレータUI17を介して(例えば、ブラウザ上で専用のオーケストレータインターフェースを開くことによって)オーケストレータ14とインタラクションして、オーケストレータ14に様々なアクションの実行を指示してもよく、これには、例えば選択したロボット12上でのジョブの開始、ロボットグループ/プールの作成、ロボットへのワークフローの割り当て、キューへの/からのデータの追加/削除、無人運転するジョブのスケジューリング、ロボットまたはワークフローごとのログ分析などを含み得る。オーケストレータUI17は、ハイパーテキストマークアップ言語(HTML)、JavaScript(登録商標)、または他の任意のウェブ技術を使用して実装され得る。
【0045】
オーケストレータ14は、サービスAPI/ビジネスロジックを選択的に呼び出すことによって、ユーザーによって要求されたアクションを実行し得る。さらに、オーケストレータ14は、ロボット12と通信するためにREST APIのエンドポイントを使用し得る。REST APIは、構成、ロギング、監視、およびキューイング機能を含み得る。構成エンドポイントは、ユーザー、ロボット、権限、資格情報および/または他のプロセスリソースなどを定義および/または構成するために使用され得る。ロギングRESTエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、および他の環境固有の情報など、異なる情報をログに記録するために使用され得る。デプロイメントRESTエンドポイントは、遂行されるRPAスクリプト(複数可)42のバージョンを照会するために、ロボットによって使用され得る。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キューおよびキューアイテムの管理を担ってもよい。RESTエンドポイントを監視することで、オーケストレータ14およびロボットマネージャ24のウェブアプリケーションコンポーネントを監視し得る。
【0046】
いくつかの実施形態では、RPA環境10(
図1)は、RPAデータベース18に接続されたデータベースサーバー16をさらに含む。サーバー16がクラウドコンピューティングプラットフォーム上で提供される実施形態では、サーバー16は、データベースサービス、例えば、データベースコネクタのセットを有するクライアントとして具現化され得る。データベースサーバー16は、RPA環境10に関連するデータをデータベース18に/から選択的に格納および/または取得するように構成される。そのようなデータは、様々な個々のロボットまたはロボットプールの構成パラメータ、ならびに様々なロボットによって遂行されるワークフローを特徴付けるデータ、ワークフローとそれを遂行するタスクを与えられたロボットとを関連付けるデータ、ユーザー、役割、スケジュール、キューなどを特徴付けるデータを含み得る。データベースサーバー16によって格納および/または取得されるデータの別の例示的なカテゴリは、各遂行するロボットの現在の状態を特徴付けるデータを含む。データベースサーバー16によって格納および/または取得される別の例示的なデータカテゴリは、様々なワークフローによって必要とされるRPAリソース、例えば、ファイル名、場所、資格情報などの様々なリソース属性のデフォルト値および/または実行時値を特徴付けるRPAリソースメタデータを含む。データのさらに別の例示的なカテゴリは、遂行中に様々なロボットによってログ記録されたメッセージを含む。データベースサーバー16およびデータベース18は、とりわけ、構造化クエリ言語(SQL)、ElasticSearch(登録商標)、およびRedis(登録商標)といった、本技術分野において既知の任意のデータ記憶プロトコルおよびフォーマットを採用し得る。いくつかの実施形態では、データは、例えばロギングRESTエンドポイントを介して、オーケストレータ14によって収集および管理される。オーケストレータ14は、さらに、データベースサーバー16に構造化クエリを発行し得る。
【0047】
いくつかの実施形態では、RPA環境10(
図1)は、環境10の様々なメンバーを相互接続する通信チャネル/リンク15a~15eをさらに含む。そのようなリンクは、例えば仮想ネットワークリンク、仮想プライベートネットワーク(VPN)、またはエンドツーエンドトンネルとして、本技術分野で知られている任意の方法に従って実装され得る。いくつかの実施形態は、リンク15a~15eの一部または全部を循環するデータをさらに暗号化する。
【0048】
当業者は、RPA環境10の様々なコンポーネントが、別個のホストコンピューターシステム(物理アプライアンスおよび/または仮想マシン)上で実装され得るおよび/または遂行し得ることを理解するであろう。
図4は、本発明のいくつかの実施形態による様々なそのようなRPAホストシステム20a~20eを示す。各ホストシステム20a~20eは、少なくともハードウェアプロセッサと、プロセッサ命令および/またはデータを格納するためのメモリユニットとを有するコンピューティングシステム(個々のコンピューティングアプライアンスまたは相互接続されたコンピュータのセット)を表す。例示的なRPAホスト20a~20cは、とりわけ、企業のメインフレームコンピュータ、パーソナルコンピュータ、ラップトップおよびタブレットコンピュータ、モバイル通信デバイス(例えば、スマートフォン)、および電子ブックリーダーを含む。アイテム20d~20eとして例示される他の例示的なRPAホストは、プラットフォーム特有のプロトコルに従って集中管理される複数の相互接続されたサーバーコンピュータシステムを含むクラウドコンピューティングプラットフォームを含む。クライアントは、プラットフォーム特有のインターフェース/ソフトウェア層/ライブラリ(例えば、ソフトウェア開発キット-SDK、プラグインなど)および/またはコマンドのプラットフォーム特有の構文を使用して、このようなクラウドコンピューティングプラットフォームとインタラクションし得る。例示的なプラットフォーム特有のインターフェースは、とりわけ、Azure(登録商標)SDKおよびAWS(登録商標)SDKを含む。RPAホスト20a~20eは、インターネットなどの通信ネットワーク13によって通信可能に結合され得る。
【0049】
図5は、本発明のいくつかの実施形態によるRPAホスト20上で遂行する例示的なソフトウェアを示し、ここで、ホスト20は、
図4におけるRPAホスト20a~20eのいずれかを表し得る。オペレーティングシステム(OS)31は、とりわけ、RPAホスト20のハードウェアとウェブブラウザプロセス32およびブリッジモジュール34のセットなどの他のソフトウェアアプリケーションとの間でインターフェースするソフトウェア層を含む、とりわけ、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(登録商標)などの広く利用可能な任意のオペレーティングシステムを含み得る。本明細書においてウェブブラウザプロセス32は、ウェブコンテンツ(ウェブページ)を取得しレンダリングすることを主目的とする任意のソフトウェアを示す。例示的なウェブブラウザプロセスは、とりわけ、Google Chrome(登録商標)、Microsoft Edge(登録商標)、およびMozilla Firefox(登録商標)などの商用ウェブブラウザの任意のインスタンスを含む。最近のウェブブラウザは、通常、複数のウェブドキュメントを例えば別々のウィンドウまたはブラウザタブで同時に表示することができる。コンピュータセキュリティ上の理由から、このようなアプリケーションでは、別個のブラウザウィンドウ、タブ、および/またはフレームは、それぞれのホスト上で遂行する他のウェブブラウザプロセスから分離された別個のウェブブラウザプロセスによってレンダリングされ得る。本明細書においてソフトウェアの分離とは、各ブラウザプロセスが独自の別個のメモリ空間、例えば、独自のローカル変数/引数を持つことを指す。分離は、さらに、各ブラウザプロセスは、それ自体以外の他のブラウザウィンドウに表示される任意のコンテンツに気づかないことを保証する。本明細書において分離とは、ローカルOSによって強制される分離と、OSから独立したウェブブラウザアプリケーション自身によって強制される分離とを含む。
【0050】
いくつかの実施形態では、RPAホスト20は、少なくとも2つの別個のブラウザプロセス32の間に通信チャネルを確立するように構成されたブリッジモジュール34を遂行する。本明細書において通信チャネルは、それぞれのブラウザプロセスの間でデータを転送する任意の手段を示す。当業者であれば、例えば、それぞれのブラウザプロセスの仮想メモリの領域(例えば、仮想メモリのページ)を物理メモリの同じ領域(例えば、物理メモリページ)にマッピングして、それぞれのブラウザプロセスがそれぞれのメモリページへの書き込みおよび/またはそこからそれぞれのデータを読み出すことによってデータを交換できるようにするといった、そのようなプロセス間通信を確立する多くの方法があり得ることが分かるであろう。ブリッジモジュール34によって使用され得る他の例示的なプロセス間通信手段は、とりわけ、ソケット(すなわち、RPAホスト20のネットワークインターフェースを介してデータを転送する)、パイプ、ファイル、及およびメッセージパッシングを含む。本発明のいくつかの実施形態では、ブリッジモジュール34は、以下でさらに説明するように、ブラウザ拡張コンピュータプログラムを含む。本明細書において、「ブラウザ拡張」という用語は、ブラウザアプリケーションのネイティブ機能を拡張し、それぞれのブラウザアプリケーション内で遂行する(すなわち、遂行のためにブラウザプロセスを使用する)アドオン、カスタムコンピュータプログラムを示す。
【0051】
図6-A~
図6-Bは、本発明のいくつかの実施形態によるブラウザ内でRPAアクティビティを実施するための例示的な方法を示す。
図6-Aの例示的な構成では、第1のブラウザプロセス32aがエージェントブラウザウィンドウ36aを公開し、一方で第2のブラウザプロセス32がターゲットブラウザウィンドウ36bを公開する。そのような一例では、ブラウザウィンドウ36a~36bは、Google Chrome(登録商標)などの商用ウェブブラウザアプリケーションのインスタンスによって開かれた別個のブラウザタブを表す。いくつかの実施形態では、エージェントブラウザウィンドウ36aは、とりわけ、RPAロボットの設計またはRPAロボットの遂行などの自動化タスクをユーザーが実行することを可能にするRPAインターフェースを表示する。このような使用例は、以下で個別に説明される。いくつかの実施形態は、それぞれのRPAタスクのターゲット/オペランド、例えば、自動的にクリックされるボタン、自動的に記入されるフォーム、自動的に取り込まれるテキスト片または画像などを含むウェブドキュメントをフェッチして表示するために、ターゲットブラウザウィンドウ36bを採用する。
【0052】
いくつかの現代のブラウザは、遂行可能コードの断片を含むウェブドキュメントのレンダリングを可能にする。それぞれの遂行可能コードは、それぞれのドキュメントのコンテンツがユーザーにどのように表示されるかを制御し、サードパーティーコンテンツ(例えば、広告、天気、株式市場の更新)の配布および表示を管理し、それぞれのユーザーのブラウジング習慣を特徴付ける様々な種類のデータを収集するなどをし得る。このような遂行可能コードは、それぞれのドキュメントに埋め込まれてもよいし、そこからハイパーリンクされてもよい。例示的なブラウザ遂行可能コードは、実行時の解釈またはコンパイルのために、スクリプト言語またはバイトコードで事前にコンパイルまたは定式化され得る。例示的なスクリプト言語は、とりわけ、JavaScript(登録商標)およびVBScript(登録商標)を含む。コードの遂行を可能にするために、いくつかのブラウザは、スクリプト言語/バイトコードから受け取ったコードをそれぞれのホストプラットフォームでの遂行に適した形式に変換し、それぞれのコードが実行するためのホスティング環境を提供するように構成されたインタプリタを含む。
【0053】
本発明のいくつかの実施形態は、ブラウザプロセス32aおよびエージェントブラウザウィンドウ36aを使用して、例えばJavaScript(登録商標)で定式化された遂行可能なRPAエージェント31を含むウェブドキュメントをロードする。様々な実施形態では、RPAエージェント31は、以下に詳細に示すように、RPA設計アプリケーション30の機能性のいくつかおよび/またはRPAロボット12の機能性のいくつかを実装し得る。RPAエージェント31は、例えば、ブラウザプロセス32aをエージェント31のアドレスを示す予め定められたユニフォームリソースロケータ(URL)に向けることによって、リモートリポジトリ/サーバーからフェッチされ得る。RPAエージェント31をフェッチすることに応答して、ブラウザプロセス32aは、プロセス32aおよび/またはエージェントブラウザウィンドウ36aに特有の分離された環境内でエージェント31を解釈し遂行し得る。
【0054】
いくつかの実施形態は、ブラウザプロセス32bおよび/またはターゲットウィンドウ36bにRPAドライバ25をさらに提供する。ドライバ25は概して、ターゲットブラウザウィンドウ36b内に現在表示されているドキュメントのドキュメントオブジェクトモデル(DOM)の構築、解析、および/または修正、それぞれのドキュメントの要素(例えば、ボタン、フォームフィールド)を特定すること、要素の画面上の外観(例えば、色、位置、サイズ)を変更すること、形状を描くこと、カーソルの現在の位置を決定すること、マウス、キーボード、および/またはタッチスクリーンイベントなどの入力イベントを登録および/または遂行すること、ハンドヘルドデバイスの現在の姿勢/向きを検出することなどの低レベルの処理タスクを運ぶソフトウェアモジュールのセットを表す。いくつかの実施形態では、RPAドライバ25は、ブラウザプロセス32bおよび/またはターゲットウィンドウ36b内で現在レンダリングされているターゲットドキュメントに導入されるスクリプトのセットとして具現化される。
【0055】
図6-Aは、ブラウザプロセス32a~32b間に通信チャネル38を確立するブリッジモジュール34をさらに示す。
図6-Bに示されるようないくつかの実施形態では、ブリッジモジュール34は、プロセス32a~32b間の仲介者として配置される。このような実施形態では、プロセス32a~32bを接続する通信チャネルは、チャネル138a~138bによって一般的に表される。
図6-Bに示されるような構成に配置された場合、ブリッジモジュール34は、意図されたその宛先にそれを転送する前に、RPAエージェント31およびRPAドライバ25によって交換されるデータのいくつかを傍受、分析、および/または変更してもよい。1つのそのような例では、ブリッジモジュール34は、通信チャネル138a~138bを介して交換されたデータの少なくともいくつかに従って、別のブリッジブラウザウィンドウ36c(例えば、別のブラウザタブ)内に表示を生成してよい。ブリッジモジュール34は、例えば、別個のブラウザプロセス32cによって遂行されるコンテンツスクリプトのセットとして具現化され得る(例えば、モジュール34は、ブラウザ拡張を含む)。
【0056】
(ロボット設計実施形態)
いくつかの実施形態は、ロボット設計インターフェースをエージェントブラウザウィンドウ36aにロードするために、ブラウザプロセス32a(
図6-A~
図6-B)を使用する。
図7は、本発明のいくつかの実施形態による例示的なロボット設計インターフェース50を示す。当業者であれば、図示されたインターフェースのコンテンツおよび外観は例示的なものに過ぎず、限定的なものではないことを理解するだろう。インターフェース50は、例えばメニュー領域52およびワークフロー設計領域51のような様々な領域を含む。メニュー領域52は、ユーザーがRPAロボットによる遂行のために個々のRPAアクティビティを選択することを可能にし得る。アクティビティは、様々な基準に従って、例えば、ユーザーインタラクションのタイプ(例えば、クリック、タップ、ジェスチャ、ホットキー)に従って、データのタイプ(例えば、テキスト関連アクティビティ、画像関連アクティビティ)に従って、データ処理のタイプ(例えば、ナビゲーション、データスクレイピング、フォームを埋めること)などに従ってグループ化され得る。いくつかの実施形態では、個々のRPAアクティビティは、メニューの階層を介して到達され得る。
【0057】
ワークフロー設計領域51は、現在自動化されているビジネスプロセスのフローを再現するアクティビティシーケンスのダイアグラム(例えば、フローチャート)を表示し得る。インターフェースは、ユーザーがシーケンスのアクティビティを追加、削除、および再配置することを可能にする様々な制御を公開し得る。各RPAアクティビティは、
図7のアイテム54a~54bとして図示されるアクティビティ構成UIによって、独立して構成され得る。ユーザーインターフェース54a~54bは、インターフェース50の子ウィンドウを含み得る。
図8は、本発明のいくつかの実施形態による例示的なアクティビティ構成インターフェース54cを示す。例示的なインターフェース54cは、「Type Into(打ち込む)」アクティビティ(すなわち、ウェブフォームの入力フィールドを埋めること)を構成し、フィールドのセット、例えば、アクティビティ名フィールドおよびユーザーが現在のアクティビティの様々なパラメータを設定できるように構成されたアクティビティパラメータフィールドのセットを公開する。
図8の例では、パラメータフィールド58は、ターゲットフォームフィールドに書き込まれるテキストを受信し得る。ユーザーは、入力テキストを直接提供し得るまたはそれぞれの入力テキストのソースを示すインジケータの形態で提供し得る。例示的なソースは、スプレッドシートの特定のセル/列/行、予め定義された変数の現在値(例えば、それぞれのワークフローの以前のRPAアクティビティを遂行することから得られる値)、指定されたURLに位置するドキュメント、現在のターゲットドキュメントからの別の要素などを含み得る。
【0058】
現在のRPAアクティビティの別の例示的なパラメータは、それぞれのアクティビティのオペランド/ターゲットであり、本明細書では、RPAロボットが作用することになっているターゲットドキュメントの要素を示す。選択されたアクティビティがマウスクリックを含む一例では、ターゲット要素は、ボタン、メニューアイテム、ハイパーリンクなどであってもよい。選択されたアクティビティがフォームへの入力を含む別の例では、ターゲット要素は、入力を受信すべき特定のフォームフィールドであり得る。インターフェース50、54は、ユーザーが様々な方法でターゲット要素を示すことを可能にし得る。例えば、候補のメニュー/リストからターゲット要素を選択するようにユーザーを誘うことができる。好ましい実施形態では、アクティビティ構成インターフェース54cは、例えば、ターゲットをクリックまたはタップすることによって、ターゲットブラウザウィンドウ36b内で直接それを示すようにユーザーに指示してもよい。いくつかの実施形態は、アクティベートされると、ユーザーがターゲット構成インターフェースによってターゲットをさらに指定することを可能にする、ターゲット構成制御56を公開する。
【0059】
いくつかの実施形態では、RPAドライバ25は、ユーザーの入力を分析して、ユーザーが現在のRPAアクティビティのターゲットとして選択した、ターゲットブラウザウィンドウ36b内に現在表示されているターゲットドキュメントの要素を特徴付けるターゲット特定データのセットを決定するように構成される。
図9は、ターゲットブラウザウィンドウ36b内に表示されたログインフォームを含む例示的なターゲットドキュメントを示す。
図9は、さらに、例示的なターゲットUI要素60、本明細書ではログインフォームの第1の入力フィールドを示す。いくつかの実施形態では、ターゲット要素60を特徴付けるターゲット特定データは、ターゲットドキュメントのソースコード表現から抽出されたまたはターゲットドキュメントのソースコード表現に従って決定されたデータのセットを含む要素ID62を含む。「ソースコード」という用語は、本明細書では、ユーザーインターフェースによって表示されるコンテンツのプログラム的表現を示すと理解される。ウェブドキュメントの場合、典型的には、ソースコードは、ハイパーテキストマークアップ言語(HTML)のバージョンで定式化されるが、当業者は、拡張可能マークアップ言語(XML)およびJavaScript(登録商標)などのスクリプト言語などの他の言語も同様に適用できることを知るであろう。
図9に示される例では、要素ID62は、ターゲットドキュメントのそれぞれの要素に特徴的な属性-値ペアのセットを含み、属性-値ペアのセットは、ターゲットドキュメントのHTMLコードから抽出されたものである。いくつかの実施形態では、要素ID62に含まれる属性-値ペアのセットは、それぞれの要素を、ターゲットドキュメントのツリー様表現(例えば、DOM)における特定のノードとして特定する。例えば、属性-値ペアのセットは、それぞれの要素が、特定のウェブページの特定の領域の一部を形成する特定のウェブフォームの特定の入力フィールドであることを示し得る。
【0060】
例示的なターゲット特定データは、それぞれのターゲット要素のユーザー向け画像のエンコードを含むターゲット画像64をさらに含み得る。例えば、ターゲット画像64は、ターゲット要素60を現在表示している画面の限られた領域に対応する画素値の配列、および/または画素値のそれぞれの配列に従って計算された値のセット(例えば、画素値のそれぞれの配列のJPEG表現またはウェーブレット表現)を含み得る。いくつかの実施形態では、ターゲット画像64は、それぞれのターゲット要素の境界内に位置する画面画像のクリッピングのコンテンツを含む。
【0061】
ターゲット特定データは、それぞれのターゲット要素の画面境界内に表示されるテキスト(英数字のシーケンス)のコンピュータでのエンコードを含むターゲットテキスト66をさらに含んでもよい。ターゲットテキスト66は、それぞれのドキュメントのソースコードに従って、および/または、現在ターゲット要素60を表示している画面の領域に対して光学式文字認識(OCR)手順を適用した結果に従って決定され得る。
【0062】
いくつかの実施形態では、ターゲット要素60を特徴付けるターゲット特定データは、ターゲットウェブページの別のUI要素を特徴付ける特定データ(例えば、要素ID、画像、テキストなど)をさらに含み、本明細書では、アンカー要素とみなされる。本明細書においてアンカーは、ターゲット要素と同時表示される任意の要素、すなわち、ターゲットウェブページの少なくとも一部のビューにおいてターゲット要素と共に同時に可視化される要素を示す。いくつかの実施形態では、アンカー要素は、ラベル、タイトルなど、ターゲット要素の近傍に表示されるUI要素から選択される。例えば、
図9に示されるターゲットインターフェースにおいて、アンカー候補は、とりわけ、第2のフォームフィールド(「パスワード」とラベル付けされる)およびフォームタイトル(「ログイン」)を含み得る。いくつかの実施形態では、RPAドライバ25は、以下にさらに詳述するように、ユーザーがRPAアクティビティのターゲットを選択することに応答して、アンカー要素を自動的に選択するように構成される。ターゲット要素60の仕様にアンカー特性データを含めることは、ターゲットの実行時特定を容易にし得、特に、ここでは、ターゲット要素の特性のみに基づく特定は、例えば、ターゲットウェブページがターゲットに類似する複数の要素を有する場合に失敗し得る。ウェブフォームは、例えば、複数の個人に関する情報を受信するように構成されている場合、複数の「姓」フィールドを有し得る。このような場合、「姓」というラベルの付いたフォームフィールドの検索のみに基づくターゲット特定戦略は困難に陥る可能性があるが、アンカーにさらに依存することで曖昧さが解消され得る。
【0063】
いくつかの実施形態では、アクティビティ構成インターフェース54cは、アクティベートされると、ユーザーがターゲット要素60を特徴付けるターゲット特定データを視覚化し編集することを可能にするターゲット構成インターフェースの表示をトリガする制御56を含む。
図10は、そのようなターゲット構成インターフェース70の一例を示し、これは、エージェントブラウザウィンドウ36a内でRPAエージェント31によって表示され得る。あるいは、インターフェース70は、ブリッジブラウザウィンドウ36c内でブリッジモジュール34によって表示され得る。いくつかの他の例示的な実施形態では、インターフェース70は、ドライバ25またはターゲットドキュメントに導入されたいくつかの他のソフトウェアモジュールによって、ターゲットブラウザウィンドウ36b内に表示され得る。いくつかの実施形態では、ユーザー体験を向上させ、ディスプレイを乱雑にしないために、ターゲット構成インターフェース70は、それぞれのブラウザウィンドウの現在のコンテンツ上に重ね合わされてもよく、重ね合わせは、現在のターゲット構成タスクにユーザーの注意を引くために焦点が合わされてもよい。
【0064】
いくつかの実施形態では、ターゲット構成インターフェース70は、とりわけ、例えば、ターゲット要素を示しかつターゲット特定データを編集するためのボタン、ターゲットの選択および/またはターゲット特定データの選択を検証するためのボタン、現在選択されているターゲット要素に関連するアンカー要素を選択しかつアンカー特定データを編集するためのボタン、ならびにトラブルシューティングボタンといった様々な制御を含むメニュー72を含む。現在表示されているビューは、ターゲット要素の特定特徴を構成および/または検証することを可能にし、同様のビューは、アンカー要素の特定特徴を構成するために利用可能であり得る。
【0065】
インターフェース70は、様々なゾーン、例えば、ターゲットドキュメントのツリー表現(例えば、DOM)を表示するための領域に構成されてもよく、これにより、ユーザーは、ターゲット要素60をそれぞれのツリー/DOM内のノードとして容易に視覚化できる。ターゲット構成インターフェース70は、要素ID62をさらに表示してもよく、これにより、ユーザーは、それぞれのターゲット要素を特徴付ける現在定義されている属性-値ペア(例えば、HTMLタグ)を視覚化できる。いくつかの実施形態は、要素ID62に含めるタグおよび/または属性をユーザーが選択することを可能にするタグビルダーペインをさらに含み得る。
【0066】
ターゲット構成インターフェース70は、ターゲット画像64、ターゲットテキスト66、ならびに/またはユーザーが個々のタグおよび/もしくは属性に対して追加のマッチングパラメータを設定することを可能にする属性マッチングペインを表示するための領域をさらに含み得る。一例では、属性マッチングペインは、ターゲット要素60の実行時インスタンスを特定するために、厳密マッチングまたは近似マッチングのいずれを使用するかをユーザーがロボットに指示することを可能にする。厳密なマッチングは、選択された属性の実行時値が、それぞれのターゲット要素のターゲット特定データに含まれるそれぞれの設計時値と正確に一致することを必要とする。近似マッチングは、それぞれの属性の設計時値および実行時値の間の部分的なマッチングのみを必要とし得る。タイプテキストの属性について、近似マッチングの例示的な種類は、とりわけ、正規表現、ワイルドカード、およびファジーマッチングを含む。アンカー属性のマッチングのために、同様の構成フィールドが公開され得る。
【0067】
図11は、本発明のいくつかのロボット設計実施形態におけるブリッジモジュール34によって実行されるステップの例示的なシーケンスを示す。一般性を損なうことなく、示されたシーケンスは、ブリッジモジュール34がRPAエージェント31とRPAドライバ25との間の通信を仲介し、さらにブリッジブラウザウィンドウ36c内にターゲット構成インターフェース70を表示する、
図6-Bに示されるような実施形態に適用され得る。ステップ302では、モジュール34は、RPAホスト20上で現在公開されているウィンドウ/タブの中からターゲットブラウザウィンドウ36bを特定し得る。いくつかの実施形態では、RPAエージェント31は、現在開いているすべてのブラウザウィンドウ/タブを一覧表示するメニューを表示し、自動化のターゲットとなるものを選択するようにユーザーを誘導してもよい。選択されたウィンドウのインジケータは、その後、モジュール34に渡されてもよい。他の実施形態では、ユーザーは、新しいブラウザウィンドウ/タブをインスタンス化し、その後所望のターゲットウェブページに案内するように指示されてもよい。これに応答して、モジュール34は、それぞれのウィンドウ/タブをターゲットウィンドウ36bとして特定し、RPAドライバ25をそれぞれのウィンドウ/タブにロードしてもよい(ステップ304)。代替的に、ブリッジモジュール34は、RPAドライバ25のインスタンスを、現在開いているすべてのブラウザウィンドウ/タブにロードしてもよい。ブリッジモジュール34がブラウザ拡張を含む実施形態では、ステップ304は、コンテンツスクリプトのセットをそれぞれのターゲットドキュメント/ウェブページに導入することを含む。
【0068】
さらなるステップ306は、通信チャネル(複数可)138a~138bをセットアップしてもよい。ブラウザプロセス32a~32bがGoogle Chrome(登録商標)ブラウザのインスタンスであり、ブリッジモジュール34がブラウザ拡張を含む例示的な実施形態では、ステップ306は、RPAエージェント31およびドライバ25が次にデータ交換に使用し得るruntime.Portオブジェクトをセットアップすることを含み得る。それぞれのブラウザアプリケーションがプロセス間通信をサポートしないが、代わりにローカルファイルへのデータの読み取りおよび/または書き込みを可能にする代替実施形態では、エージェント31およびドライバ25は、それぞれのローカルファイルを、通信を預けるおよび/または取り出すためのコンテナとして使用し得る。そのような実施形態では、ステップ306は、それぞれのコンテナのためのファイル名を生成し、それをRPAエージェント31および/またはドライバ25に通信することを含み得る。そのような一例では、導入されたドライバは、それぞれのファイル名を含むようにカスタマイズされ得る。いくつかの実施形態では、ステップ306は、それぞれのRPAホスト上で現在公開されている各ブラウザウィンドウ/タブ/フレームについて別個のファイルコンテナをセットアップすることを含む。さらに他の実施形態では、エージェント31およびドライバ25は、リモートサーバー、例えば、オーケストレータ14(
図2)またはデータベースサーバーを介して通信を交換してもよい。そのような一例では、ステップ306は、エージェント31およびドライバ25の間で交換されるデータを保持するためのコンテナ(例えば、ファイルまたはデータベースオブジェクト)をセットアップするためにリモートサーバーに指示すること、ならびにそれぞれのコンテナのパラメータをエージェント31および/またはドライバ25の間に通信することを含み得る。そのようなコンテナは、RPAホスト20上で遂行するドライバ25の各インスタンスに固有のものであり得る。
【0069】
いくつかの実施形態では、ブリッジモジュール34は、ブリッジブラウザウィンドウ36c内でターゲット構成インターフェース70を公開する(ステップ308)。ステップ310では、次に、モジュール34は、RPAドライバ25からの通信をリッスンしてもよく、そのような通信は、以下に示すように、ターゲット特定データを含み得る。そのような通信に応答して、ステップ312は、インターフェース70にそれぞれのターゲット特定データを入力し得、ユーザーがターゲット要素のそれぞれの選択をレビュー、編集、および/または検証することを可能にする。いくつかの実施形態では、ステップ312は、ターゲット特定データへの変更(例えば、要素ID62への/からのHTMLタグまたは属性-値ペアの追加または削除、属性マッチングパラメータの設定など)を含むユーザー入力を受信することをさらに含み得る。ユーザーが現在のターゲット特定データを検証すると(ステップ314がはいを返す)、ステップ316において、モジュール34は、それぞれのターゲット特定データをRPAエージェント31に転送し得る。
【0070】
図12は、本発明のロボット設計実施形態におけるRPAエージェント31によって実行されるステップの例示的なシーケンスを示す。エージェントブラウザウィンドウ36a内にロボット設計インターフェースを公開することに応答して(例えば、
図7の例示的インターフェース50および上記の関連する説明を参照)、ステップ402は、ロボットによる遂行のためのRPAアクティビティを選択するユーザー入力を受信し得る。例えば、ユーザーは、インターフェース50のアクティビティメニューからRPAアクティビティのタイプ(例えば、フォームフィールドに入力する)を選択し得る。これに応答して、ステップ404は、
図8(上の説明)に示された例示的なインターフェース54cのようなアクティビティ構成インターフェースを公開し得る。
【0071】
次いで、ユーザーは、ターゲットブラウザウィンドウ36b内に表示されたウェブページから、それぞれのアクティビティのためのターゲットを選択するように指示され得る。いくつかの実施形態では、ステップ406~408のシーケンスにおいて、RPAエージェント31は、RPAドライバ25に信号を送ってターゲット特定データを取得してもよく、およびRPAドライバ25からそれぞれのデータを受信してもよい(ターゲット取得に関するより詳しい情報は以下に示される)。このようなデータ転送は、ブリッジモジュール34によってセットアップされた通信チャネル(例えば、
図6-Bのチャネル138a~138b)上で起こる。ステップ414は、例えば、
図9に示される例示的な形態でターゲット入力フィールド60に何を書き込むかなど、それぞれのアクティビティの様々な他のパラメータを構成するユーザー入力を受信し得る。ユーザー入力は、現在のアクティビティの構成が完了したことを示すと(ステップ412がはいを返す)、ステップ416は、現在のワークフローが完了したかどうかを決定する。いいえである場合、RPAエージェント31は、ステップ402に戻り、他のRPAアクティビティを構成するためのユーザー入力を受信し得る。ユーザー入力が現在のワークフローが完了したことを示す場合、ステップ418~420のシーケンスは、それぞれのロボットワークフローを指定するRPAスクリプト/パッケージを定式化し、それぞれのロボット仕様を出力し得る。RPAスクリプト42および/またはパッケージ40は、それぞれのワークフローの各RPAアクティビティに関して、アクティビティタイプのインジケータおよびそれぞれのクティビティのターゲットを特徴付けるターゲット特定データのセットを含み得る。いくつかの実施形態では、ステップ420は、RPAパッケージ40をコンピュータ読み取り可能な媒体(例えば、RPAホスト20のローカルハードドライブ)に保存すること、または遂行するRPAロボット12および/もしくはオーケストレータ14に配布するためにパッケージ40をリモートサーバーに送信することを含み得る。
【0072】
代替の実施形態では、ロボットワークフロー全体のRPAスクリプトまたはパッケージ40を定式化する代わりに、RPAエージェント31は、ターゲット特定データを備える、個々のRPAアクティビティ用の仕様を定式化し、それぞれの仕様をリモートサーバーコンピュータに送信してもよく、次いで、これは、RPAエージェント31から受信した個々のアクティビティデータから設計されたワークフロー全体を記述するRPAパッケージ40を組み立ててもよい。
【0073】
図13は、本発明のロボット設計実施形態におけるRPAドライバ25によって実行されるステップの例示的なシーケンスを示す。ドライバ25は、ポインタの動き、マウスクリック、キー押下、およびタップ、ピンチなどの入力ジェスチャなどのユーザー入力イベント(ステップ502~504)をリッスンするように構成され得る。入力イベントを検出することに応答して、ステップ506においてドライバ25は、イベントに従ってターゲット候補UI要素を特定し得る。検出された入力イベントがマウスイベント(例えば、ポインタの移動)を含む一例では、ステップ506は、ポインタの現在の位置に位置するターゲットウェブページの要素を特定し得る。RPAホスト20がポインタを表示しない別の例では、例えばタッチスクリーンデバイス上で、ステップ504はスクリーンタッチを検出し、そしてステップ506はタッチの位置に位置するターゲットウェブページの要素を特定し得る。
【0074】
いくつかの実施形態では、ステップ508は、ステップ508で特定されたターゲット候補要素を強調表示(ハイライト)し得る。本明細書において強調表示することは、それぞれのターゲット候補要素の外観を変更して、現在のRPAアクティビティの潜在的なターゲットとしてそれを示すことを意味する。
図14は、本発明のいくつかの実施形態による例示的な強調表示を示す。ステップ508は、ターゲットドキュメントの仕様(例えば、HTML、DOM)を変更して、特定されたターゲット候補の外観(例えば、フォント、サイズ、色など)を変更することまたは
図14に示す例示的な強調表示74a~74bなどの新しい強調表示要素を作成することを含み得る。例示的な強調表示要素は、ターゲット候補を囲む多角形のフレームを含み得、これは、ターゲット候補をターゲットウェブページの他の要素間で目立たせるために、着色、陰影付け、ハッチングなどされ得る。他の例示的な強調表示要素は、テキスト要素、アイコン、矢印などを含み得る。
【0075】
いくつかの実施形態では、ターゲット候補の特定は、アンカー要素の選択を自動的にトリガする。アンカーは、とりわけ、ターゲット候補のタイプ、位置、向き、および大きさに従って選択され得る。例えば、いくつかの実施形態は、ターゲット候補のすぐ近くに位置する要素、好ましくはそれと整列している要素をアンカーとして選択する。ステップ510(
図13)は、本技術分野で知られている任意のアンカー選択基準を適用し得、そのような基準およびアルゴリズムは、本明細書の範囲を超えている。さらなるステップ512において、ドライバ25は、上述のようにその画面外観を変更することによって、選択されたターゲット要素を強調表示し得る。いくつかの実施形態は、ターゲット要素およびアンカー要素に対して異なる強調表示を使用し(例えば、異なる色、異なるハッチタイプなど)、図示されるように説明テキストを追加してもよい。いくつかの実施形態では、ステップ510~512が複数回繰り返されて、各ターゲット候補の複数のアンカーを選択する。
【0076】
ステップ514では、RPAドライバ25は、候補ターゲットおよび/または選択されたアンカー要素を特徴付けるターゲット特定データを決定し得る。要素ID62を決定するために、いくつかの実施形態は、ターゲットウェブページのライブDOMを解析し、候補ターゲット要素および/またはアンカー要素を特徴付けるHTMLタグおよび/または属性-値ペアのセットを抽出および/または定式化し得る。ステップ514は、画像データ(例えば、
図9~
図10のターゲット画像64)を決定するために、候補ターゲット要素および/またはアンカー要素を現在表示している画面の領域のスナップショットを取ることをさらに含み得る。ターゲットおよび/またはアンカー要素によって表示されるテキスト/ラベルは、ソースコードを解析することによっておよび/またはOCR手順によって抽出され得る。ステップ516では、ドライバ25は、ステップ514において決定されたターゲット特定データをブリッジモジュール34および/またはRPAエージェント31に送信し得る。そのような通信は、ブリッジモジュール34によって確立されたチャネル(例えば、
図6-Bの138a~138b)を介して実行される。
【0077】
図13の例示的なフローチャートは、RPAドライバ25が、自身のブラウザウィンドウ内で発生するユーザーイベント(例えば、入力イベント)をリスニングし、自身の決定を下し、そして要素特定データをブリッジモジュール34および/またはエージェント31に自動的に送信していると仮定している。代替の実施形態では、RPAエージェント31および/またはブリッジモジュール34は、チャネル38または138a~138bを介して送信されるコマンドまたは他の種類の通信によってRPAドライバ25からデータを積極的に要求し得る。一方、RPAドライバ25は、単にそれぞれのコマンドを遂行するだけでよい。例えば、エージェント31は、ドライバ25に対して、ターゲットを取得するように要求し、次にアンカーを取得するように要求してもよい。このような要求は、例えば、アンカーが候補ターゲットの特定に応答して自動的に選択される上記の説明とは対照的に、ユーザーがアンカーを手動で選択することが期待される実施形態において発行され得る。次に、ドライバ25は、要求に応じて要素特定データを返すだけでよい。さらに他の代替的な実施形態では、アンカー要素を自動的に選択するためのアルゴリズムは、上記のようにドライバ25ではなく、RPAエージェント31によって遂行され得る。例えば、エージェント31は、ターゲットのすぐ左側に位置するUI要素を特定し、それぞれの要素をアンカーとして割り当てるようにドライバ25に要求を送信し得る。当業者であれば、このような変形は例として挙げられたものであり、および本発明の範囲を狭めるものではないことがわかるであろう。
【0078】
上記の説明は、ブリッジモジュール34がRPAエージェント31とドライバ25との間の通信を仲介し(例えば、
図6-B参照)、モジュール34がブリッジブラウザウィンドウ36c内にターゲット構成インターフェース(例えば、
図10のインターフェース70)を表示する例示的な実施形態に言及する。別の例示的な実施形態では、ブリッジモジュール34は、ドライバ25とエージェント31との間のダイレクト通信チャネルをセットアップするだけであり(例えば、
図6-Aのように)、一方で、RPAエージェント31は、エージェントブラウザウィンドウ36a内にターゲット構成インターフェースを表示する。このような実施形態では、RPAドライバ25は、エージェント31からターゲット取得コマンドを受信してもよく、およびターゲット特定データをエージェント31に直接返してもよい。
【0079】
上記の説明はまた、ユーザーが遂行のために利用可能なアクティビティのセットから選択し、その後、ターゲットおよび他のパラメータを示すことによって各個々のアクティビティを構成するように進む、ロボット設計のバージョンに焦点を当てたものである。他の例示的な実施形態は、ロボット設計ツールが一連のユーザーアクション(それぞれのユーザーの複雑なターゲットウェブサイトを案内することなど)を記録し、それぞれのシーケンスを再現するようにロボットを構成する、別のポピュラーなロボット設計シナリオを実装し得る。いくつかのそのような実施形態では、クリック、スクロール、タイプインなどの各ユーザーアクションについて、ドライバ25は、ターゲット特定データのセットを含むそれぞれのアクションのターゲットを決定し、それぞれのデータを、ユーザーアクションのタイプのインジケータとともに、通信チャネル38または138a~138bを介してRPAエージェント31に送信するよう構成され得る。そして、RPAエージェント31は、RPAドライバ25から受信したそれぞれのデータから、ロボット仕様を組み立て得る。
【0080】
(ロボット遂行実施形態)
所望のワークフローを実行するためにRPAロボットを設計することに向けられた上記に例示された実施形態とは対照的に、本発明の他の実施形態では、RPAエージェント31は、実際に自動化を実行するように構成されたRPAロボット12の少なくとも一部を含む。例えば、RPAエージェント31は、ロボットマネージャ24および/またはロボットエグゼキュータ22の機能のいくつかを具現化し得る(
図2および上記の関連する説明を参照)。
【0081】
1つの例示的なロボット遂行実施形態では、ユーザーは、エージェントブラウザウィンドウ36aを使用して、ロボット仕様を開くことができる。仕様は、ロボットに、ターゲットウェブページに案内し、かつフォームに記入する、いくつかのテキストまたは画像をスクレイピングするなどのいくつかのアクティビティを実行するように指示し得る。例えば、RPAパッケージ40は、特定のURLにアクセスすること、またはリモートサーバーコンピュータによって公開されたウェブインターフェースからメニューアイテムを選択することによって、リモート「ロボットストア」からダウンロードされ得る。パッケージ40は、スクリプト42がブラウザプロセスによって遂行されることを可能にするコンピュータ読み取り可能な形式で定式化されたRPAスクリプト42のセットを含み得る。例えば、スクリプト42は、JavaScript(登録商標)のバージョンで定式化され得る。スクリプト42は、RPAアクティビティのシーケンス(例えば、ウェブページへの案内、ボタンのクリックなど)の仕様を含み得、各RPAアクティビティのターゲット/オペランド(例えば、どのボタンをクリックするか、どのフォームフィールドに記入するかなど)を特徴付けるターゲット特定データのセットを含む。
【0082】
図15は、本発明のロボット遂行実施形態におけるモジュール34によって実行されるステップの例示的なシーケンスを示す。ステップ602では、モジュール34は、RPAエージェント31からターゲットウェブページのURLを受信してもよく、次いでそれは、RPAパッケージ40の一部としてそれを受信していてもよい。次に、ステップ604~606のシーケンスは、ターゲットブラウザウィンドウ36bをインスタンス化し(例えば、新しいブラウザタブを開く)、ターゲットウェブページを新しくインスタンス化されたウィンドウにロードしてもよい。ステップ604は、ターゲットブラウザウィンドウ36b内でターゲットウェブページをレンダリングするために、別のブラウザプロセスを起動することをさらに含んでもよい。代替の実施形態では、エージェント31は、ターゲットブラウザウィンドウ36bを開き、ターゲットウェブページにナビゲートするようにユーザーに指示してもよい。
【0083】
ステップ608~610のさらなるシーケンスでは、モジュール34は、RPAドライバ25をターゲットウェブページ/ブラウザウィンドウ36bに導入し、RPAエージェント31とドライバ25との間の通信チャネル(例えば、
図6-Aのチャネル38参照)をセットアップし得る。詳細については、
図11に関連する上記の説明を参照されたい。
【0084】
図16は、本発明のロボット遂行実施形態におけるRPAエージェント31によって実行されるステップの例示的なシーケンスを示す。ステップ702におけるRPAパッケージ40の受信に応答して、ステップ704において、エージェント31は、それぞれの仕様を解析して、遂行されるアクティビティを特定してもよい。次に、ステップ706~708のシーケンスは、それぞれのワークフローのすべてのアクティビティを循環させてもよい。各アクティビティについて、ステップ710は、チャネル38を介してRPAドライバ25に遂行コマンドを送信してもよく、コマンドは、アクティビティのタイプのインジケータを含み、それぞれのアクティビティのターゲット/オペランドを特徴付けるターゲット特定データをさらに含む。次いで、いくつかの実施形態は、通信チャネルを介してRPAドライバ25からアクティビティレポートを受信してもよく、ここで、レポートは、例えばそれぞれのアクティビティが成功したかどうかを示すことができ、それぞれのアクティビティを遂行した結果をさらに含み得る。いくつかの実施形態では、ステップ714は、現在のアクティビティが正常に遂行されたかどうかを受信したアクティビティレポートに従って決定し得、いいえである場合、ステップ716は、エージェントブラウザウィンドウ36a内にユーザーに対しての警告を表示し得る。自動化の完了に応答して(例えば、ステップ706は、遂行する未処理のアクティビティが残っていないと判断した)、ステップ716は、それぞれのワークフローの遂行の成功メッセージおよび/または結果をユーザーに表示してもよい。いくつかの実施形態では、さらなるステップ718は、それぞれの自動化の遂行の結果を含むステータスレポートをリモートサーバー(例えば、オーケストレータ14)に送信し得る。前記結果は、例えば、ターゲットウェブページからスクレイピングされたデータ、ウェブフォームへのデータ入力に成功したことに応答してターゲットウェブページによって表示された承認などを含んでもよい。
【0085】
図17は、本発明のロボット遂行実施形態におけるRPAドライバ25によって実行されるステップの例示的なシーケンスを示す。ドライバ25は、通信チャネル38を介してRPAエージェントからの遂行コマンドをリッスンするように構成され得る(ステップ802~804)。コマンドの受信に応答して、ステップ806は、RPAエージェント31から受信したターゲット特定データに従って、現在のアクティビティのターゲットを特定することを試みてもよい。ステップ806は、それぞれのターゲット特定データに一致する要素についてターゲットウェブページを検索することを含み得る。例えば、RPAドライバ25は、ターゲットウェブページのライブDOMを解析して、HTMLタグおよび/または他の属性-値ペアが要素ID62で指定されたものと一致する要素を特定し得る。いくつかの実施形態では、要素ID62に従った特定が失敗したとき、RPAドライバ25は、画像データおよび/またはテキストデータ(例えば、
図9の要素画像64および要素テキスト66)に従って実行時ターゲットを見つけるよう試みてもよい。いくつかの実施形態はさらに、アンカー要素を特徴付ける特定データに従って、ならびに/またはアンカーに対する実行時ターゲットの相対位置およびアライメントに従って、実行時ターゲットを特定することを試みてもよい。このような手順およびアルゴリズムは、本明細書の範囲を超えるものである。
【0086】
ターゲット特定が成功した場合(ステップ808がはいを返す)、ステップ812は、例えば特定されたボタンをクリックする、特定されたフォームフィールドに記入するなど、現在のRPAアクティビティを遂行し得る。ステップ812は、ターゲットウェブページのソースコードを操作すること、および/または、人間のオペレータが実際にそれぞれのアクションを実行した結果を再現するための入力イベント(例えば、クリック、タップなど)を生成することを含み得る。
【0087】
現在のアクティビティの実行時ターゲットが、RPAエージェント31から受信したターゲット特定データに従って特定され得ない場合(例えば、ターゲットウェブページが設計時と実行時との間で大幅に変更されている状況)、いくつかの実施形態は、通信チャネル38を介してRPAエージェント31にエラーメッセージ/レポートを送信する。代替の実施形態では、RPAドライバ25は、代替ターゲットを検索し得る。そのような一例では、ドライバ25は、提供されたターゲット特定データにほぼ一致するターゲットウェブページの要素を特定し得る。いくつかの実施形態は、所望のターゲット特性に部分的に一致する複数のターゲット候補を特定し、各候補と設計時ターゲットとの間の類似性尺度を計算する。次いで、計算された類似性尺度に従ってターゲット候補をランク付けすることによって、代替ターゲットが選択され得る。代替の実行時ターゲットを選択することに応答して、ドライバ25のいくつかの実施形態は、例えば
図14に関連して上述したように、それぞれのUI要素を強調表示し、およびユーザーに選択を確認するように要求し得る。さらに別の例示的な実施形態では、ドライバ25は、実行時ターゲットが検出され得なかったことを示すダイアログを示し、かつ代替ターゲットを手動で選択するようにユーザーに指示するダイアログを表示し得る。次いで、ドライバ25は、ユーザーの入力を待ってもよい。ユーザーが代替ターゲットを選択すると(例えば、UI要素上でクリック、タップなどによる)、RPAドライバ25は、
図13に関連して上述した方法を使用して、ターゲットウェブページのソースコードおよび/またはDOM内でそれぞれの要素を特定し得る(ステップ506)。代替の実行時ターゲットが利用可能である場合(ステップ810がはいを返す)、ドライバ25は、代替ターゲットに現在のアクティビティを適用し得る(ステップ812)。
【0088】
何らかの理由でドライバ25が代替ターゲットを全くできないとき、いくつかの実施形態では、ステップ814は、実行時ターゲットを特定できなかったために現在のアクティビティが遂行され得なかったことを示すアクティビティレポートをRPAエージェント31に返す。いくつかの実施形態では、アクティビティレポートは、ターゲットウェブページの任意の要素において一致され得なかったターゲット特定データのサブセットをさらに特定し得る。そのような報告は、デバッグを容易にし得る。現在のアクティビティが正常に遂行された場合、RPAエージェント31に送信されるレポートは、それぞれのアクティビティを遂行した結果を含み得る。代替の実施形態では、ステップ814は、ローカルRPAエージェントの代わりに、リモートサーバーコンピュータ(例えば、オーケストレータ14)にアクティビティレポートおよび/またはそれぞれのアクティビティの遂行の結果を送信することを含み得る。
【0089】
図18は、本明細書に記載される方法およびアルゴリズムのいくつかを遂行するようにプログラム可能なコンピュータシステム80の例示的なハードウェア構成を示す。図示された構成は一般的なものであり、例えば
図4の任意のRPAホスト20a~20eを表し得る。いくつかのデバイス(例えば、携帯電話、タブレットコンピュータ、サーバーコンピュータ)のハードウェア構成は、
図18に図示されたものと多少異なる場合があることを当業者は知っているであろう。
【0090】
示されたコンピュータシステムは、ハードウェアプロセッサ82およびメモリユニット84を含む物理デバイスのセットを含む。プロセッサ82は、信号および/またはデータのセットを用いて計算および/または論理演算を遂行するように構成された物理デバイス(例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路など)を含む。いくつかの実施形態では、そのような演算は、プロセッサ命令のシーケンス(例えば、機械コードまたは他のタイプのエンコーディング)の形態でプロセッサ82に配信される。メモリユニット84は、プロセッサ82によってアクセスまたは生成される命令および/またはデータを格納する揮発性コンピュータ読み取り可能な媒体(例えば、DRAM、SRAM)を含み得る。
【0091】
入力デバイス86は、とりわけ、コンピュータキーボード、マウス、およびマイクロフォンを含み得、ユーザーがデータおよび/または命令をそれぞれのコンピュータシステムに導入することを可能にするそれぞれのハードウェアインターフェースおよび/またはアダプタを含む。出力デバイス88は、とりわけ、モニタおよびスピーカなどの表示デバイス、ならびにグラフィックカードなどのハードウェアインターフェース/アダプタを含み得、示されたコンピューティングアプライアンスがデータをユーザーに伝達することを可能にする。いくつかの実施形態では、入力デバイス86および出力デバイス88は、タッチスクリーンデバイスの場合のように、共通のハードウェアの一部を共有する。ストレージデバイス92は、ソフトウェア命令および/またはデータの不揮発性記憶、読み取り、および書き込みを可能にするコンピュータ読み取り可能な媒体を含む。例示的なストレージデバイス92は、磁気ディスクおよび光ディスクおよびフラッシュメモリデバイス、ならびにCDおよび/またはDVDディスクおよびドライブなどのリムーバブル媒体を含む。ネットワークアダプタ94のセットは、関連する通信インターフェース(複数可)とともに、示されたコンピュータシステムがコンピュータネットワーク(例えば、
図4のネットワーク13)および/または他のデバイス/コンピュータシステムに接続することを可能にする。コントローラハブ90は概して、プロセッサ82とデバイス84、86、88、92、および94との間の通信を可能にする複数のシステム、周辺機器、および/またはチップセットバス、および/または他のすべての回路を表す。例えば、コントローラハブ90は、とりわけ、メモリコントローラ、入/出力(I/O)コントローラ、および割込みコントローラを含み得る。別の例では、コントローラハブ90は、プロセッサ82をメモリ84に接続するノースブリッジ、ならびに/またはプロセッサ82をデバイス86、88、92、および94に接続するサウスブリッジを含み得る。
【0092】
上述した例示的なシステムおよび方法は、RPAソフトウェアが、そのハードウェアタイプおよびオペレーティングシステムに関係なく、事実上あらゆるホストコンピュータ上で遂行できるようにすることによって、RPA技術の取り込みを促進する。一般的に個別の自己完結型ソフトウェアアプリケーションとして配布される従来のRPAソフトウェアとは対照的に、本発明のいくつかの実施形態では、RPAソフトウェアは、とりわけ、Google Chrome(登録商標)などのウェブブラウザ内で遂行するスクリプトのセットを含む。前記スクリプトは、JavaScript(登録商標)などのスクリプト言語、またはブラウザが解釈することができるバイトコードのいくつかのバージョンで定式化され得る。
【0093】
従来のRPAでは、各ハードウェアプラットフォーム(すなわち、プロセッサファミリー)および/または各オペレーティングシステム(例えば、Microsoft Windows(登録商標)およびLinux(登録商標))用に別々のバージョンのソフトウェアを開発する必要があるが、本発明のいくつかの実施形態は、スクリプト解釈機能を有するウェブブラウザを遂行できる任意のプラットフォームおよびオペレーティングシステムで同じスクリプトのセットが使用されるようにし得る。ソフトウェア開発者側では、ロボット設計アプリケーションの複数のバージョンを構築および維持する必要性を取り除くことにより、ソフトウェア開発を実質的に容易にし、市場投入までの時間を短縮し得る。クライアント側の利点は、RPAソフトウェアの複数バージョンの購入、インストール、およびアップグレードの必要性がなくなり、ライセンスプロセスがさらに簡素化されるため、管理コストの削減を含む。また、個々のRPA開発者は、オペレーティングシステムに関係なく、自分のPCでオートメーションの設計、テスト、および実行ができるようになるという利益もあり得る。
【0094】
しかし、ブラウザの内部からRPAを実行することは、技術的に大きな課題をもたらす。RPAソフトウェアライブラリは比較的大きい場合があるため、ターゲットウェブドキュメントに挿入することは非現実的であり得、時折、それぞれのブラウザプロセスがクラッシュまたはスローダウンすることを引き起こし得る。その代わりに、本発明のいくつかの実施形態は、RPAソフトウェアの機能をいくつかの部分に分割し、各部分は別々のブラウザプロセス、ウィンドウ、またはタブ内で遂行する。例えば、ロボット設計実施形態では、設計インターフェースは、自動化をターゲットとするウェブページを表示する別のウィンドウ/タブとは異なる、1つのブラウザウィンドウ/タブ内で遂行し得る。次に、いくつかの実施形態は、比較的小さなソフトウェアコンポーネント(例えば、上記に開示されたRPAドライバ)をターゲットウェブページに導入するだけであり、それぞれのコンポーネントは、UI要素の特定およびマウスクリック、指のタップなどのユーザーアクションの模倣といった基本タスクを遂行するように構成される。RPAソフトウェアの大部分をターゲットドキュメントの外に保つことによって、いくつかの実施形態は、RPAソフトウェアのユーザー体験、安定性、および性能を向上する。
【0095】
個別のRPAコンポーネントを別々のウィンドウ/タブに配置することのもう1つの利点は、機能性の強化である。現代のブラウザは通常、コンピュータセキュリティおよびプライバシーの理由から、個別のウィンドウ/タブを互いに分離しておくので、すべてのRPAソフトウェアがターゲットウェブページ内で遂行するRPAシステムは、それぞれのウィンドウ/タブのコンテンツにのみアクセスし得る。ハイパーリンクをクリックすると、新しいウィンドウ/タブ内に追加のウェブページの表示を誘発する例示的な状況では、したがって、追加のウェブページのコンテンツは、RPAソフトウェアに立ち入ることはできない。そのようなRPA戦略とは対照的に、本発明のいくつかの実施形態は、RPAコードの相互接続されたスニペットを複数のウィンドウ/タブで一度に遂行することができ、したがって、不都合を解消する。1つの例示的な実施形態では、ターゲットウェブページ内で遂行するRPAドライバは、ハイパーリンクのアクティベーションを検出し、その事実をブリッジモジュールに伝達する。これに応答して、ブリッジモジュールは、新しいブラウザウィンドウ/タブのインスタンス化を検出し、RPAドライバの別のインスタンスを新しく開いたウィンドウ/タブに自動的に導入し、そしてRPAドライバの新しいインスタンスおよびエージェントブラウザウィンドウ内で遂行するRPAエージェントの間の通信チャネルを確立し得、それにより複数のウィンドウ/タブにわたるシームレス自動化を可能にする。
【0096】
さらに、RPAエージェントの単一のインスタンスは、複数のウィンドウ/タブの自動化を管理し得る。ロボット設計実施形態では、RPAエージェントは、別個ブラウザウィンドウ/タブで動作するRPAドライバの複数のインスタンスからターゲット特定データを収集し得、したがって、複数のページおよびハイパーリンクにわたるユーザーのナビゲーションの詳細を捕捉する。ロボット遂行実施形態では、RPAエージェントは、ウィンドウ固有のターゲット特定データをRPAエージェントの各インスタンスに送信してもよく、したがって、ロボットが例えば複数のソースからのデータのスクレイピングおよび結合といった、複数のウェブページとの複雑なインタラクションを再現することが可能になる。
【0097】
一方、別個のRPAコンポーネントを別個のウィンドウ/タブに保持することは、ブラウザのコード分離ポリシーに明示的に反することによって、余分な技術的問題を生じさせる。そのようなハードルを克服するために、いくつかの実施形態は、様々なRPAコンポーネント間で通信チャネルをセットアップして、ターゲット特定データおよびステータスレポートなどのメッセージの交換を可能にする。1つの例示的な実施形態は、そのような通信チャネルをセットアップするために、ブラウザ拡張メカニズムを使用する。
【0098】
上記の実施形態は、本発明の範囲から逸脱することなく多くの変更が可能であることは、当業者には明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲およびその法的均等物によって決定されるべきである。
【外国語明細書】