(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022173048
(43)【公開日】2022-11-17
(54)【発明の名称】自動文書スクロールを備えるロボティックプロセスオートメーション(RPA)
(51)【国際特許分類】
G06F 8/34 20180101AFI20221110BHJP
【FI】
G06F8/34
【審査請求】未請求
【請求項の数】14
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021204145
(22)【出願日】2021-12-16
(31)【優先権主張番号】17/302,560
(32)【優先日】2021-05-06
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】452 5th Avenue, 22nd Floor, New York,NY 10018,United States of America
(74)【代理人】
【識別番号】100180781
【弁理士】
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【弁理士】
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】ミルシア,ユリアン
(72)【発明者】
【氏名】クシュナール,レヴ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC07
5B376BC14
5B376BC21
5B376BC31
5B376BC43
(57)【要約】 (修正有)
【課題】大きな文書の自動処理を容易にする方法、コンピュータシステム及び非一時的コンピュータ可読媒体を提供する。
【解決手段】ロボティックプロセスオートメーション(RPA)環境10において、RPAロボットは、ユーザーインターフェース内に現在公開されている文書の第1の部分内のターゲット要素を検索する。検索が失敗すると、ロボットは、それぞれのUIのスクロールコントロールを自動的に作動させて、それぞれの文書の別の部分を表示させることができる。次いで、ロボットは、文書の新たに公開された部分内でRPAターゲットを検索し続ける。ロボットは、それぞれの文書がスクロール可能であるかどうかを自動的に判定し、ターゲットアプリケーションのタイプにしたがってスクロールコントロールを識別する(例えば、スプレッドシート対ウェブブラウザ)。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用することを含む方法であって、
ユーザーインターフェース(UI)のターゲット要素を示すロボティックプロセスオートメーション(RPA)スクリプトの受信に応答して、前記UIのランタイムインスタンス内の前記ターゲット要素のランタイムインスタンスを識別する試みを実行し、前記UIの前記ランタイムインスタンスが、電子文書の初期部分を現在表示しており、
前記試みが失敗した場合、前記電子文書の前記初期部分を現在表示しているUIコンテナがスクロール可能であるか否かを判定し、
それに応答して、前記UIコンテナがスクロール可能である場合、スクロールコントロールをアクティブ化して、前記UIの前記ランタイムインスタンスに前記電子文書の後続部分を表示させ、
前記スクロールコントロールをアクティブ化することに応答して、前記UIの前記ランタイムインスタンス内の前記ターゲット要素の前記ランタイムインスタンスを識別するための別の試みを実行し、前記UIの前記ランタイムインスタンスが、前記電子文書の前記後続部分を現在表示しており、
前記ターゲット要素の前記ランタイムインスタンスの正常な識別に応答して、人間のオペレータが前記ターゲット要素の前記ランタイムインスタンスに作用した結果を再現する動作を実行する、方法。
【請求項2】
前記ランタイムUIが、複数の属性を有するコンピュータ可読データ構造にしたがってレンダリングされ、前記方法が、前記UIコンテナが前記複数の属性のうちの選択された属性の現在の値にしたがってスクロール可能であるかどうかを判定することを含む、請求項1に記載の方法。
【請求項3】
前記UIコンテナがスクロール可能であるかどうかを判定することが、前記UIの前記ランタイムインスタンスが前記スクロールコントロールを含むかどうかを判定することを含む、請求項1に記載の方法。
【請求項4】
前記UIの前記ランタイムインスタンスが前記スクロールコントロールを含むかどうかを判定することが、前記UIの前記ランタイムインスタンスを公開するアプリケーションのタイプにしたがって前記スクロールコントロールを識別することを含む、請求項3に記載の方法。
【請求項5】
前記UIの前記ランタイムインスタンスが前記スクロールコントロールを含むかどうかを判定することが、
前記候補UI要素が応答しているかどうかにしたがって前記UIの前記ランタイムインスタンスから候補UI要素を選択することと、前記候補UI要素が前記スクロールコントロールを含むかどうかを判定することと、を含む、請求項3に記載の方法。
【請求項6】
前記UIの前記ランタイムインスタンスが前記スクロールコントロールを含むかどうかを判定することが、
前記UIの前記ランタイムインスタンス内の前記候補UI要素の位置にしたがって前記UIの前記ランタイムインスタンスから前記候補UI要素を選択することと、
前記候補UI要素が前記スクロールコントロールを含むかどうかを判定することと、を含む、請求項3に記載の方法。
【請求項7】
前記電子文書が、スプレッドシート、ウェブページ、および電子メールメッセージのリストからなる群から選択される項目を含む、請求項1に記載の方法。
【請求項8】
前記電子文書が、複数のノードを含む階層構造を含み、前記スクロールコントロールをアクティブ化することが、前記UIの前記ランタイムインスタンスに、前記複数のノードのうちの選択されたノードをサブノードのセットに展開させる、請求項1に記載の方法。
【請求項9】
前記少なくとも1つのハードウェアプロセッサを使用して、前記ランタイムUIの少なくとも1つの領域のスナップショットにしたがって前記スクロールコントロールを識別することをさらに含む、請求項1に記載の方法。
【請求項10】
前記少なくとも1つのハードウェアプロセッサを使用して、
自動スクロールオプションが有効にされているかどうかをRPAスクリプトにしたがって判定し、
それに応答して、自動スクロールが有効になっている場合にのみスクロールコントロールをアクティブ化することをさらに含む、請求項1に記載の方法。
【請求項11】
少なくとも1つのハードウェアプロセッサを備えるコンピュータシステムであって、
ユーザーインターフェース(UI)のターゲット要素を示すロボティックプロセスオートメーション(RPA)スクリプトの受信に応答して、前記UIのランタイムインスタンス内の前記ターゲット要素のランタイムインスタンスを識別する試みを実行し、前記UIの前記ランタイムインスタンスが、電子文書の初期部分を現在表示しており、
前記試みが失敗した場合、前記電子文書の前記初期部分を現在表示しているUIコンテナがスクロール可能であるか否かを判定し、
それに応答して、前記UIコンテナがスクロール可能である場合、スクロールコントロールをアクティブ化して、前記UIの前記ランタイムインスタンスに前記電子文書の後続部分を表示させ、
前記スクロールコントロールをアクティブ化することに応答して、前記UIの前記ランタイムインスタンス内の前記ターゲット要素の前記ランタイムインスタンスを識別するための別の試みを実行し、前記UIの前記ランタイムインスタンスが、前記電子文書の前記後続部分を現在表示しており、
前記ターゲット要素の前記ランタイムインスタンスの正常な識別に応答して、人間のオペレータが前記ターゲット要素の前記ランタイムインスタンスに作用した結果を再現する動作を実行する、ように構成されたコンピュータシステム。
【請求項12】
請求項2~10のいずれか一項にしたがって構成される、請求項11に記載のコンピュータシステム。
【請求項13】
コンピュータシステムの少なくとも1つのハードウェアプロセッサによって遂行されると、前記コンピュータシステムに、
ユーザーインターフェース(UI)のターゲット要素を示すロボティックプロセスオートメーション(RPA)スクリプトの受信に応答して、前記UIのランタイムインスタンス内の前記ターゲット要素のランタイムインスタンスを識別する試みを実行させ、前記UIの前記ランタイムインスタンスが、電子文書の初期部分を現在表示しており、
前記試みが失敗した場合、前記電子文書の前記初期部分を現在表示しているUIコンテナがスクロール可能であるか否かを判定させ、
それに応答して、前記UIコンテナがスクロール可能である場合、スクロールコントロールをアクティブ化して、前記UIの前記ランタイムインスタンスに前記電子文書の後続部分を表示させ、
前記スクロールコントロールをアクティブ化することに応答して、前記UIの前記ランタイムインスタンス内の前記ターゲット要素の前記ランタイムインスタンスを識別するための別の試みを実行させ、前記UIの前記ランタイムインスタンスが、前記電子文書の前記後続部分を現在表示しており、
前記ターゲット要素の前記ランタイムインスタンスの正常な識別に応答して、人間のオペレータが前記ターゲット要素の前記ランタイムインスタンスに作用した結果を再現する動作を実行させる、命令を記憶する非一時的コンピュータ可読媒体。
【請求項14】
請求項2~10のいずれか一項にしたがって構成される、請求項13に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、ロボティックプロセスオートメーション(RPA)に関し、特に、実質的なスプレッドシートおよびウェブページなどの大きな文書の自動処理を容易にすることに関する。
【0002】
RPAは、反復的なコンピューティングタスクを自動化することによって生産性を向上させ、したがって、人間のオペレータがより知的に洗練されたおよび/または創造的なアクティビティを実行することができるようにすることを目的とした情報技術の新興の分野である。自動化を目的とした注目すべきタスクは、文書から構造化データを抽出すること、および、例えばとりわけフォームに記入するためにユーザーインターフェースとインタラクションすることを含む。しかしながら、ユーザーインターフェースとのインタラクションを自動化することは、例えば、ボタン、フォームフィールド、またはスプレッドシートセルなどのターゲットUI要素を明確に識別するなど、実質的な技術的課題を提起する。さらに、RPAアプリケーションは、それぞれのソフトウェアロボットの設計と実行時との間で生じるインターフェース(例えば、様々な要素、カラースキーム、フォントなどの配置)の外観の変化のために失敗する可能性がある。
【0003】
RPA開発の最先端は、ソフトウェアロボットのプログラミングおよび管理を単純化することを目的としており、高度なプログラミングスキルまたは訓練を欠くユーザーにRPA技術の範囲を拡大するという最終目的がある。RPAをよりアクセスしやすくする1つの方法は、コーディング自体ではなく、グラフィカルユーザーインターフェース(GUI)ツールを介してロボットのプログラミングを可能にするRPA指向の統合開発環境(IDE)の開発である。
【0004】
上記を考慮して、様々な実行時状況で実行することができる堅牢でスケーラブルなロボットを開発する一方で、そのようなロボットの設計を可能な限り直感的且つユーザーフレンドリーに保ち、幅広い開発者を引き付けることに強い関心がある。
【発明の概要】
【0005】
一態様によれば、本方法は、コンピュータシステムの少なくとも1つのハードウェアプロセッサを使用して、ユーザーインターフェース(UI)のターゲット要素を示すロボティックプロセスオートメーション(RPA)スクリプトの受信に応答して、UIのランタイムインスタンス内のターゲット要素のランタイムインスタンスを識別する試みを実行することを含み、UIのランタイムインスタンスは、電子文書の初期部分を現在表示している。本方法は、試みが失敗した場合、少なくとも1つのハードウェアプロセッサを使用して、電子文書の初期部分を現在表示しているUIコンテナがスクロール可能であるかどうかを判定し、それに応答して、UIコンテナがスクロール可能である場合、UIのランタイムインスタンスを電子文書の結果として表示させるために、スクロールコントロールとしてアクティブ化することをさらに含む。本方法は、スクロールコントロールをアクティブ化することに応答して、UIのランタイムインスタンス内のターゲット要素のランタイムインスタンスを識別する別の試みを実行することをさらに含み、UIのランタイムインスタンスは、電子文書の後続部分を現在表示している。本方法は、ターゲット要素のランタイムインスタンスの正常な識別に応答して、少なくとも1つのハードウェアプロセッサを使用して、ターゲット要素のランタイムインスタンスに作用する人間のオペレータの結果を再現する動作を実行することをさらに含む。
【0006】
別の態様によれば、コンピュータシステムは、UIのターゲット要素を示すRPAスクリプトの受信に応答して、UIのランタイムインスタンス内のターゲット要素のランタイムインスタンスを識別する試みを実行するように構成された少なくとも1つのハードウェアプロセッサを備え、UIのランタイムインスタンスは、電子文書の初期部分を現在表示している。少なくとも1つのハードウェアプロセッサは、第1の試みが失敗した場合、電子文書の初期部分を現在表示しているUIコンテナがスクロール可能であるかどうかを判定し、それに応答して、UIコンテナがスクロール可能である場合、UIのランタイムインスタンスに電子文書の後続部分を表示させるためにスクロールコントロールをアクティブ化するようにさらに構成される。少なくとも1つのハードウェアプロセッサは、スクロールコントロールをアクティブ化することに応答して、UIのランタイムインスタンス内のターゲット要素のランタイムインスタンスを識別する別の試みを実行するようにさらに構成され、UIのランタイムインスタンスは、電子文書の後続部分を現在表示している。少なくとも1つのハードウェアプロセッサは、ターゲット要素のランタイムインスタンスの成功した識別に応答して、ターゲット要素のランタイムインスタンスに作用する人間のオペレータの感覚を再現する動作を実行するようにさらに構成される。
【0007】
別の態様によれば、非一時的コンピュータ可読媒体は、コンピュータシステムの少なくとも1つのハードウェアプロセッサによって遂行されると、ユーザーインターフェース(UI)のターゲット要素を示すロボティックプロセスオートメーション(RPA)スクリプトを受信したことに応答して、UIのランタイムインスタンス内のターゲット要素のランタイムインスタンスを識別する試みをコンピュータシステムに実行させる命令を記憶し、UIのランタイムインスタンスは、電子文書の初期部分を現在表示している。試みが失敗した場合、命令は、さらに、少なくとも1つのハードウェアプロセッサに、電子文書の初期部分を現在表示しているUIコンテナがスクロール可能であるかどうかを判定させ、それに応答して、UIコンテナがスクロール可能である場合、UIのランタイムインスタンスを電子文書の後続部分を表示させるためにスクロールコントロールをアクティブ化させる。命令は、さらに、スクロールコントロールをアクティブ化することに応答して、少なくとも1つのハードウェアプロセッサに、UIのランタイムインスタンス内のターゲット要素のランタイムインスタンスを識別する別の試みを実行させ、UIのランタイムインスタンスは、電子文書の後続部分を現在表示している。命令は、さらに、少なくとも1つのハードウェアプロセッサに、ターゲット要素のランタイムインスタンスの正常な識別に応答して、ターゲット要素のランタイムインスタンスに作用する人間のオペレータの結果を再現する動作を実行させる。
【図面の簡単な説明】
【0008】
本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照すると、よりよく理解されるであろう。
【0009】
【
図1】本発明のいくつかの実施形態にかかる例示的なロボティックプロセスオートメーション(RPA)環境を示している。
【0010】
【
図2】本発明のいくつかの実施形態にかかるRPAロボットおよびオーケストレータの例示的なコンポーネントおよび操作を示している。
【0011】
【
図3】本発明のいくつかの実施形態にかかる様々なRPAホストシステムを示している。
【0012】
【
図4】本発明のいくつかの実施形態にかかる、RPAホスト上で遂行される例示的なRPAコンポーネントを示している。
【0013】
【
図5】本発明のいくつかの実施形態にかかる、複数のUI要素を有する例示的なユーザーインターフェース(UI)を示している。
【0014】
【
図6】本発明のいくつかの実施形態にかかる要素IDによって識別される例示的なターゲットUI要素を示している。
【0015】
【
図7】本発明のいくつかの実施形態にかかるスクロールコントロールのセットを公開させる例示的なUIを示している。
【0016】
【
図8】本発明のいくつかの実施形態にかかるスクロールコントロールのセットを公開させる別の例示的なUIを示している。
【0017】
【
図9】本発明のいくつかの実施形態にかかるスクロールコントロールのセットを公開させるさらに別の例示的なUIを示している。
【0018】
【
図10】本発明のいくつかの実施形態にかかるスクロールコントロールのセットを公開させるさらに別の例示的なUIを示している。
【0019】
【
図11】本発明のいくつかの実施形態にかかる例示的なロボット設計インターフェースを示している。
【0020】
【
図12】本発明のいくつかの実施形態にかかるRPA設計アプリケーションによって実行される例示的な一連のステップを示している。
【0021】
【
図13】本発明のいくつかの実施形態にかかる例示的なターゲット構成インターフェースを示している。
【0022】
【
図14】本発明のいくつかの実施形態にかかる、実行時にRPAロボットによって実行される例示的な一連のステップを示している。
【0023】
【
図15】本明細書に記載の方法のいくつかを遂行するようにプログラムされたコンピューティング機器の例示的なハードウェア構成を示している。
【発明を実施するための形態】
【0024】
以下の説明では、構造間の列挙された全ての接続は、直接的な動作接続または中間構造を介した間接的な動作接続とすることができることが理解される。要素のセットは、1つ以上の要素を含む。要素の列挙は、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。「または」の任意の使用は、非排他的なまたはを意味する。別段の要求がない限り、記載された方法ステップは、必ずしも特定の例示された順序で実行される必要はない。第2の要素から導出された第1の要素(例えば、データ)は、第2の要素に等しい第1の要素、ならびに第2の要素および任意に他のデータを処理することによって生成された第1の要素を包含する。パラメータにしたがって判定または決定を行うことは、パラメータにしたがって、および任意に他のデータにしたがって判定または決定を行うことを包含する。別段の指定がない限り、いくつかの量/データのインジケータは、量/データ自体、または量/データ自体とは異なるインジケータであってもよい。コンピュータプログラムは、タスクを実行する一連のプロセッサ命令である。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、スタンドアロンのソフトウェアエンティティまたは他のコンピュータプログラムのサブエンティティ(例えば、サブルーチン、ライブラリ)であってもよい。「データベース」という用語は、本明細書では、組織化された検索可能なデータの集合を示すために使用される。コンピュータ可読媒体は、磁気、光学、および半導体記憶媒体(例えば、ハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的媒体、ならびに導電ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、とりわけ、本明細書に記載の方法を実行するようにプログラムされたハードウェア(例えば、1つ以上のプロセッサ)と、本明細書に記載の方法を実行するための命令を符号化するコンピュータ可読媒体とを備えるコンピュータシステムを提供する。
【0025】
以下の説明は、本発明の実施形態を例として示しており、必ずしも限定するものではない。
【0026】
図1は、本発明のいくつかの実施形態にかかる例示的なロボティックプロセスオートメーション(RPA)環境10を示している。環境10は、特定のタスクの自動化を達成するために協働する様々なソフトウェアコンポーネントを備える。例示的なRPAシナリオでは、会社の従業員は、例えば様々なクライアントに請求書を発行するために、ビジネスアプリケーション(例えば、ワードプロセッサ、スプレッドシートエディタ、ブラウザ、電子メールアプリケーション)を使用して反復タスクを実行する。それぞれのタスクを実際に実行するために、従業員は、一連の操作/動作を実行し、これは本明細書ではプロセスと見なされる。請求書発行プロセスの一部を形成する例示的な操作は、Microoft Excel(登録商標)スプレッドシートを開くことと、クライアントの会社の詳細を検索することと、それぞれの詳細を請求書テンプレートにコピーすることと、購入された商品を示す請求書フィールドに記入することと、電子メールアプリケーションに切り替えることと、それぞれのクライアントへの電子メールメッセージを作成することと、新しく作成された請求書をそれぞれの電子メールメッセージに添付することと、「送信」ボタンをクリックすることと、を含むことができる。RPA環境10の様々な要素は、それぞれのタスクを実行する過程でそれぞれの人間のオペレータによって実行される操作のセットを模倣することによってそれぞれのプロセスを自動化することができる。
【0027】
人間の操作/動作を模倣することは、本明細書では、人間のオペレータがコンピュータ上でそれぞれの操作/動作を実行するときに発生する一連のコンピューティングイベントを再現すること、ならびに人間のオペレータがコンピュータ上でそれぞれの操作を実行した結果を再現することを含むと理解される。例えば、グラフィカルユーザーインターフェースのボタンをクリックする動作を模倣することは、オペレーティングシステムにマウスポインタをそれぞれのボタンに移動させ、マウスクリックイベントを生成することを含むことができ、あるいは、それぞれのGUIボタン自体をクリック状態に切り替えることを含むことができる。
【0028】
そのような自動化のために典型的に対象とされるプロセスは、とりわけ、支払いの処理、請求書発行、ビジネスクライアントとの通信(例えば、新聞および/または製品の提供物の配布)、内部通信(例えば、メモ、会議および/またはタスクのスケジューリング)、監査、および給与処理を含む。いくつかの実施形態では、専用RPA設計アプリケーション30(
図2)は、人間の開発者が、ターゲットプロセスを効果的に自動化するワークフローを実施するソフトウェアロボットを設計することを可能にする。ワークフローは、通常、一連のカスタム自動化ステップ、本明細書ではアクティビティと見なされるものを含む。各アクティビティは、ボタンのクリック、ファイルの読み取り、スプレッドシートセルとしての書き込みなど、ロボットによって実行される少なくとも1つの動作を含む。アクティビティは、ネストされるおよび/または埋め込まれてもよい。いくつかの実施形態では、RPA設計アプリケーション30は、遂行順序およびワークフローのアクティビティ間の関係の制御を開発者に与えるユーザーインターフェースおよびツールのセットを公開する。RPA設計アプリケーション30の実施形態の一商用例は、UiPath tudioX(登録商標)である。
【0029】
いくつかのタイプのワークフローは、シーケンス、フローチャート、有限状態機械(FM)、および/またはグローバル例外ハンドラを含むことができるが、これらに限定されない。シーケンスは、ワークフローを乱すことなく1つのアクティビティから別のアクティビティへの流れを可能にする線形プロセスに特に適することができる。フローチャートは、より複雑なビジネスロジックに特に適しており、複数の分岐論理演算子を介してより多様な方法で決定の統合およびアクティビティの接続を可能にする。FMは、大規模なワークフローに特に適している場合がある。FMは、条件(すなわち、遷移)またはアクティビティによってトリガされる有限数の状態をそれらの遂行において使用することができる。グローバル例外ハンドラは、実行エラーに遭遇したときのワークフローの挙動を判定し、プロセスをデバッグするのに特に適することができる。
【0030】
ワークフローが開発されると、それはRPAスクリプト40(
図2)のセットとしてコンピュータ可読形式で符号化されることができる。RPAスクリプト40は、当該技術分野で知られている任意のデータ仕様にしたがって、例えば、拡張可能マークアップ言語(XML)、Javacript Object Notation(JON)、またはC#、Viual Baic、Javaなどのプログラミング言語のバージョンで定式化されてもよい。あるいは、RPAスクリプト40は、バイトコードのRPA固有のバージョンで、または英語、スペイン語、日本語などの自然言語で定式化された命令のシーケンスとして定式化されてもよい。いくつかの実施形態では、スクリプト40は、ネイティブプロセッサ命令25のセット(例えば、マシンコード)に事前コンパイルされる。
【0031】
当業者は、RPA設計アプリケーション30が、別個の物理マシン上で遂行することができる複数のコンポーネント/モジュールを備えることができることを理解するであろう。本発明のクラウドコンピューティングの実施形態を示すそのような一例では、RPA設計アプリケーション30は、クライアント-サーバ構成で遂行することができ、アプリケーション30の一コンポーネントは、ロボット設計インターフェースをクライアントコンピュータのユーザーに公開することができ、サーバコンピュータ上で遂行されるアプリケーション30の別のコンポーネントは、ロボットワークフローを組み立てて、RPAスクリプト40を定式化/出力することができる。例えば、デバイスは、クライアントコンピュータ上で遂行されるウェブブラウザを介してロボット設計インターフェースにアクセスすることができ、クライアントコンピュータで受信されたユーザー入力を処理するソフトウェアがサーバコンピュータ上で実際に遂行される。
【0032】
一旦定式化されると、スクリプト40は、オーケストレータ14によってさらに制御および調整されることができるロボット12a-c(
図1)のセットによって遂行されてもよい。ロボット12a-cおよびオーケストレータ14は、それぞれ、同じ物理マシン上で実行されてもされなくてもよい複数のコンピュータプログラムを含んでもよい。ロボット12a-cおよびオーケストレータ14の例示的な市販の実施形態は、それぞれ、UiPath Robot(登録商標)およびUiPath Orchetrator(登録商標)を含む。ロボット12a-cのタイプは、アテンディッドロボット、アンアテンディッドロボット、開発ロボット(アンアテンディッドロボットと同様であるが、開発および試験の目的で使用される)、および非生産ロボット(アテンディッドロボットと同様であるが、開発および試験の目的で使用される)を含むが、これらに限定されない。
【0033】
アテンディッドロボットは、ユーザーイベントおよび/またはコマンドによってトリガされ、同じコンピューティングシステム上で人間のオペレータと一緒に動作する。いくつかの実施形態では、アテンディッドロボットは、ロボットトレイまたはコマンドプロンプトからのみ起動されることができ、したがって、例えば、オーケストレータ14から制御されることはできず、ロックされた画面の下で実行することはできない。アンアテンディッドロボットは、リモート仮想環境で無人で実行することができ、リモート遂行、監視、スケジューリング、および作業キューのサポートの提供を担当することができる。
【0034】
オーケストレータ14は、プロビジョニング、デプロイメント、コンフィギュレーション、キューイング、監視、ロギング、および/またはロボット12a-cへの相互接続の提供を含む様々な機能を有することができる。プロビジョニングは、ロボット12a-cとオーケストレータ14との間の接続を形成および維持することを含むことができる。デプロイメントは、遂行のためにロボット12a-cにソフトウェア(例えば、RPAスクリプト40)を確実に正しく配信することを含むことができる。コンフィギュレーションは、ロボット環境およびワークフロー構成の維持および送達を含むことができる。キューイングは、ジョブキューおよびキューアイテムの管理を提供することを含むことができる。監視は、ロボット状態の追跡を保持し、ユーザー権限を維持することを含むことができる。ロギングは、データベースおよび/または別の記憶機構(例えば、QL、Elaticearch(登録商標)、Redi(登録商標))へのログの記憶およびインデックス付けを含むことができる。オーケストレータ14は、サードパーティソリューションおよび/またはアプリケーションのための通信の集中ポイントとしてさらに機能することができる。
【0035】
図2は、本発明のいくつかの実施形態にかかるロボット12およびオーケストレータ14の例示的なコンポーネントを示している。例示的なRPAロボットは、Microoft,Inc.のWindows(登録商標)ワークフローファウンデーションアプリケーションプログラミングインターフェースを使用して構築される。ロボット12は、エグゼキュータ22のセットおよびRPAエージェント24を備えることができる。ロボットエグゼキュータ22は、ビジネスプロセスを実行する人間のオペレータの動作を模倣する一連のアクティビティを示すRPAスクリプト40を受信し、それぞれのクライアントマシン上でそれぞれの一連のアクティビティを実際に実行するように構成される。いくつかの実施形態では、ロボットエグゼキュータ22は、RPAスクリプト40を、それぞれのスクリプトに記載された操作を実行するためのプロセッサ命令を含むランタイムパッケージに変換するように構成されたインタプリタ(例えば、ジャストインタイムインタプリタまたはコンパイラ)を備える。したがって、スクリプト40を実行することは、エグゼキュータ22がRPAスクリプト40を変換し、それぞれのホストマシンのプロセッサに、結果として得られたランタイムパッケージをメモリにロードし、遂行中のランタイムパッケージを起動するように命令することを含むことができる。
【0036】
RPAエージェント24は、ロボットエグゼキュータ22の操作を管理することができる。例えば、RPAエージェント24は、人間のオペレータからの入力にしたがって、および/またはスケジュールにしたがって、ロボットエグゼキュータ22による遂行のためのタスク/スクリプトを選択することができる。エージェント24は、ジョブを開始および停止し、エグゼキュータ22の様々な操作パラメータを構成することができる。ロボット12が複数のエグゼキュータ22を含む場合、エージェント24は、それらのアクティビティおよび/またはプロセス間通信を調整することができる。RPAエージェント24は、RPAロボット12とオーケストレータ14および/または他のエンティティとの間の通信をさらに管理することができる。
【0037】
Windows(登録商標)環境で遂行するいくつかの実施形態では、ロボット12は、デフォルトでMicrooft Windows(登録商標)サービスコントロールマネージャ(CM)管理サービスをインストールする。その結果、そのようなロボットは、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開き、Windows(登録商標)サービスのプロセッサ特権を有することができる。例えば、コンソールアプリケーションは、CM管理ロボットによって起動されてもよい。いくつかの実施形態では、ロボット12は、各ロボットがその下にインストールされているユーザーと同じ権利を有するような、プロセッサ特権の任意のレベル(ユーザーモード、リング3)でインストールされることができる。例えば、そのようなロボットは、それぞれのユーザーが可能な任意のアプリケーションを起動することができる。同時に実行される複数のインタラクティブなセッション(例えば、Windows(登録商標)サーバ2012)をサポートするコンピューティングシステムでは、複数のロボットは、それぞれが異なるユーザー名を使用して別々のWindows(登録商標)セッションにおいて、同時に実行されてもよい。
【0038】
いくつかの実施形態では、ロボット12およびオーケストレータ14は、クライアント-サーバ構成で遂行することができる。クライアント側、サーバ側、またはその双方は、本発明の範囲から逸脱することなく、任意の所望の数のコンピューティングシステム(例えば、物理マシンまたは仮想マシン)を含むことができることに留意されたい。そのような構成では、エグゼキュータ22およびRPAエージェント24を含むロボット12は、クライアント側で遂行することができる。ロボット12は、いくつかのジョブ/ワークフローを同時に実行することができる。RPAエージェント24(例えば、Windows(登録商標)サービス)は、エグゼキュータ22の単一のクライアント側の接点として機能することができる。エージェント24は、ロボット12とオーケストレータ14との間の通信をさらに管理することができる。いくつかの実施形態では、通信は、オーケストレータ14へのWebocketチャネルを開くことができるエージェント24によって開始される。エージェント24は、その後、チャネルを使用して、各エグゼキュータ22の状態に関する通知を、例えば心拍信号としてオーケストレータ14に送信することができる。次に、オーケストレータ14は、チャネルを使用して、承認、ジョブ要求、およびRPAスクリプト40などの他のデータをロボット12に送信することができる。
【0039】
オーケストレータ14は、場合によっては複数の物理マシンおよび/または仮想マシンにわたって分散されたサーバ側で遂行することができる。そのような一実施形態では、オーケストレータ14は、ウェブアプリケーションであってもよいオーケストレータユーザーインターフェース(UI)17と、サービスモジュール19のセットとを含んでもよい。サービスモジュール19は、一組のオープンデータプロトコル(OData)レプリゼンテーショナルステートトランスファ(RET)アプリケーションプログラミングインターフェースAPI)エンドポイント、および一組のサービスAPI/ビジネスロジックをさらに含むことができる。ユーザーは、オーケストレータUI17を介して(例えば、ブラウザ上で専用オーケストレータインターフェースを開くことによって)オーケストレータ14とインタラクションして、例えば、ロボット12上でのジョブの開始、ロボットグループ/プールの作成、ロボットへの割り当て、キューへの/キューからのデータの追加/削除、無人で実行するジョブのスケジューリング、ロボットまたはワークフローごとのログの分析などを含むことができる様々な動作を実行するようにオーケストレータ14に命令することができる。オーケストレータUI17は、ハイパーテキストマークアップ言語(HTML)、Javacript(J)、または当該技術分野で知られている他のデータフォーマットを使用することができる。
【0040】
オーケストレータ14は、サービスAPI/ビジネスロジックを選択的に呼び出すことによって、ユーザーによって要求された動作を実行することができる。さらに、オーケストレータ14は、RET APIエンドポイントを使用してロボット12と通信することができる。RET APIは、コンフィギュレーション、ロギング、監視、およびキューイング機能を含むことができる。構成エンドポイントは、アプリケーションユーザー、権限、ロボット、アセット、リリースなどを定義および構成するために使用されることができる。ロギングRETエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、および他の環境固有の情報などの様々な情報をログに記録するために使用されることができる。デプロイメントRETエンドポイントは、遂行されるべきRPAスクリプト40のバージョンを問い合わせるためにロボットによって使用されることができる。RETエンドポイントをキューイングすることは、キューにデータを追加すること、キューからトランザクションを取得すること、トランザクションの状態を設定することなど、キューおよびキューアイテム管理を担当することができる。RETエンドポイントを監視することは、オーケストレータ14およびRPAエージェント24のウェブアプリケーションコンポーネントを監視することができる。
【0041】
いくつかの実施形態では、RPA環境10(
図1)は、RPAデータベース18に接続されたデータベースサーバ16をさらに備える。サーバ16がクラウドコンピューティングプラットフォーム上にプロビジョニングされる実施形態では、サーバ16は、データベースサービスとして、例えば、一組のデータベースコネクタを有するクライアントとして具現化されてもよい。データベースサーバ16は、データベース18に/データベースからRPA環境10に関連するデータを選択的に記憶および/または取得するように構成される。そのようなデータは、様々なロボット12a-cの構成パラメータ、ロボットプール、ならびに様々なロボットによって実行されるワークフローを特徴付けるデータ、およびユーザー、役割、スケジュール、キューなどを特徴付けるデータを含むことができる。データベースサーバ16によって記憶および/または取得されるデータの別の例示的なカテゴリは、各遂行中のロボットの現在の状態を特徴付けるデータを含む。さらに別の例示的なカテゴリのデータは、遂行中に様々なロボットによって記録されたメッセージを含む。データベースサーバ16およびデータベース18は、とりわけ、構造化照会言語(QL)、Elaticearch(登録商標)、およびRedi(登録商標)などの当該技術分野で知られている任意のデータ記憶プロトコルおよびフォーマットを使用することができる。いくつかの実施形態では、データは、例えばRETエンドポイントのロギングを介して、オーケストレータ14によって収集および管理される。オーケストレータ14は、構造化されたクエリをデータベースサーバ16にさらに発行することができる。
【0042】
いくつかの実施形態では、RPA環境10(
図1)は、環境10の様々なメンバを相互接続する通信チャネル/リンク15a-eをさらに備える。そのようなリンクは、例えば、仮想ネットワークリンク、仮想プライベートネットワーク(VPN)、またはエンドツーエンドトンネルとして、当該技術分野で知られている任意の方法にしたがって実装されることができる。いくつかの実施形態は、リンク15a-eの一部または全部を循環するデータをさらに暗号化する。
【0043】
当業者は、RPA環境10の様々なコンポーネントが別個のホストコンピュータシステム(物理機器および/または仮想マシン)上で実装および/または遂行することができることを理解するであろう。
図3は、本発明のいくつかの実施形態にかかる様々なそのようなRPAホストシステム20a-eを示している。各ホストシステム20a-eは、少なくともハードウェアプロセッサと、プロセッサ命令および/またはデータを記憶するためのメモリユニットとを有するコンピューティングシステム(個々のコンピューティング機器または相互接続されたコンピュータのセット)を表す。例示的なRPAホスト20a-20cは、とりわけ、企業メインフレームコンピュータ、パーソナルコンピュータ、ラップトップおよびタブレットコンピュータ、モバイル通信デバイス(例えば、スマートフォン)、および電子書籍リーダを含む。項目20d-eとして示されている他の例示的なRPAホストは、プラットフォーム固有のプロトコルにしたがって集中管理される複数の相互接続されたサーバコンピュータシステムを備えるクラウドコンピューティングプラットフォームを含む。クライアントは、プラットフォーム固有のインターフェース/ソフトウェア層/ライブラリ(例えば、ソフトウェア開発キット-DK、プラグインなど)および/またはプラットフォーム固有のコマンド構文を使用して、そのようなクラウドコンピューティングプラットフォームとインタラクションすることができる。例示的なプラットフォーム固有のインターフェースは、とりわけ、Azure(登録商標)DKおよびAW(登録商標)DKを含む。RPAホスト20a-eは、インターネットなどの通信ネットワーク13によって通信可能に結合されてもよい。
【0044】
図4は、本発明のいくつかの実施形態にかかる、RPAホストシステム20上で遂行される例示的なソフトウェアコンポーネントを示している。ホストシステム20は、一般に、
図3に示すRPAホストシステムのいずれかを表す。いくつかの実施形態では、RPAロボット12の他に、RPAホスト20は、オペレーティングシステム(O)32およびRPAターゲットアプリケーション34のインスタンス、すなわち、ロボット12による自動化を目標とするソフトウェアアプリケーションを遂行する。ハードウェア仮想化技術を採用するいくつかの実施形態では、図示のコンポーネントの一部または全てが仮想マシン(VM)内で遂行されてもよい。
【0045】
O32は、アプリケーション34とホスト20のハードウェアとの間をインターフェースするソフトウェア層を備える、とりわけ、Microoft Windows(登録商標)、MacO(登録商標)、Linux(登録商標)、iO(登録商標)、またはAndroid(登録商標)などの任意の広く利用可能なオペレーティングシステムを備えることができる。RPAターゲットアプリケーション34は、一般に、タスクを実行するために人間のオペレータによって使用される任意のコンピュータプログラムを表す。例示的なアプリケーション34は、とりわけ、ワードプロセッサ、スプレッドシートアプリケーション、グラフィックアプリケーション、ブラウザ、ソーシャルメディアアプリケーション、ゲームアプリケーション、および電子通信アプリケーションを含む。
【0046】
いくつかの実施形態では、ロボット12は、それぞれのホスト上で遂行されるドライバ36のセットとインターフェースすることによってユーザーインターフェース自動化アクティビティを実行する。ドライバ36は、一般に、画面上でカーソルを移動させること、マウス、キーボード、および/またはタッチスクリーンイベントを登録および/または遂行すること、ハンドヘルドデバイスの現在の姿勢/向きを検出すること、現在の加速度計読み取り値を検出すること、スマートフォンカメラで写真を撮ることなどの低レベルの操作を実行するソフトウェアモジュールを表す。いくつかのそのようなドライバ36は、オペレーティングシステム32の一部を形成する。他のものは、AP(登録商標)、Citrix(登録商標)仮想化ソフトウェア、Excel(登録商標)などの複雑なターゲットアプリケーション34とのユーザーのインタラクションの様々なアプリケーション固有の態様を実装することができ、そのようなドライバ36は、例えば、とりわけ、ブラウザドライバ、仮想化ドライバ、およびエンタープライズアプリケーションドライバを含むことができる。他の例示的なドライバ36は、Microoft(登録商標)WinAppDriver、Apple,Inc.からのXCTetドライバ、およびGoogle,Inc.からのUI Automatorドライバを含む。
【0047】
RPAターゲットアプリケーション34は、通常、ユーザーインターフェース(UI)を公開するように構成される。ユーザーインターフェースは、人間とマシンとのインタラクションを可能にするコンピュータインターフェース、すなわち、ユーザー入力を受け取り、それぞれの入力に応答するように構成されたインターフェースである。ユーザーインターフェースの一般的な例は、グラフィカルユーザーインターフェース(GUI)として知られており、ユーザーに表示される視覚要素のセットを介して人間とマシンとのインタラクションを可能にする。
図5は、本発明のいくつかの実施形態にかかるそのような例示的なUI38を示している。例示的なUI38は、例示的なウィンドウ44a-bのセットと、メニューインジケータ42a、アイコン42b、ボタン42c、およびテキスト項目42dを含む例示的なUI要素のセットとを有する。他の例示的なUI要素は、とりわけ、ウィンドウ、ラベル、フォーム、ウィジェット、個別フォームフィールド、トグル、リンク(例えば、ハイパーリンク、ハイパーテキスト、またはユニフォームリソース識別子)、およびスプレッドシートセルを含む。UI要素は、情報を表示し、入力(テキスト、マウスイベントなど)を受信し、および/またはソフトウェアおよび/またはそれぞれのコンピュータシステムの機能を制御することができる。
【0048】
オペレーティングシステム32は、様々なUI要素のサイズ、位置、および色などのUI38の様々な特性を指定する内部データ構造にしたがってUI38をレンダリングおよび管理する。典型的なUIデータ構造は、それぞれが複数の属性を有するオブジェクトの階層を含む。例は、とりわけ、GUIツリーおよびDOMモデルを含む。したがって、各UI要素は、UI仕様の属性値ペアのサブセットによって表されてもよい。UI仕様のいくつかの属性は、例えば、特定の要素がスクロール可能であるかどうかを示すことができる(以下の詳細を参照)。
【0049】
いくつかのUI要素は、それらに作用すること(例えば、クリックボタン42c)が挙動/反応をトリガするという意味で応答する。そのような挙動/反応は、典型的には、それぞれの要素または要素のグループに特有である。例えば、aveボタンとしてクリックすると、印刷ボタンをクリックするのとは異なる効果が生じる。同じキーボードショートカット(例えば、Ctrl-G)は、1つのウィンドウ/アプリケーションで遂行されると1つの効果を有することができ、別のウィンドウ/アプリケーションで遂行されると全く異なる効果を有することができる。そのため、操作/動作/アクティビティは同じであるが(クリックを遂行すること、キーボードキーの組み合わせを押すこと、一連の文字を書き込むことなど)、それぞれの動作の結果は、それぞれの操作のオペランドに実質的に依存することができる。オペランドは、本明細書では、クリックまたはキーボードイベントなどの現在のアクティビティによって作用されるUI要素として定義されるか、そうでなければ、それぞれのユーザー入力を受信するために選択されたUI要素として定義される。「オペランド」および「ターゲット」という用語は、本明細書では互換的に使用される。
【0050】
いくつかのユーザーインターフェースは、特定の種類のコンテンツを表示するための専用のコンテナを有する。本明細書におけるUIコンテナは、例えばGUIツリーの別個の分岐として、それぞれのUIのデータ仕様において区別的に識別される、UIの特定の部分/領域を示す。コンテナの例は、とりわけ、ウィンドウ、フレーム、メニューバー/パネル、および通知領域を含む。いくつかのコンテナは、特定のタイプのコンテンツを表示するために予約されてもよい。例えば、例示的なブラウザUIは、URLを受信するためのフィールドを含むメニューを表示するための1つのコンテナと、HTML文書のコンテンツをレンダリングするための別個のコンテナ/ウィンドウとを有することができる。例示的なムービープレーヤUIは、ビデオコンテンツを表示するために予約された1つのコンテナと、音量を調整し、サブタイトルを構成するなどのための制御セットを表示するための別のコンテナとを有することができる。
図5は、テキスト文書(テキスト項目54aとして示される)の少なくとも一部を表示するように構成された例示的なコンテナ42dを示している。以下にさらに説明するように、いくつかのコンテナは、スクロール可能であってもよい。
【0051】
RPA設計アプリケーション30のいくつかの実施形態は、要素IDを各ターゲットUI要素に付加し、これにより、ロボット12が実行時に、すなわち、ターゲットUIのランタイムインスタンス内でターゲットを識別することができる。要素IDは、セレクタとしても当該技術分野で知られているので、「セレクタ」および「要素ID」という用語は、本明細書では互換的に使用される。いくつかの実施形態では、要素IDは、インターフェース38の複数のUI要素の中のそれぞれのUI要素を選択的に識別するデータ構造を含む。そのような一例では、要素IDは、それぞれのUI要素の様々な特徴を符号化する属性値ペアの選択されたサブセットを含む。いくつかの実施形態では、属性値ペアのそれぞれのセットは、UI38のオブジェクト階層内のそれぞれのUI要素の位置を示す。例えば、セレクタは、それぞれのUI要素が特定のUIウィンドウ内に表示される特定のフォームのフォームフィールドであることを示すことができる。セレクタに含まれる他の特徴は、それぞれのUI要素の画像、それぞれのUI要素の上に表示されるテキストなどを含むことができる。
【0052】
図6は、スプレッドシートの一部を現在表示している例示的なユーザーインターフェース38aを示しており、ターゲットUI要素42は、それぞれのスプレッドシートの特定のセルを含む。例示的な要素ID/セレクタ50は、例えばGoogle Chrome(登録商標)ブラウザウィンドウによって公開されたテーブル内に位置するテキスト「MP3-プレーヤ」 を表示するセルとして、UI要素42を特徴付ける複数の属性値ペアを含む。例示的なセレクタ50は、タグのセットを使用してXMLのバージョンで定式化されるが、この態様は限定を意味するものではない。代替の実施形態は、とりわけ、例えばJONなど、当該技術分野で知られている任意の符号化を使用することができる。
【0053】
セレクタ50は、RPAスクリプト40にそれぞれのセレクタの符号化を含めることによって設計時に指定されることができる。実行時において、ロボット12は、セレクタ50にしたがって、および場合によってはターゲットの近くに位置する別のUI要素などの他の情報にしたがって、UI38のランタイムインスタンス内でターゲット42のランタイムインスタンスを識別しようと試みることができる。試みは、様々な理由で失敗する可能性がある。例えば、ターゲットUI要素の特徴的な特徴のいくつかは、設計時と実行時との間で変更されている場合がある。他の状況では、ターゲット文書が大きすぎて一度にUI38内に収まらない可能性があるため、ターゲットUI要素は現在見えない可能性がある。そのような状況に対処するために、ロボット12のいくつかの実施形態は、ターゲットを検索しながらUI38のランタイムインスタンスの内容を自動的にスクロールする。
【0054】
大きな文書(例えば、スプレッドシート、ウェブページ)の表示およびユーザーインタラクションを容易にするために、いくつかのユーザーインターフェースは、コンテンツスクロール機構を実装し、それぞれのUIは、いつでも現在の文書の一部のみを表示することができるが、ユーザーがそれぞれの文書をスクロールすることを可能にするスクロールコントロールのセットも公開させる。ここでのスクロールは、それぞれのUI(例えば、それぞれのコンテナ)を現在の文書のある部分の表示から別の部分の表示に切り替えることを意味する。スクロールの典型的な例は、UIの現在のコンテンツを指定された方向(上下左右)に移動させ、それによって新たなコンテンツを徐々に明らかにすることを含む。電子書籍リーダインターフェースで遭遇するスクロールの別の例は、書籍の次のページに進むことを含む。ウェブブラウジングに特有のさらに別の例は、現在表示されているウェブページの下部へのユーザーのスクロールに応答して、ウェブサーバから新たなコンテンツをフェッチすることを含む。
【0055】
本明細書におけるスクロールコントロールは、アクティブ化されると、それぞれのインターフェースによって現在表示されているコンテンツのスクロールを引き起こすデバイス/ウィジェットを示す。いくつかのスクロールコントロールは、ボタン、アイコン、またはそれぞれのユーザーインターフェースの特定の領域などのUI要素を含む。そのようなスクロールコントロールは、クリック、タップ、または他の方法でそれぞれのUI要素に作用することによって起動されることができる。他の例示的なスクロールコントロールは、特定のUI要素に接続されていないハードウェアイベントを含む。例えば、キーボードの矢印キーを押し、マウスのスクロールホイールを回転させることは、様々なユーザーインターフェースでスクロールを引き起こす。スクロールを引き起こすハードウェアイベントの他の例は、タッチスクリーンまたはトラックパッドを横切るスワイプなど、何らかのハンドジェスチャによってトリガされるイベントを含む。スクロールコントロールは、インターフェース固有、ハードウェア固有、および/またはアプリケーション固有とすることができる。例えば、一部のスクロールコントロールは、特定のデバイス(例えば、タッチスクリーンを備えたハンドヘルドデバイス)でのみアクティブにすることができる。さらに、スプレッドシートの表示を操作するために使用されるスクロールコントロールは、ブラウザインターフェースに実装されたスクロールコントロールとは異なることができる。
【0056】
図7-8-9-10は、本発明のいくつかの実施形態にかかるスクロールコントロールを公開させるユーザーインターフェースの様々な例を示している。様々なスクロールコントロールの視覚的外観および/または配置は、例示目的のためにのみ提供され、本発明の範囲を限定することを意味しない。
【0057】
図7の例示的なUI38bは、専用コンテナ54b内のスプレッドシートの一部を表示する。コンテナ54bの例示的なスクロールコントロール55a-bのセットは、所定の方向にドラッグされると、それぞれの方向にスクロールさせるスクロールバー(親指、ハンドル、またはグリップとしても当該技術分野で知られている)を備える。UIがスプレッドシートの一部を現在表示している場合、そのようなスクロールは、スプレッドシートの別の部分を表示する。
【0058】
図8cの例示的なユーザーインターフェース38cは、HTML文書をレンダリングするためのコンテナ54cを備えるウェブブラウザインターフェースを含む。
図8は、ウェブストアで販売される製品を列挙するウェブページの一部を現在表示しているコンテナ54cを示している。コンテナ54cの例示的なナビゲーションスクロールコントロール55c-d-eのセットは、例えば製品のリストの次の部分に進む(コントロール55e)、またはリストの特定のセクションにジャンプする(コントロール55d)など、それぞれのウェブページをスクロールする様々な方法を可能にする。いくつかの実施形態では、ナビゲーションスクロールコントロールを起動することにより、UI38bに、それぞれのウェブサーバから新たなコンテンツを能動的にフェッチさせることができる。あるいは、各コンテンツは、プリフェッチされてもよい。図示のスクロールコントロールは、ウェブ設計において既知の任意の形態をとることができる。1つの代替例では、製品のリストは、ライダまたはカルーセル設計を使用して提示されてもよく、それにより、ユーザーは、タッチスクリーン上で左または右にスワイプすることによってリストをスクロールすることができる。別の例では、コントロール55c-d-eは、通常は隠されてもよく、UI38cの特定の領域上でマウスをホバーすることによって明らかにされてもよい。
【0059】
図9は、専用コンテナ54d内に書籍のページを現在表示している電子書籍リーダインターフェースを備えるさらに別の例示的なUI38dを示している。コンテナ54dの例示的なページめくりスクロールコントロール55f-gのセットは、ユーザーが書籍をスクロールして、例えば次のページに進むことを可能にする。各スクロールコントロール55f-gは、UI要素、例えばタップされるとスクロールを引き起こすことができるUI38dの特定の領域を含むことができる。いくつかのインターフェースは、ページめくりコントロール55f-gを非表示にし、マウスカーソルがそれぞれの領域上にホバーしたときにのみ表示する。代替的なページめくりスクロールコントロールは、画面上のどこかをスワイプするなどのハンドジェスチャによってトリガされるハードウェアイベントを含むことができる。
【0060】
図10は、例えば、データ項目の個々の属性が個々のツリーブランチ(当該技術分野ではノードとしても知られている)を表すことができるツリーとして階層的に編成された情報を表示するように構成された別の例示的なUI38eを示している。一般的な例は、ドロップダウンリストまたはメニューを含む。本明細書では折り畳み可能と見なされるいくつかのノード、例えば
図10のノード52aおよび52cは、それ自体がサブノードを有してもよい。例示的なノード52bなどの他のノードは、折り畳み不可能であり、サブノードを有さず、ツリーのエンドノード(葉)に直感的に対応する。いくつかの実施形態では、コンテナ54eは、コンテナ54e内の情報の選択的表示を制御する展開/折り畳みスクロールコントロール55h-k-m-nのセットを表示する。図示の例は、現在、ノード52aのサブノードを示しているが、ノード52cのサブノードを示していない。ノード52aは、現在展開状態にあり、ノード52cは、折り畳まれた状態にあると言われている。いくつかの実施形態では、折り畳みスクロールコントロール55hを(例えば、それをクリックすることによって)アクティブ化すると、ノード52aが折り畳まれた状態に切り替わり、それによってそのそれぞれのサブノード(名、ミドルネームのイニシャル、および姓)が隠される。一方、展開スクロールコントロール55kをアクティブ化すると、ノード52cを展開状態に切り替え、以前にUI38e内に表示されなかった情報(例えば、第一子の名前および生年月日)を明らかにすることができる。いくつかの実施形態では、スクロールコントロール55mおよび55nは、それぞれの文書の全ての折り畳み可能なノードをそれぞれ展開して折り畳むように構成されることができる。
【0061】
本発明のいくつかの実施形態では、RPAロボット12は、以下に詳細に説明するように、ターゲットUI要素の検索において文書を自動的にスクロールするように構成されることができる。ロボットの挙動は、例えばRPA設計アプリケーション30によって公開されたロボット設計インターフェースによって、設計時に構成されることができる。
【0062】
図11は、本発明のいくつかの実施形態にかかる、RPA設計アプリケーション30によって公開された例示的なロボット設計インターフェース60を示している。インターフェース60は、ユーザーが、コーディング自体ではなく、直感的な視覚ツールのセットを使用することによってRPAロボット12をプログラムすることを可能にするように構成されることができる。例えば、インターフェース60は、ユーザーが、順次組み立てられた個々のビルディングブロックのようなものからロボットを構築することを可能にすることができる。そのようなビルディングブロックは、RPAターゲットアプリケーション34のインスタンスを開くこと、アプリケーション34のUI要素をクリックすること、フォームフィールドを記入することなどの様々なアクティビティを含むことができる。
【0063】
図11に示す一例では、ロボット設計インターフェース60は、とりわけ、ロボットプロジェクトを開く、保存する、および管理すること、ロボット12によって実行されるべき動作のセットを記録すること、およびロボット12を遂行することなどの動作を実行するための任意のメニュー項目を含むメインメニュー/リボン62を備える。ロボット設計インターフェース60は、ソフトウェアロボットを構築するための複数の利用可能なアクティビティをリスト化するアクティビティメニュー64をさらに公開させることができる。便宜上、アクティビティメニュー64は、サブメニューの階層に編成されてもよい。
図11の例では、利用可能なアクティビティは、ターゲットアプリケーションのタイプにしたがってサブメニューに編成される(例えば、Microoft Word(登録商標)とインタラクションするためのアクティビティは、サブメニューにまとめられ、ウェブブラウザとインタラクションするためのアクティビティは、別のサブメニューにまとめられる)。例えば、
図11は、スプレッドシートとインタラクションするためのアクティビティを含む、「Excel」とラベル付けされた展開アクティビティサブメニューを示している。そのような例示的なスプレッドシートアクティビティは、スプレッドシートセルからのデータの読み書き、行および列の挿入および/または削除、スプレッドシートの追加/削除/名前の変更、ピボットテーブルの作成、テーブルの並べ替え、フィルタリング、様々なスプレッドシートマクロの実行などを含むことができる。他のグループ化基準が使用されて、アクティビティメニュー64を編成することができ、例えば、アクティビティは、ターゲットオブジェクトのタイプにしたがってグループ化されることができ、ファイルのオープン、作成、削除、およびダウンロードなどのファイル関連アクティビティは、サブメニューに一緒にグループ化されることができ、画像関連アクティビティは、別のサブメニューにグループ化されることができる。
【0064】
いくつかの実施形態では、ロボット設計インターフェース60は、それぞれのアクティビティの所望の実行順序にしたがって順番に配置された既に選択されたロボットアクティビティのセットの視覚的表現を含むワークフロー66を表示するように構成されたワークフロー領域をさらに含む。
図11の例では、個々のアクティビティは、コンピュータフローチャートのように矢印で接続されたアクティビティコンテナ70-a-cによって表される。いくつかの実施形態では、ユーザーは、それぞれのアクティビティコンテナ70a-c内をクリックすることによって個々のアクティビティにアクセスすることができる。そのようなクリックの検出に応答して、いくつかの実施形態は、以下にさらに詳述するように、ユーザーがそれぞれのアクティビティの様々な態様を構成することを可能にするアクティビティ構成インターフェースを公開させることができる。
【0065】
図12は、本発明のいくつかの実施形態にかかるRPA設計アプリケーション30によって実行される例示的な一連のステップを示している。ロボット設計インターフェース60を公開することに応答して、いくつかの実施形態は、ターゲットアプリケーションを示すユーザー入力を受信することができる。次いで、ステップ104は、それぞれのターゲットアプリケーションのインスタンスを開くことができ、これにより、ロボットがインタラクションするためのターゲットユーザーインターフェースを公開させる。それぞれのロボットがスプレッドシートセルからデータを読み取らなければならない一例では、ターゲットアプリケーションは、Microoft Excel(登録商標)のインスタンスを含むことができ、ターゲットUIは、ターゲットスプレッドシートの一部を現在表示しているExcel(登録商標)インターフェースを含むことができる。次いで、ロボットが遂行しなければならない各アクティビティについて、一連のステップ106~118が繰り返されることができる。
【0066】
ステップ106において、アプリケーション30は、アクティビティの選択を示すユーザー入力を受信することができる。例えば、ステップ106は、ユーザーが
図11のアクティビティメニュー64からアクティビティ(例えば、セル読み出し)を選択することを含んでもよい。いくつかの実施形態は、その後、それぞれのアクティビティに対応するアクティビティコンテナをワークフロー66に挿入してもよい。次いで、いくつかの実施形態は、ユーザーがそれぞれのアクティビティの様々なパラメータを構成することを可能にするアクティビティ構成インターフェースを公開させてもよい。そのようなパラメータは、一般にアクティビティ固有であり、それぞれのアクティビティのためのターゲットUI要素を含むことができる。スプレッドシートデータを読み取ることを含む例では、ターゲットUI要素は、ロボットが読み取らなければならないセルを含んでもよい。ステップ112において、RPA設計アプリケーション30は、それぞれのアクティビティの少なくとも1つのターゲットUI要素を定義するユーザー入力を受信することができる。
【0067】
ユーザーがターゲットUI要素を示すことを可能にするために、いくつかの実施形態は、ユーザーがターゲットUI要素を直接クリック/タップすることによってターゲットUI要素を示すことができるように、ターゲットUIを自動的に焦点に合わせる。いくつかの実施形態はまた、ユーザーがターゲットUIをより詳細に指定することを可能にするターゲット構成インターフェースを公開することができる。
図13は、そのようなターゲット構成インターフェース72の例を示しておりう、これは、様々なゾーン、例えばターゲットUIのツリービューを表示するための領域を有するウィンドウを備え、これにより、ユーザーは、選択されたターゲットUI要素をターゲットUIのツリー表現内のノードとして容易に視覚化することができる。ターゲット構成インターフェース72は、要素ID50をさらに表示することができ、ユーザーがそれぞれのターゲットUI要素を特徴付ける現在定義されているタグおよび/または属性値対を視覚化することを可能にする。いくつかの実施形態は、要素ID50にどの特性または属性を含めるかをユーザーが選択することを可能にするセレクタビルダペイン74をさらに含むことができる。
【0068】
ステップ114(
図12)において、RPA設計アプリケーション30は、ロボット12がランタイムターゲットを識別するために自動スクロールを使用すべきかどうかを示すユーザー入力を受信することができる。
図13に示すいくつかの実施形態では、インターフェース72は、ユーザーが自動スクロールを選択することを可能にするコントロール76を備える。いくつかの実施形態では、自動スクロールを使用するかどうかの選択は、例えば、アクティビティのタイプにしたがって、ターゲットUIのタイプにしたがって、ターゲットUI要素のタイプにしたがって、および/またはそれぞれのRPAホストのデバイスタイプにしたがって、設計時(アプリケーション30による)または実行時(ロボット12による)に自動的に行われてもよい。例えば、自動スクロールは、スプレッドシート操作(例えば、AP(登録商標)インターフェース)に対して自動的に有効にされ、ブラウザ関連のアクティビティに対して自動的に無効にされてもよい。別の例では、自動スクロールは、ロボット12がハンドヘルドデバイス(例えば、スマートフォン)上で遂行されるときに自動的に無効にされてもよい。
【0069】
いくつかの実施形態では、さらなるステップ116は、例えばXMLとして現在のアクティビティのコンピュータ可読仕様を定式化し、それをRPAスクリプト40に挿入することができる。フラグまたは任意の他の種類のコーディングデバイスは、それぞれのアクティビティに対して自動スクロールが有効にされているかどうかを示すことができる。いくつかの実施形態では、ステップ116は、RPAロボット12のための命令のセットを定式化することを含むことができ、前記命令は、それぞれのタイプのターゲットRPAアプリケーション34、ユーザーインターフェース、および/またはコンテンツにしたがって選択される。そのような実施形態は、自動スクロールのためのアルゴリズムが様々なRPAターゲットアプリケーション、ハードウェアプラットフォーム、およびコンテンツのタイプの間で異なることができるという観察に依存する。例えば、特定のコンテナが現在スクロール可能であるかどうかを示すUI属性は、あるタイプのUIごとに異なる場合がある(そのような属性の詳細は以下に示す)。そのような実施形態では、RPA設計アプリケーション30は、それぞれのターゲットUIおよびターゲット文書に適したスクロール戦略/アルゴリズムを自動的に選択し、それをロボット仕様(例えば、RPAスクリプト40)に挿入することができる。他の実施形態では、ロボット12は、複数のUIおよび/または文書タイプを自動的にスクロールする機能を含み、そのため、あるアルゴリズムまたは別の基準のセットを使用するという決定は、実行時にロボット12によって行われる。
【0070】
ワークフロー66がまだ完了していない場合、RPA設計アプリケーション30は、上述したステップ106に戻ることができる。そうでなければ、ステップ120は、ロボット12の仕様として含むRPAスクリプト40を出力することができる。次いで、スクリプト40は、スクリプトリポジトリ(例えば、
図1のRPAデータベース18)に送信されてもよく、および/またはRPAホストに配信されてもよい。
【0071】
図14は、本発明のいくつかの実施形態にかかる、実行時にロボット12によって実行される例示的な一連のステップを示している。所望のワークフローの仕様を含むRPAスクリプト40の受信に応答して、いくつかの実施形態は、ターゲットUIの時間インスタンスを公開する。ステップ152は、それぞれのRPAホスト上でMicrooft Excelなどのターゲットアプリケーションをインスタンス化することができる。別の例では、ステップ152は、ウェブブラウザのローカルインスタンスを介して文書にリモートアクセスすることを含むことができる。
【0072】
次に、それぞれのワークフローの各アクティビティについて、ステップ160で始まるシーケンスは、それぞれのアクティビティのターゲット/オペランドのランタイムインスタンスを検索することができる。ターゲット文書がその意図されたコンテナ内にその全体が収まらない場合、ランタイムターゲットを検索することは、以下に詳細に説明するように、自動スクロールを含むことができる。そのような実施形態では、ランタイムUIは、それぞれの文書の初期部分を表示することができる。次いで、ロボット12は、スクロールコントロールを自動的に起動し、それによってランタイムUIに文書の後続部分を表示させることができる。本明細書における「初期部分」という用語は、それぞれの文書の任意の部分を意味し、すなわち、必ずしも第1の部分、最上部分、または導入部分ではない。例えば、初期部分は、それぞれのロボットアクティビティの開始時に現在表示されている文書の部分を指すことができる。「後続部分」という用語は、一般に、スクロールに応答して見えるようにされたそれぞれの文書の任意の他の部分を示す。
【0073】
いくつかの実施形態では、ステップ160は、ランタイムUIによって現在表示されているコンテンツ内の候補UI要素を探すことを含み、候補は、設計時に定義されたターゲットの特性と少なくとも部分的に一致する。いくつかの実施形態は、ターゲットのセレクタ/要素IDにしたがって、および/または場合によってはターゲットの画像などの他の情報にしたがって、またはターゲットの近傍に表示される他のUI要素(アンカーとして知られることもある)にしたがって、ターゲットUIを識別する。検索アルゴリズムの詳細は、本明細書の範囲を超える。当業者は、ステップ160が当該技術分野で公知の任意の方法を含むことができることを理解するであろう。
【0074】
ステップ162は、ステップ160がランタイムターゲットの識別に成功したかどうかを判定することができる。
そうである場合、ステップ170において、ロボット12は、例えばターゲットスプレッドシートセルの内容を読み取る、ターゲットフォームフィールドを入力する、ターゲットボタンをクリックするなど、それぞれのRPAアクティビティを遂行することができる。しかしながら、ランタイムターゲットを識別しようとする試みは、例えば、ランタイムターゲットがそれぞれのインターフェース内で現在見えていないため、様々な理由で失敗する可能性がある。この状況は、ターゲットUIがいつでもそれぞれの文書の一部のみを表示することができる大きな文書を操作するときに生じることがある。ステップ160がターゲットUI要素の識別に失敗した場合、ステップ164において、ロボット12は、現在のアクティビティに対して自動スクロールが有効にされているかどうかを判定することができる。いくつかの実施形態では、現在のアクティビティに関連付けられたフラグは、自動スクロールが有効にされているかどうかを示すことができる。フラグは、ロボットデザイナがRPA設計アプリケーション30(例えば、
図13のコントロール76および上記の関連する説明を参照)によって公開された専用コントロール(例えば、チェックボックス)を起動したことに応答して、設計時に「オン」に設定されてもよい。代替の実施形態では、ロボット12は、現在のアクティビティのタイプ、ターゲットUI要素のタイプなどにしたがって、自動スクロールが可能であるかどうかを判定することができる。
【0075】
いくつかの実施形態では、ランタイムターゲットの検索が失敗し、自動スクロールがオフであるとき、ステップ168において、ロボット12は、遂行を中断し、ロボットが現在のアクティビティを実行することができなかったことおよび/またはランタイムターゲットを識別することができなかったことを伝達するエラーメッセージを出力することができる。
【0076】
自動スクロールが有効にされると、ステップ166は、例えば、それぞれのコンテナおよび/またはターゲットUIの特定の属性の現在の値にしたがって、ターゲット文書を表示するUIコンテナがスクロール可能であるかどうかを判定することができる。ほとんどのUIは、例えば、それぞれのUIの特定のウィンドウが現在スクロールバーを表示しているか否か、ブラウザインスタンスがページの下部へのユーザーのスクロールに応答して新たなコンテンツをフェッチするように現在構成されているか否かなどを示すそのようなスクロール指示属性を有する。それぞれの属性は、あるタイプのUIおよび/またはあるタイプのターゲットRPAアプリケーションから次のものまで異なることができるため、ステップ166は、アプリケーション固有の属性のセットの現在の値を検索することを含むことができる。
【0077】
そのような一例では、AP Fiori(登録商標)フレームワークのap.m.テーブルまたはap.m.リストクラスのメンバの成長属性の現在の値(真/偽)は、現在のリストまたはテーブルの最後の項目にスクロールするユーザーに応答して、それぞれのコンテナが現在より多くの項目をロードするように構成されているかどうかを示す。したがって、真の値は、それぞれのコンテナがスクロール可能であることを示すことができる。同じフレームワークからの他の例示的なスクロール指示属性は、firtViibleRowおよびviibleRowCountを含み、これらが使用されて、表の全ての行が現在表示されているか否か、または別の言い方をすれば、それぞれのコンテンツがスクロール可能か否かを判定することができる。別の例では、AP WinGUI(登録商標)ユーザーインターフェースのGUIツリークラスに属する要素のiFolderExpandable属性の現在値は、それぞれのノードが展開可能か否かを示す(例えば、
図10のノード52cを参照)。一方、iFolderExpandable属性の現在値は、各ノードが現在展開状態にあるか否かを示す(例えば、
図10のノード52aを参照)。
【0078】
代替の実施形態では、ロボット12は、それぞれのコンテナおよび/またはターゲットUIが現在スクロールコントロールを含むかどうかを判定するために他の手段を使用することができる。そうである場合、ステップ166は、それぞれのコンテナ/UIがスクロール可能であると結論付けることができる。ステップ166がいいえを返すと、ロボット12は、エラーメッセージを出力することができる(ステップ168)。
【0079】
さらなるステップ172は、それぞれのUIコンテナのコンテンツをスクロールするために実行可能な少なくとも1つのスクロールコントロールを識別することができる。いくつかの実施形態は、ユーザーインターフェースによって公開されるスクロールコントロールのタイプが、それぞれのUIのタイプまたはそれぞれのターゲットアプリケーション34のタイプに固有とすることができるという観察に依存している。例えば、電子書籍リーダインターフェースは、
図9に示すようなスクロールコントロールを有することができるが、スクロールバーを欠いていてもよい。さらに、プリアドシートアプリケーションは、
図10に示すようにノード展開スクロールコントロールを使用しなくてもよい。スクロールコントロールのタイプは、同じカテゴリのアプリケーションの個別のメンバ間、例えば異なるウェブブラウザ間でさえも異なることができる。上記を考慮して、いくつかの実施形態では、ステップ172は、RPAターゲットアプリケーションのタイプにしたがって選択された種類のスクロールコントロールを検索することを含むことができる。
【0080】
スクロールコントロールを検索する実際の戦略は異なっていてもよい。いくつかの実施形態では、ロボット12は、それぞれのUIコンテナのスクロール指示属性の現在の値にしたがってスクロールコントロールを識別することができる。例えば、AP Fiori(登録商標)フレームワークにしたがって実装されたインターフェースでは、増加するトリガテキスト属性の現在の値は、クリックされると項目のリストをスクロールするボタン上に現在表示されているテキストを与える。いくつかの実施形態は、それぞれのテキストを表示するボタンを検索し、それぞれのボタンをそれぞれのコンテナのスクロールコントロールとして識別することができる。
【0081】
他の実施形態は、ランタイムUIから候補UI要素を選択し、候補UI要素がスクロールコントロールとすることができるかどうかを判定する。候補UI要素は、例えばそれらが応答しているか否か(すなわち、それらが作用されたときに関連する挙動または応答を有するかどうか)に応じて、および/またはそれぞれのUIまたはコンテナ内のそれぞれのコントロールの位置に応じて、様々な基準にしたがって選択またはフィルタリングされてもよい。ウェブブラウジングインターフェースにおいて、スクロールコントロールを識別するための例示的な基準は、候補UI要素がハイパーリンクを含むかどうか、候補UI要素がインターフェースの特定の領域内に位置するかどうか(例えば、下部付近、側縁部付近など)、および、候補UI要素が表示された文書の特定のセクションの一部を形成するかどうか(例えば、ヘッダ、フッタ、メニュー、クラムなど)を含む。さらに他の基準は、候補UI要素の視覚的外観、例えば形状(例えば、候補UI要素が矢印のように見えるかどうか)、および候補UI要素によって表示されるテキストを含んでもよい。いくつかの実施形態は、候補UI要素によって表示されたテキストを、スクロールコントロールによって表示された共通ラベルの辞書(例えば、「さらに」、「次」、「以前」、「前」 など)と照合しようと試みることができる。
【0082】
いくつかの実施形態では、ロボット12は、人工知能技術を使用して、コンテナがスクロール可能であるかどうかを判定し、および/またはランタイムUIによって公開されるスクロールコントロールを識別することができる。そのような手法は、非常に多様なスクロールコントロールを有することが知られているウェブインターフェースに特に適することができる。いくつかの実施形態は、スクロール可能および/またはスクロール不可能なユーザーインターフェースの画像のコーパス上で人工ニューラルネットワークのセットを予め訓練し、訓練されたニューラルネットワークを展開して、
図8の項目55c-d-eなどのスクロールコントロールを自動的に識別することができる。ロボット12は、ランタイムUIの少なくとも一部を表示するクリーンとしての領域のスナップショットを取得し、画像セグメント化アルゴリズムを使用して、スクロールコントロールを示すことができるそれぞれの画像の領域を識別することができる。次いで、セグメント化された画像は、スクロールコントロール候補のセットを返すことができる訓練されたニューラルネットワークのセットに供給されることができる。ステップ172が画像解析に依存する実施形態では、ステップ172は、それぞれのUIに現在隠されているスクロールコントロールを表示させるためにターゲットUIの特定の領域にカーソルを自動的に移動させるためにドライバ36を使用するロボット12をさらに備えることができる。
【0083】
ステップ172がスクロールコントロールを識別することができなかった場合(ステップ174がいいえを返す)、いくつかの実施形態は、ステップ168に進み、エラーメッセージを発行することができる。ステップ172がターゲットUIによって公開された少なくとも1つのスクロールコントロールの識別に成功すると、ステップ176において、ロボット12は、ドライバ36を使用して、識別されたスクロールコントロールを自動的にアクティブ化することができ、したがって、ターゲットUIにそれぞれの文書の後続部分を表示させる。ステップ176は、タッチスクリーン上でハンドジェスチャを実行すること(例えば、スワイプ)、ロールバーとしてドラッグすること(例えば、
図7の項目55a-b)、ハイパーリンクをクリックすること(例えば、
図8の項目55e)、キーボードの矢印ボタンを押すことなどのユーザー動作を模倣することを含むことができる。表示された文書の後続部分を明らかにするターゲットUIに応答して、ロボット12は、上述したステップ160に戻って、現在のアクティビティのランタイムターゲットを識別する別の試みを実行することができる。
【0084】
図14は、ランタイムターゲットが見つかるまで、またはそれ以上スクロールすることができなくなるまで、文書を自動的にスクロールするように構成された本発明の実施形態を示している。換言すれば、
図14では、ターゲット要素の単一インスタンスとして識別されたときに自動スクロールが終了する。代替の実施形態は、大きな文書とのインタラクションを自動化すること、すなわち、特定の基準に一致する項目の複数のインスタンスを識別することにおいてしばしば生じる別の問題に対処することができる。売上スプレッドシートを処理することを含む例示的な使用事例のシナリオの一例では、ロボットは、所定のカテゴリ(例えば、携帯電話)内の全ての製品、所定の期間(例えば、先月)内に実行された全てのトランザクションなどを見つけなければならない。いくつかの実施形態では、ロボット12は、スプレッドシートの初期部分内でそれぞれの項目を検索し、次に、それぞれのコンテンツがもはやスクロールできなくなるまで、スプレッドシートの後続部分内で検索を継続するためにスクロール(例えば、
図14のステップ164-166-172-174-176のシーケンス)を試みることができる。したがって、現在のRPAアクティビティは、検索基準に一致する全ての項目に適用されることができる。
【0085】
図15は、本明細書に記載の方法のいくつかを遂行するようにプログラムされたコンピューティング機器80の例示的なハードウェア構成を示している。機器80は、
図3のRPAホストプラットフォーム20a-eのいずれかを表すことができる。図示の機器は、パーソナルコンピュータである。サーバ、携帯電話、タブレットコンピュータ、およびウェアラブルコンピューティングデバイスなどの他のコンピューティングデバイスは、僅かに異なる構成を有することができる。プロセッサ82は、信号および/またはデータのセットを用いて計算演算および/または論理演算を遂行するように構成された物理デバイス(例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路)を備える。そのような信号またはデータは、符号化され、例えばマシンコードなどのプロセッサ命令の形態でプロセッサ82に送達されることができる。プロセッサ82は、中央処理装置(CPU)および/またはグラフィックスプロセッシングユニット(GPU)のアレイを含むことができる。
【0086】
メモリユニット83は、操作を実行する過程でプロセッサ82によってアクセスまたは生成されるデータおよび/または命令符号化を記憶する揮発性コンピュータ可読媒体(例えば、ダイナミックランダムアクセスメモリ-DRAM)を備えることができる。入力デバイス84は、とりわけ、コンピュータキーボード、マウス、トラックパッド、およびマイクロフォンを含むことができ、ユーザーが機器80にデータおよび/または命令を導入することを可能にするそれぞれのハードウェアインターフェースおよび/またはアダプタを含む。出力デバイス85は、とりわけ、モニタおよびスピーカなどのディスプレイデバイス、ならびにそれぞれのコンピューティングデバイスがユーザーにデータを通信することを可能にするグラフィックカードなどのハードウェアインターフェース/アダプタを含むことができる。いくつかの実施形態では、入力および出力デバイス84-85は、共通のハードウェア(例えば、タッチスクリーン)を共有する。ストレージデバイス86は、ソフトウェア命令および/またはデータの不揮発性記憶、読み出し、および書き込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイスは、磁気および光ディスクおよびフラッシュメモリデバイス、ならびにCDおよび/またはDVDディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ87は、電子通信ネットワーク(例えば、
図3)および/または他のデバイス/コンピュータシステムに結合された物理リンクを介してデータを通信するための機械的、電気的、およびシグナリング回路を含む。アダプタ87は、様々な通信プロトコルを使用してデータを送信および/または受信するように構成されることができる。
【0087】
コントローラハブ90は、複数のシステムバス、周辺バス、および/またはチップセットバス、および/またはプロセッサ82と機器80の残りのハードウェアコンポーネントとの間の通信を可能にする他の全ての回路を一般的に表す。例えば、コントローラハブ90は、メモリコントローラ、入力/出力(I/O)コントローラ、および割り込みコントローラを備えることができる。ハードウェア製造業者に応じて、いくつかのそのようなコントローラは、単一の集積回路に組み込まれてもよく、および/またはプロセッサ82と統合されてもよい。別の例では、コントローラハブ90は、プロセッサ82をメモリ83に接続するノースブリッジ、および/またはプロセッサ82をデバイス84、85、86、および87に接続するサウスブリッジを備えてもよい。
【0088】
上記の例示的なシステムおよび方法は、そのようなアクティビティを、技術的にあまり関心のない開発者、または正式なプログラミングのバックグラウンドを欠く開発者にとってよりアクセスしやすく魅力的にすることによって、RPAロボットの設計/プログラミングを容易にする。
【0089】
現代のロボティックプロセスオートメーションは、スプレッドシート、電子メールのリスト、画像、およびUIウィンドウ内に一度に収まらない複雑なウェブページなどの大きな文書での作業を必要とすることがある。そのような文書とのインタラクションを自動化することは、特定の技術的課題を提起する。例えば、いくつかの従来のRPAロボットは、それぞれのUI要素が現在表示されていないときに現在のRPAアクティビティのターゲットを識別することができない場合がある。そのような欠点に対処するために、本発明のいくつかの実施形態は、自動スクロール機構を可能にし、RPAロボットは、文書の可視部分内でRPAターゲットを検索し、検索が失敗すると、ロボットは、それぞれのユーザーインターフェースのスクロールコントロールを自動的に作動させて、それぞれの文書の後続部分をビューに入れる。次いで、ロボットは、文書の新たに公開された部分内でRPAターゲットを検索し続けることができる。いくつかの実施形態では、RPAロボットは、ターゲットアプリケーションのタイプ(例えば、Microoft Excel(登録商標)、AP(登録商標)、ウェブブラウザなど)にしたがってスクロールコントロールを自動的に識別する。
【0090】
いくつかの従来のRPAロボットは、スクロールアクティビティを実行するように構成されてもよい。しかしながら、従来のRPAでは、ロボット開発者は、設計時にスクロールするようにロボットに明示的に指示し、および/またはスクロールコントロールを明示的に示すため、ロボットは、他の任意のUI要素と同様に実行時にそれぞれのコントロールを見つけようと試みることができる。しかしながら、そのようなロボットの設計は、典型的には、RPAロボットおよびユーザーインターフェースの内部動作の非常に高いレベル、すなわち、一般的なRPA開発者のレベルを超えると予想されるスキルレベルの理解を必要とする。従来のRPAの別の例では、ロボットは、人間のオペレータによって実行されたアクティビティの順序(スクロールを含むことができる)として記録し、実行時にそれぞれのシーケンスを再生することができる。しかしながら、そのような例では、ロボットは、人間のオペレータが設計時に作用したのと同じUI要素を単に見つける。換言すれば、実行時にロボットによって使用されるスクロールコントロールは、人間のオペレータの動作によって設計時に示された。
【0091】
そのような従来のRPAの例とは対照的に、本発明のいくつかの実施形態では、RPAロボットは、探しているUI要素が見つかったか否かに応じて、スクロールするか否かを自動的に決定するように構成される。ロボットは、設計時に開発者によって示される特定のスクロールコントロールを探すのとは対照的に、UIコンテナがスクロール可能であるかどうかを自動的に判定し、スクロールコントロールを自動検出するようにさらに構成されてもよい。いくつかの実施形態は、開発者からの明示的な指示なしに、スクロール戦略をインターフェースのタイプおよび/またはコンテンツのタイプに適合させることがさらに可能である。そのような技術的強化は、ロボットが設計時に予測されなかった状況に対処することをより可能にすることによって、目標インターフェースの設計および/または内容が設計時と実行時との間で変化した状況において実質的な利点を提供することができる。さらに、RPA技術のそのような改善は、開発者の肩からスクロールするように構成する負担を効果的に軽減し、これは、ロボット開発を実質的に促進し、したがって、非技術的な開発者またはプログラミングのバックグラウンドを欠いている開発者を含むより広い聴衆にそのようなアクティビティを開放することができる。
【0092】
いくつかの実施形態では、自動スクロールは、ロボット設計インターフェースの機能を使用して、設計時に任意にオンまたはオフに切り替えることができる。そのような実施形態は、自動スクロールが全ての状況において望ましくない可能性があるという観察に依存する。例えば、複雑なウェブページを解析する場合、自動スクロールは、予測できない理由で失敗する可能性があり、非生産的なランタイムエラーおよび時間のかかるデバッグにつながる可能性がある。デフォルトの自動スクロールが望ましくない場合がある別の例示的な使用事例は、一連のデータ操作を実行する際に人間のオペレータを支援するように構成されたアテンディッドロボットを含む。ロボットが人間のオペレータと並べて作業し、同じユーザーインターフェースとインタラクションすると、自動スクロールが誤って人間のオペレータの作業を妨げ、妨害する可能性がある。
【0093】
自動スクロールが望ましくない場合があるさらに別の例では、一連のアクティビティは、同じテーブル行の様々な列からデータを読み取ることができる。例えば、第1のRPAアクティビティは、それぞれの顧客の電話番号にしたがって顧客レコードを自動的に見つけることができる。次いで、第2のRPAアクティビティは、それぞれの顧客の名前を読み取ることができ、第3のRPAアクティビティは、それぞれの顧客の配送先を読み取ることができる。3つの連続するRPAアクティビティの全てが自動スクロールを使用することは、第1のアクティビティの実行が成功すると、それぞれの顧客レコード(例えば、テーブルの行)がビューに入り、そのため、第2および第3のアクティビティの目標は、UI内で既に見えているため、現実的ではない可能性がある。したがって、より良いRPA戦略は、第1のRPAアクティビティの自動スクロールを有効にし、第2および第3のRPAアクティビティの自動スクロールを無効にすることを含むことができる。
【0094】
そのような状況を考慮して、いくつかの実施形態は、個々のアクティビティの粒度で、自動スクロールを有効にするか否かの選択肢を開発者に与える。いくつかの実施形態では、自動スクロールは、ターゲット文書、RPAターゲットアプリケーションのタイプ、および/またはRPAアクティビティのタイプに応じて選択的に有効にすることができる。
【0095】
上記の実施形態が本発明の範囲から逸脱することなく多くの方法で変更されることができることは、当業者にとって明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲およびそれらの法的均等物によって決定されるべきである。
【外国語明細書】