(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-31
(45)【発行日】2022-02-08
(54)【発明の名称】自動検出されるターゲットラベルに基づくロボティックプロセスオートメーションアクティビティのネーミング(名付け)
(51)【国際特許分類】
G06F 8/34 20180101AFI20220201BHJP
G06F 3/04842 20220101ALI20220201BHJP
【FI】
G06F8/34
G06F3/0484 120
【外国語出願】
(21)【出願番号】P 2020140002
(22)【出願日】2020-08-21
【審査請求日】2020-10-09
(32)【優先日】2019-10-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】452 5th Avenue, 22nd Floor, New York,NY 10018,United States of America
(74)【代理人】
【識別番号】100180781
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】ボグダン リパ
【審査官】中村 信也
(56)【参考文献】
【文献】特表2018-535459(JP,A)
【文献】特開2019-169044(JP,A)
【文献】特開2018-206288(JP,A)
【文献】特開2018-205897(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/38
G06F 8/60-8/77
G06F 9/44-9/445
G06F 9/451
G06F 3/01
G06F 3/048
(57)【特許請求の範囲】
【請求項1】
ロボティックプロセスオートメーション(RPA)ソフトウェアを設計する方法であって、
該方法は、コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、
RPAアクティビティを示すユーザ入力の受け取りに応じて、ユーザが前記RPAアクティビティのパラメータを構成できるようにするアクティビティ構成ユーザインタフェース(UI)を公開することと、
それに応じて、ターゲットUI内に表示される複数のUI要素から前記RPAアクティビティのターゲット要素を選択するユーザ入力を受け取ることと、
前記ターゲット要素を選択するユーザ入力の受け取りに応じて、前記ターゲット要素のユーザ向けラベルを自動的に選択することと、
前記ユーザ向けラベルの選択に応じて、前記アクティビティ構成UI内に前記ユーザ向けラベルを表示させることと、
前記ターゲットUIのソースコード内で前記ターゲット要素を特徴付けるコードラベルを判断することと、
前記RPAアクティビティと前記ターゲット要素とに従って作成されるRPAスクリプトを出力することと、
を含み、
前記ユーザ向けラベルは、前記ターゲット要素に対する前記ユーザ向けラベルの画面上の相対位置に従って前記複数のUI要素から選択され、
前記RPAスクリプトは前記コードラベルを含み、
クライアントマシンで前記RPAスクリプトを実行することで、
前記クライアントマシンによって公開されるランタイムUI内で前記ターゲット要素のランタイムインスタンスを自動的に識別することと、
前記ターゲット要素の前記ランタイムインスタンスを使用して人間のオペレータの対話の結果を再現する動作を自動的に実行することと、
を、前記クライアントマシンに実行させ、
前記ターゲット要素のランタイムインスタンスは前記コードラベルに従って識別され、
前記動作は前記RPAアクティビティに従って判断されることを特徴とする方法。
【請求項2】
前記ユーザ向けラベルを表示させることは、
前記ユーザ向けラベルのテキストコンテンツを抽出することと、
前記アクティビティ構成UI内に前記テキストコンテンツを表示させることと、
を含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記アクティビティ構成UIはアクティビティ名フィールドを含み、
前記ユーザ向けラベルを表示させることは、
前記RPAアクティビティのアクティビティ種類と前記ユーザ向けラベルによって表示されるテキストとに従って、前記RPAアクティビティのアクティビティ名を判断することと、
前記アクティビティ名フィールド内に前記アクティビティ名を表示させることと、
を含むことを特徴とする、請求項1に記載の方法。
【請求項4】
前記アクティビティ名を判断することは、前記アクティビティ種類のインジケータと前記テキストとを連結することを含むことを特徴とする、請求項3に記載の方法。
【請求項5】
前記ユーザ向けラベルを表示させることは、前記アクティビティ構成UI内に前記ターゲットUIの画像のクリッピングを表示させることを含み、
前記クリッピングは前記ユーザ向けラベルを示すことを特徴とする、請求項1に記載の方法。
【請求項6】
前記方法は、前記ターゲット要素を選択するユーザ入力の受け取りに応じて、前記アクティビティ構成UI内で前記ターゲットUIの画像のクリッピングを表示させることをさらに含み、
前記クリッピングは前記ターゲット要素を示すことを特徴とする、請求項1に記載の方法。
【請求項7】
前記コードラベルは、前記ターゲット要素の属性と値のペアのセットを含み、
前記属性と値のペアのセットは前記ソースコードで指定されることを特徴とする、請求項1に記載の方法。
【請求項8】
自動化ターゲットアプリケーションとスクリプトオーサリングアプリケーションとを実行するように構成された少なくとも1つのハードウェアプロセッサを含むコンピュータシステムであって、
前記自動化ターゲットアプリケーションは、複数のユーザインタフェース(UI)要素を含むターゲットUIを公開するように構成され、
前記スクリプトオーサリングアプリケーションは、
ロボティックプロセスオートメーション(RPA)アクティビティを示すユーザ入力の受け取りに応じて、ユーザが前記RPAアクティビティのパラメータを構成できるようにするアクティビティ構成UIを公開することと、
それに応じて、ターゲットUI内に表示される複数のUI要素から前記RPAアクティビティのターゲット要素を選択するユーザ入力を受け取ることと、
前記ターゲット要素を選択するユーザ入力の受け取りに応じて、前記ターゲット要素のユーザ向けラベルを自動的に選択することと、
前記ユーザ向けラベルの選択に応じて、前記アクティビティ構成UI内に前記ユーザ向けラベルを表示させることと、
前記ターゲットUIのソースコード内で前記ターゲット要素を特徴付けるコードラベルを判断することと、
前記RPAアクティビティと前記ターゲット要素とに従って作成されるRPAスクリプトを出力することと、
を実行するように構成され、
前記ユーザ向けラベルは、前記ターゲット要素に対する前記ユーザ向けラベルの画面上の相対位置に従って前記複数のUI要素から選択され、
前記RPAスクリプトは前記コードラベルを含み、
クライアントマシンで前記RPAスクリプトを実行することで、
前記クライアントマシンによって公開されるランタイムUI内で前記ターゲット要素のランタイムインスタンスを自動的に識別することと、
前記ターゲット要素の前記ランタイムインスタンスを使用して人間のオペレータの対話の結果を再現する動作を自動的に実行することと、
を、前記クライアントマシンに実行させ、
前記ターゲット要素のランタイムインスタンスは前記コードラベルに従って識別され、
前記動作は前記RPAアクティビティに従って判断されることを特徴とするコンピュータシステム。
【請求項9】
前記ユーザ向けラベルを表示させることは、
前記ユーザ向けラベルのテキストコンテンツを抽出することと、
前記アクティビティ構成UI内に前記テキストコンテンツを表示させることと、
を含むことを特徴とする、請求項
8に記載のコンピュータシステム。
【請求項10】
前記アクティビティ構成UIはアクティビティ名フィールドを含み、
前記ユーザ向けラベルを表示させることは、
前記RPAアクティビティのアクティビティ種類と前記ユーザ向けラベルによって表示されるテキストとに従って、前記RPAアクティビティのアクティビティ名を判断することと、
前記アクティビティ名フィールド内に前記アクティビティ名を表示させることと、
を含むことを特徴とする、請求項
8に記載のコンピュータシステム。
【請求項11】
前記アクティビティ名を判断することは、前記アクティビティ種類のインジケータと前記テキストとを連結することを含むことを特徴とする、請求項
10に記載のコンピュータシステム。
【請求項12】
前記ユーザ向けラベルを表示させることは、前記アクティビティ構成UI内に前記ターゲットUIの画像のクリッピングを表示させることを含み、
前記クリッピングは前記ユーザ向けラベルを示すことを特徴とする、請求項
8に記載のコンピュータシステム。
【請求項13】
前記コンピュータシステムはさらに、前記ターゲット要素を選択するユーザ入力の受け取りに応じて、前記アクティビティ構成UI内で前記ターゲットUIの画像のクリッピングを表示させ、
前記クリッピングは前記ターゲット要素を示すことを特徴とする、請求項
8に記載のコンピュータシステム。
【請求項14】
前記コードラベルは、前記ターゲット要素の属性と値のペアのセットを含み、
前記属性と値のペアのセットは前記ソースコードで指定されることを特徴とする、請求項
8に記載のコンピュータシステム。
【請求項15】
命令を記憶する非一時的なコンピュータ読み取り可能な媒体であって、
該命令は、複数のユーザインタフェース(UI)要素を含むターゲットUIを公開するように構成されたコンピュータシステムの少なくとも1つのハードウェアプロセッサによって実行されるときに、
ロボティックプロセスオートメーション(RPA)アクティビティを示すユーザ入力の受け取りに応じて、ユーザが前記RPAアクティビティのパラメータを構成できるようにするアクティビティ構成ユーザインタフェース(UI)を公開することと、
それに応じて、ターゲットUI内に表示される複数のUI要素から前記RPAアクティビティのターゲット要素を選択するユーザ入力を受け取ることと、
前記ターゲット要素を選択するユーザ入力の受け取りに応じて、前記ターゲット要素のユーザ向けラベルを自動的に選択することと、
前記ユーザ向けラベルの選択に応じて、前記アクティビティ構成UI内に前記ユーザ向けラベルを表示させることと、
前記ターゲットUIのソースコード内で前記ターゲット要素を特徴付けるコードラベルを判断することと、
前記RPAアクティビティと前記ターゲット要素とに従って作成されるRPAスクリプトを出力することと、
を前記コンピュータシステムに実行させ、
前記ユーザ向けラベルは、前記ターゲット要素に対する前記ユーザ向けラベルの画面上の相対位置に従って前記複数のUI要素から選択され、
前記RPAスクリプトは前記コードラベルを含み、
クライアントマシンで前記RPAスクリプトを実行することで、
前記クライアントマシンによって公開されるランタイムUI内で前記ターゲット要素のランタイムインスタンスを自動的に識別することと、
前記ターゲット要素の前記ランタイムインスタンスを使用して人間のオペレータの対話の結果を再現する動作を自動的に実行することと、
を、前記クライアントマシンに実行させ、
前記ターゲット要素のランタイムインスタンスは前記コードラベルに従って識別され、
前記動作は前記RPAアクティビティに従って判断されることを特徴とする非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボティックプロセスオートメーション(RPA)に関し、より詳細には、例えばマウスクリック、テキスト入力などのアクティビティのターゲット(対象)となるユーザインタフェース要素を自動的に識別するためのシステムと方法に関する。
【背景技術】
【0002】
RPAは、反復的なコンピューティングタスクを自動化することで生産性を向上させることを目的とする情報技術の新興分野であり、これにより、人間のオペレータがより知的に洗練され且つ/又は創造的なアクティビティを実行できるようにする。自動化のターゲットとなる注目すべきタスクには、ドキュメントからの構造化データの抽出、例えばフォームに入力するためなどのユーザインタフェースとの対話などがある。
【0003】
RPA開発の明確な支流は、ソフトウェアロボットのプログラミング及び管理を簡単にすることに向けられており、高度なプログラミングスキル又は訓練が不足しているユーザにRPA技術の範囲を拡大することを最終的な目標としている。RPAをよりアクセスし易いものとする1つの方法は、RPA指向の統合開発環境(IDE)の開発であり、これにより、コーディング自体ではなく、グラフィカルユーザインタフェース(GUI)ツールを介してロボットをプログラミングすることが可能になる。このようなGUIツールをできるだけ直感的でユーザフレンドリーなものにして、幅広い開発者を魅了することに強い関心がある。
【発明の概要】
【0004】
一態様によれば、ロボティックプロセスオートメーション(RPA)ソフトウェアを設計する方法は、コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、RPAアクティビティを示すユーザ入力の受け取りに応じて、ユーザがRPAアクティビティのパラメータを構成できるようにするアクティビティ構成ユーザインタフェース(UI)を公開することを含む。該方法は、それに応じて、少なくとも1つのハードウェアプロセッサを使用して、ターゲットUI内に表示される複数のUI要素からRPAアクティビティのターゲット要素を選択するユーザ入力を受け取ることを、さらに含む。該方法は、ターゲット要素を選択するユーザ入力の受け取りに応じて、少なくとも1つのハードウェアプロセッサを使用して、ターゲット要素のユーザ向けラベルを自動的に選択することと、ユーザ向けラベルの選択に応じて、アクティビティ構成UI内にユーザ向けラベルを表示させることと、をさらに含む。ユーザ向けラベルは、ターゲット要素に対するユーザ向けラベルの画面上の相対位置に従って複数のUI要素から選択される。該方法は、ターゲットUIのソースコード内でターゲット要素を特徴付けるコードラベルを判断することと、RPAアクティビティとターゲット要素とに従って作成されるRPAスクリプトを出力することと、をさらに含む。RPAスクリプトはコードラベルを含む。クライアントマシンでRPAスクリプトを実行することで、クライアントマシンによって公開されるランタイムUI内でターゲット要素のランタイムインスタンスを自動的に識別することと、ターゲット要素のランタイムインスタンスを使用して人間のオペレータの対話の結果を再現する動作を自動的に実行することと、をクライアントマシンに実行させる。ターゲット要素のランタイムインスタンスはコードラベルに従って識別される。上記動作はRPAアクティビティに従って判断される。
【0005】
別の一態様によれば、コンピュータシステムは、自動化ターゲットアプリケーションとスクリプトオーサリングアプリケーションとを実行するように構成された少なくとも1つのハードウェアプロセッサを含む。自動化ターゲットアプリケーションは、複数のユーザインタフェース(UI)要素を含むターゲットUIを公開するように構成されている。スクリプトオーサリングアプリケーションは、ロボティックプロセスオートメーション(RPA)アクティビティを示すユーザ入力の受け取りに応じて、ユーザがRPAアクティビティのパラメータを構成できるようにするアクティビティ構成UIを公開するように構成されている。スクリプトオーサリングアプリケーションはさらに、それに応じて、ターゲットUI内に表示される複数のUI要素からRPAアクティビティのターゲット要素を選択するユーザ入力を受け取るように構成されている。スクリプトオーサリングアプリケーションはさらに、ターゲット要素を選択するユーザ入力の受け取りに応じて、ターゲット要素のユーザ向けラベルを自動的に選択し、ユーザ向けラベルの選択に応じて、アクティビティ構成UI内にユーザ向けラベルを表示させるように構成されている。ユーザ向けラベルは、ターゲット要素に対するユーザ向けラベルの画面上の相対位置に従って複数のUI要素から選択される。スクリプトオーサリングアプリケーションはさらに、ターゲットUIのソースコード内でターゲット要素を特徴付けるコードラベルを判断し、RPAアクティビティとターゲット要素とに従って作成されるRPAスクリプトを出力するように構成されている。RPAスクリプトはコードラベルを含む。クライアントマシンでRPAスクリプトを実行することで、クライアントマシンによって公開されるランタイムUI内でターゲット要素のランタイムインスタンスを自動的に識別することと、ターゲット要素のランタイムインスタンスを使用して人間のオペレータの対話の結果を再現する動作を自動的に実行することと、をクライアントマシンに実行させる。ターゲット要素のランタイムインスタンスはコードラベルに従って識別される。上記動作はRPAアクティビティに従って判断される。
【0006】
別の一態様によれば、非一時的なコンピュータ読み取り可能な媒体は命令を記憶し、該命令は、複数のユーザインタフェース(UI)要素を含むターゲットUIを公開するように構成されたコンピュータシステムの少なくとも1つのハードウェアプロセッサによって実行されるときに、ロボティックプロセスオートメーション(RPA)アクティビティを示すユーザ入力の受け取りに応じて、ユーザがRPAアクティビティのパラメータを構成できるようにするアクティビティ構成ユーザインタフェース(UI)を公開することを、コンピュータシステムに実行させる。該命令はさらに、それに応じて、ターゲットUI内に表示される複数のUI要素からRPAアクティビティのターゲット要素を選択するユーザ入力を受け取ることを、コンピュータシステムに実行させる。該命令はさらに、ターゲット要素を選択するユーザ入力の受け取りに応じて、ターゲット要素のユーザ向けラベルを自動的に選択することと、ユーザ向けラベルの選択に応じて、アクティビティ構成UI内にユーザ向けラベルを表示させることと、をコンピュータシステムに実行させる。ユーザ向けラベルは、ターゲット要素に対するユーザ向けラベルの画面上の相対位置に従って複数のUI要素から選択される。該命令はさらに、ターゲットUIのソースコード内でターゲット要素を特徴付けるコードラベルを判断することと、RPAアクティビティとターゲット要素とに従って作成されるRPAスクリプトを出力することと、をコンピュータシステムに実行させる。RPAスクリプトはコードラベルを含む。クライアントマシンでRPAスクリプトを実行することで、クライアントマシンによって公開されるランタイムUI内でターゲット要素のランタイムインスタンスを自動的に識別することと、ターゲット要素のランタイムインスタンスを使用して人間のオペレータの対話の結果を再現する動作を自動的に実行することと、をクライアントマシンに実行させる。ターゲット要素のランタイムインスタンスはコードラベルに従って識別される。上記動作はRPAアクティビティに従って判断される。
【図面の簡単な説明】
【0007】
本発明の上記の態様及び利点は、以下の詳細な説明を読み図面を参照すると、よりよく理解されるであろう。
【0008】
【
図1】本発明の幾つかの実施形態による例示的なロボティックプロセスオートメーション(RPA)システムを示す。
【0009】
【
図2】本発明の幾つかの実施形態による、RPAクライアントで実行される例示的なソフトウェアを示す。
【0010】
【
図3】本発明の幾つかの実施形態による、複数のユーザインタフェース(UI)要素を含む例示的なUIを示す。
【0011】
【
図4】本発明の幾つかの実施形態による、スクリプトオーサリングアプリケーションによって実行される例示的な一連のステップを示す。
【0012】
【
図5】本発明の幾つかの実施形態による例示的なロボット設計UIを示す。
【0013】
【
図6】本発明の幾つかの実施形態による例示的なアクティビティ構成UIを示す。
【0014】
【
図7】本発明の幾つかの実施形態による、例示的なユーザインタフェース、ターゲット要素、及び複数の候補ラベル要素を示す。
【0015】
【
図8】本発明の幾つかの実施形態による、ターゲット要素に関連付けられるユーザ向けラベルを自動的に判断するために実行される例示的な一連のステップを示す。
【0016】
【
図9】本発明の幾つかの実施形態による例示的な要素間距離のセットを示す。
【0017】
【
図10】本発明の幾つかの実施形態による例示的な要素間距離の別のセットを示す。
【0018】
【
図11】本発明の幾つかの実施形態による、2つのUI要素間の例示的な重複の程度を示す。
【0019】
【
図12】本発明の幾つかの実施形態による、例示的なユーザインタフェース、ターゲット要素、及び複数の候補ラベル位置を示す。
【0020】
【
図13】本発明の幾つかの実施形態による、ユーザ向けラベルを自動的に識別するためにスクリプトオーサリングアプリケーションによって実行される代替的な一連のステップを示す。
【0021】
【
図14】本発明の幾つかの実施形態による、UI要素を特徴付ける様々な種類のデータを示す。
【0022】
【
図15】本発明の幾つかの実施形態による、データ入力アクティビティの詳細を示す例示的なアクティビティ構成UIを示す。
【0023】
【
図16】本発明の幾つかの実施形態による、データスクレイピングアクティビティの詳細を示す別の例のアクティビティ構成UIを示す。
【0024】
【
図17】本発明の幾つかの実施形態による、マウスクリックアクティビティの詳細を示すさらに別の例のアクティビティ構成UIを示す。
【0025】
【
図18】本発明の幾つかの実施形態による、実行時にソフトウェアロボットによって実行される例示的な一連のステップを示す。
【0026】
【
図19】本明細書に記載の方法を実行するように構成されたコンピューティングデバイスの例示的な一実施形態を示す。
【発明を実施するための形態】
【0027】
以下の説明では、構造間の記載された全ての接続は、直接的な動作接続又は中間構造を介した間接的な動作接続であってもよいことが理解される。要素のセットは、一又は複数の要素を含む。要素の任意の記載は、少なくとも1つの要素を指すと理解される。複数の要素は少なくとも2つの要素を含む。「又は(若しくは/或いは)」の任意の使用は、排他的でない又は(若しくは/或いは)(排他的でない論理和)を意味する。特に必要がない限り、任意の記載されている方法のステップは、必ずしも特定の示された順序で実行される必要はない。第2の要素から派生した第1の要素(例えば、データなど)には、第2の要素に等しい第1の要素と、第2の要素及び任意に他のデータを処理することによって生成された第1の要素とが含まれる。パラメータに従って判断又は決定を行うことには、パラメータに従って、且つ任意に他のデータに従って、判断又は決定を行うことが含まれる。特に明記しない限り、ある量/データのインジケータ(指標)は、量/データ自体又は量/データ自体とは異なるインジケータであってもよい。コンピュータプログラムは、タスクを実行する一連のプロセッサ命令である。本発明の幾つかの実施形態で説明されるコンピュータプログラムは、他のコンピュータプログラムのスタンドアロンのソフトウェアエンティティ又はサブエンティティ(例えば、サブルーチン、ライブラリなど)であってもよい。「データベース」という用語は、本明細書では、組織化された検索可能なデータのコレクションを示すために使用される。コンピュータ読み取り可能な媒体には、例えば磁気、光学、半導体記憶媒体(例えば、ハードドライブ、光ディスク、フラッシュメモリ、DRAMなど)などの非一時的な媒体、及び、例えば導電ケーブル、光ファイバリンクなどの通信リンクが含まれる。幾つかの実施形態によれば、本発明は、とりわけ、本明細書に記載の方法を実行するようにプログラムされたハードウェア(例えば、一又は複数のプロセッサなど)、本明細書に記載の方法を実行するコンピュータ読み取り可能媒体符号化(エンコード)命令を含むコンピュータシステムを提供する。
【0028】
以下の説明は、例として、必ずしも限定的なものとしてではなく、本発明の実施形態を例示する。
【0029】
図1は、本発明の幾つかの実施形態による例示的なロボティックプロセスオートメーションシステムを示す。複数のRPAクライアント10a~eはそれぞれ、少なくともハードウェアプロセッサ、メモリユニット、各RPAクライアントがコンピュータネットワーク及び/又は他のコンピューティングデバイスに接続できるようにするネットワークアダプタを備えるコンピューティングデバイスを表す。例示的なRPAクライアント10a~eは、パーソナルコンピュータ、ラップトップ及びタブレットコンピュータ、およびモバイル通信デバイス(例えば、スマートフォンなど)を含む。例示的なユースケースシナリオにおいて、RPAクライアント10a~dは、会社の経理部又は人事部に属するデスクトップコンピュータを表す。図示されたRPAクライアント10a~dは、ローカルエリアネットワーク(LAN)を含んでもよいローカル通信ネットワーク12によって相互接続される。クライアント10a~dはさらに、広域ネットワーク(WAN)及び/又はインターネットを含んでもよい拡張ネットワーク14にアクセスしてもよい。
図1の例示的な構成では、RPAクライアント10eは、拡張ネットワーク14に直接接続される。そのようなクライアントは、様々なアクセスポイントでネットワーク14に接続する、例えばラップトップ、タブレットコンピュータ、携帯電話などのモバイルコンピュータを表してもよい。
【0030】
典型的なRPAシナリオにおいて、会社の従業員は、ビジネスアプリケーション(例えば、ワードプロセッサ、スプレッドシートエディタ、ブラウザ、電子メールアプリケーションなど)を使用して、例えば様々なビジネスクライアントに請求書を発行するために、反復タスクを実行する。各タスクを実際に実行するために、従業員は、本明細書においてビジネスプロセスとみなされる一連の動作/アクションを実行する。請求書発行ビジネスプロセスの一部を形成する例示的な動作は、MicrosoftExcel(登録商標)スプレッドシートを開くこと、クライアントの会社の詳細を検索すること、各詳細を請求書テンプレートにコピーすること、購入されたアイテムを示す請求書フィールドに入力すること、電子メールアプリケーションに切り替えること、各クライアントへの電子メールメッセージを作成すること、新しく作成された請求書を各電子メールメッセージに添付すること、「送信」ボタンをクリックすることなどを含む。従業員のコンピュータで実行されるRPAソフトウェアは、各タスクを実行する過程で各人間のオペレータによって実行される一連の動作を模倣することによって、各ビジネスプロセスを自動化してもよい。そのような自動化の典型的なターゲットとなる例示的なプロセスは、支払いの処理、請求、ビジネスクライアントとの通信(例えば、ニュースレター及び/又は製品提供の配信など)、内部通信(例えば、メモ、会議及び/又はタスクのスケジューリングなど)、給与処理などを含む。
【0031】
本明細書において、人間の動作/アクションを模倣することには、人間のオペレータがコンピュータで各動作/アクションを実行するときに発生する一連のコンピューティングイベントを再現することと、人間のオペレータがコンピュータで各動作を実行した結果を再現することとが含まれると理解される。例えば、グラフィカルユーザインタフェースのボタンをクリックする動作を模倣することは、オペレーティングシステムにマウスポインタを各ボタンへ移動させてマウスクリックイベントを生成させることを含んでもよいし、或いは、各GUIボタン自体をクリック状態に切り替えることを含んでもよい。
【0032】
図2は、本発明の幾つかの実施形態による、RPAクライアント10で実行される例示的なソフトウェアを示す。RPAクライアント10は、
図1のRPAクライアント10a~eのいずれかを表してもよい。RPAクライアント10は、オペレーティングシステム(OS)40とビジネスアプリケーション42のセットとを実行する。OS40は、例えばMicrosoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、Android(登録商標)などの、任意の広く利用可能なオペレーティングシステムを含んでもよく、アプリケーション42とRPAクライアント10のハードウェアとの間のインタフェースとなるソフトウェア層を含んでもよい。ビジネスアプリケーション42は、一般に、タスクを実行するRPAクライアント10の人間のオペレータによって使用される任意のコンピュータプログラムを表す。例示的なビジネスアプリケーション42は、とりわけ、ワードプロセッサ、スプレッドシートアプリケーション、グラフィックスアプリケーション、ブラウザ、ソーシャルメディアアプリケーション、電子通信アプリケーションを含む。少なくとも1つのビジネスアプリケーション42は、以下に詳述するように、自動化のターゲットとなるユーザインタフェース(UI)を公開(表示)するように構成される。
【0033】
幾つかの実施形態において、RPAクライアント10は、ビジネスプロセスの自動化を集合的に実装する相互接続されたコンピュータプログラムのセットを含むRPAロボット44をさらに実行する。例示的なRPAロボットは、Microsoft(登録商標)社のWindows Workflow Foundationアプリケーションプログラミングインタフェースを使用して構築される。幾つかの実施形態において、RPAロボット44は、RPAクライアント10でインスタンス化された別個の専用仮想マシン内で実行される。
【0034】
RPAロボット44のコンポーネントは、RPAエージェント43とロボットエグゼキュータ45のセットとを含む。ロボットエグゼキュータ45は、ビジネスプロセスを実行し、実際に各クライアントマシンで各一連の動作を実行する人間のオペレータのアクションを模倣する一連の動作(当該技術分野においてアクティビティとしても知られる)を示すRPAスクリプト50を受け取るように構成される。RPAスクリプト50は、通常、プロセス固有であり、即ち、各別個のビジネスプロセスはRPAスクリプトの別個のセットによって記述される。RPAスクリプト50は、当該技術分野で知られている任意のデータ仕様に従って作成されてもよい。好ましい実施形態において、RPAスクリプト50は、拡張可能マークアップ言語(XML)のあるバージョンで符号化されるが、スクリプト50は、例えばC#、Visual Basic、Javaなどのプログラミング言語で作成されてもよい。或いは、RPAスクリプト50は、バイトコードのRPA固有のバージョンで、又は、例えば英語、スペイン語、日本語などの自然言語で作成された一連の命令として、指定されてもよい。幾つかの実施形態において、スクリプト50は、ネイティブのプロセッサ命令(例えば、機械語など)のセットにプリコンパイルされる。
【0035】
幾つかの実施形態において、ロボットエグゼキュータ45は、RPAスクリプト50を、各スクリプトに記載された動作を実行するためのプロセッサ命令を含むランタイムパッケージに変換するように構成されたインタプリタ(例えば、ジャストインタイムインタプリタ又はコンパイラなど)を備える。したがって、実行スクリプト50は、RPAスクリプト50を変換し、RPAクライアント10のプロセッサに対して結果として得られるランタイムパッケージをメモリにロードしランタイムパッケージを起動して実行するように指示するエグゼキュータ45を含んでもよい。
【0036】
RPAエージェント43は、ロボットエグゼキュータ45の動作を管理してもよい。例えば、RPAエージェント43は、人間のオペレータからの入力に従って、且つ/又は、スケジュールに従って、ロボットエグゼキュータ45によって実行されるタスク/スクリプトを選択してもよい。エージェント43はさらに、エグゼキュータ45の様々な動作パラメータを構成してもよい。ロボット44が複数のエグゼキュータ45を備えるとき、エージェント43は、それらのアクティビティ及び/又はプロセス間通信を調整してもよい。RPAエージェント43はさらに、RPAロボット44と
図1に示すRPAシステムの他のコンポーネントとの間の通信を管理してもよい。そのようなコンポーネントは、他のRPAクライアント及び/又はロボット管理サーバ11a~bのセットで実行されてもよい。そのような一例において、サーバ11a~bは、複数のクライアントマシンにわたるRPAアクティビティを調整し、複雑なスケジューリング及び/又はライセンス管理を可能にするロボットオーケストレータサービスを動作させてもよい。サーバ11a~bはさらに、RPAスクリプトの実行の様々な中間値及び/又は結果を示す個々のRPAロボットからデータを受け取ってもよい。そのようなデータは、アクティビティレポートの生成、ライセンス契約の実施、及び/又は誤動作の軽減に使用されてもよい。
【0037】
幾つかの実施形態において、RPAクライアント10はさらに、RPAクライアント10の人間のオペレータがRPAスクリプト50を作成してアクティビティのセットを実行するロボットを効果的に設計することを可能にするように構成されたスクリプトオーサリングアプリケーション46を実行する。オーサリングアプリケーション46は、統合開発環境(IDE)のように機能してもよく、オペレータがビジネスプロセスをモデル化するためのツールのセットと対話することを可能にするコードエディタ及び/又はユーザインタフェースを含んでもよい。例示的なオーサリングアプリケーションは、ユーザがビジネスアプリケーション42を選択し、各アプリケーションと対話する所望の方法を示すこと、例えば、ロボット44によって実行される一連の動作を示すことを可能にしてもよい。例示的な動作は、例えば、特定のExcel(登録商標)スプレッドシート開くこと、データテーブルの特定の行/列からデータを読み取ること、特定の方法で各データを処理すること、特定のボタンをクリックすること、電子メールメッセージの作成し送信すること、特定の統合レコードの場所(URL)にナビゲートすることなどを含む。幾つかの実施形態において、オーサリングアプリケーション46は、RPAロボット44によって読み取り可能なフォーマット(例えば、XMLなど)でRPAスクリプト50を出力する。RPAスクリプト50は、ネットワーク12及び/又は14を介してRPAクライアント10a~eに通信可能に接続されアクセス可能なスクリプトリポジトリ15に記憶されてもよい(
図1を参照)。好ましい実施形態において、スクリプトリポジトリ15は、ロボット管理サーバ11a~bに直接リンクされる。スクリプトリポジトリ15は、データベース、例えば基準のセットに従ってスクリプト50の選択的検索を可能にする任意の構造化データコレクションなどとして構成されてもよい。
【0038】
当業者は、
図2に示す全てのコンポーネントが同じ物理プロセッサ又はマシンで実行される必要があるわけではないことを理解するであろう。典型的なRPA構成において、スクリプト開発/ロボット設計は1つのマシン(当該技術分野において一般に「設計側」として知られる)で実行される。次に、結果として得られるRPAスクリプト50は、実行のために他の複数のユーザ及びマシン(通常、「ランタイム側」又は単に「ランタイム」として知られる)に渡される。
【0039】
図3は、本発明の幾つかの実施形態による例示的なユーザインタフェース(UI)58を示す。UI58は、任意のビジネスアプリケーション42によって公開されてもよい。ユーザインタフェースは、人間とマシンの対話を可能にするコンピュータインタフェースであり、例えばユーザ入力を受け取り各入力に応答するように構成されたインタフェースなどである。ユーザインタフェースの一般的な例は、グラフィカルユーザインタフェース(GUI)として知られ、これにより、ユーザに対して表示される視覚要素のセットを介して人間とマシンの対話が可能になる。例示的なUI58は、例示的なウィンドウ60a~bのセットと、メニューインジケータ62a、アイコン62b、ボタン62c、テキストボックス62dを含む例示的なUI要素のセットとを有する。他の例示的なUI要素は、とりわけ、ウィンドウ、ラベル、フォーム、個々のフォームフィールド、トグル、リンク(例えば、ハイパーリンク、ハイパーテキスト、統一資源識別子など)を含む。UI要素は、情報を表示し、入力(テキスト、マウスイベント)を受け取り、且つ/又はソフトウェア及び/又は各コンピュータシステムの機能を制御してもよい。
【0040】
一部のUI要素は、それに作用すること(例えば、ボタン62cのクリックなど)が振る舞い/反応をトリガするという意味でインタラクティブである。そのような振る舞い/反応は一般的に、各要素又は要素のグループに固有である。例えば、保存ボタンをクリックすると、印刷ボタンをクリックするのとは異なる効果が得られる。同じキーボードショートカット(例えば、Ctrl-Gなど)が、あるウィンドウ/アプリケーションで実行するとある効果を発揮し、別のウィンドウ/アプリケーションで実行すると全く異なる効果を発揮してもよい。したがって、動作/アクションは同じであるが(クリックの実行、キーボードキーの組み合わせの押下、一連の文字の書き込みなど)、各アクションの結果は、各動作のオペランドに実質的に依存してもよい。オペランドは、本明細書において、例えばクリック、キーボードイベントなどの現在の動作/アクションによって作用されるUI要素、又は別の言い方では、各ユーザ入力を受け取るために選択されるUI要素として定義される。「ターゲット」と「オペランド」という用語は、本明細書において互換的に使用される。
【0041】
図4は、本発明の幾つかの実施形態による、スクリプトオーサリングアプリケーション46によって実行される例示的な一連のステップを示す。ステップ102において、アプリケーション46は、ユーザがロボット44によって実行される所望のアクティビティを示すことを可能にするロボット設計インタフェース(例えば、GUIなど)を公開してもよい。
図5は、本発明の幾つかの実施形態による例示的なロボット設計GUI70を示す。GUI70は、様々な領域、例えばメニュー領域71とプロセス設計領域72を含む。メニュー領域71は、ユーザが、とりわけ、個々のRPAアクティビティを選択して自動化のためのターゲットビジネスアプリケーションを示すことを可能にする。幾つかの実施形態において、アクティビティは、メニューの階層を介して到達されてもよい。アクティビティは、様々な基準に従って、例えば、ビジネスアプリケーションの種類(例えば、MS Excel(登録商標)アクティビティ、ウェブアクティビティ、電子メールアクティビティなど)に従って、且つ/又は、対話の種類(例えば、マウスアクティビティ、ホットキーアクティビティ、データ取得アクティビティ、フォーム入力アクティビティなど)に従って、グループ化されてもよい。
【0042】
プロセス設計領域72は、RPAアクティビティのシーケンスの図を表示し、該シーケンスは、現在自動化されているビジネスプロセスの流れを模倣している。ユーザは、シーケンスのアクティビティを追加、削除、再配置してもよい。各アクティビティは、アクティビティ固有のアクティビティ構成UI(
図5に項目74a~bとして示す)を使用して、個別に構成されてもよい。幾つかの実施形態において、ユーザインタフェース74a~bは、GUI70の子ウィンドウを含んでもよい。ユーザがアクティビティの種類を選択すると(
図4のステップ104)、ステップ106において、幾つかの実施形態では、各アクティビティの種類(例えば、マウスクリック、データスクレイピングなど)に従って構造化されたアクティビティ構成UIが公開され、アクティビティシーケンスの他のメンバのコンテキストで各構成UIが表示される。
【0043】
図6は、本発明の幾つかの実施形態による、アクティビティ構成インタフェース74cの例示的な外観(表示)を示す。例示的なインタフェース74cは、「Type Into(入力)」アクティビティ(即ち、ターゲットUIの入力フィールドへの入力)を構成し、フィールドのセット、例えば、アクティビティ名フィールド82とアクティビティパラメータフィールドのセット84a~bとを示す。アクティビティ名フィールド82は、現在のアクティビティのアクティビティ種類のインジケータと現在のアクティビティのオペランド/ターゲットの識別子とを受け付けるように構成される。パラメータフィールド84a~bは、ユーザが現在のアクティビティの様々なパラメータを設定できるように構成される。
図6の例では、パラメータはターゲット入力フィールドに書き込まれているものである。フィールド84bは、ユーザによって入力されたテキストの形で、又は、各入力テキストのソースのインジケータの形で、ユーザ入力を受け付けてもよい。例示的なソースには、スプレッドシートの特定のセル/列/行、指定されたURLにあるドキュメント、ターゲットUIの別のUI要素などが含まれる。
【0044】
現在のRPAアクティビティの別の例示的なパラメータは、各アクティビティのオペランド/ターゲットUI要素である。アクティビティがマウスクリックを含む一例において、ターゲットUI要素は、ボタン、メニュー項目、ハイパーリンクなどであってもよい。アクティビティがフォームへの入力を含む別の例において、ターゲットUI要素は、各テキスト入力を受け付ける必要がある特定のフォームフィールドであってもよい。アプリケーション46は、ユーザが様々な方法でターゲットUI要素を示すことを可能にしてもよい。例えば、候補UI要素のメニュー/リストからターゲット要素を選択するようにユーザを案内してもよい。好ましい実施形態において、ステップ107では、ターゲットUI、即ち、現在の自動化の対象を構成するビジネスアプリケーション42のユーザインタフェースの設計側インスタンスを公開する。例示的なターゲットUIは、Microsoft Excel(登録商標)、ブラウザ、電子メールプログラムなどのインタフェースを含む。ターゲットUIを公開することは、各UI内のUI要素のサブセットを強調表示し、選択を示すために1つをクリックするようにユーザを案内することを含んでもよい。ステップ108において、アプリケーション46は、例えば、特定のOS関数を呼び出してマウスクリックを検出し、クリックされたUI要素を識別することによって、選択されたターゲット要素を示すユーザ入力を受け付けて処理してもよい。
【0045】
次に、ステップ110において、幾つかの実施形態では、ターゲット要素のユーザ向けラベルを自動的に判断してもよい。ラベル要素(又は単に「ラベル」)は、本明細書において、関連付けられるターゲットUI要素と共に表示されるUI要素として定義される。修飾子「ユーザ向け」は、本明細書において、各UIのソースコードの一部であり一般的にはユーザに不可視であるコードラベル(コードラベルについては以下で詳述する)とは対照的に、ターゲットUI内に表示されるUI要素であるためにラベル要素がユーザに可視であることを示すために使用される。ターゲット要素とラベル要素は一般的に、セマンティック接続(意味的接続)を有し、例えば、両方とも同じUI要素のグループ/コンテナに属し、且つ/又は、一緒に機能を実行する。入力フィールドに関連付けられる例示的なラベル要素には、とりわけ、各入力フィールドの隣に表示されるテキストラベルと、各入力フィールドを含むフォームのタイトルとが含まれる。ボタンに関連付けられる例示的なラベル要素には、各ボタンの上に表示されるテキストが含まれる。ラベルは必ずしもテキストである必要はなく、画像(例えば、アイコン、記号など)を含んでもよい。
図7は、本発明の幾つかの実施形態による、選択されたターゲット要素64と複数の潜在的なラベル要素66a~eとを有する例示的なターゲットUI58を示す。
【0046】
ターゲット要素のユーザ向けラベルを判断すること(
図4のステップ110)は、候補UI要素のセットから、例えば
図7の候補ラベル66a~eの中から、ラベルを選択することを含む。
図8は、本発明の幾つかの実施形態による、ラベルを自動的に判断する例示的な方法を示す。ステップ202において、アプリケーション46は、ターゲットUI58によって表示されるUI要素のセットから選択された候補ラベルのセット(例えば項目66a~eを参照)を生成してもよい。候補ラベル要素は、各ターゲット要素(例えば、ボタン、テキスト、入力フィールドなど)の要素種類に従って選択されてもよい。幾つかの実施形態において、候補ラベルは、それらが各ターゲットと同じ要素グループに属するか否かに従って選択されてもよい。例えば、ターゲット要素がフォームフィールドである場合、幾つかの実施形態では、同じフォームフィールドに属するUI要素の中からのみラベル候補を選択するであろう。HTMLドキュメントの場合、幾つかの実施形態では、ターゲット要素と同じ<div>又は<span>コンテナからラベル候補を選択してもよい。
【0047】
次に、ステップ204において、アプリケーション46は、基準のセットに従って各候補ラベルを評価してもよい。幾つかの実施形態において、ステップ204は、ラベル適合性スコアを判断することを含み、別個の基準に従って評価された複数のサブスコアを組み合わせてもよい。例示的な基準は、ターゲット要素に対する候補ラベルの相対位置である。相対位置は、距離のセット、角度、及び/又は各ターゲット要素と候補ラベル要素との間の重なり度合いに従って判断されてもよい。
【0048】
図9は、本発明の幾つかの実施形態による、ターゲット要素64(この例では、入力フィールド)を候補ラベル66から分離する例示的な距離のセットを示す。距離d
1及びd
2は、画面の主座標(例えば、水平及び垂直など)に沿って、各要素の中心/重心間で測定される。光学式文字認識ソフトウェア(OCR)を使用して検出されたテキスト要素の場合、該距離は、各テキスト要素の周囲を囲む境界ボックスの中心又は重心まで測定されてもよい。例えばマンハッタン距離、ユークリッド距離などの他の例示的な要素間距離が、d
1及びd
2に従って評価されてもよい。幾つかの実施形態は、信頼できるラベルが一般的にそのターゲット要素の近くに位置するという観察に依存するので、ターゲット要素に比較的近い候補ラベルには、より遠い別の候補ラベルと比較して比較的高い適合性スコアが与えられてもよい。そのような実施形態において、例示的なラベル適合性スコアは、1/D又は(1-D/D
max)に従って判断されてもよく、この場合、Dは、d
1及び/又はd
2に従って判断される要素間距離を示し、D
maxは、所定の閾値を示し、該閾値を超えると、2つのUI要素は意味的に関連していないとみなされる。
【0049】
別の例示的な適合性スコアは、候補ラベルとターゲット要素の間のアライメント(整列)の程度に従って判断されてもよい。アライメントは、例えば
図10に示すように、距離の別のセットに従って判断されてもよい。例示的な距離d
3は、ラベル候補66の左端をターゲット要素64の左端から分離する。一方、距離d
4は、ラベル候補66の上端をターゲット要素64の上端から分離する。幾つかの実施形態は、それらのターゲットを確実に識別するラベルが一般的に各ターゲットと整列している(揃えられている)という観察に依存している。したがって、幾つかの実施形態において、比較的小さいd
3又はd
4の距離は、各候補ラベルの比較的高いラベル適合性スコアに対応してもよい。
図10は、左部及び/又は上部のアライメントをテストするために使用されてもよい距離のみを示す。当業者は、図示された距離の測定が、右部及び/又は下部のアライメントをテストするために修正されてもよいことを理解するであろう。例示的な適合性スコアは、次のように計算されてもよい。
【数1】
ここで、Aは、d
3及び/又はd
4に従って判断されるアライメント距離であり、A
maxは、所定の閾値であり、この閾値を超えると、2つのUI要素は整列されていないとみなされる。
【0050】
さらに別の例示的な適合性スコアは、ラベル候補とターゲット要素の間の重なり度合いに従って判断されてもよい。
図11は、本発明の幾つかの実施形態による例示的な重なり度合い67を示し、重なり度合い67は、一方の要素が他方の要素と交わる比率、又は別の言い方では、一方の要素のどれだけが他方と重なるかとして判断される。そのような実施形態において、2つの要素が交わらない場合、2つの要素は重なりゼロとなるが、一方の要素が他方の要素を完全に含む場合、2つの要素は100%の重なりを有する。幾つかの実施形態は、特定の種類のターゲット要素(例えば、ボタンなど)のラベルを確実に識別するために、重なり度合いに従って判断してスコア付けする。ターゲット要素64の種類がボタンであるそのような1つの例では、アプリケーション46は、ターゲットとの実質的な重なり度合い(例えば、90%を超える)を有さない全てのラベル候補を除外してもよい。
【0051】
他の例示的なラベル適合性基準は、各UI要素の画像及び/又はテキストコンテンツを含んでもよい。幾つかの実施形態ではテキストラベルが好ましいので、テキストを含まないUI要素には、テキストの断片を表示する他のUI要素よりも比較的低いラベル適合性スコアが与えられてもよい。別の例示的な基準は、候補UI要素によって表示されるテキストの長さであってもよい。幾つかの実施形態において、比較的小さいテキスト要素には、かなりの量のテキストを有するテキスト要素と比較して、比較的高い適合性スコアが与えられてもよい。
【0052】
さらに別の例示的な基準は、類似の外観を有するラベル候補の数、例えば同一のテキストを有するラベルの数などを含んでもよい。ある例示的なシナリオにおいて、ターゲットUI58は、複数の人に関するデータを収集するように設計され、「姓」とラベル付けされる複数のフィールドを有するフォームを含む。このような状況で、「姓」ラベルは特定のフォームフィールドを識別するのにあまり信頼できない可能性がある。したがって、幾つかの実施形態では、各ラベル候補が(同様の画像を有する又は同様のテキストを表示する他のラベル候補がないという意味で)一意であるか否かを判断し、そうでない場合、各候補ラベルに比較的低いアンカー適合性スコアを与えてもよい。代替的な実施形態では、複数のラベルを同じターゲット要素、例えば各フォームフィールドの近くに配置されるラベル、入力のフォーム又はブロックのそれぞれのタイトルなどに割り当ててもよい。
【0053】
ステップ206では、ラベル候補について評価されたスコアを比較してもよい。明確な勝者がいる場合、ステップ210において、スクリプトオーサリングアプリケーション46は、ターゲット要素に関連付けられるユーザ向けラベルとして、最高の適合性スコアを有する候補UI要素を選択してもよい。ラベル適合性スコアが評価されない場合、又は複数の候補が同じ適合性スコアを有する場合、幾つかの実施形態では、ユーザ向けラベルとしてUI要素を明示的に示すようにユーザを案内してもよい(ステップ208)。
【0054】
ユーザ向けのラベル要素を自動的に選択する代替的な方法を、
図12、
図13に示す。アプリケーション46が候補ラベルのセットを生成してターゲット要素に対する候補ラベルの位置に従って候補ラベルの適合性を評価する前述の方法とは対照的に、ステップ222では、UI58内の候補位置を、例えば画面座標{X、Y}として生成してもよい。そのような実施形態は、ラベルが関連付けられるターゲットを明確に識別するラベルが通常それらの各ターゲットに、例えばそれらの左に直接又は真上若しくは真下に、近接し整列しているという観察に再び依存する(位置は、各UIの自然言語に依存してもよい)。したがって、幾つかの実施形態では、そのような位置で潜在的なラベル要素を明示的に探してもよい。
図12は、ターゲット要素64の周囲にある複数の候補位置65a~dを示す。そのような候補位置は、ターゲット要素の画面位置に従って、及び/又はターゲット要素のサイズに従って判断されてもよい。幾つかの実施形態において、候補位置は、例えば決定論的成分とランダム成分の合計として、ランダムに生成される。
【0055】
次に、ステップ224では、候補位置に位置するUI要素を識別してもよい。幾つかの実施形態において、要素は、各位置が各要素の画面境界内にある場合、特定の位置に位置するとみなされる。別の実施形態では、各要素の中心/重心と各位置との間の距離が所定の閾値よりも小さい場合に、要素が特定の位置に位置するとみなしてもよい。
図12の例では、UI要素66は候補位置65aに位置する。幾つかの実施形態において、ステップ224は、OS40のネイティブ機能への呼び出しを発行することを含み、各機能は、画面の特定の領域を占めるUI要素のリストを返すように構成される。どのUI要素が候補位置に位置するかを判断する他の方法には、各UIの基礎となるソースコード(例えば、HTMLスクリプト、スタイルシートなど)の解析が含まれる。
【0056】
UI要素が各候補位置に位置していない場合、幾つかの実施形態では、ステップ222に戻って、別の候補位置を生成する。別の方法では、ステップ226において、スクリプトオーサリングアプリケーション46は、ラベル適合基準のセットに従って、識別されたUI要素のセットをフィルタリングしてもよい。そのような基準は、とりわけ、可視性(例えば、可視のUI要素のみがラベルとして選択されてもよい)及び要素種類(例えば、テキスト要素が他の種類のUI要素よりも優先されてもよい)を含んでもよい。他の適合性基準は、上記のように、ターゲット要素に対する候補の相対的位置を含んでもよい。
【0057】
候補位置に位置するUI要素のいずれもがラベルに適合するとみなされない場合(例えば、所定の閾値を超える適合性スコアが与えられたものがない場合など)、幾つかの実施形態では、ステップ222に戻って別の候補位置を生成してもよい。別の方法では、ステップ232において、適格なUI要素を、各ターゲット要素のユーザ向けラベルとして選択してもよい。
【0058】
ターゲット及び/又はユーザ向けラベルの識別に応じて、ステップ112(
図4)において、スクリプトオーサリングアプリケーション46は、各ターゲット及びラベル要素の要素特性特徴のセットを判断してもよい。本発明の幾つかの実施形態によるそのような要素特性データが、
図14に示され、とりわけ、要素画像90a~bのセットと、要素テキスト92a~bのセットと、ターゲット要素64及び関連付けられるラベル66のコードラベル94a~bのセットとを含む。
【0059】
コードラベル94a~bは、ターゲットUI58のソースコード内の各UI要素を識別する。ユーザインタフェースのソースコードという用語は、本明細書では、各ユーザインタフェースによって表示されるコンテンツのプログラム表現を示すと理解される。ソースコードは、プログラミング言語で書かれたプログラム/スクリプトと、RPAクライアント10のメモリに存在するデータ構造とを含んでもよい。例示的なソースコードは、ウェブブラウザアプリケーションによってウェブページとしてレンダリングされるHTML文書を含む。
【0060】
コードラベル94a~bは、例えば、RPAクライアント10がUI58の表示を管理するために使用するオブジェクトの階層(UIツリー)内の特定のオブジェクトとして、オペレーティングシステムに対して各UI要素を識別する。図示されるコードラベル94a(
図14)は、ターゲット要素64を、「uidouble.exe」というビジネスアプリケーションのウィンドウ内で可視である「TellerCtrl37」という名のオブジェクトとして識別する属性と値のペアのセットを含む。一方、コードラベル94bは、ラベル66を、ターゲット要素64と同じアプリケーションウィンドウの一部を形成する「Cash In」という名のテキスト要素として識別する。コードラベル94a~bの図示されるフォーマットは、一例としてのみ提供される。当業者は、属性と値のペアのリストのほかに、UI要素をプログラムで表現する複数の他の方法があってもよいことを理解するであろう。
【0061】
幾つかの実施形態において、コードラベル94a~bを判断することは、UI58の基礎となるコンピュータプログラム/スクリプトを解析すること、及び/又はUI58の表示を管理するためにOS40及び/又はビジネスアプリケーション42によって使用されるデータ構造を解析すること、及び各UI要素を特徴付ける属性と値のペアのセットを抽出することを含む。
【0062】
幾つかの実施形態において、各要素テキスト92a~b(
図14)は、各UI要素の画面境界内に表示されるテキスト(一連の英数字)のコンピュータ符号化を含む。図示する例では、ターゲット要素64はテキストを表示しないので、要素テキスト92aは値NULLを有する。一方、要素テキスト92bはテキスト「Cash In」からなる。テキストのコンピュータ符号化は、例えば、一連の数字コード(例えば、Unicodeなど)を含んでもよく、この場合、各コードは、要素テキスト92a~bの個別の文字に対応する。
【0063】
スクリプトオーサリングアプリケーション46の実施形態は、様々な方法を使用して要素テキスト92a~bを判断してもよい。アプリケーション46がUI58のソースコードにアクセスできるとき、アプリケーション46は、各ソースコードから要素テキスト92a~bを抽出しようと試みてもよい。例えば、ウェブページのボタンに表示されるラベルは、各ウェブページに関連付けられているHTMLドキュメントを解析することで見つけることができる。他のビジネスアプリケーション42の場合、スクリプトオーサリングアプリケーション46は、OS40及び/又はビジネスアプリケーション42のデータ構造を解析して、要素テキスト92a~bがUI58のソースコードに含まれるか否かを判断してもよい。
【0064】
代替的な実施形態において、アプリケーション46は、例えば光学式文字認識(OCR)コンピュータプログラムなどの画像分析ツールを使用して、要素テキスト92a~bを判断してもよい。そのような一例において、OCRツールは、それぞれのターゲット及び/又はラベルUI要素を含む画面領域の画像を入力し、テキストトークンのセット(例えば、語句など)と各テキストトークンに対して判断された境界ボックスとを返してもよい。例示的な境界ボックスは、とりわけ、各テキストトークンの周囲を囲む多角形と、各トークンの凸包とを含む。境界ボックスは、
図14において、「Cash In」という語句を囲む破線の矩形によって示されている。テキストトークン及び境界ボックスの受け取りに応じて、アプリケーション46は、境界ボックスが各UI要素と実質的に重なるか否かを判断してもよく、YESの場合、各UI要素を特徴付ける要素テキストとして、各境界ボックス内に位置するテキストトークンを選択してもよい。各境界ボックスの十分な比率(例えば、50%を超える、一般的には80~100%)が各UI要素の画面境界内に位置する場合、実質的な重なりが確立されてもよい。
【0065】
幾つかの実施形態において、各要素画像90a~b(
図14)は、各UI要素の境界内で画面に表示される画像のコンピュータ符号化を含む。画像のコンピュータ符号化は、複数のチャネルにわたる可能性がある各画面領域に対応するピクセル値の配列(例えば、RGBなど)、及び/又はピクセル値の各配列にしたがって計算された値のセット(例えば、ピクセル値の各配列のJPEG又はウェーブレット表現など)を含んでもよい。各要素画像90a~bを判断することは、UI58のクリッピングのコンテンツ、即ち、各UI要素を示すUI58の限定された領域のコンテンツを取得することを含んでもよい。
【0066】
ターゲット選択及び自動ラベル識別に応じて、ステップ114(
図4)において、スクリプトオーサリングアプリケーション46は、各RPAアクティビティのアクティビティ構成インタフェースに、ターゲットUI要素及び/又は他のアクティビティパラメータに関する情報を取り込んでもよい。例示的な一実施形態において、アクティビティ構成インタフェースの外観は、ターゲット要素の選択の受け取りに応じて、
図6の例示的な表示から
図15の例示的な表示に切り替えられてもよい。読み易さを向上させ、伝達される情報をユーザフレンドリーで直感的にするために、幾つかの実施形態では、各ターゲットに関連付けられるユーザ向けラベル66(
図4のステップ110で検出されるラベル66)によって各アクティビティのターゲット/オペランドを参照してもよい。別の言い方をすると、ユーザに情報を提示する際に、アクティビティ構成インタフェースは、ユーザ向けラベルを、記述子として使用し、且つ/又は、各ターゲット要素の代わりに使用してもよい。例えば、幾つかの実施形態では、アクティビティ名フィールド82(
図6)に、ターゲット要素自体に従うのではなくユーザ向けラベルに従って判断されたアクティビティ名を取り込んでもよい。アクティビティ名は、例えば、アクティビティ種類のテキストインジケータ(例えば、「Type Into」など)をユーザ向けラベルの要素テキスト92c(例えば、「Cash In」など)と連結することによって、構築されてもよい。代替的な実施形態において、アクティビティ名フィールドは、そのテキストコンテンツとは対照的に、各ユーザ向けラベルの画像(例えば、アイコンなど)を表示してもよい。
【0067】
図示されたアクティビティ構成インタフェース74dは、各RPAアクティビティの要約を示すアクティビティ記述フィールド86をさらに含む。幾つかの実施形態において、フィールド86は、ユーザ向けラベル及び/又はターゲット要素の特性データ、例えばユーザ向けラベルの画像90c及びターゲット要素の画像90dなどを表示する。代替的な実施形態では、要素画像の代わりに又は要素画像に加えて、要素テキストを表示してもよい。
【0068】
図16は、テキスト取得アクティビティに関連して公開される別の例示的なアクティビティ構成インタフェース74dを示す。
図7を参照すると、示される例示的なアクティビティは、ロボットに、UI58からトランザクション番号を取得するように指示する。
図15の状況とは対照的に、ここでは、ターゲット要素(実際のトランザクション番号)及びそのユーザ向けラベル(「Transaction #」)は両方ともテキスト要素である。インタフェース74dは、ユーザ向けラベルのテキスト92dに従って判断されるアクティビティ名を表示して、即ち、真のターゲットの代替/記述子として再びユーザ向けラベルを使用して、読み易さを向上させ、現在のアクティビティを非コーディング開発者に対してアクセス可能にするために、アクティビティ記述は、各ターゲット要素及びそのユーザ向けラベル(それぞれ項目90f及び項目90e)の画像が表示する。
【0069】
図17は、マウスクリックアクティビティに関連して公開されるさらに別の例示的なアクティビティ構成インタフェース74eを示す。
図7を参照すると、示されるアクティビティは、ロボットに、UI58の「Accept」ボタンをクリックするように指示する。幾つかの実施形態では、ボタン要素のユーザ向けラベルを、各ボタンの上に表示されるテキスト要素として識別する。この場合、テキスト要素「Accept」はボタン自体と同じ場所に配置される。そのような実施形態では、インタフェース74cは、ボタン上に表示されるテキスト92eに従って判断されるアクティビティ名を表示する。
【0070】
さらなるステップ116(
図4)において、スクリプトオーサリングアプリケーション46は、選択されたRPAアクティビティに対応するRPAスクリプトを作成してもよい。別の言い方をすると、ステップ116において、アプリケーション46は、実行時に使用されるロボットのコードを、例えばスクリプトファイルに出力する。RPAスクリプト50は、当該技術分野で知られている任意のコンピュータ読み取り可能符合化で、例えば、XMLのバージョンで、又は一連のネイティブのプロセッサ命令(例えば、機械語など)にコンパイルされて、作成されてもよい。
【0071】
各アクティビティ/自動化ステップについて、オーサリングアプリケーション46は、各アクティビティ(例えば、クリック(click)、入力(type into)など)のインジケータと、各ターゲット要素及びユーザ向けラベルについてステップ112で判断された要素特性特徴とを、RPAスクリプト50に出力してもよい。そのようなデータは、とりわけ、各UI要素についてコードラベル、要素テキスト、及び要素画像を含んでもよい。特性データの符号化は、特性データ自体及び/又はそのようなデータの他の表現、例えば、各データにリモートでアクセス可能なネットワーク位置(例えば、URL、ネットワークアドレスなど)のインジケータを含んでもよい。
【0072】
自動化の設計段階が完了すると、RPAスクリプト50は、スクリプトリポジトリ15に送られ、且つ/又は、実行のため他のRPAクライアントに渡されてもよい(例えば、
図1を参照)。
図18は、実行時にRPAロボット44によって実行される例示的な一連のステップを示している。RPAスクリプト50の受け取りに応じて、ステップ304では、RPAスクリプト50の内容に従って実行されるアクティビティの種類を判断する。ステップ304では、さらに、各ロボットがRPAスクリプト50に従ってそれと対話するように構成されているターゲットUI及び/又はランタイムビジネスアプリケーション(例えば、MS Excel(登録商標)、Google Chrome(登録商標)など)を判断する。ステップ306において、RPAロボット44は、例えば、ローカルクライアントマシンで各ビジネスアプリケーションのインスタンスを呼び出すことで、各ターゲットUIを公開してもよい。さらに、ステップ308では、RPAスクリプト50に記憶されている情報に従って、各アクティビティのランタイムターゲットUI要素を自動的に識別してもよい。ランタイムターゲットUI要素は、各アクティビティのオペランド、即ち、ロボット44がそれに作用する(例えば、クリックする、テキストを入力する、コンテンツを取得するなど)ように構成されているランタイムターゲットUIのUI要素を含む。ランタイムターゲットは、例えば、各UI要素のコードラベルに従って、且つ/又は、各UI要素によって表示されるテキスト及び/又は画像に従って、識別されてもよい。さらに、幾つかの実施形態では、ターゲット要素の設計時インスタンスに関連付けられるユーザ向けラベルについて設計時に判断された特性データに従って、ランタイムターゲットを識別する。実行時ターゲット要素の識別が成功したことに応じて、ステップ310は、スクリプト化されたアクティビティを自動的に実行する、即ち、RPAスクリプト50に示されるように各UI要素と対話してもよい。
【0073】
図19は、本明細書に記載の方法の幾つかを実行するようにプログラムされたコンピューティングデバイスの例示的なハードウェア構成を示す。各コンピューティングデバイスは、
図1のRPAクライアント10a~eの何れか、例えば、
図19に示すようなパーソナルコンピュータを表してもよい。例えば携帯電話、タブレットコンピュータ、ウェアラブルなどの他のコンピューティングデバイスが、僅かに異なる構成を有してもよい。プロセッサ22は、信号及び/又はデータのセットを使用して計算及び/又は論理演算を実行するように構成された物理デバイス(例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路など)を備える。そのような信号又はデータは、符号化され、プロセッサ命令(例えば、機械語など)の形でプロセッサ22に渡されてもよい。プロセッサ22は、中央処理装置(CPU)及び/又はグラフィックスプロセッシングユニット(GPU)のアレイを含んでもよい。
【0074】
メモリユニット24は、動作を実行する過程でプロセッサ22によってアクセス又は生成されるデータ/信号/命令符号化(エンコーディング)を記憶する揮発性のコンピュータ読み取り可能な媒体(例えば、ダイナミックランダムアクセスメモリ(DRAM)など)を備えてもよい。入力デバイス26は、ユーザがデータ及び/又は命令をRPAクライアント10に導入することを可能にする各ハードウェアインタフェース及び/又はアダプタを含む、コンピュータキーボード、マウス、マイクなどを含んでもよい。出力デバイス28は、例えばモニタなどの表示デバイス、スピーカ、及びグラフィックカードなどのハードウェアインタフェース/アダプタを含んでもよく、各コンピューティングデバイスがユーザにデータを通信できるようにする。幾つかの実施形態において、入力デバイス及び出力デバイス26~28は、共通のハードウェア(例えば、タッチスクリーンなど)を共有する。ストレージデバイス32は、ソフトウェア命令及び/又はデータの不揮発な記憶、読み取り、及び書き込みを可能にするコンピュータ読み取り可能な媒体を含む。例示的なストレージデバイスには、磁気ディスク及び光ディスク、フラッシュメモリデバイス、並びにCD及び/又はDVDディスク及びドライブなどのリムーバブルメディアが含まれる。ネットワークアダプタ34は、各コンピューティングデバイスが電子通信ネットワーク(例えば、
図1のネットワーク12、14など)及び/又は他のデバイス/コンピュータシステムに接続することを可能にする。
【0075】
コントローラハブ30は、一般に、複数のシステム、周辺機器、及び/又はチップセットバス、及び/又はプロセッサ22とRPAクライアント10の残りのハードウェアコンポーネントとの間の通信を可能にする全ての他の回路を表す。例えば、コントローラハブ30は、メモリコントローラ、入力/出力(I/O)コントローラ、割り込みコントローラを含んでもよい。ハードウェアメーカに応じて、幾つかのそのようなコントローラが、1つの集積回路に組み込まれてもよく、且つ/又は、プロセッサ22と統合されてもよい。別の例において、コントローラハブ30は、プロセッサ22をメモリ24に接続するノースブリッジ、及び/又は、プロセッサ22をデバイス26、28、32、34に接続するサウスブリッジを含んでもよい。
【0076】
上記の例示的なシステム及び方法は、ロボット設計プロセスを、より直感的にし、正式なプログラミングのバックグラウンドが乏しい開発者にアクセスし易くすることで、RPAロボットの設計を容易にする。
【0077】
ロボットソフトウェア(一般にデザインタイム(設計時)として知られる自動化の段階)を設計する場合、RPA開発者は、ターゲットUIのインスタンスを呼び出し、ターゲット要素と各ターゲット要素で実行されるアクティビティとを示す。例えば、開発者は、ターゲットUIのボタンを指定し、各ボタンをクリックするようにロボットを構成してもよい。別の例において、開発者は、入力フィールドを示し、各入力フィールドにテキストを入力するようにロボットを構成してもよい。さらに別の例において、開発者は、ユーザインタフェースのテキストボックスを示し、各テキストボックスのコンテンツを取得するようにロボットを構成してもよい。結果として得られるロボットコードは、ターゲット要素のインジケータ及び各アクティビティのインジケータを含んでもよい。その後、ロボットコードはRPAクライアントに渡されてもよい。
【0078】
RPAシステムは、コードラベル(各ユーザインタフェースの基礎となるソースコードの特徴(例えば、ウェブページの外観とコンテンツを指定するHTMLコードなど))に従ってターゲット要素を識別してもよい。しかし、ターゲットUI要素のコードラベルは、各UI要素の種類、外観、又は画面の場所に関する洞察を開発者に提供しなくてもよい。ユーザインタフェースのソースコードを理解するには、長期間の訓練が必要である可能性があり、正式なプログラミング訓練が不足している開発者にとっては選択肢にならない可能性がある。さらに、ソースコードラベルでUI要素を参照すると、複数の設計者が同じRPAソフトウェアで共同作業を行うような場合の移植性と共同開発が妨げられる可能性がある。ソースコードから派生する名は、一部の開発者には透過的である可能性があるが、各ターゲットUIのアーキテクチャにあまり詳しくない可能性がある他の開発者には透過的ではない可能性がある。
【0079】
幾つかの実施形態は、UI要素をそのラベルとは明確に区別するロボット/コンピュータシステムとは対照的に、UIの人間のユーザが一般的に、インタラクティブ要素(例えば、フォームフィールド、ボタンなど)をそのラベルとまとめて捉えるという観察に依存する。例えば、ユーザが実際に行った動作がOKラベルを表示しているボタンをクリックすることであった場合に、ユーザは「OKをクリックしました」と言うことが多い。同様に、「姓」が、フィールド自体ではなく、実際にはその入力フィールドの隣に表示されるラベルである場合、ユーザは「姓を入力しています」と言う場合がある。一方、RPAを成功させるには、ターゲット要素に関連付けられるラベルではなく、ターゲット要素自体に作用する必要がある。
【0080】
したがって、ロボット設計インタフェースのユーザ向けの側面において、幾つかの実施形態では、意図的に、識別子として、且つ/又は、実際のターゲット要素の代わりに、ラベルを使用する。
図15に示すそのような一例において、スクリプトオーサリングアプリケーション46は、ロボット44に、コードラベル「TellerCtrl37」を有するとして識別される入力フィールドに入力するように指示する。しかし、
図15に示すユーザ向けのアクティビティ構成インタフェースでは、各アクティビティが、例えば「Type into ‘TellerCtrl37’」ではなく、「Type into ‘Cash In’」として表示される。そのようなユーザ指向のコミュニケーションは、各設計ツールの理解を大幅に促進し、RPAオーサリングを魅力的で非コーダーがアクセスできるようにする可能性がある。
【0081】
別の例示的なUIの向上において、幾つかの実施形態では、ターゲット要素自体の代わりに、ターゲット要素の画像又はそれに関連付けられるユーザ向けラベルを使用する。各画像は、実際のターゲットUIのクリッピングを含んでもよく、ターゲットUI内で各要素をレンダリングするために使用される実際のカラースキーム、フォント、及びフォントサイズを含む、ターゲット要素及び/又はラベルの画面上の外観を示す。そのような一例を
図16に示す。ここでは、ターゲット要素(実際のトランザクション番号)が画像として表されている。このような表現により、非技術系のユーザでも、UI内のターゲット要素をすぐに識別し、ロボットが何をするように設計されているかを理解することが可能になる。
【0082】
上記の実施形態が本発明の範囲から逸脱することなく多くの方法で変更されてもよいことは、当業者に明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲及びそれらの法的均等物によって判断されるべきである。