JP2023152695A - ロボティックプロセスオートメーション(rpa)ロボットを設計するためにブラウザを使用するシステムおよび方法 - Google Patents
ロボティックプロセスオートメーション(rpa)ロボットを設計するためにブラウザを使用するシステムおよび方法 Download PDFInfo
- Publication number
- JP2023152695A JP2023152695A JP2023011567A JP2023011567A JP2023152695A JP 2023152695 A JP2023152695 A JP 2023152695A JP 2023011567 A JP2023011567 A JP 2023011567A JP 2023011567 A JP2023011567 A JP 2023011567A JP 2023152695 A JP2023152695 A JP 2023152695A
- Authority
- JP
- Japan
- Prior art keywords
- rpa
- target
- computer system
- robot
- driver
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000013461 design Methods 0.000 title claims abstract description 45
- 238000004801 process automation Methods 0.000 title claims abstract description 9
- 230000000694 effects Effects 0.000 claims abstract description 101
- 238000004891 communication Methods 0.000 claims abstract description 87
- 230000008569 process Effects 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 7
- 239000003795 chemical substances by application Substances 0.000 description 72
- 238000013515 script Methods 0.000 description 32
- 230000008685 targeting Effects 0.000 description 20
- 230000009471 action Effects 0.000 description 18
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012015 optical character recognition Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000010079 rubber tapping Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000007790 scraping Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000011524 similarity measure Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1671—Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Entrepreneurship & Innovation (AREA)
- Medical Informatics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Mechanical Engineering (AREA)
- Robotics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
【課題】ウェブブラウザ内でロボティックプロセスオートメーション(RPA)のクティビティを実行する方法、コンピュータシステム及び非一時的なコンピュータ読み取り可能な媒体を提供する。【解決手段】ブラウザウィンドウ/タブ内で遂行するロボティックプロセスオートメーション(RPA)エージェントは、ブラウザの外部で遂行するRPAドライバとインタラクションする。ブリッジモジュールは、RPAエージェントおよびRPAドライバの間の通信チャネルを確立する。RPAエージェントはロボット設計インターフェースを公開し、RPAドライバはターゲットユーザーインターフェース(例えば、スプレッドシートアプリケーションのインスタンス、電子メールプログラム)とユーザーのインタラクションを検出し、インタラクションを特徴付けるデータをロボット仕様を構築するRPAエージェントに送信する。【選択図】図6
Description
本発明は、ロボティックプロセスオートメーション(RPA)に関し、特に、ウェブブラウザ内でRPAアクティビティを実行することに関する。
RPAは、繰り返し行われるコンピューティングタスクを自動化することで生産性を向上させ、人間のオペレータを自由にしてより知的に洗練されたおよび/または創造的なアクティビティを行えるようにすることを目的とした、情報技術の新しい分野である。自動化の対象となる注目すべきタスクは、ドキュメント(請求書、ウェブページなど)からの構造化データの抽出ならびに例えばフォームへの入力、電子メールの送信、およびソーシャルメディアサイトへのメッセージの投稿などのユーザーインターフェースとのインタラクションを含む。
RPA開発における明確な推進力は、複数のハードウェアおよびソフトウェアプラットフォームにまたがる幅広い開発者および業界にRPA技術の範囲を拡大することに向けられている。
1つの態様によると、方法は、コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、ロボティックプロセスオートメーション(RPA)ドライバおよびブリッジモジュールを遂行することを含む。ブリッジモジュールは、RPAドライバおよびコンピュータシステム上で遂行するウェブブラウザアプリケーションの間に通信チャネルをセットアップするように構成される。RPAドライバは、ウェブブラウザアプリケーションの外部で遂行し、そしてコンピュータシステム上に公開されたターゲットユーザーインターフェース(UI)のターゲット要素を示すユーザー入力を検出し、かつターゲット要素を特徴付けるターゲット特定データのセットを通信チャネルを介してウェブブラウザアプリケーションに送信するように構成される。ウェブブラウザアプリケーションは、ターゲット要素においてRPAアクティビティを行うように構成されたRPAロボットの仕様を出力するように構成されたロボット設計インターフェースを公開する。
別の態様によると、コンピュータシステムは、RPAドライバおよびブリッジモジュールを遂行するように構成された少なくとも1つのハードウェアプロセッサを含む。ブリッジモジュールは、RPAドライバおよびコンピュータシステム上で遂行するウェブブラウザアプリケーションの間に通信チャネルをセットアップするように構成される。RPAドライバは、ウェブブラウザアプリケーションの外部で遂行し、そしてコンピュータシステム上に公開されたターゲットUIのターゲット要素を示すユーザー入力を検出し、かつターゲット要素を特徴付けるターゲット特定データのセットを通信チャネルを介してウェブブラウザアプリケーションに送信するように構成される。ウェブブラウザアプリケーションは、ターゲット要素においてRPAアクティビティを行うように構成されたRPAロボットの仕様を出力するように構成されたロボット設計インターフェースを公開する。
別の態様によると、非一時的なコンピュータ読み取り可能な媒体は、コンピュータシステムの少なくとも1つのハードウェアプロセッサによって遂行されたとき、コンピュータシステムにロボティックプロセスオートメーション(RPA)ドライバおよびブリッジモジュールを遂行させる命令を格納する。ブリッジモジュールは、RPAドライバおよびコンピュータシステム上で遂行するウェブブラウザアプリケーションの間に通信チャネルをセットアップするように構成される。RPAドライバは、ウェブブラウザアプリケーションの外部で遂行し、そしてコンピュータシステム上に公開されたターゲットユーザーインターフェース(UI)のターゲット要素を示すユーザー入力を検出し、かつターゲット要素を特徴付けるターゲット特定データのセットを通信チャネルを介してウェブブラウザアプリケーションに送信するように構成される。ウェブブラウザアプリケーションは、ターゲット要素においてRPAアクティビティを行うように構成されたRPAロボットの仕様を出力するように構成されたロボット設計インターフェースを公開する。
本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照することにより、よりよく理解されるであろう。
(好ましい実施形態の詳細な説明)
以下の説明において、構造間のすべての言及された接続は、直接的な動作可能な接続または仲介構造を介した間接的に動作可能な接続であり得ることが理解される。要素のセットは、1または複数の要素を含む。要素のいかなる言及も、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。「または」の使用は、非排他的な「または」として意味される。特に必要とされない限り、記載された方法ステップは、必ずしも特定の図示された順序で実行される必要はない。第2の要素から導かれる第1の要素(例えば、データ)は、第2の要素に等しい第1の要素と、第2の要素を処理することによって生成される第1の要素と、任意に他のデータとを包含する。パラメータに従って判断または決定を行うことは、パラメータに従って判断または決定を行うこと、および任意に他のデータに従って判断または決定を行うことを包含する。特に指定がない限り、ある量/データの指標は、量/データそのものであってもよいし、量/データそのものとは異なる指標であってもよい。コンピュータプログラムは、タスクを実行するプロセッサ命令のシーケンスである。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、独立したソフトウェアエンティティまたは他のコンピュータプログラムのサブエンティティ(例えば、サブルーチン、ライブラリ)であり得る。プロセスは、コンピュータプログラムのインスタンスであり、インスタンスは、少なくとも遂行スレッドとそれに割り当てられた別の仮想メモリ空間とを有することによって特徴づけられ、ここで、それぞれの仮想メモリ空間のコンテンツは、遂行可能コードを含む。ブラウザプロセスとは、Google Chrome(登録商標)などのウェブブラウザアプリケーションに属するプロセスである。ソフトウェアがブラウザプロセスによって遂行される場合はブラウザ内で実行すると言われ、そうでない場合はブラウザ外で実行すると言われる。本明細書では、「データベース」という用語は、組織化された検索可能なデータの集合を示すために使用される。コンピュータ読み取り可能な媒体は、磁気、光学、および半導体記憶媒体(例えば、ハードディスク、光ディスク、フラッシュメモリ、DRAM)などの非一時的な媒体、ならびに導電性ケーブルおよび光ファイバーリンクなどの通信リンクを包含する。いくつかの実施形態によると、本発明は、特に、本明細書に記載の方法を実行するようにプログラムされたハードウェア(例えば、1または複数のプロセッサ)、ならびに本明細書に記載の方法を実行するための命令をエンコードするコンピュータ読み取り可能な媒体を含むコンピュータシステムを提供する。
以下の説明において、構造間のすべての言及された接続は、直接的な動作可能な接続または仲介構造を介した間接的に動作可能な接続であり得ることが理解される。要素のセットは、1または複数の要素を含む。要素のいかなる言及も、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。「または」の使用は、非排他的な「または」として意味される。特に必要とされない限り、記載された方法ステップは、必ずしも特定の図示された順序で実行される必要はない。第2の要素から導かれる第1の要素(例えば、データ)は、第2の要素に等しい第1の要素と、第2の要素を処理することによって生成される第1の要素と、任意に他のデータとを包含する。パラメータに従って判断または決定を行うことは、パラメータに従って判断または決定を行うこと、および任意に他のデータに従って判断または決定を行うことを包含する。特に指定がない限り、ある量/データの指標は、量/データそのものであってもよいし、量/データそのものとは異なる指標であってもよい。コンピュータプログラムは、タスクを実行するプロセッサ命令のシーケンスである。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、独立したソフトウェアエンティティまたは他のコンピュータプログラムのサブエンティティ(例えば、サブルーチン、ライブラリ)であり得る。プロセスは、コンピュータプログラムのインスタンスであり、インスタンスは、少なくとも遂行スレッドとそれに割り当てられた別の仮想メモリ空間とを有することによって特徴づけられ、ここで、それぞれの仮想メモリ空間のコンテンツは、遂行可能コードを含む。ブラウザプロセスとは、Google Chrome(登録商標)などのウェブブラウザアプリケーションに属するプロセスである。ソフトウェアがブラウザプロセスによって遂行される場合はブラウザ内で実行すると言われ、そうでない場合はブラウザ外で実行すると言われる。本明細書では、「データベース」という用語は、組織化された検索可能なデータの集合を示すために使用される。コンピュータ読み取り可能な媒体は、磁気、光学、および半導体記憶媒体(例えば、ハードディスク、光ディスク、フラッシュメモリ、DRAM)などの非一時的な媒体、ならびに導電性ケーブルおよび光ファイバーリンクなどの通信リンクを包含する。いくつかの実施形態によると、本発明は、特に、本明細書に記載の方法を実行するようにプログラムされたハードウェア(例えば、1または複数のプロセッサ)、ならびに本明細書に記載の方法を実行するための命令をエンコードするコンピュータ読み取り可能な媒体を含むコンピュータシステムを提供する。
以下の説明は、本発明の実施形態を例示するものであり、必ずしも限定するものではない。
図1は、本発明のいくつかの実施形態による例示的なロボティックプロセスオートメーション(RPA)環境10を示す。環境10は、特定のタスクの自動化を実現するために協働する様々なソフトウェアコンポーネントを含む。例示的なRPAシナリオでは、企業の従業員は、ビジネスアプリケーション(例えば、ワードプロセッサ、スプレッドシートエディタ、ブラウザ、電子メールアプリケーション)を使用して、例えば、様々なクライアントに請求書を発行するといった繰り返しのタスクを実行する。それぞれのタスクを実行するために、従業員は、Microsoft Excel(登録商標)スプレッドシートを開く、クライアントの会社の詳細を調べる、それぞれの詳細を請求書テンプレートにコピーする、購入したアイテムを示す請求書フィールドを埋める、電子メールアプリケーションに切り替える、それぞれのクライアントへの電子メールメッセージを作成する、新しく作成した請求書をそれぞれのメールメッセージに添付する、および「送信」ボタンをクリックするなど一連の動作/アクションを実行する。RPA環境10の様々な要素は、それぞれのタスクを実行する過程でそれぞれの人間のオペレータによって実行される操作のセットを模倣することによって、それぞれのプロセスを自動化し得る。
人間の動作/アクションを模倣することは、本明細書では、人間のオペレータがコンピューティングデバイス上でそれぞれの動作/アクションを実行するときに生じるコンピューティングイベントのシーケンスを再現すること、および人間のオペレータがそれぞれの動作を実行した結果を再現することを包含すると理解される。例えば、グラフィカルユーザーインターフェース(GUI)のボタンをクリックするアクションを模倣することは、オペレーティングシステムにマウスポインタをそれぞれのボタンに移動させ、マウスクリックイベントを発生させることを含んでもよく、またはそれぞれのGUIボタンをクリックされた状態に直接トグルすることを代替的に含んでもよい。
RPAオートメーションの典型的なターゲットとなるアクティビティは、とりわけ支払処理、請求書発行、ビジネスクライアントとのコミュニケーション(例えば、ニュースレターおよび/または製品提供の配布)、内部コミュニケーション(例えば、メモ、会議および/またはタスクのスケジューリング)、監査、および給与処理などを含む。いくつかの実施形態では、専用のRPA設計アプリケーション30(図2)は、人間の開発者が、一連の人間のアクションを効果的に自動化するワークフローを実装するためのソフトウェアロボットを設計することを可能にする。本明細書においてワークフローは、カスタムオートメーションステップのシーケンスを示し、本明細書ではRPAアクティビティとみなされる。各RPAアクティビティは、ボタンのクリック、ファイルの読み取り、スプレッドシートセルへの書き込みなど、ロボットによって実行される少なくとも1つのアクションを含む。アクティビティは、入れ子にされ(nested)および/または埋め込まれ得る。いくつかの実施形態では、RPA設計アプリケーション30は、ワークフローの実行順序およびワークフローのRPAアクティビティ間の関係の制御を開発者に与えるユーザーインターフェースおよびツールのセットを公開する。RPA設計アプリケーション30の実施形態の商業的な一例は、UiPath StudioX(商標)である。本発明のいくつかの実施形態では、RPA設計アプリケーション30の少なくとも一部は、以下に詳細に説明するように、ブラウザ内で遂行し得る。
ワークフローのいくつかのタイプには、シーケンス、フローチャート、有限状態機械(FSM)、および/またはグローバル例外ハンドラなどを含み得るが、これらに限定されない。シーケンスは、ワークフローを乱雑にすることなく、あるアクティビティから別のアクティビティへのフローを可能にする、線形プロセスに特に適し得る。フローチャートは、特により複雑なビジネスロジックに適し得、複数の分岐ロジックオペレータを介して、より多様な方法で意思決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)またはアクティビティによりトリガされる有限の数の状態をそれらの遂行中に使用し得る。グローバル例外ハンドラは、遂行エラーに遭遇したときのワークフローの挙動を決定したり、プロセスをデバッグしたりするのに特に適し得る。
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は、ネイティブプロセッサ命令(例えば、機械コード)のセットに予めコンパイルされる。
いくつかの実施形態では、RPAパッケージ40は、遂行中にそれぞれのロボットによって使用されるプロセスリソースのセットを示すリソース仕様44をさらに含む。例示的なプロセスリソースは、とりわけ、資格情報のセット、コンピュータファイル、キュー、データベース、およびネットワーク接続/通信リンクを含む。本明細書における資格情報は、特定のRPAホストマシンにアクセスするためおよび/または特定のソフトウェアコンポーネントを遂行するために必要なプライベートデータ(例えば、ユーザー名、パスワード)を概して示す。資格情報は、暗号化されたデータを含んでいてもよく、そのような状況では、遂行しているロボットは、それぞれのデータを復号化するための暗号鍵を所有し得る。いくつかの実施形態では、資格情報リソースはコンピュータファイルの形態をとり得る。あるいは、例示的な資格情報リソースは、実際の資格情報を保持するデータベースへのルックアップキー(たとえば、ハッシュインデックス)を含み得る。このようなデータベースはしばしは、本技術分野では資格情報保管庫(credential Vault)として知られる。本明細書では、キューは、同じタイプのアイテム(例えば、コンピュータファイル、構造化データオブジェクト)の順序付けられた集合を保持するコンテナを示す。例示的なキューは、とりわけ、請求書の集合および電子メールの受信箱のコンテンツを含む。キューアイテムの順序は、それぞれのアイテムが遂行するロボットによって処理されるべき順序を示し得る。
いくつかの実施形態では、各プロセスリソースについて、仕様44は、それぞれのリソースを特徴付けるメタデータのセットを含む。例示的なリソース特性/メタデータは、とりわけ、それぞれのリソースのリソースタイプのインジケータ、それぞれのリソースにアクセスするためのファイル名、ファイルシステムパスおよび/または他のロケーションインジケータ、それぞれのリソースのサイズ、およびバージョンインジケータを含む。リソース仕様44は、例えば、XMLまたはJSONスクリプト、関係データベースなど、本技術分野において既知の任意のデータ形式に従って定式化され得る。
当業者は、RPA設計アプリケーション30が複数のコンポーネント/モジュールを含み得、それらが別個の物理的マシン上で遂行し得ることを理解するであろう。一例では、RPA設計アプリケーション30は、クライアント-サーバー構成で遂行し得、アプリケーション30の1つのコンポーネントは、クライアントコンピュータのユーザーに対してロボット設計インターフェースを公開してもよく、そしてサーバーコンピュータ上で遂行するアプリケーション30の別のコンポーネントは、ロボットワークフローを組み立てかつRPAパッケージ40を定式化/出力し得る。例えば、ソフトウェア定式化パッケージ40が、実際にサーバーコンピュータ上で実行する間、開発者は、クライアントコンピュータ上で実行するウェブブラウザを介してロボット設計インターフェースにアクセスし得る。
一旦定式化されると、RPAスクリプト(複数可)42は、ロボット12a~12cのセット(図1)によって遂行されてもよく、これらはさらにオーケストレータ14によって制御および調整され得る。ロボット12a~12cおよびオーケストレータ14はそれぞれ、複数のコンピュータプログラムを含み得、これらは同じ物理的マシン上で遂行してもしていなくてもよい。ロボット12a~12cおよびオーケストレータ14の例示的な商用実施形態は、それぞれ、UiPath Robots(登録商標)およびUiPath Orchestrator(登録商標)を含む。本発明のいくつかの実施形態では、RPAロボット12a~12cの少なくとも一部は、以下に詳細に説明するように、ブラウザ内で遂行し得る。
ロボット12a~12cのタイプは、アテンディッドロボット、アンアテンディッドロボット、開発ロボット(アンアテンディッドロボットと同様であるが、開発およびテストの目的で使用される)、および非生産ロボット(アテンディッドロボットと同様であるが、開発およびテストの目的で使用される)を含むが、これらに限定されない。
アテンディッドロボットは、ユーザーイベントおよび/またはコマンドによってトリガされ、同じコンピューティングシステム上で人間のオペレータと共に動作する。いくつかの実施形態では、アテンディッドロボットは、ロボットトレイからまたはコマンドプロンプトからのみで開始され得、したがって、オーケストレータ14から制御され得ず、例えば、ロックされた画面の下で実行することはできない。アンアテンディッドロボットは、遠隔仮想環境において無人で実行され得、遠隔遂行、監視、スケジューリング、および作業キューのサポートの提供を担当し得る。
オーケストレータ14は、複数のロボット12a~12cの遂行を制御し、調整する。そのため、オーケストレータ14は、プロビジョニング、展開(デプロイメント(deployment))、構成、スケジューリング、キューイング、監視、ロギング、および/またはロボット12a~12cの相互接続性の提供を含むが、これらに限定されない様々な能力を有し得る。プロビジョニングは、ロボット12a~12cとオーケストレータ14との間の接続を作成および維持することを含み得る。展開は、遂行のためにロボット12a~12cへのソフトウェア(例えば、RPAスクリプト42)の正しい配信を保証することを含み得る。構成は、ロボット環境、リソース、およびワークフロー構成の保守および配信を含み得る。スケジューリングは、特定のスケジュール(例えば、1日の特定の時間帯、特定の日付、毎日など)に従って様々なタスクを遂行するようにロボット12a~12cを構成することを含み得る。キューイングは、ジョブキューの管理を提供することを含み得る。監視は、ロボット状態の追跡を維持し、ユーザーの権限を維持することを含み得る。ロギングは、データベースおよび/または別のストレージメカニズム(例えば、SQL、ElasticSearch(登録商標)、Redis(登録商標))へのログの格納およびインデックス付けを含み得る。オーケストレータ14はさらに、サードパーティーソリューションおよび/またはアプリケーションのための通信の集中点として機能し得る。
図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を含み得る。
ロボットマネージャ24は、ロボットエグゼキュータ(複数可)22の動作を管理し得る。例えば、ロボットマネージャ24は、人間のオペレータからの入力に従っておよび/またはスケジュールに従って、ロボットエグゼキュータ(複数可)22による遂行のためのタスク/スクリプトを選択し得る。マネージャ24は、ジョブを開始および停止し、エグゼキュータ(複数可)22の様々な動作パラメータを構成し得る。ロボット12が複数のエグゼキュータ22を含む場合、マネージャ24は、それらのアクティビティおよび/またはプロセス間通信を調整し得る。マネージャ24は、RPAロボット12、オーケストレータ14、および/または他のエンティティ間の通信をさらに管理し得る。
いくつかの実施形態では、ロボット12およびオーケストレータ14は、クライアント-サーバー構成で遂行し得る。クライアント側、サーバー側、またはその両方が、本発明の範囲から逸脱することなく、いずれかの所望の数のコンピューティングシステム(例えば、物理マシンまたは仮想マシン)を含むことができることに留意すべきである。このような構成では、エグゼキュータ(複数可)22およびロボットマネージャ24を含むロボット12は、クライアント側で遂行し得る。ロボット12は、いくつかのジョブ/ワークフローを同時に実行し得る。ロボットマネージャ24(例えば、Windows(登録商標)service)は、複数のエグゼキュータ22の単一のクライアント側の接点として機能し得る。マネージャ24は、ロボット12およびオーケストレータ14の間の通信をさらに管理し得る。いくつかの実施形態では、通信は、マネージャ24によって開始され、それは、オーケストレータ14へのWebSocketチャネルを開くことができる。マネージャ24は、その後、チャネルを使用して、各エグゼキュータ22の状態に関する通知を、例えばハートビート信号として、オーケストレータ14に送信し得る。次に、オーケストレータ14は、チャネルを使用して、承認、ジョブ要求、ならびにRPAスクリプト(複数可)42およびリソースメタデータなどの他のデータをロボット12に送信し得る。
オーケストレータ14は、場合によっては複数の物理的および/または仮想的なマシンに分散して、サーバー側で遂行し得る。そのような一実施形態では、オーケストレータ14は、ウェブアプリケーションであってもよいオーケストレータユーザーインターフェース(UI)17と、サービスモジュール19のセットとを含み得る。オーケストレータUIのいくつかの例については後述する。サービスモジュール19は、オープンデータプロトコル(OData)表現状態転送(representational state transfer)(REST)アプリケーションプログラミングインターフェース(API)エンドポイントのセットと、サービスAPI/ビジネスロジックのセットとを含み得る。ユーザーは、オーケストレータUI17を介して(例えば、ブラウザ上で専用のオーケストレータインターフェースを開くことによって)オーケストレータ14とインタラクションして、オーケストレータ14に様々なアクションの実行を指示してもよく、これには、例えば選択したロボット12上でのジョブの開始、ロボットグループ/プールの作成、ロボットへのワークフローの割り当て、キューへの/からのデータの追加/削除、無人運転するジョブのスケジューリング、ロボットまたはワークフローごとのログ分析などを含み得る。オーケストレータUI17は、ハイパーテキストマークアップ言語(HTML)、JavaScript(登録商標)、または他の任意のウェブ技術を使用して実装され得る。
オーケストレータ14は、サービスAPI/ビジネスロジックを選択的に呼び出すことによって、ユーザーによって要求されたアクションを実行し得る。さらに、オーケストレータ14は、ロボット12と通信するためにREST APIのエンドポイントを使用し得る。REST APIは、構成、ロギング、監視、およびキューイング機能を含み得る。構成エンドポイントは、ユーザー、ロボット、権限、資格情報および/または他のプロセスリソースなどを定義および/または構成するために使用され得る。ロギングRESTエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、および他の環境固有の情報など、異なる情報をログに記録するために使用され得る。デプロイメントRESTエンドポイントは、遂行されるRPAスクリプト(複数可)42のバージョンを照会するために、ロボットによって使用され得る。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キューおよびキューアイテムの管理を担ってもよい。RESTエンドポイントを監視することで、オーケストレータ14およびロボットマネージャ24のウェブアプリケーションコンポーネントを監視し得る。
いくつかの実施形態では、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に構造化クエリを発行し得る。
いくつかの実施形態では、RPA環境10(図1)は、環境10の様々なメンバーを相互接続する通信チャネル/リンク15a~15eをさらに含む。そのようなリンクは、例えば仮想ネットワークリンク、仮想プライベートネットワーク(VPN)、またはエンドツーエンドトンネルとして、本技術分野で知られている任意の方法に従って実装され得る。いくつかの実施形態は、リンク15a~15eの一部または全部を循環するデータをさらに暗号化する。
当業者は、RPA環境10の様々なコンポーネントが、別個のホストコンピューターシステム(物理アプライアンスおよび/または仮想マシン)上で実装され得るおよび/または遂行し得ることを理解するであろう。図4は、本発明のいくつかの実施形態による様々なそのようなRPAホストシステム20a~20eを示す。各ホストシステム20a~20eは、少なくともハードウェアプロセッサと、プロセッサ命令および/またはデータを格納するためのメモリユニットとを有するコンピューティングシステム(個々のコンピューティングアプライアンスまたは相互接続されたコンピュータのセット)を表す。例示的なRPAホスト20a~20cは、とりわけ、企業のメインフレームコンピュータ、パーソナルコンピュータ、ラップトップおよびタブレットコンピュータ、モバイル通信デバイス(例えば、スマートフォン)、および電子ブックリーダーを含む。アイテム20d~20eとして例示される他の例示的なRPAホストは、プラットフォーム特有のプロトコルに従って集中管理される複数の相互接続されたサーバーコンピュータシステムを含むクラウドコンピューティングプラットフォームを含む。クライアントは、プラットフォーム特有のインターフェース/ソフトウェア層/ライブラリ(例えば、ソフトウェア開発キット-SDK、プラグインなど)および/またはコマンドのプラットフォーム特有の構文を使用して、このようなクラウドコンピューティングプラットフォームとインタラクションし得る。例示的なプラットフォーム特有のインターフェースは、とりわけ、Azure(登録商標)SDKおよびAWS(登録商標)SDKを含む。RPAホスト20a~20eは、インターネットなどの通信ネットワーク13によって通信可能に結合され得る。
図5は、本発明のいくつかの実施形態によるRPAホスト20上で遂行する例示的なソフトウェアを示し、ここで、ホスト20は、図4におけるRPAホスト20a~20eのいずれかを表し得る。オペレーティングシステム(OS)31は、とりわけ、それぞれのRPAホストのハードウェアとウェブブラウザアプリケーション32、RPAターゲットアプリケーション33、ブリッジモジュール34、およびRPAドライバ25などの他のソフトウェアアプリケーションとの間でインターフェースするソフトウェア層を含む、とりわけ、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(登録商標)などの広く利用可能な任意のオペレーティングシステムを含み得る。本明細書においてブラウザアプリケーション32は、ウェブコンテンツ(ウェブページ)を取得しレンダリングすることを主目的とする任意のソフトウェアを示す。例示的なブラウザアプリケ0ション32は、とりわけ、Google Chrome(登録商標)、Microsoft Edge(登録商標)、およびMozilla Firefox(登録商標)などの商用ウェブブラウザの任意のインスタンスを含む。最近のウェブブラウザは、通常、複数のウェブ文書を例えば別々のウィンドウまたはブラウザタブで同時に表示することができる。コンピュータセキュリティ上の理由から、このようなアプリケーションでは、別個のブラウザウィンドウ、タブ、および/またはフレームは、それぞれのホスト上で遂行する他のウェブブラウザプロセスから分離された別個のウェブブラウザプロセスによってレンダリングされ得る。いくつかの実施形態では、RPAロボット12の少なくとも一部および/またはRPA設計アプリケーション30の一部は、以下に詳細に示すように、ブラウザ32内で遂行する。
RPAターゲットアプリケーション33は概して、自動化のターゲットとなる任意のソフトウェアアプリケーションを表す。例は、とりわけ、ワードプロセッシングアプリケーション(例えば、Microsoft Word(登録商標)、TextEdit(登録商標)、Pages(登録商標))のインスタンス、スプレッドシートアプリケーション(例えば、Microsoft Excel(登録商標)、Numbers(登録商標))のインスタンス、電子通信アプリケーション(例えば、Mozilla Thunderbird(登録商標)、WhatsApp(登録商標))のインスタンス、ウェブブラウザ(例えば、Google Chrome(登録商標)のインスタンス、Mozilla Firefox(登録商標))、および業務管理アプリケーション(例えば、SAP(登録商標))のインスタンスを含む。いくつかの実施形態では、単一のRPAロボットは、複数のターゲットアプリケーションとインタラクションし得る。例えば、ロボットは、ウェブページからいくつかのデータをスクレイピングし、それをExcel(登録商標)ワークシートに貼り付けるように構成され得る。したがって、当業者は、ただ1つのRPAターゲットアプリケーション33を示す図5が、限定することを意図していないことをわかるだろう。
いくつかの実施形態では、オートメーションアクティビティは、それぞれのRPAホスト上で遂行するRPAドライバ25のセットとインターフェースすることによって実行される。ドライバ(複数可)25は概して、カーソル/ポインタの現在の画面上の位置を決定すること、カーソル/ポインタを移動すること、マウス、キーボード、および/またはタッチスクリーンイベントを登録および/または遂行すること、ハンドヘルドデバイスの現在の姿勢/向きを検出すること、現在の加速度計読みを検出すること、スマートフォンカメラで写真を撮ったりなどの低レベル動作を行うソフトウェアモジュールを表わす。ドライバ(複数可)25の他の例示的な動作は、ユーザーインターフェースの要素(例えば、ボタン、フォームフィールド)を特定すること、それぞれの要素の画面上の外観(例えば、色、位置、サイズ)を変更すること、形状を描くことなどを含む。いくつかのこのようなドライバ25は、オペレーティングシステム31の一部を形成するまたはローカルOSのネイティブ関数を呼び出し得る。他のドライバ25は、SAP(登録商標)、Citrix(登録商標)仮想化ソフトウェア、Excel(登録商標)などの複雑なターゲットアプリケーション33とユーザーのインタラクションの様々なアプリケーション固有の態様を実装し得る。このようなドライバ25は、例えば、ブラウザドライバ、仮想化ドライバ、およびエンタープライズアプリケーションドライバを含み得る。例示的なブラウザドライバは、ブラウザプロセスおよび/またはブラウザウィンドウ内で現在レンダリングされているウェブページに導入されるスクリプトのセットとして具現化され得、それぞれのウェブページのドキュメントオブジェクトモデル(DOM)を構築、解析、および/または修正するよう構成され得る。他の例示的なドライバ25は、Microsoft WinAppDriver、Apple, Inc.のXCTestドライバ、およびGoogle, Inc.のUI Automatorドライバを含む。
いくつかの実施形態では、RPAホスト20は、以下に詳細に示すように、ブラウザ32とRPAドライバ25との間に通信チャネルを確立するように構成されたブリッジモジュール34をさらに遂行する。本明細書において通信チャネルは、それぞれのブラウザエンティティの間でデータを転送する任意の手段を示す。例示的な通信チャネルは、とりわけ、それぞれのエンティティ間でRPAホスト20のメモリの領域(例えば、メモリページ)を共有するメカニズム、ネットワークソケット(すなわち、RPAホスト20のネットワークインターフェースまたは通信ポートを介してデータを転送する)、パイプ、ファイル、およびメッセージパッシングを含む。いくつかの実施形態では、ブリッジモジュール34は、RPAホスト20にローカルにインストールされ、任意のブラウザプロセスから独立して遂行するコンピュータプログラムを含む。しかし、ブラウザとの通信を容易にするために、ブリッジモジュール34のいくつかの実施形態は、以下にさらに説明するようなブラウザ拡張コンピュータプログラムなど、ブラウザ内で遂行するコンポーネントを含み得る。本明細書において、「ブラウザ拡張」という用語は、ブラウザアプリケーションのネイティブ機能を拡張し、それぞれのブラウザアプリケーション内で遂行するアドオン、カスタムコンピュータプログラムを示す。セキュリティ上の理由から、ブラウザ拡張は通常、以下で説明するようなRPAインターフェースを公開するものとは別のブラウザプロセス内で遂行するが、この点はブラウザ固有のものであり得、これに限定するものではない。
図6は、本発明のいくつかの実施形態によるRPAアクティビティを促進するためのブラウザを使用した例示的なソフトウェア構成を示す。示される構成では、ブラウザ32は、それぞれのRPAホストのユーザーに対して、エージェントブラウザウィンドウ36を公開する。ウィンドウ36は、例えば、Google Chrome(登録商標)などの商用ウェブブラウザアプリケーションのインスタンスによって開かれた別個のタブを表し得る。次に、いくつかの実施形態は、エージェントブラウザウィンドウ36を使用して、とりわけ、RPAロボットの設計およびRPAロボットの遂行などの様々なRPA動作をユーザーが遂行することを可能にするRPAインターフェース60を公開する。このような使用例は、以下で個別に説明される。
現代のブラウザは、遂行可能コードのスニペットを含むドキュメントをレンダリングし得る。そのような遂行可能コードの例は、それぞれのドキュメントのコンテンツがユーザーにどのように表示されるか、および/または、ユーザーがそれぞれのコンテンツとどのようにインタラクションするかを制御し得、サードパーティーコンテンツ(例えば、広告、天気、株式市場の更新)の配布および表示を管理し得、それぞれのユーザーのブラウジング習慣を特徴付ける様々な種類のデータを収集するなどをし得る。このような遂行可能コードは、それぞれのドキュメントに埋め込まれてもよいし、そこからハイパーリンクされてもよい。例示的なブラウザ遂行可能コードは、実行時の解釈またはコンパイルのために、スクリプト言語またはバイトコードで事前にコンパイルまたは定式化され得る。例示的なスクリプト言語は、とりわけ、JavaScript(登録商標)およびVBScript(登録商標)を含む。スクリプトされたコードの遂行を可能にするために、いくつかのブラウザは、受信したスクリプト/バイトコードをそれぞれのホストプラットフォームでの遂行に適した形式に変換し、それぞれのコードが実行するホスティング環境を提供するように構成されたインタプリタを含む。
本発明のいくつかの実施形態は、RPAロボットを設計および/または遂行するためのRPAインターフェース60の機能を実装するために、ブラウザのそのようなコード変換機能を使用する。そのような一例では、RPAインターフェース60の機能は、RPAエージェント31として一括して表され、ブラウザ32によって遂行されるスクリプト(例えば、JavaScript(登録商標))のセットとしてエンコードされる。エージェント31は、例えば、エージェント31のアドレスを示す予め定められたユニフォームリソースロケータ(URL)をブラウザ32に指し示すことによって、スクリプトリポジトリ/サーバーからダウンロードされ得る。
図6は、さらに、RPAターゲットアプリケーション33が、ターゲットUI37をユーザーに公開することを示す。ターゲットUI37は概して、自動化の対象となる任意のユーザーインターフェースを表す。ターゲットUI37の一般的な例は、グラフィカルユーザーインターフェース(GUI)を含み、それは、ユーザーに表示される視覚要素のセットを介して人間と機械とのインタラクションを可能にする。図7は、とりわけ、ウィンドウ50a、メニューインジケータ50b、アイコン50c、テキストボックス50d、およびボタン50eを含む例示的なUI要素のセットを有するそのような例示的なターゲットUI37を示す。他の例示的なUI要素は、ラベル、フォーム、個々のフォームフィールド、トグル、リンク(例えば、ハイパーリンク、ハイパーテキスト、ユニフォームリソース識別子)などを含む。UI要素は、情報を表示し、入力(テキスト、マウスイベント)を受信し、ならびに/またはソフトウェアおよび/もしくはそれぞれのRPAホストデバイスの機能を制御し得る。
いくつかの実施形態は、ターゲットUI37とインタラクションするために、RPAドライバ25(図6)のインスタンスを採用する。例えば、ドライバ25は、ターゲットUI37の要素を特定し、およびそれぞれの要素に対してRPAアクティビティ(例えば、マウスクリック、スワイプなど)を実行し得る。別の例では、RPAドライバ25は、以下にさらに説明するように、ユーザーのアクション(例えば、マウスクリック、スワイプなど)を自動的に検出し、それに応答して、それぞれのアクションによってターゲットされたUI要素を特定し、ターゲットUI37の他の要素の中からそれぞれのターゲット要素を特定する特徴のセットを決定し得る。RPAドライバ25は、比較的高いプロセッサ特権レベル(例えば、カーネルモード)でRPAホスト20上で遂行し得、ローカルOSのネイティブ関数を呼び出し得る。RPAターゲットアプリケーション33がスクリプト/バイトコード解釈可能であるいくつかの実施形態では、RPAドライバ25の少なくとも一部は、RPAターゲットアプリケーション33のそれぞれのインスタンス内で遂行し得る。別の言い方をすれば、ドライバ25は、アプリケーション33に属するプロセスによって遂行され得る。RPAターゲットアプリケーションがウェブブラウザを含む1つのそのような例では、ターゲットUI37は、エージェントブラウザウィンドウ36とは異なるターゲットブラウザウィンドウ(例えば、別のブラウザタブ)を含み、RPAドライバ25は、RPAエージェント31を遂行しているものとは異なるブラウザプロセス内で遂行する。いくつかの実施形態では、RPAドライバ25の少なくとも一部は、ターゲットアプリケーション33またはターゲットUI37内で現在レンダリングされているドキュメントに動的に導入され、それがそのタスクを達成した後に削除され得る。
いくつかの実施形態は、異なるターゲットUIとインタラクションするためにRPAドライバ25の異なるインスタンスを採用する。ロボットが1つのターゲットUI(例えば、スプレッドシート)からデータを読み取り、かつ別のUI(例えば、電子メールプログラム)にそれを貼り付けるように構成される1つのそのような例では、それぞれの動作は、2つの異なるRPAドライバによって実行され得る。いくつかの実施形態では、各ドライバは、RPAエージェント31と通信するために、別個の通信チャネルを使用し得る。
図6は、ブラウザ32とRPAドライバ25との間の通信チャネル38をセットアップおよび/または操作するブリッジモジュール34をさらに示す。示されるようないくつかの実施形態では、ブリッジモジュール34は、2つの通信エンティティ間の仲介者として機能し、その結果、モジュール34は、その意図された宛先にそれを転送する前に、RPAエージェント31とRPAドライバ25との間で交換されるデータのいくつかを傍受、分析、および/または変更し得る。いくつかの実施形態では、ブリッジモジュール34はさらに、RPAインターフェース60およびターゲットUI37とは異なる追加のユーザーインターフェースを公開し、ならびに/または通信チャネル38を介して交換されたデータの少なくともいくつかに従って表示を生成し得る。ブリッジモジュール34の動作は、以下でさらに詳細に説明される。
ロボット設計実施形態
いくつかの実施形態では、RPAインターフェース60は、RPA設計アプリケーション30の機能の一部、例えば図8に示されるようなロボット設計インターフェースを実装し、ユーザーがオートメーション/ソフトウェアロボットを設計することを可能にする。インターフェース60は、エージェントブラウザウィンドウ36内でユーザーに公開され、その機能性は、ブラウザ32によって遂行されるRPAエージェント31によって提供される。当業者であれば、図示されたインターフェースのコンテンツおよび外観は例示的なものに過ぎず、限定的なものではないことを理解するだろう。インターフェース60は、例えばメニュー領域62およびワークフロー設計領域61のような様々な領域を含む。メニュー領域62は、ユーザーがRPAロボットによる遂行のために個々のRPAアクティビティを選択することを可能にし得る。アクティビティは、様々な基準に従って、例えば、ユーザーインタラクションのタイプ(例えば、クリック、タップ、ジェスチャ、ホットキー)に従って、データのタイプ(例えば、テキスト関連アクティビティ、画像関連アクティビティ)に従って、データ処理のタイプ(例えば、ナビゲーション、データスクレイピング、フォームを埋めること)などに従ってグループ化され得る。いくつかの実施形態では、個々のRPAアクティビティは、メニューの階層を介して到達され得る。
いくつかの実施形態では、RPAインターフェース60は、RPA設計アプリケーション30の機能の一部、例えば図8に示されるようなロボット設計インターフェースを実装し、ユーザーがオートメーション/ソフトウェアロボットを設計することを可能にする。インターフェース60は、エージェントブラウザウィンドウ36内でユーザーに公開され、その機能性は、ブラウザ32によって遂行されるRPAエージェント31によって提供される。当業者であれば、図示されたインターフェースのコンテンツおよび外観は例示的なものに過ぎず、限定的なものではないことを理解するだろう。インターフェース60は、例えばメニュー領域62およびワークフロー設計領域61のような様々な領域を含む。メニュー領域62は、ユーザーがRPAロボットによる遂行のために個々のRPAアクティビティを選択することを可能にし得る。アクティビティは、様々な基準に従って、例えば、ユーザーインタラクションのタイプ(例えば、クリック、タップ、ジェスチャ、ホットキー)に従って、データのタイプ(例えば、テキスト関連アクティビティ、画像関連アクティビティ)に従って、データ処理のタイプ(例えば、ナビゲーション、データスクレイピング、フォームを埋めること)などに従ってグループ化され得る。いくつかの実施形態では、個々のRPAアクティビティは、メニューの階層を介して到達され得る。
いくつかの実施形態では、インターフェース60は、プロジェクト構成コントロール65(例えば、メニュー領域62内に表示されるメニューボタン)を公開してもよく、これは、とりわけ、呼び出されると、ユーザーが、名前、資産の位置、およびそれぞれのロボット/オートメーションの遂行スケジュールなど、現在開発中のオートメーションプロジェクトの様々なパラメータを設定することを可能にする。コントロール65を介して調整可能な他のパラメータは、通信チャネル38の選択されたパラメータを含み得る。例えば、チャネル38がローカルファイルを含む場合、ユーザーは、ブラウザ32およびドライバ25の間でデータを転送するために使用されるファイルの場所(例えば、ローカルフォルダ)を示すことが可能であり得る。チャネル38がネットワーク接続/ソケットを含む別の例では、ユーザーは、プロセス間通信中にブラウザ32および/またはドライバ25によって使用されるネットワークアドレス、ポート番号などを指示すること可能であり得る。
ワークフロー設計領域61は、現在自動化されているビジネスプロセスのフローを再現するアクティビティシーケンスのダイアグラム(例えば、フローチャート)を表示し得る。インターフェースは、ユーザーがシーケンスのアクティビティを追加、削除、および再配置することを可能にする様々な制御を公開し得る。各RPAアクティビティは、図8のアイテム64a~64bとして図示されるアクティビティ構成UIによって、独立して構成され得る。ユーザーインターフェース64a~64bは、インターフェース60の子ウィンドウを含み得る。図9は、本発明のいくつかの実施形態によるより詳細な例示的なアクティビティ構成インターフェース64cを示す。例示的なインターフェース64cは、「Type Into(打ち込む)」アクティビティ(例えば、フォームフィールドを埋めること)を構成し、フィールドのセット、例えば、アクティビティ名フィールドおよびユーザーが現在のアクティビティの様々なパラメータを設定できるように構成されたアクティビティパラメータフィールドのセットを公開する。図9の例では、パラメータフィールド68は、ターゲットフォームフィールドに書き込まれるテキストを受信し得る。ユーザーは、入力テキストを直接提供し得るまたはそれぞれの入力テキストのソースを示すインジケータの形態で提供し得る。例示的なソースは、スプレッドシートの特定のセル/列/行、予め定義された変数の現在値(例えば、それぞれのワークフローの以前のRPAアクティビティを遂行することから得られる値)、指定されたURLに位置するドキュメント、現在のターゲットドキュメントからの別の要素などを含み得る。
現在のRPAアクティビティの別の例示的なパラメータは、それぞれのアクティビティのオペランド/ターゲットであり、本明細書では、RPAロボットが作用することになっているターゲットUI37の要素を示す。選択されたアクティビティがマウスクリックを含む一例では、ターゲット要素は、ボタン、メニューアイテム、ハイパーリンクなどであってもよい。選択されたアクティビティがフォームへの入力を含む別の例では、ターゲット要素は、入力を受信すべき特定のフォームフィールドであり得る。アクティビティ構成インターフェースは、図9に示されるように、ユーザーがターゲット構成コントロール66によってターゲット要素を示すことを可能にし得る。コントロール66をクリックまたはタップすることは、ターゲット構成インターフェースの表示をトリガし、および/またはターゲット取得手順を開始し得る。いくつかの実施形態は、選択のための候補ターゲットのメニュー/リストを公開し得る。好ましい実施形態では、ユーザーは、例えばクリックまたはタップすることによって、現在のRPAアクティビティのためのターゲットをターゲットUI37内で直接示し得る。そのような例では、RPAインターフェース60は、RPAドライバ25がターゲットUI37とのユーザーのインタラクションを検出し、RPAインターフェース60に戻ってデータを通信し得るという点で、ターゲット獲得のためにRPAドライバ25と協働する。
いくつかの実施形態では、RPAドライバ25は、ユーザーの入力を分析して、現在のRPAアクティビティのターゲットとして選択されたターゲットUI37の要素を特徴付けるターゲット特定データのセットを決定するように構成される。図10は、とりわけ、例示的な入力フィールド50fおよびフィールドラベル50eなどの複数のUI要素を含む例示的なターゲットUI37を示す。図10は、さらに、本発明のいくつかの実施形態による、フィールドラベル50eを特徴付ける例示的なターゲット特定データのセットを示す。本明細書では、ターゲット特定データは、それぞれのUIの他の要素の中でそれぞれのUI要素を特定する任意の特徴のセットを示す。
いくつかの実施形態では、ターゲット特定データは、それぞれのUI要素のソースコード表現から抽出された特徴的な特徴を含むセレクタ52を含む。「ソースコード」という用語は、本明細書では、それぞれのコンテンツのユーザーに向けた外観とは対照的に、ユーザーインターフェースによって表示されるコンテンツのプログラム的/内部的表現を示すと理解される。ウェブドキュメントの場合、典型的には、ソースコードは、ハイパーテキストマークアップ言語(HTML)のバージョンを含むが、当業者は、拡張可能マークアップ言語(XML)およびJavaScript(登録商標)などのスクリプト言語などの他の言語も同様に適用できることを知るであろう。
ターゲットUI要素の特徴は、本技術分野で知られている任意の方法を使用して、例えば属性-値ペアのセットとしてエンコードされ得る。XMLの例では、セレクタ52は、タグのセットから構成を含み得、各タグは、文字のシーケンスからなり、シーケンスは、実装固有のデリミタ(現在の例では、各タグは、<で始まり、/>で終わる)によってブックエンドされる。各タグは、それぞれのオブジェクトの特定の特性をエンコードする属性-値ペアのセットを含み得る。このようなタグの形式およびコンテンツは、ターゲットUI37を公開するアプリケーションに応じて変化し得る。例えば、HTMLドキュメント(例えば、ウェブページ)の要素を特定するセレクタは、以下のように読んでもよい:
<html app=’chrome.exe’ title=’Selectors - Just an example’ />
<webctrl tag=’H1’ />
<html app=’chrome.exe’ title=’Selectors - Just an example’ />
<webctrl tag=’H1’ />
SAP(登録商標)UI要素の例示的なセレクタは、以下のように読んでもよい:
<wnd app=’saplogon.exe’ cls=’SAP_FRONTEND_SESSION’ title=’SAP’ />
<sap id=’usr/txtRSYST-BNAME’ />
<wnd app=’saplogon.exe’ cls=’SAP_FRONTEND_SESSION’ title=’SAP’ />
<sap id=’usr/txtRSYST-BNAME’ />
Java(商標)UI要素の例示的なセレクタは、以下のように読んでもよい:
<wnd app=’java.exe’ cls=’SunAwtFrame’ title=’SwingSet2’/>
<java role=’page tab list’ />
<java name=’Internal Frames Demo’ role=’page tab’ />
<java name=’Internal Frame Generator’ role=’internal frame’/>
<java role=’push button’ idx=’4’ />
<wnd app=’java.exe’ cls=’SunAwtFrame’ title=’SwingSet2’/>
<java role=’page tab list’ />
<java name=’Internal Frames Demo’ role=’page tab’ />
<java name=’Internal Frame Generator’ role=’internal frame’/>
<java role=’push button’ idx=’4’ />
いくつかの実施形態では、セレクタ52は、ターゲットUI37のツリー表現(例えば、UIツリー)内のそれぞれの要素の位置を集合的に示す属性-値ペアのセットを含む。そのような実施形態では、RPAドライバ25は、ターゲットUI37のUIツリー(例えば、DOM)を構築、編集、または修正し、それぞれのUIツリーに従ってセレクタ52を計算するように構成され得る。
図10の例では、セレクタ52は、それぞれのターゲットUIを公開するアプリケーションの種類を示すアプリケーションID152を含む(現在の例では、「uidouble.exe」という名前のバイナリのインスタンス)。アプリケーションID152は、それぞれのウィンドウ/インターフェースをRPAホスト20によって現在表示されている他のウィンドウ/インターフェースから区別するために、それぞれのターゲットUIを表示しているウィンドウの識別子を含み得る。例えば、アプリケーションID152は、ウィンドウ名、ターゲットUI内に現在表示されているドキュメントの名前、ターゲットUI内に現在ロードされているウェブページのURLなどを含み得る。
例示的なターゲット特定データは、それぞれのターゲット要素のユーザー向け画像のエンコードを含むターゲット画像54をさらに含み得る。例えば、ターゲット画像54は、ターゲット要素を現在表示している画面の限られた領域に対応する画素値の配列、および/または画素値のそれぞれの配列に従って計算された値のセット(例えば、画素値のそれぞれの配列のJPEG表現またはウェーブレット表現)を含み得る。いくつかの実施形態では、ターゲット画像54は、それぞれのターゲット要素の境界内に位置する画面画像のクリッピングのコンテンツかを含む。
ターゲット特定データは、それぞれのターゲット要素の画面境界内に表示されるテキスト(英数字のシーケンス)をコンピュータでのエンコードを含むターゲットテキスト56をさらに含んでもよい。ターゲットテキスト56は、それぞれのターゲットUIのソースコードに従って、および/または、現在ターゲット要素を表示している画面の領域に対して光学式文字認識(OCR)手順を適用した結果に従って決定され得る。
いくつかの実施形態では、ターゲット要素を特徴付けるターゲット特定データは、ターゲット要素UI37少なくとも1つの他のUI要素を特徴付ける特定データ(例えば、セレクタ、画像、テキストなど)をさらに含み、本明細書では、アンカー要素とみなされる。本明細書においてアンカーは、ターゲット要素と同時表示される任意の要素、すなわち、ターゲットUI37の少なくとも一部のビューにおいてターゲット要素と共に同時に可視化される要素を示す。いくつかの実施形態では、アンカー要素は、ラベル、タイトル、アイコンまたは他のグラフィック要素など、ターゲット要素の近傍に表示されるUI要素から選択される。図10に示されたターゲットインターフェースを例とすると、「キャッシュイン(Cash In)」入力フィールドに記入するように構成されたロボットを設計する場合、フィールド50fがターゲット要素であり、一方、可能なアンカーは、とりわけ、ラベル50e、「USチェックで(On US Check)」とラベル付けされた入力フィールド、フォームタイトル「入金取引(Deposit transaction)」、および「キャッシュカウント(Cash Count)」とラベル付けされたボタンを含む。いくつかの実施形態では、RPAドライバ25は、以下にさらに詳述するように、ユーザーがRPAアクティビティのターゲットを選択することに応答して、アンカー要素を自動的に選択するように構成される。アンカー特性データを含めることは、ターゲットの実行時特定を容易にし得、特に、ここでは、ターゲット要素の特性のみに基づく特定は、例えば、ターゲットUIがターゲットに類似する複数の要素を有する場合に失敗し得る。フォームは、例えば、複数の個人に関する情報を受信するように構成されている場合、複数の「姓」フィールドを有し得る。このような場合、「姓」というラベルの付いた入力フィールドの検索のみに基づくターゲット特定戦略は困難に陥る可能性があるが、アンカーにさらに依存することで曖昧さが解消され得る。
いくつかの実施形態では、ターゲット構成コントロール66(図9)をアクティベートすることは、ユーザーが現在選択されているターゲット要素を特徴付けるターゲット特定データを視覚化および編集することを可能にするターゲット構成インターフェースの表示をトリガする。図11は、そのようなターゲット構成インターフェース70の一例を示し、これは、RPAエージェント31によって表示され得る。あるいは、インターフェース70のインスタンスは、ブリッジモジュール34によって専用ウィンドウに表示され得る。
ターゲット構成インターフェース70は、とりわけ、例えば、ターゲット要素を示しかつターゲット特定データを編集するためのボタン、ターゲットの選択および/またはターゲット特定データの選択を検証するためのボタン、現在選択されているターゲット要素に関連するアンカー要素を選択しかつアンカー特定データを編集するためのボタン、ならびにトラブルシューティングボタンといった様々な制御を含むメニュー72を含み得る。現在表示されている例示的なビューは、ターゲット要素の特定特徴を構成および/または検証することを可能にし、同様のビューは、アンカー要素の特定特徴を構成するために利用可能であり得る。
インターフェース70は、様々なゾーン、例えば、ターゲットUI37のツリー表現(例えば、DOM)を表示するための領域で構成されてもよく、これにより、ユーザーは、現在選択されているターゲット要素をそれぞれのUIツリー/DOMのノードとして容易に視覚化することができる。ターゲット構成インターフェース70は、セレクタ52の少なくとも一部をさらに表示し得、ユーザーが、それぞれのターゲット要素を特徴付ける現在定義されているタグおよび/または属性-値ペアを視覚化することを可能にする。いくつかの実施形態は、セレクタ52に含めるタグおよび/または属性をユーザーが選択することを可能にするタグビルダーペインをさらに含み得る。
いくつかの実施形態は、アプリケーションID152を他のターゲット特定データとは別に、例えば図11に示されるようなインターフェース70の専用領域で表示する。このような表示方法は、RPAターゲットアプリケーション33の識別子がユーザーにとって比較的重要であり、したがってインターフェース内の目立つ位置から恩恵を受け得るという観察に依存する。アプリケーションID152を表示することは、現在のRPAアクティビティの範囲、例えば、「ロボットは、『請求書』という名前のExcel(登録商標)シートに書き込んでいる」と明確に伝えることによって、ロボット設計を容易にし、間違いを回避し得る。当業者は、アプリケーションID152を表示する示された態様が限定されることを意図していないことを理解するであろう;他の実施形態は、ターゲットアプリケーション33および/またはターゲットUI37内で現在レンダリングされているターゲットドキュメントについて他の視覚的表現を使用し得る。
ターゲット構成インターフェース70は、ターゲット画像54、ターゲットテキスト56、ならびに/またはユーザーが個々のタグおよび/もしくは属性に対して追加のマッチングパラメータを設定することを可能にする属性マッチングペインを表示するための領域をさらに含み得る。一例では、属性マッチングペインは、それぞれのターゲット要素の実行時インスタンスを特定するために、厳密マッチングまたは近似マッチングのいずれを使用するかをユーザーがロボットに指示することを可能にする。厳密なマッチングは、選択された属性の実行時値が、それぞれのターゲット要素のターゲット特定データに含まれるそれぞれの設計時値と正確に一致することを必要とする。近似マッチングは、それぞれの属性の設計時値および実行時値の間の部分的なマッチングのみを必要とし得る。タイプテキストの属性について、近似マッチングの例示的な種類は、とりわけ、正規表現、ワイルドカード、およびファジーマッチングを含む。アンカー属性のマッチングのために、同様の構成フィールドが公開され得る。
いくつかの実施形態では、ターゲット構成インターフェース70は、ユーザーがターゲット要素の選択を検証することを可能にするコントロール(例えば、確認ボタン74)をさらに公開する。それぞれのコントロールをアクティベートさせることに応答して、いくつかの実施形態は、通信チャネル38を介してRPAエージェント31にターゲット特定データを送信してもよい。
典型的なロボット設計セッションは、例えば、オーケストレータ14(図1~2)などのリモートサーバーからRPAエージェント31をフェッチし、ブラウザ32を使用してエージェント31を遂行することにより、ユーザーがエージェントブラウザウィンドウ36内でRPAインターフェース60のインスタンスを開くことから開始し得る。いくつかの実施形態では、ユーザーはさらに、それぞれのRPAホスト上でブリッジモジュール34のインスタンスを起動し得る(代替的に、モジュール34はRPAホスト20のメモリに予めロードされ得る)。
図12は、本発明のいくつかのロボット設計実施形態におけるブリッジモジュール34によって実行されるステップの例示的なシーケンスを示す。一般性を損なうことなく、示されたシーケンスは、ブリッジモジュール34がRPAエージェント31とRPAドライバ25との間の通信を仲介し、さらにRPAホスト20によって公開される別のウィンドウ内にターゲット構成インターフェース70を表示する、図6に示されるような実施形態に適用され得る。
ステップ302では、ブリッジモジュール34は、RPAエージェント31と協働して、通信チャネルを確立し得る。様々な実施形態は、異なるタイプの通信チャネルを使用してもよく、そのうちのいくつかを以下に詳述する。
i)ローカルメッセージングサービスを介した通信
Google Chrome(登録商標)などの一部のブラウザは、ブラウザの外部で遂行するソフトウェアとの通信の制限されたモードを許可する。本明細書において「制限された」という用語は、ブラウザが任意のソフトウェア(例えば、悪意のあるソフトウェアの遂行および/または機密データの流出を防ぐために)との通信を許可されず、それぞれのブラウザにローカルメッセージングホストとして事前登録された選択されたソフトウェアとのみ通信できることを示す。登録手順は、ブラウザおよび/またはバージョンに固有であってよいが、それらは、例えば、それぞれのブラウザまたは拡張の構成ファイル(例えば、マニフェスト)中にブリッジモジュール34の遂行可能コードを含むファイルの場所のインジケータ(例えば、パスインジケータ)を含むことを含み得る。本発明のいくつかの実施形態は、エージェント31/ブラウザ32およびブリッジモジュール34の間の通信チャネルをセットアップするためにこのメカニズムを使用する。そのような実施形態では、ローカルブラウザは、典型的には、エージェント31を遂行するものとは異なるブラウザプロセス内で、ブラウザ拡張を遂行し得る。いくつかの実施形態はさらに、ブリッジモジュール34を、それぞれのブラウザ拡張のためのローカルメッセージングホストとして登録する。そのような登録動作は、それぞれのRPAホスト上のブリッジモジュール34および関連するブラウザ拡張のインストール/初期設定中に実施され得る。モジュール34がブラウザに登録されると、ステップ302は、例えば、RPAエージェント31が、エージェント31およびモジュール34間の通信中に交換されるデータを保持するためにruntime.Portオブジェクトをセットアップすることを含み得る。
Google Chrome(登録商標)などの一部のブラウザは、ブラウザの外部で遂行するソフトウェアとの通信の制限されたモードを許可する。本明細書において「制限された」という用語は、ブラウザが任意のソフトウェア(例えば、悪意のあるソフトウェアの遂行および/または機密データの流出を防ぐために)との通信を許可されず、それぞれのブラウザにローカルメッセージングホストとして事前登録された選択されたソフトウェアとのみ通信できることを示す。登録手順は、ブラウザおよび/またはバージョンに固有であってよいが、それらは、例えば、それぞれのブラウザまたは拡張の構成ファイル(例えば、マニフェスト)中にブリッジモジュール34の遂行可能コードを含むファイルの場所のインジケータ(例えば、パスインジケータ)を含むことを含み得る。本発明のいくつかの実施形態は、エージェント31/ブラウザ32およびブリッジモジュール34の間の通信チャネルをセットアップするためにこのメカニズムを使用する。そのような実施形態では、ローカルブラウザは、典型的には、エージェント31を遂行するものとは異なるブラウザプロセス内で、ブラウザ拡張を遂行し得る。いくつかの実施形態はさらに、ブリッジモジュール34を、それぞれのブラウザ拡張のためのローカルメッセージングホストとして登録する。そのような登録動作は、それぞれのRPAホスト上のブリッジモジュール34および関連するブラウザ拡張のインストール/初期設定中に実施され得る。モジュール34がブラウザに登録されると、ステップ302は、例えば、RPAエージェント31が、エージェント31およびモジュール34間の通信中に交換されるデータを保持するためにruntime.Portオブジェクトをセットアップすることを含み得る。
ii)リモートサーバーを介した通信
いくつかの実施形態では、RPAエージェント31およびブリッジモジュール34間の通信は、例えばオーケストレータ14の一部といったリモートサーバーを介して実施される。いくつかの実施形態では、ポート番号、サーバーアドレスなどの通信パラメータは、RPAインターフェース60内に露出した専用のコントロールを介してユーザーによって設定され得る(例えば、図8のボタン65を参照)。そのような一例では、ステップ302は、エージェント31およびブリッジモジュール34の間で交換されるデータを保持するためのコンテナ(例えば、ファイルまたはデータベースオブジェクト)をセットアップするようにリモートサーバーに指示することを含み得る。それぞれのコンテナの名前および/または場所/URLは、エージェント31およびモジュール34が同じ通信パラメータに同意するように、エージェント31およびブリッジモジュール34の両方が独立して利用可能なアルゴリズムを使用して自動的に生成され得る。いくつかの実施形態はさらに、それぞれのRPAホストの識別子、エージェント31のそれぞれのインスタンスの識別子、および/または現在のプロジェクト名の識別子(とりわけ)を使用して、現在のオートメーション/ロボット設計に一意に関連付けられるコンテナIDを計算し得る。データの機密性を確保するために、交換プロトコルが採用されて暗号トークン/キーを生成してもよく、それはその後、通信を暗号化および復号化するために使用され得る。エージェント31およびブリッジモジュール34間の実際の通信は、その後、例えば、プッシュおよび/またはプルプロトコルを使用して、それぞれのリモートサーバーへのHTTPリクエストを介して実施され得る。
いくつかの実施形態では、RPAエージェント31およびブリッジモジュール34間の通信は、例えばオーケストレータ14の一部といったリモートサーバーを介して実施される。いくつかの実施形態では、ポート番号、サーバーアドレスなどの通信パラメータは、RPAインターフェース60内に露出した専用のコントロールを介してユーザーによって設定され得る(例えば、図8のボタン65を参照)。そのような一例では、ステップ302は、エージェント31およびブリッジモジュール34の間で交換されるデータを保持するためのコンテナ(例えば、ファイルまたはデータベースオブジェクト)をセットアップするようにリモートサーバーに指示することを含み得る。それぞれのコンテナの名前および/または場所/URLは、エージェント31およびモジュール34が同じ通信パラメータに同意するように、エージェント31およびブリッジモジュール34の両方が独立して利用可能なアルゴリズムを使用して自動的に生成され得る。いくつかの実施形態はさらに、それぞれのRPAホストの識別子、エージェント31のそれぞれのインスタンスの識別子、および/または現在のプロジェクト名の識別子(とりわけ)を使用して、現在のオートメーション/ロボット設計に一意に関連付けられるコンテナIDを計算し得る。データの機密性を確保するために、交換プロトコルが採用されて暗号トークン/キーを生成してもよく、それはその後、通信を暗号化および復号化するために使用され得る。エージェント31およびブリッジモジュール34間の実際の通信は、その後、例えば、プッシュおよび/またはプルプロトコルを使用して、それぞれのリモートサーバーへのHTTPリクエストを介して実施され得る。
iii)ローカルサーバーを介した通信
いくつかの実施形態は、RPAエージェント31およびブリッジモジュール34間の通信にローカルサーバ(例えば、ローカルホスト)を採用してもよい。そのような実施形態では、ブリッジモジュール34は、ローカルサーバーモジュールを含んでもよく、またはそれとインターフェースしてもよい。例えば、モジュール34は、ローカルサーバーの特定の通信ポート上でリッスンするように構成され得る。一方、RPAエージェント31は、ローカルサーバーのそれぞれのポートに向けられたHTTPリクエストによって、ブリッジモジュール34にデータを送信してもよい。衝突を避けるために、ポート番号は、RPAエージェント31のそれぞれのインスタンスおよび/またはそれぞれの自動化プロジェクト/オートメーションロボットに固有のものであり得る。いくつかの実施形態では、ポート番号などの通信パラメータは、RPAインターフェース60内に露出した専用のコントロールを介してユーザーによって設定され得る(例えば、図8のボタン65を参照)。
いくつかの実施形態は、RPAエージェント31およびブリッジモジュール34間の通信にローカルサーバ(例えば、ローカルホスト)を採用してもよい。そのような実施形態では、ブリッジモジュール34は、ローカルサーバーモジュールを含んでもよく、またはそれとインターフェースしてもよい。例えば、モジュール34は、ローカルサーバーの特定の通信ポート上でリッスンするように構成され得る。一方、RPAエージェント31は、ローカルサーバーのそれぞれのポートに向けられたHTTPリクエストによって、ブリッジモジュール34にデータを送信してもよい。衝突を避けるために、ポート番号は、RPAエージェント31のそれぞれのインスタンスおよび/またはそれぞれの自動化プロジェクト/オートメーションロボットに固有のものであり得る。いくつかの実施形態では、ポート番号などの通信パラメータは、RPAインターフェース60内に露出した専用のコントロールを介してユーザーによって設定され得る(例えば、図8のボタン65を参照)。
iv)データファイルを介した通信
ブラウザがファイルへの書き込みおよびファイルからの読み取りを可能にする実施形態では、ステップ302は、RPAエージェント31およびブリッジモジュール34の間で伝送されるデータのコンテナとして機能するローカルファイルを作成することを含み得る。リモートサーバーの使用に関連して上述したものと同様の方法で、それぞれのコンテナのファイル名および/または位置は、エージェント31およびモジュール34によって独立して生成されてよく、それぞれの自動化プロジェクト/オートメーションロボットに固有であり得る。代替の実施形態では、ファイル名および場所などのパラメータは、例えば、RPAインターフェース60内に公開された専用のコントロールを介して、ユーザーによって明示的に構成され得る(例えば、図8のボタン65を参照)。いくつかの実施形態は、それぞれのファイルからの読み取りおよび/または書き込みのために、ブラウザ拡張を使用することを必要とし得る。
ブラウザがファイルへの書き込みおよびファイルからの読み取りを可能にする実施形態では、ステップ302は、RPAエージェント31およびブリッジモジュール34の間で伝送されるデータのコンテナとして機能するローカルファイルを作成することを含み得る。リモートサーバーの使用に関連して上述したものと同様の方法で、それぞれのコンテナのファイル名および/または位置は、エージェント31およびモジュール34によって独立して生成されてよく、それぞれの自動化プロジェクト/オートメーションロボットに固有であり得る。代替の実施形態では、ファイル名および場所などのパラメータは、例えば、RPAインターフェース60内に公開された専用のコントロールを介して、ユーザーによって明示的に構成され得る(例えば、図8のボタン65を参照)。いくつかの実施形態は、それぞれのファイルからの読み取りおよび/または書き込みのために、ブラウザ拡張を使用することを必要とし得る。
ステップ304(図12)において、ブリッジモジュール34は、RPAドライバ(複数可)25をインスタンス化し得る。いくつかの実施形態では、モジュール34は、RPAドライバ25のインスタンスを、スクリプト解釈をサポートするアプリケーション(例えば、ブラウザ)に導入し得る。ステップ306は、インスタンス化されたドライバとのプロセス間通信を確立し得、したがって、通信チャネル38(図6)のセットアップを完了する。
いくつかの実施形態では、ステップ308では、ブリッジモジュール34は、ターゲット構成インターフェース70を公開する。ステップ310では、次に、モジュール34は、RPAドライバ25からの通信をリッスンしてもよく、そのような通信は、以下に示すように、ターゲット特定データを含み得る。そのような通信に応答して、ステップ312は、インターフェース70にそれぞれのターゲット特定データ(例えば、セレクタ52、アプリケーションID152、画像54、テキスト56など)を入力し得、ユーザーがターゲット要素のそれぞれの選択をレビュー、編集、および/または検証することを可能にする。いくつかの実施形態では、ステップ312は、ターゲット特定データへの変更(例えば、セレクタ52への/からのタグまたは属性-値ペアの追加/削除、属性マッチングパラメータの設定など)を含むユーザー入力を受信することをさらに含み得る。ユーザーが現在のターゲット特定データを検証すると(ステップ314がはいを返す)、ステップ316において、モジュール34は、確立された通信チャネルを介してそれぞれのターゲット特定データをRPAエージェント31に転送し得る。
図13は、本発明のロボット設計実施形態におけるRPAエージェント31によって実行されるステップの例示的なシーケンスを示す。エージェントブラウザウィンドウ36内にロボット設計インターフェースを公開することに応答して(例えば、図8の例示的RPAインターフェース60および上記の関連する説明を参照)、ステップ402は、ロボットによる遂行のためのRPAアクティビティを選択するユーザー入力を受信し得る。例えば、ユーザーは、インターフェース60のアクティビティメニューからRPAアクティビティのタイプ(例えば、フォームフィールドに入力する)を選択し得る。これに応答して、ステップ404は、図8(上の説明)に示された例示的なインターフェース54cのようなアクティビティ構成インターフェースを公開し得る。
次いで、ユーザーは、ターゲットブラウザウィンドウ36b内に表示されたウェブページから、それぞれのアクティビティのためのターゲットを選択するように指示され得る。いくつかの実施形態では、ステップ406~408のシーケンスにおいて、RPAエージェント31は、RPAドライバ25に信号を送ってターゲット特定データを取得してもよく、およびRPAドライバ25からそれぞれのデータを受信してもよい(ターゲット取得に関するより詳しい情報は以下に示される)。そのようなデータ転送は、通信チャネル38(図6参照)を介して起こる。ステップ414は、例えば、図10に示される例示的な形態でターゲット入力フィールド50fに何を書き込むかなど、それぞれのアクティビティの様々な他のパラメータを構成するユーザー入力を受信し得る。ユーザー入力は、現在のアクティビティの構成が完了したことを示すと(ステップ412がはいを返す)、ステップ416は、現在のワークフローが完了したかどうかを決定する。いいえである場合、RPAエージェント31は、ステップ402に戻り、他のRPAアクティビティを構成するためのユーザー入力を受信し得る。ユーザー入力が現在のワークフローが完了したことを示す場合、ステップ418~420のシーケンスは、それぞれのロボットワークフローを指定するRPAスクリプト/パッケージを定式化し、それぞれのロボット仕様を出力し得る。RPAスクリプト42および/またはパッケージ40は、それぞれのワークフローの各RPAアクティビティに関して、アクティビティタイプのインジケータおよびそれぞれのクティビティのターゲットを特徴付けるターゲット特定データのセットを含み得る。いくつかの実施形態では、ステップ420は、RPAパッケージ40をコンピュータ読み取り可能な媒体(例えば、RPAホスト20のローカルハードドライブ)に保存すること、または遂行するRPAロボット12および/もしくはオーケストレータ14に配布するためにパッケージ40をリモートサーバーに送信することを含み得る。
代替の実施形態では、ロボットワークフロー全体のRPAスクリプトまたはパッケージ40を定式化する代わりに、RPAエージェント31は、ターゲット特定データを備える、個々のRPAアクティビティ用の仕様を定式化し、それぞれの仕様をリモートサーバーコンピュータ(例えば、オーケストレータ14)に送信してもよく、次いで、これは、RPAエージェント31から受信した個々のアクティビティデータから設計されたワークフロー全体を記述するRPAパッケージ40を組み立ててもよい。
図14は、本発明のロボット設計実施形態におけるRPAドライバ25によって実行されるステップの例示的なシーケンスを示す。ドライバ25は、ポインタの動き、マウスクリック、キー押下、およびタップ、ピンチなどの入力ジェスチャなどのユーザー入力イベント(ステップ502~504)をリッスンするように構成され得る。入力イベントを検出することに応答して、ステップ506においてドライバ25は、イベントに従ってターゲット候補UI要素を特定し得る。検出された入力イベントがマウスイベント(例えば、ポインタの移動)を含む一例では、ステップ506は、ポインタの現在の位置に位置するUI要素を特定し得る。RPAホスト20がポインタを表示しない別の例では、例えばタッチスクリーンデバイス上で、ステップ504はスクリーンタッチを検出し、そしてステップ506はタッチの位置に位置するUI要素を特定し得る。
いくつかの実施形態では、ステップ508は、ステップ508で特定されたターゲット候補要素を強調表示(ハイライト)し得る。本明細書において強調表示することは、それぞれのターゲット候補要素の外観を変更して、現在のRPAアクティビティの潜在的なターゲットとしてそれを示すことを意味する。図15は、本発明のいくつかの実施形態による例示的な強調表示を示す。ステップ508は、それぞれのUIの仕様(例えば、UIツリー、DOM)を変更して、特定されたターゲット候補の外観(例えば、フォント、サイズ、色など)を変更することまたは図15に示す例示的な強調表示76a~76bなどの新しい強調表示要素を作成することを含み得る。例示的な強調表示要素は、ターゲット候補を囲む多角形のフレームを含み得、これは、ターゲット候補をターゲットウェブページの他の要素間で目立たせるために、着色、陰影付け、ハッチングなどされ得る。他の例示的な強調表示要素は、テキスト要素、アイコン、矢印などを含み得る。
いくつかの実施形態では、ターゲット候補の特定は、アンカー要素の選択を自動的にトリガする。アンカーは、とりわけ、ターゲット候補のタイプ、位置、向き、および大きさに従って選択され得る。例えば、いくつかの実施形態は、ターゲット候補のすぐ近くに位置する要素、好ましくはそれと整列している要素をアンカーとして選択する。ステップ510(図14)は、本技術分野で知られている任意のアンカー選択基準を適用し得、そのような基準およびアルゴリズムは、本明細書の範囲を超えている。さらなるステップ512において、ドライバ25は、上述のようにその画面外観を変更することによって、選択されたターゲット要素を強調表示し得る。いくつかの実施形態は、ターゲット要素およびアンカー要素に対して異なる強調表示を使用し(例えば、異なる色、異なるハッチタイプなど)、図示されるように説明テキストを追加してもよい。いくつかの実施形態では、ステップ510~512が複数回繰り返されて、各ターゲット候補の複数のアンカーを選択する。
ステップ514では、RPAドライバ25は、候補ターゲットおよび/または選択されたアンカー要素を特徴付けるターゲット特定データを決定し得る。セレクタ52を決定するために、いくつかの実施形態は、それぞれのUIを公開するアプリケーションを特定し得、それぞれのUIのライブUIツリー/DOMを解析して、候補ターゲット要素および/またはアンカー要素を特徴付けるタグおよび/または属性-値ペアのセットを抽出および/または定式化し得る。ステップ514は、画像データ(例えば、図10の画像54を参照)を決定するために、候補ターゲット要素および/またはアンカー要素を現在表示している画面の領域のスナップショットを取ることをさらに含み得る。ターゲットおよび/またはアンカー要素によって表示されるテキスト/ラベルは、ソースコードを解析することによっておよび/またはOCR手順によって抽出され得る。ステップ516では、ドライバ25は、ステップ514において決定されたターゲット特定データをブリッジモジュール34および/またはRPAエージェント31に送信し得る。このような通信は、ブリッジモジュール34および/またはRPAエージェント31によって確立されたチャネル38を介して実行される。
図14の例示的なフローチャートは、RPAドライバ25が、ユーザーイベントをリスニングし、自身の決定を下し、そして要素特定データをブリッジモジュール34および/またはエージェント31に自動的に送信していると仮定している。代替の実施形態では、RPAエージェント31および/またはブリッジモジュール34は、チャネル38を介して送信されるコマンドまたは他の種類の通信によってRPAドライバ25からデータを積極的に要求し得る。一方、RPAドライバ25は、単にそれぞれのコマンドを遂行するだけでよい。例えば、エージェント31は、ドライバ25に対して、ターゲットを取得するように要求し、次にアンカーを取得するように明示的に要求してもよい。このような要求は、例えば、アンカーが候補ターゲットの特定に応答して自動的に選択される上記の説明とは対照的に、ユーザーがアンカーを手動で選択することが期待される実施形態において発行され得る。次に、ドライバ25は、要求に応じて要素特定データを返すだけでよい。さらに他の代替的な実施形態では、アンカー要素を自動的に選択するためのアルゴリズムは、上記のようにドライバ25ではなく、RPAエージェント31によって遂行され得る。例えば、エージェント31は、ターゲットのすぐ左側に位置するUI要素を特定し、それぞれの要素をアンカーとして割り当てるようにドライバ25に要求を送信し得る。当業者であれば、このような変形は例として挙げられたものであり、および本発明の範囲を狭めるものではないことがわかるであろう。
上記の説明は、ブリッジモジュール34がRPAエージェント31とドライバ25との間の通信を仲介し(例えば、図6参照)、モジュール34がターゲット構成インターフェース70を表示および入力する例示的な実施形態に言及する。別の例示的な実施形態では、ブリッジモジュール34は、ドライバ25およびエージェント31の間の直接通信チャネルをセットアップするだけであり、一方で、RPAエージェント31は、例えば重ね合わせとして、エージェントブラウザウィンドウ36内にターゲット構成インターフェース70を表示する。このような実施形態では、RPAドライバ25は、エージェント31からターゲット取得コマンドを受信してもよく、およびターゲット特定データをエージェント31に返してもよく、モジュール34は単に中継として動作するのみである。
上記の説明はまた、ユーザーが遂行のために利用可能なアクティビティのセットから選択し、その後、ターゲットおよび他のパラメータを示すことによって各個々のアクティビティを構成するように進む、ロボット設計のバージョンに焦点を当てたものである。他の例示的な実施形態は、ロボット設計ツールが一連のユーザーアクション(それぞれのユーザーの複雑なユーザーインターフェースを案内することなど)を記録し、それぞれのシーケンスを再現するようにロボットを構成する、別のポピュラーなロボット設計シナリオを実装し得る。いくつかのそのような実施形態では、クリック、スクロール、タイプインなどの各ユーザーアクションについて、ドライバ25は、ターゲット特定データのセットを含むそれぞれのアクションのターゲットを決定し、通信チャネル38を介してRPAエージェント31にユーザーアクションのタイプのインジケータとともにそれぞれのデータを送信するよう構成され得る。そして、RPAエージェント31は、RPAドライバ25から受信したそれぞれのデータからロボット仕様を組み立て得る。
ロボット遂行実施形態
所望のワークフローを実行するためにRPAロボットを設計することに向けられた上記に例示された実施形態とは対照的に、本発明の他の実施形態では、RPAエージェント31は、実際に自動化を実行するように構成されたRPAロボット12の少なくとも一部を含む。例えば、RPAエージェント31は、ロボットマネージャ24および/またはロボットエグゼキュータ22の機能のいくつかを具現化し得る(例えば、図2および上記の関連する説明を参照)。
所望のワークフローを実行するためにRPAロボットを設計することに向けられた上記に例示された実施形態とは対照的に、本発明の他の実施形態では、RPAエージェント31は、実際に自動化を実行するように構成されたRPAロボット12の少なくとも一部を含む。例えば、RPAエージェント31は、ロボットマネージャ24および/またはロボットエグゼキュータ22の機能のいくつかを具現化し得る(例えば、図2および上記の関連する説明を参照)。
1つの例示的なロボット遂行実施形態では、ユーザーは、エージェントブラウザウィンドウ36を使用して、ロボット仕様を開くことができる。仕様は、ターゲットUI37の内部で、フォームへの入力、いくつかのテキストまたは画像のスクレイピングなど、いくつかのアクティビティを行うようにロボットに指示し得る。例えば、RPAパッケージ40は、特定のURLにアクセスすることまたはリモートサーバーコンピュータによって公開されたウェブインターフェースからメニューアイテムを選択することによって、リモート「ロボットストア(robot store)」からダウンロードされ得る。パッケージ40は、スクリプト42がブラウザプロセスによって遂行されることを可能にするコンピュータ読み取り可能な形式で定式化されたRPAスクリプト42のセットを含み得る。例えば、スクリプト42は、JavaScript(登録商標)のバージョンで定式化され得る。スクリプト42は、RPAアクティビティのシーケンス(例えば、ウェブページへの案内、ボタンのクリックなど)の仕様を含み得、各RPAアクティビティのターゲット/オペランド(例えば、どのボタンをクリックするか、どのフォームフィールドに記入するかなど)を特徴付けるターゲット特定データのセットを含む。
図16は、本発明のロボット遂行実施形態におけるモジュール34によって実行されるステップの例示的なシーケンスを示す。ステップ602において、モジュール34は、例えば図12のステップ302に関連して上述したように、RPAエージェント31と協働して通信チャネル38をセットアップし得る。次に、ステップ604~606のシーケンスにおいて、モジュール34は、エージェント31から、ターゲットアプリケーション33および/またはターゲットUI37を示すアプリケーションIDを受信し得る。いくつかの実施形態では、モジュール34は、ターゲットUI37がRPAホスト20上で既にインスタンス化されているかどうかを決定することが可能であり得、そうでない場合、ターゲットアプリケーション33のインスタンスを開始し、ターゲットUI37のインスタンスを公開し得ることが可能であり得る。ステップ608~610のさらなるシーケンスにおいて、モジュール34は、RPAドライバ(複数可)25をインスタンス化し、およびドライバ(複数可)25との通信をセットアップし得る。RPAロボットが複数のUIとインタラクションするように構成されている状況では(例えば、スプレッドシートからデータを読み取り、それを電子メールメッセージに貼り付けるなど)、ステップ604~610は、異なるターゲットUIごとに再び遂行され得る。別の言い方をすれば、各異なるターゲットUIに対してRPAドライバ25の異なるインスタンスが存在し得る。通信が確立されると、モジュール34は、ドライバ(複数可)25およびエージェント31の間の通信を中継し得る(ステップ612~614~616)。
図17は、本発明のロボット遂行の実施形態におけるRPAエージェント31によって実行されるステップの例示的なシーケンスを示す。ステップ702におけるRPAパッケージ40の受信に応答して、ステップ704において、エージェント31は、それぞれの仕様を解析して、遂行されるアクティビティを特定してもよい。次に、ステップ706~708のシーケンスは、それぞれのワークフローのすべてのアクティビティを循環させてもよい。各アRPAクティビティについて、ステップ710は、チャネル38を介してRPAドライバ25に遂行コマンドを送信してもよく、コマンドは、アクティビティのタイプ(タップ、入力など)のインジケータを含み、それぞれのアクティビティのターゲット/オペランドを特徴付けるターゲット特定データをさらに含む。それぞれの自動化が複数のターゲットUIとインタラクションすることを必要とする状況では、ステップ710は、例えばターゲット特定データに含まれるアプリケーションID152に従って、現在のRPAアクティビティに固有のターゲットUIを特定することを含み得る。いくつかの実施形態は、各ターゲットUIと共にRPAドライバ25の別個のインスタンスを展開し、およびそのようなドライバの各々は、エージェント31と通信するために別個の通信チャネル38を使用し得る。したがって、ステップ710は、適切なチャネルを介してコマンドおよび/またはターゲット特定データを送信することをさらに含み得る。
次いで、いくつかの実施形態は、通信チャネル38を介してRPAドライバ25からアクティビティレポートを受信してもよく、ここで、レポートは、例えばそれぞれのアクティビティが成功したかどうかを示すことができ、それぞれのアクティビティを遂行した結果をさらに含み得る。いくつかの実施形態では、ステップ714は、現在のアクティビティが正常に遂行されたかどうかを受信したアクティビティレポートに従って決定し得、ノーである場合、ステップ716は、エージェントブラウザウィンドウ36内のユーザーに対して警告を表示し得る。自動化の完了に応答して(例えば、ステップ706は、遂行する未処理のアクティビティが残っていないと判断した)、ステップ716は、それぞれのワークフローの遂行の成功メッセージおよび/または結果をユーザーに表示してもよい。いくつかの実施形態では、さらなるステップ718は、それぞれの自動化の遂行の結果を含むステータスレポートをリモートサーバ(例えば、オーケストレータ14)に送信し得る。前記結果は、例えば、ターゲットUI37からスクレイピングされたデータ、フォームへのデータ入力に成功したことに応答してターゲットUI37によって表示された承認などを含んでもよい。
図18は、本発明のロボット遂行の実施形態におけるRPAドライバ25によって実行されるステップの例示的なシーケンスを示す。ドライバ25は、通信チャネル38を介してRPAエージェントからの遂行コマンドをリッスンするように構成され得る(ステップ802~804)。コマンドの受信に応答して、ステップ806は、RPAエージェント31から受信したターゲット特定データに従って、現在のアクティビティのターゲットを特定することを試みてもよい。いくつかのロボットは、複数のUIとインタラクションするように構成され得、そのため、ステップ806は、例えば、ターゲット特定データの一部として含まれるアプリケーションID152に従って、現在のアクティビティのターゲットUIを最初に特定することを含み得る。ステップ806は、次いで、それぞれのターゲット特定データに一致する要素についてターゲットUI37を検索することを含み得る。例えば、RPAドライバ25は、ターゲットUI37のライブUIツリー/DOMを解析して、HTMLタグおよび/または他の属性-値ペアがセレクタ52で指定されたものと一致する要素を特定し得る。
いくつかの実施形態では、セレクタ52に従った特定が失敗したとき、RPAドライバ25は、画像データおよび/またはテキストデータ(例えば、図10の要素画像54および要素テキスト56)に従って実行時ターゲットを見つけるよう試みてもよい)。いくつかの実施形態はさらに、アンカー要素を特徴付ける特定データに従って、ならびに/またはアンカーに対する実行時ターゲットの相対位置およびアライメントに従って、実行時ターゲットを特定することを試みてもよい。このような手順およびアルゴリズムは、本明細書の範囲を超えるものである。
ターゲット特定が成功した場合(ステップ808がはいを返す)、ステップ812は、例えば特定されたボタンをクリックする、特定されたフォームフィールドに記入するなど、現在のRPAアクティビティを遂行し得る。ステップ812は、ターゲットUI37を操作すること、および/または、人間のオペレータが実際にそれぞれのアクションを実行した結果を再現するための入力イベント(例えば、クリック、タップなど)を生成することを含み得る。
現在のアクティビティの実行時ターゲットが、RPAエージェント31から受信したターゲット特定データに従って特定され得ない場合(例えば、ターゲットUI37の外観が設計時と実行時との間で大幅に変更されている状況)、いくつかの実施形態は、通信チャネル38を介してRPAエージェント31にエラーメッセージ/レポートを送信する。代替の実施形態では、RPAドライバ25は、代替ターゲットを検索し得る。そのような一例では、ドライバ25は、提供されたターゲット特定データにほぼ一致するターゲットUI37の要素を特定し得る。いくつかの実施形態は、所望のターゲット特性に部分的に一致する複数のターゲット候補を特定し、各候補と設計時ターゲットとの間の類似性尺度を計算する。次いで、計算された類似性尺度に従ってターゲット候補をランク付けすることによって、代替ターゲットが選択され得る。代替の実行時ターゲットを選択することに応答して、ドライバ25のいくつかの実施形態は、例えば図15に関連して上述したように、それぞれのUI要素を強調表示し、およびユーザーに選択を確認するように要求し得る。さらに別の例示的な実施形態では、ドライバ25は、実行時ターゲットが検出され得なかったことを示すダイアログを示し、かつ代替ターゲットを手動で選択するようにユーザーに指示するダイアログを表示し得る。次いで、ドライバ25は、ユーザーの入力を待ってもよい。ユーザーが代替ターゲットを選択すると(例えば、UI要素上でクリック、タップなどによる)、RPAドライバ25は、図14に関連して上述した方法を使用して、ターゲットUI37内でそれぞれの要素を特定し得る(ステップ506)。代替の実行時ターゲットが利用可能である場合(ステップ810がはいを返す)、ドライバ25は、代替ターゲットに現在のアクティビティを適用し得る(ステップ812)。
何らかの理由でドライバ25が代替ターゲットを全くできないとき、いくつかの実施形態では、ステップ814は、実行時ターゲットを特定できなかったために現在のアクティビティが遂行され得なかったことを示すアクティビティレポートをRPAエージェント31に返す。いくつかの実施形態では、アクティビティレポートは、ターゲットウェブページの任意の要素において一致され得なかったターゲット特定データのサブセットをさらに特定し得る。そのような報告は、デバッグを容易にし得る。現在のアクティビティが正常に遂行された場合、RPAエージェント31に送信されるレポートは、それぞれのアクティビティを遂行した結果を含み得る。代替の実施形態では、ステップ814は、ローカルRPAエージェントの代わりに、リモートサーバーコンピュータ(例えば、オーケストレータ14)にアクティビティレポートおよび/またはそれぞれのアクティビティの遂行の結果を送信することを含み得る。
図19は、本明細書に記載される方法およびアルゴリズムのいくつかを遂行するようにプログラム可能なコンピュータシステム80の例示的なハードウェア構成を示す。図示された構成は一般的なものであり、例えば図4の任意のRPAホスト20a~20eを表し得る。いくつかのデバイス(例えば、携帯電話、タブレットコンピュータ、サーバーコンピュータ)のハードウェア構成は、図19に図示されたものと多少異なる場合があることを当業者は知っているであろう。
示されたコンピュータシステムは、ハードウェアプロセッサ82およびメモリユニット84を含む物理デバイスのセットを含む。プロセッサ82は、信号および/またはデータのセットを用いて計算および/または論理演算を遂行するように構成された物理デバイス(例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路など)を含む。いくつかの実施形態では、そのような演算は、プロセッサ命令のシーケンス(例えば、機械コードまたは他のタイプのエンコーディング)の形態でプロセッサ82に配信される。メモリユニット84は、プロセッサ82によってアクセスまたは生成される命令および/またはデータを格納する揮発性コンピュータ読み取り可能な媒体(例えば、DRAM、SRAM)を含み得る。
入力デバイス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に接続するサウスブリッジを含み得る。
上述した例示的なシステムおよび方法は、RPAソフトウェアが、そのハードウェアタイプおよびオペレーティングシステムに関係なく、事実上あらゆるホストコンピュータ上で遂行できるようにすることによって、RPA技術の取り込みを促進する。個別の自己完結型ソフトウェアアプリケーションとして従来の方法で配布されるRPAソフトウェアとは対照的に、本発明のいくつかの実施形態では、RPAソフトウェアの少なくとも一部は、とりわけ、Google Chrome(登録商標)などのウェブブラウザ内で遂行するスクリプトのセットを含む。前記スクリプトは、JavaScript(登録商標)などのスクリプト言語、またはブラウザが解釈することができるバイトコードのいくつかのバージョンで定式化され得る。
従来のRPAでは、各ハードウェアプラットフォーム(すなわち、プロセッサファミリー)および/または各オペレーティングシステム(例えば、Microsoft Windows(登録商標)およびLinux(登録商標))用に別々のバージョンのソフトウェアを開発する必要があるが、本発明のいくつかの実施形態は、スクリプト解釈機能を有するウェブブラウザを遂行できる任意のプラットフォームおよびオペレーティングシステムで同じスクリプトのセットが使用されるようにし得る。ソフトウェア開発者側では、ロボット設計アプリケーションの複数のバージョンを構築および維持する必要性を取り除くことにより、ソフトウェア開発を実質的に容易にし、市場投入までの時間を短縮し得る。クライアント側の利点は、RPAソフトウェアの複数バージョンの購入、インストール、およびアップグレードの必要性がなくなり、ライセンスプロセスがさらに簡素化されるため、管理コストの削減を含む。また、個々のRPA開発者は、オペレーティングシステムに関係なく、自分のPCでオートメーションの設計、テスト、および実行ができるようになるという利益もあり得る。
自動化が、ロボットがブラウザ以外のアプリケーション(例えば、スプレッドシートアプリケーション、電子メール、インスタントメッセージなど)とインタラクションすることを必要とする場合、RPAソフトウェアの一部は、依然としてブラウザの外部で遂行し得る。本発明のいくつかの実施形態では、そのようなコンポーネントは、OSおよび/またはハードウェアに固有である必要があるドライバを含む。しかしながら、そのようなコンポーネントは、典型的には、例えば、ロボット設計インターフェースよりも桁違いに洗練されていない。したがって、OSおよび/またはプラットフォーム特有のドライバを開発および保守しなければならないことは、RPAソフトウェアの大部分をブラウザに移行する利便性のために支払う許容可能な価格であり得る。さらに、ドライバをブラウザの外部に残すことは、例えば、スプレッドシートからデータを読み取り、電子メールプログラムにそれを貼り付けるように、ロボットが複数のターゲットアプリケーションとインタラクションすることを可能にする、他の重要な利点を有する。
しかし、ソフトウェアの一部がブラウザ内部で遂行しおよび別のそれが外部で遂行する混合構成でRPAを実行することは、ブラウザのコード分離ポリシーに明示的に反するため、多くの技術的課題が存在する。そのようなハードルを克服するために、いくつかの実施形態は、RPAコンポーネント間で通信チャネルをセットアップして、ターゲット特定データおよびステータスレポートなどのメッセージの交換を可能にする。1つの例示的な実施形態は、そのような通信チャネルをセットアップするために、ブラウザ拡張メカニズムを使用する。他の例示的な実施形態では、ローカルおよび/またはリモートサーバーを使用して、それぞれのコンポーネント間でメッセージを受け渡しする。
上記の実施形態は、本発明の範囲から逸脱することなく多くの変更が可能であることは、当業者には明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲およびその法的均等物によって決定されるべきである。
Claims (23)
- コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、ロボティックプロセスオートメーション(RPA)ドライバおよびブリッジモジュールを遂行することを含む方法であって、
前記ブリッジモジュールは、前記RPAドライバおよび前記コンピュータシステム上で遂行するウェブブラウザアプリケーションの間に通信チャネルをセットアップするように構成され、
前記RPAドライバは、前記ウェブブラウザアプリケーションの外部で遂行し、かつ
前記コンピュータシステム上で公開されるターゲットユーザーインターフェース(UI)のターゲット要素を示すユーザー入力を検出し、
前記通信チャネルを介して、前記ターゲット要素を特徴付けるターゲット特定データのセットを前記ウェブブラウザアプリケーションに送信する、ように構成され、
前記ウェブブラウザアプリケーションは、前記ターゲット要素上でRPAアクティビティを行うように構成されたRPAロボットの仕様を出力するように構成されたロボット設計インターフェースを公開する、方法。 - 前記ターゲットUIは、前記ウェブブラウザアプリケーションの外部で遂行するRPAターゲットアプリケーションによって公開される、請求項1に記載の方法。
- 前記RPAドライバは、前記ターゲット要素を示す前記ユーザー入力を検出することに応答して、
前記コンピュータシステム上で公開された別のUIの別の要素を示すユーザー入力を検出し、前記別の要素は、前記RPAロボットの別のRPAアクティビティのターゲットを含み、
前記別の要素を特徴付けるデータを、前記通信チャネルを介して前記ウェブブラウザアプリケーションに送信するようにさらに構成される、請求項1に記載の方法。 - 前記ブリッジモジュールは、前記ウェブブラウザアプリケーション内で遂行する第1の部分と、前記ウェブブラウザアプリケーションの外部で遂行する第2の部分とを含み、
前記第1の部分は、ブラウザ拡張コンピュータプログラムを含み、
前記通信チャネルをセットアップすることは、前記ブラウザ拡張コンピュータプログラムのローカルメッセージングホストとして前記第2の部分を登録することを含む、請求項1に記載の方法。 - 前記通信チャネルをセットアップすることは、前記コンピュータシステム上で遂行するローカルサーバーを構成することを含み、前記通信チャネルを介して送信することは、前記ローカルサーバーの予め決められたポートに要求を送信することを含む、請求項1に記載の方法。
- 前記通信チャネルをセットアップすることは、前記少なくとも1つのハードウェアプロセッサに通信可能に結合されたコンピュータ読み取り可能な媒体上にファイルを作成することを含み、前記通信チャネルを介して送信することは、前記ファイルへの書き込みを含む、請求項1に記載の方法。
- 前記RPAドライバは、前記ターゲット要素を示す前記ユーザー入力を検出することに応答して、前記ターゲット要素の外観を変更して、前記ターゲットUIの他の要素に関して前記要素を強調するようにさらに構成される、請求項1に記載の方法。
- RPA設計インターフェースは、RPAロボットによって遂行可能な複数のRPAアクティビティから前記RPAアクティビティを選択するユーザー入力を受信するように構成される、請求項1に記載の方法。
- 前記ブリッジモジュールは、
ターゲット構成UIを前記コンピュータシステムのユーザーに公開し、
前記ターゲット構成UI内に前記ターゲット特定データの少なくとも一部を表示するようにさらに構成される、請求項1に記載の方法。 - 前記ターゲット特定データの表示された部分は、前記コンピュータシステム上で遂行するRPAターゲットアプリケーションの識別子を含み、前記RPAターゲットアプリケーションは、前記ターゲットUIを公開する、請求項8に記載の方法。
- 前記ロボット設計インターフェースを公開することは、リモートサーバーからRPAエージェントを取得すること、および前記RPAエージェントを遂行するために前記ウェブブラウザアプリケーションのプロセスを使用することを含む、請求項1に記載の方法。
- RPAドライバおよびブリッジモジュールを遂行するように構成された少なくとも1つのハードウェアプロセッサを含むコンピュータシステムであって、
前記ブリッジモジュールは、前記RPAドライバおよび前記コンピュータシステム上で遂行するウェブブラウザアプリケーションの間に通信チャネルをセットアップするように構成され、
前記RPAドライバは、前記ウェブブラウザアプリケーションの外部で遂行し、かつ
前記コンピュータシステム上で公開されるターゲットユーザーインターフェース(UI)のターゲット要素を示すユーザー入力を検出し、
前記通信チャネルを介して、前記ターゲット要素を特徴付けるターゲット特定データのセットを前記ウェブブラウザアプリケーションに送信する、ように構成され、
前記ウェブブラウザアプリケーションは、前記ターゲット要素上でRPAアクティビティを行うように構成されたRPAロボットの仕様を出力するように構成されたロボット設計インターフェースを公開する、コンピュータシステム。 - 前記ターゲットUIは、前記コンピュータシステム上で遂行するRPAターゲットアプリケーションによって公開され、前記RPAターゲットアプリケーションは、前記ウェブブラウザアプリケーションとは異なる、請求項12に記載のコンピュータシステム。
- 前記RPAドライバは、前記ターゲット要素を示す前記ユーザー入力を検出することに応答して、
前記コンピュータシステム上で公開された別のUIの別の要素を示すユーザー入力を検出し、前記別の要素は、前記RPAロボットの別のRPAアクティビティのターゲットを含み、
前記別の要素を特徴付けるデータを、前記通信チャネルを介して前記ウェブブラウザアプリケーションに送信するようにさらに構成される、請求項12に記載のコンピュータシステム。 - 前記ブリッジモジュールは、前記ウェブブラウザアプリケーション内で遂行する第1の部分と、前記ウェブブラウザアプリケーションの外部で遂行する第2の部分とを含み、
前記第1の部分は、ブラウザ拡張コンピュータプログラムを含み、
前記通信チャネルをセットアップすることは、前記ブラウザ拡張コンピュータプログラムのローカルメッセージングホストとして前記第2の部分を登録することを含む、請求項12に記載のコンピュータシステム。 - 前記通信チャネルをセットアップすることは、前記コンピュータシステム上で遂行するローカルサーバーを構成することを含み、前記通信チャネルを介して送信することは、前記ローカルサーバーの予め決められたポートに要求を送信することを含む、請求項12に記載のコンピュータシステム。
- 前記通信チャネルをセットアップすることは、前記少なくとも1つのハードウェアプロセッサに通信可能に結合されたコンピュータ読み取り可能な媒体上にファイルを作成することを含み、前記通信チャネルを介して送信することは、前記ファイルへの書き込みを含む、請求項12に記載のコンピュータシステム。
- 前記RPAドライバは、前記ターゲット要素を示す前記ユーザー入力を検出することに応答して、前記ターゲット要素の外観を変更して、前記ターゲットUIの他の要素に関して前記要素を強調するようにさらに構成される、請求項12に記載のコンピュータシステム。
- RPA設計インターフェースは、RPAロボットによって遂行可能な複数のRPAアクティビティから前記RPAアクティビティを選択するユーザー入力を受信するように構成される、請求項12に記載のコンピュータシステム。
- 前記ブリッジモジュールは、
ターゲット構成UIを前記コンピュータシステムのユーザーに公開し、
前記ターゲット構成UI内に前記ターゲット特定データの少なくとも一部を表示するようにさらに構成される、請求項12に記載のコンピュータシステム。 - 前記ターゲット特定データの表示された部分は、前記コンピュータシステム上で遂行するRPAターゲットアプリケーションの識別子を含み、前記RPAターゲットアプリケーションは、前記ターゲットUIを公開する、請求項20に記載のコンピュータシステム。
- 前記ロボット設計インターフェースを公開することは、リモートサーバーからRPAエージェントを取得すること、および前記RPAエージェントを遂行するために前記ウェブブラウザアプリケーションのプロセスを使用することを含む、請求項12に記載のコンピュータシステム。
- コンピュータシステムの少なくとも1つのハードウェアプロセッサによって遂行されたとき、前記コンピュータシステムにブリッジモジュールおよびRPAドライバを形成させる命令を格納した非一時的なコンピュータ読み取り可能な媒体であって、
前記ブリッジモジュールは、前記RPAドライバおよび前記コンピュータシステム上で遂行するウェブブラウザアプリケーションの間に通信チャネルをセットアップするように構成され、
前記RPAドライバは、前記ウェブブラウザアプリケーションの外部で遂行し、かつ
前記コンピュータシステム上で公開されるターゲットユーザーインターフェース(UI)のターゲット要素を示すユーザー入力を検出し、
前記通信チャネルを介して、前記ターゲット要素を特徴付けるターゲット特定データのセットを前記ウェブブラウザアプリケーションに送信する、ように構成され、
前記ウェブブラウザアプリケーションは、前記ターゲット要素上でRPAアクティビティを行うように構成されたRPAロボットの仕様を出力するように構成されたロボット設計インターフェースを公開する、非一時的なコンピュータ読み取り可能な媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/657,532 | 2022-03-31 | ||
US17/657,532 US20230311322A1 (en) | 2022-03-31 | 2022-03-31 | Systems and Methods for Using a Browser to Design Robotic Process Automation (RPA) Robots |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023152695A true JP2023152695A (ja) | 2023-10-17 |
Family
ID=87575719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023011567A Pending JP2023152695A (ja) | 2022-03-31 | 2023-01-30 | ロボティックプロセスオートメーション(rpa)ロボットを設計するためにブラウザを使用するシステムおよび方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20230311322A1 (ja) |
JP (1) | JP2023152695A (ja) |
CN (1) | CN116893807A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023176618A (ja) * | 2022-05-31 | 2023-12-13 | コニカミノルタ株式会社 | Rpaスクリプトデータの作成方法、rpaスクリプトデータの実行方法、端末装置、画像処理装置、rpaスクリプトデータ、プログラム |
US20230401074A1 (en) * | 2022-06-10 | 2023-12-14 | Dell Products L.P. | Automated testcase execution |
US20240176724A1 (en) * | 2022-11-29 | 2024-05-30 | Keysofts | Computer-implemented method and computing system for software execution automation monitoring |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667696B (zh) | 2009-11-23 | 2016-04-13 | 惠普发展公司,有限责任合伙企业 | 用于用户界面中的对象标识的***与方法 |
CN102207857B (zh) | 2010-03-29 | 2014-08-27 | 日电(中国)有限公司 | Gui元素识别方法、装置及*** |
US8407321B2 (en) | 2010-04-21 | 2013-03-26 | Microsoft Corporation | Capturing web-based scenarios |
US9021371B2 (en) | 2012-04-20 | 2015-04-28 | Logitech Europe S.A. | Customizing a user interface having a plurality of top-level icons based on a change in context |
US10534512B2 (en) | 2015-03-04 | 2020-01-14 | Tata Consultancy Services Limited | System and method for identifying web elements present on a web-page |
EP3271837A4 (en) | 2015-03-17 | 2018-08-01 | VM-Robot, Inc. | Web browsing robot system and method |
EP3314440A4 (en) | 2015-06-26 | 2019-03-20 | Intel Corporation | TECHNOLOGIES FOR DEVICE INDEPENDENT AUTOMATED APPLICATION TESTS |
US10528327B2 (en) | 2015-11-23 | 2020-01-07 | Microsoft Technology Licensing Llc | Workflow development system with ease-of-use features |
US20190056107A1 (en) * | 2016-02-03 | 2019-02-21 | Strong Force Iot Portfolio 2016, Llc | Industrial internet of things smart heating systems and methods that produce and use hydrogen fuel |
US10324828B2 (en) | 2016-03-28 | 2019-06-18 | Dropbox, Inc. | Generating annotated screenshots based on automated tests |
US10331416B2 (en) | 2016-04-28 | 2019-06-25 | Microsoft Technology Licensing, Llc | Application with embedded workflow designer |
US10025567B2 (en) | 2016-10-14 | 2018-07-17 | Microsoft Technology Licensing, Llc | Bot creation with workflow development system |
US10409712B2 (en) | 2016-12-30 | 2019-09-10 | Accenture Global Solutions Limited | Device based visual test automation |
US10853114B2 (en) | 2017-01-05 | 2020-12-01 | Soroco Private Limited | Systems and methods for executing software robot computer programs on virtual machines |
US11157855B2 (en) * | 2017-01-09 | 2021-10-26 | Sutherland Global Services Inc. | Robotics process automation platform |
US10491548B2 (en) | 2017-04-17 | 2019-11-26 | Facebook, Inc. | Techniques to configure bot flow |
US20190303269A1 (en) | 2018-03-28 | 2019-10-03 | Layout.io Ltd | Methods and systems for testing visual aspects of a web page |
US20200004798A1 (en) | 2018-06-27 | 2020-01-02 | Q2 Software, Inc. | Method and system for automating web processes utilizing an abstractable underlying platform layer |
JP6452882B1 (ja) | 2018-07-28 | 2019-01-16 | BizteX株式会社 | ウェブブラウザの操作を伴う業務プロセスを自動化するためのシステム、方法及びプログラム |
EP3608855A1 (en) | 2018-08-08 | 2020-02-12 | Atos Syntel, Inc. | Workflow analyzer system and methods |
US10698745B2 (en) * | 2018-08-29 | 2020-06-30 | Accenture Global Solutions Limited | Adapter extension for inbound messages from robotic automation platforms to unified automation platform |
US10474564B1 (en) | 2019-01-25 | 2019-11-12 | Softesis Inc. | Identifying user interface elements using element signatures |
US10949225B2 (en) | 2019-02-06 | 2021-03-16 | Sap Se | Automatic detection of user interface elements |
US11243803B2 (en) | 2019-04-30 | 2022-02-08 | Automation Anywhere, Inc. | Platform agnostic robotic process automation |
US11113095B2 (en) * | 2019-04-30 | 2021-09-07 | Automation Anywhere, Inc. | Robotic process automation system with separate platform, bot and command class loaders |
US10970097B2 (en) | 2019-06-19 | 2021-04-06 | Sap Se | Adaptive web-based robotic process automation |
US11108618B2 (en) * | 2019-09-24 | 2021-08-31 | Intradiem, Inc. | Live-monitoring of agent instances to trigger automation |
US10885423B1 (en) | 2019-10-14 | 2021-01-05 | UiPath Inc. | Systems and methods of activity target selection for robotic process automation |
US11055067B2 (en) | 2019-10-18 | 2021-07-06 | Asg Technologies Group, Inc. | Unified digital automation platform |
US20210133799A1 (en) * | 2019-10-31 | 2021-05-06 | Talkdesk, Inc. | Cross-channel call attribution |
US12017362B2 (en) | 2019-10-31 | 2024-06-25 | Automation Anywhere, Inc. | Productivity plugin for integration with robotic process automation |
US11233861B2 (en) | 2020-02-18 | 2022-01-25 | UiPath, Inc. | Inter-session automation for robotic process automation (RPA) robots |
US10654166B1 (en) | 2020-02-18 | 2020-05-19 | UiPath, Inc. | Automation windows for robotic process automation |
CN111429083A (zh) | 2020-02-21 | 2020-07-17 | 达而观信息科技(上海)有限公司 | 一种实现RPA机器人批量管理的Web前端、*** |
US11392477B2 (en) | 2020-07-09 | 2022-07-19 | UiPath, Inc. | Automation of a process running in a first session via a robotic process automation robot running in a second session |
US11157339B1 (en) | 2020-07-09 | 2021-10-26 | UiPath, Inc. | Automation of a process running in a first session via a robotic process automation robot running in a second session |
US11614730B2 (en) * | 2020-10-06 | 2023-03-28 | UiPath, Inc. | Embedded and/or pooled robotic process automation robots |
CN112486073B (zh) | 2020-12-03 | 2022-04-19 | 用友网络科技股份有限公司 | 机器人控制方法、控制***和可读存储介质 |
US11782734B2 (en) * | 2020-12-22 | 2023-10-10 | Automation Anywhere, Inc. | Method and system for text extraction from an application window for robotic process automation |
CN113177474A (zh) | 2021-04-29 | 2021-07-27 | 广州省事熊智能科技有限公司 | 一种基于rpa技术的数据自动读取录入的方法及*** |
CN113254174A (zh) | 2021-05-26 | 2021-08-13 | 广州衡昊数据科技有限公司 | 一种rpa机器人流程自动化实现***和方法 |
CN113238850B (zh) | 2021-06-01 | 2024-01-23 | 平安科技(深圳)有限公司 | 基于浏览器的rpa实现方法、装置、设备及介质 |
-
2022
- 2022-03-31 US US17/657,532 patent/US20230311322A1/en active Pending
- 2022-03-31 US US17/657,536 patent/US11736556B1/en active Active
-
2023
- 2023-01-30 JP JP2023011567A patent/JP2023152695A/ja active Pending
- 2023-03-13 CN CN202310236975.3A patent/CN116893807A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11736556B1 (en) | 2023-08-22 |
US20230311322A1 (en) | 2023-10-05 |
CN116893807A (zh) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3809257B1 (en) | Naming robotic process automation activities according to automatically detected target labels | |
US20220269592A1 (en) | Mocking Robotic Process Automation (RPA) Activities For Workflow Testing | |
US11947443B2 (en) | Robotic process automation (RPA) debugging systems and methods | |
US11736556B1 (en) | Systems and methods for using a browser to carry out robotic process automation (RPA) | |
US11886895B2 (en) | Enhanced target selection for robotic process automation | |
US20230236910A1 (en) | Systems and Methods for Executing Robotic Process Automation (RPA) Within a Web Browser | |
US20210304142A1 (en) | End-user feedback reporting framework for collaborative software development environments | |
US11941419B2 (en) | Systems and methods for robotic process automation of mobile platforms | |
US20230143922A1 (en) | Systems and Methods for Dynamically Binding Robotic Process Automation (RPA) Robots to Resources | |
US11343305B2 (en) | Systems and methods of automating a file download activity | |
US8402433B2 (en) | Method and system for performing automated transactions using a server-side script-engine | |
EP4086755B1 (en) | Robotic process automation (rpa) comprising automatic document scrolling | |
US20240255920A1 (en) | Selective Invocation of RPA Workflows Via API Calls | |
US20240210903A1 (en) | Software Development (DevOps) Pipelines for Robotic Process Automation | |
US20170068523A1 (en) | Modular Computer Application Development and Usage |