IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ユーアイパス,インコーポレイテッドの特許一覧

特許7332845ユーザーインターフェース自動化における自動アンカー決定およびターゲットグラフィカル要素識別
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-16
(45)【発行日】2023-08-24
(54)【発明の名称】ユーザーインターフェース自動化における自動アンカー決定およびターゲットグラフィカル要素識別
(51)【国際特許分類】
   G06F 9/451 20180101AFI20230817BHJP
【FI】
G06F9/451
【請求項の数】 32
(21)【出願番号】P 2021577264
(86)(22)【出願日】2021-10-28
(65)【公表番号】
(43)【公表日】2023-01-31
(86)【国際出願番号】 US2021056919
(87)【国際公開番号】W WO2022108721
(87)【国際公開日】2022-05-27
【審査請求日】2022-03-17
(31)【優先権主張番号】17/100,146
(32)【優先日】2020-11-20
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】1 Vanderbilt Avenue, 60th Floor, New York, NY 10017, United States of America
(74)【代理人】
【識別番号】100180781
【弁理士】
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【弁理士】
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】コスミン ヴォイク
【審査官】▲はま▼中 信行
(56)【参考文献】
【文献】特開2020-187501(JP,A)
【文献】特開2009-022368(JP,A)
【文献】吉田 将明 MASAAKI YOSHIDA,基礎がよくわかる!ゼロからのRPA UiPath 超実践テクニック 第1版 ,第1版,株式会社オーム社 村上 和夫,180-191
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00 - 8/38
G06F 8/60 - 8/77
G06F 9/44 - 9/445
G06F 9/451
G06F 11/07
G06F 11/28 - 11/36
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、設計時に少なくともある信頼度をもって画像内のターゲットグラフィカル要素が識別され得るかどうかをチェックするステップと、
前記ターゲットが少なくとも前記信頼度をもって識別され得ない場合に、
前記ターゲットグラフィカル要素の近傍内の追加のアンカーを自動的に決定するステップと、
実行時に前記ターゲットグラフィカル要素を識別するのに使用するために、前記自動的に決定された追加のアンカーおよび前記ターゲットグラフィカル要素を格納するステップと、
を含む、コンピュータにより実施される方法。
【請求項2】
前記ターゲットグラフィカル要素の前記識別は、コンピュータビジョン(CV)と、前記ターゲットグラフィカル要素と前記自動的に決定された追加のアンカーのうちの少なくとも1つとの間の幾何学的関係と、の組み合わせを少なくとも部分的に使用して実行され、
前記幾何学的関係は、1つもしくは複数の線分長、1つもしくは複数の角度、またはその両方を含む、
請求項1に記載のコンピュータにより実施される方法。
【請求項3】
前記ターゲットグラフィカル要素のための一次アンカーを指定するステップと、
前記ターゲットグラフィカル要素と前記指定された一次アンカーとの間の関係が前記ターゲットグラフィカル要素を一意に識別しない場合にのみ、前記追加のアンカーを自動的に決定するステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項4】
前記一次アンカーの前記指定は自動的に実行される、請求項3に記載のコンピュータにより実施される方法。
【請求項5】
前記近傍は、前記ターゲットグラフィカル要素からの半径によって定義される、請求項1に記載のコンピュータにより実施される方法。
【請求項6】
実行時に、前記方法は、
前記ターゲットグラフィカル要素と、前記自動的に決定されたアンカーに一致する1つまたは複数の一致する可視アンカーと、を探索するステップと、
前記ターゲットグラフィカル要素を識別するために、前記1つまたは複数の一致する可視アンカーと前記ターゲットグラフィカル要素との間の幾何学的関係を使用するステップと、をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項7】
前記ターゲットグラフィカル要素の前記近傍内の前記自動的に決定されたアンカーが前記ターゲットグラフィカル要素の識別をもたらさない場合に、前記方法は、
前記近傍を拡張し、前記拡張された近傍内の1つまたは複数のアンカーを自動的に決定するステップをさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項8】
前記ターゲットグラフィカル要素が識別されない場合に、ユーザーに入力を促すステップをさらに含む、
請求項1に記載のコンピュータにより実施される方法。
【請求項9】
所定量より多くのホワイトスペースを有するか、または前記ターゲットグラフィカル要素とそれぞれのアンカー候補との間に所定量より多くのホワイトスペースがある前記アンカー候補は無視される、請求項1に記載のコンピュータにより実施される方法。
【請求項10】
前記自動的に決定されたアンカーのサブセットは、実行時に前記ターゲットグラフィカル要素を識別するために使用される、請求項1に記載のコンピュータにより実施される方法。
【請求項11】
実行時に、前記自動的に決定されたアンカーは、前記ターゲットグラフィカル要素が識別されるまで、または前記自動的に決定されたアンカーのすべてが前記ターゲットグラフィカル要素の識別に成功することなく試行されるまで、一度に1つずつ試行される、請求項1に記載のコンピュータにより実施される方法。
【請求項12】
実行時に、前記自動的に決定されたアンカーのサブセットは、前記画像内に見ることができる、請求項1に記載のコンピュータにより実施される方法。
【請求項13】
前記自動的に決定されたアンカーのうちの1つまたは複数は、前記ターゲットグラフィカル要素とは異なるアプリケーションウィンドウに位置する、請求項1に記載のコンピュータにより実施される方法。
【請求項14】
前記ターゲットグラフィカル要素のための一次アンカーを指定するステップと、
機械学習(ML)モデルを用いて、前記指定された一次アンカーを含むウィンドウを検出するステップと、
前記検出されたウィンドウ内の前記自動的に決定されたアンカーの一致する可視アンカーを識別するステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項15】
前記ターゲットグラフィカル要素に必須の一次アンカーを指定するステップと、
前記ターゲットグラフィカル要素を検出したとみなすために前記必須の一次アンカーの検出を要求するステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項16】
設計時のユーザーインターフェース(UI)自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定を実行するためのプログラムを格納する非一時的コンピュータ可読媒体であって、コンピュータプログラムは、少なくとも1つのプロセッサに、
設計時に少なくともある信頼度をもって画像内のターゲットグラフィカル要素が識別され得るかどうかをチェックさせ、
前記ターゲットが少なくとも前記信頼度をもって識別され得ない場合に、
前記ターゲットグラフィカル要素の近傍内の追加のアンカーを自動的に決定させ、
実行時に前記ターゲットグラフィカル要素を識別するのに使用するために、前記自動的に決定された追加のアンカーおよび前記ターゲットグラフィカル要素を格納させ、
前記近傍が前記ターゲットグラフィカル要素からの半径によって定義される、ように構成される、非一時的コンピュータ可読媒体。
【請求項17】
前記ターゲットグラフィカル要素の前記識別は、コンピュータビジョン(CV)と、前記ターゲットグラフィカル要素と前記自動的に決定された追加のアンカーのうちの少なくとも1つとの間の幾何学的関係と、の組み合わせを少なくとも部分的に使用して実行され、
前記幾何学的関係は、1つもしくは複数の線分長、1つもしくは複数の角度、またはその両方を含む、
請求項16に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記コンピュータプログラムは、前記少なくとも1つのプロセッサに、
前記ターゲットグラフィカル要素のための一次アンカーを指定させ、
前記ターゲットグラフィカル要素と前記指定された一次アンカーとの間の関係が前記ターゲットグラフィカル要素を一意に識別しない場合にのみ、前記追加のアンカーを自動的に決定させる、ようにさらに構成される、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記一次アンカーの前記指定は自動的に実行される、請求項18に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記ターゲットグラフィカル要素の前記近傍内の前記自動的に決定されたアンカーが前記ターゲットグラフィカル要素の識別をもたらさない場合に、前記コンピュータプログラムは、前記少なくとも1つのプロセッサに、
前記近傍を拡張し、前記拡張された近傍内の1つまたは複数のアンカーを自動的に決定させるようにさらに構成される、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項21】
所定量より多くのホワイトスペースを有するか、または前記ターゲットグラフィカル要素とそれぞれのアンカー候補との間に所定量より多くのホワイトスペースがある前記アンカー候補は無視される、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項22】
前記自動的に決定されたアンカーのうちの1つまたは複数は、前記ターゲットグラフィカル要素とは異なるアプリケーションウィンドウに位置する、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項23】
前記コンピュータプログラムは、前記少なくとも1つのプロセッサに、
前記ターゲットグラフィカル要素のための一次アンカーを指定させ、
機械学習(ML)モデルを用いて、前記指定された一次アンカーを含むウィンドウを検出させ、
前記検出されたウィンドウ内の前記自動的に決定されたアンカーの一致する可視アンカーを識別させる、ようにさらに構成される、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項24】
前記コンピュータプログラムは、前記少なくとも1つのプロセッサに、
前記ターゲットグラフィカル要素に必須の一次アンカーを指定させ、
前記ターゲットグラフィカル要素を検出したとみなすために前記必須の一次アンカーの検出を要求させる、ようにさらに構成される、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項25】
コンピューティングシステムであって、
実行時のユーザーインターフェース(UI)自動化においてターゲットグラフィカル要素識別のための自動アンカー決定を実行するためのコンピュータプログラム命令を格納するメモリと、
前記コンピュータプログラム命令を遂行するように構成された少なくとも1つのプロセッサと、を含み、前記コンピュータプログラム命令は、前記少なくとも1つのプロセッサに、
ターゲットグラフィカル要素と、前記ターゲットグラフィカル要素について以前に決定された自動的に決定されたアンカーに一致する1つまたは複数の可視アンカーと、を探索させ、
UIにおいて前記ターゲットグラフィカル要素を識別するために、前記1つまたは複数の一致する可視アンカーと前記ターゲットグラフィカル要素との間の幾何学的関係を使用させる、ように構成される、コンピューティングシステム。
【請求項26】
前記ターゲットグラフィカル要素の前記識別は、コンピュータビジョン(CV)と、前記ターゲットグラフィカル要素と前記1つまたは複数の一致する可視アンカーのうちの少なくとも1つとの間の幾何学的関係と、の組み合わせを少なくとも部分的に使用して実行され、
前記幾何学的関係は、1つもしくは複数の線分長、1つもしくは複数の角度、またはその両方を含む、
請求項25に記載のコンピューティングシステム。
【請求項27】
前記ターゲットグラフィカル要素に一次アンカーが指定されている場合に、前記コンピュータプログラム命令は、前記少なくとも1つのプロセッサに、
前記ターゲットグラフィカル要素と前記指定された一次アンカーとの間の関係が実行時に前記ターゲットグラフィカル要素を一意に識別しない場合に、前記自動的に決定されたアンカーと一致する前記1つまたは複数の可視アンカーを探索することのみをさせるようにさらに構成される、請求項25に記載のコンピューティングシステム。
【請求項28】
前記1つまたは複数の一致する可視アンカーの前記探索は、前記ターゲットグラフィカル要素の半径内で実行され、
前記ターゲットグラフィカル要素の前記半径内の前記1つまたは複数の一致する可視アンカーが前記ターゲットグラフィカル要素の識別をもたらさないか、または前記半径内に一致する可視アンカーが見つからない場合に、前記コンピュータプログラム命令は、前記少なくとも1つのプロセッサに、
前記半径を拡張させ、前記拡張した半径内の1つまたは複数の一致する可視アンカーを自動的に決定させるようにさらに構成される、
請求項25に記載のコンピューティングシステム。
【請求項29】
前記一致する可視アンカーのサブセットが、前記ターゲットグラフィカル要素を識別するために使用される、請求項25に記載のコンピューティングシステム。
【請求項30】
前記一致する可視アンカーは、前記ターゲットグラフィカル要素が識別されるまで、または前記一致する可視アンカーのすべてが前記ターゲットグラフィカル要素の識別に成功することなく試行されるまで、一度に1つずつ試行される、請求項25に記載のコンピューティングシステム。
【請求項31】
前記1つまたは複数の一致する可視アンカーのうちの1つまたは複数は、前記ターゲットグラフィカル要素とは異なるアプリケーションウィンドウに位置する、請求項25に記載のコンピューティングシステム。
【請求項32】
前記コンピュータプログラム命令は、前記少なくとも1つのプロセッサに、
前記ターゲットグラフィカル要素のための一次アンカーを指定させ、
機械学習(ML)モデルを用いて、前記指定された一次アンカーを含むウィンドウを検出させ、
前記検出されたウィンドウ内に位置する前記1つまたは複数の一致する可視アンカーの可視アンカーを識別させる、ようにさらに構成される、請求項25に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2020年11月20日に出願された米国非仮特許出願第17/100,146号の利益を主張する。この先願の主題は、その全体が参照により本明細書に組み込まれる。
【0002】
本発明は、一般に、ユーザーインターフェース(UI)自動化に関し、より具体的には、UI自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定に関する。
【背景技術】
【0003】
コンピュータビジョン(CV)ベースのUI自動化では、(例えば、ロボティックプロセスオートメーション(RPA)ロボットがグラフィカル要素に入力すること、ボタンをクリックすることなどによって)操作されるべきUI要素(本明細書では「グラフィカル要素」とも呼ばれる)のターゲティングまたは位置特定は、アンカーを使用して行われる。ワークフローを作成している間、開発者はターゲットグラフィカル要素を画面上に示す。ターゲットグラフィカル要素の位置を他の同様のUI要素と区別するために、アンカーを使用することができる。
【0004】
しかしながら、重複アンカーの検出は、ユーザーの介入および手動入力を必要とする。さらに、アンカーの選択は、ユーザーごとに異なり得る。したがって、改善された手法が有益であり得る。
【発明の概要】
【0005】
本発明の特定の実施形態は、現在のRPA技術によってまだ完全に識別、認識、または解決されていない当技術分野の問題および必要性に対するソリューションを提供することができる。例えば、本発明のいくつかの実施形態は、UI自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定に関する。
【0006】
一実施形態では、コンピュータにより実施される方法は、画像内のターゲットグラフィカル要素を少なくともある信頼度をもって識別できるかどうかをチェックするステップを含む。ターゲットが少なくともその信頼度をもって識別できない場合に、コンピュータにより実施される方法はまた、ターゲットグラフィカル要素の近傍内の追加のアンカーを自動的に決定するステップと、自動的に決定された追加のアンカーおよびターゲットグラフィカル要素を、実行時にターゲットグラフィカル要素を識別する際に使用するために格納するステップと、を含む。
【0007】
別の実施形態では、非一時的コンピュータ可読媒体は、設計時のUI自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定を実行するためのプログラムを格納する。コンピュータプログラムは、少なくとも1つのプロセッサに、画像内のターゲットグラフィカル要素が設計時に少なくともある信頼度をもって識別され得るかどうかをチェックさせるように構成される。ターゲットが少なくともその信頼度をもって識別できない場合に、コンピュータプログラムはまた、少なくとも1つのプロセッサに、ターゲットグラフィカル要素の近傍内の追加のアンカーを自動的に決定させ、自動的に決定された追加のアンカーおよびターゲットグラフィカル要素を、実行時にターゲットグラフィカル要素を識別する際に使用するために格納させるように構成される。近傍は、ターゲットグラフィカル要素からの半径によって定義される。
【0008】
さらに別の実施形態では、コンピューティングシステムは、実行時にUI自動化においてターゲットグラフィカル要素識別のための自動アンカー決定を実行するためのコンピュータプログラム命令を格納するメモリと、コンピュータプログラム命令を遂行するように構成された少なくとも1つのプロセッサと、を含む。コンピュータプログラム命令は、少なくとも1つのプロセッサに、ターゲットグラフィカル要素と、ターゲットグラフィカル要素に対して以前に決定された自動的に決定されたアンカーに一致する1つまたは複数の可視アンカーと、を探索させるように構成される。コンピュータプログラム命令はまた、少なくとも1つのプロセッサに、UI内のターゲットグラフィカル要素を識別するために、1つまたは複数の一致する可視アンカーとターゲットグラフィカル要素との間の幾何学的関係を使用させるように構成される。
【0009】
さらに別の実施形態では、コンピューティングシステムは、UI自動化においてターゲットグラフィカル要素検出を実行するためのコンピュータプログラム命令を格納するメモリと、コンピュータプログラム命令を遂行するように構成された少なくとも1つのプロセッサと、を含む。コンピュータプログラム命令は、少なくとも1つのプロセッサに、ターゲットグラフィカル要素と、ターゲットグラフィカル要素に関連するアンカーと一致する1つまたは複数の可視アンカーと、を探索させるように構成される。ターゲットグラフィカル要素が探索で見つかった場合に、コンピュータプログラム命令は、少なくとも1つのプロセッサに、UI内のターゲットグラフィカル要素を識別するために、1つまたは複数の一致する可視アンカーとターゲットグラフィカル要素との間の幾何学的関係を使用させるように構成される。ターゲットグラフィカル要素が探索で見つからない場合に、コンピュータプログラム命令は、少なくとも1つのプロセッサに、ターゲットグラフィカル要素を可視にするための是正措置を試行させるように構成される。
【0010】
別の実施形態では、UI自動化においてターゲットグラフィカル要素識別を実行するためのコンピュータにより実施される方法は、RPAロボットによって、ターゲットグラフィカル要素と、ターゲットグラフィカル要素に関連するアンカーと一致する1つまたは複数の可視アンカーと、を探索するステップを含む。ターゲットグラフィカル要素が探索で見つからない場合に、コンピュータにより実施される方法は、RPAロボットによって、ターゲットグラフィカル要素を可視にするための是正措置を試みるステップを含む。
【0011】
さらに別の実施形態では、非一時的コンピュータ可読媒体は、UI自動化においてターゲットグラフィカル要素検出を実行するためのコンピュータプログラムを格納する。コンピュータプログラムは、少なくとも1つのプロセッサに、ターゲットグラフィカル要素と、ターゲットグラフィカル要素に関連するアンカーと一致する1つまたは複数の可視アンカーと、を探索させるように構成される。ターゲットグラフィカル要素が探索で見つからない場合に、コンピュータプログラムは、少なくとも1つのプロセッサに、実行中のアプリケーション、開いているウィンドウ、および開いているウィンドウの位置に関係するVMを実行しているサーバーから情報を受信させ、サーバーに、ターゲットグラフィカル要素に関連するウィンドウをUIのフォアグラウンドに移動させるか、ターゲットグラフィカル要素に関連するアプリケーションを起動させるか、またはその両方を行わせるマウスクリック情報、キー押下情報、またはその両方を生成するために、受信した情報を使用することによって是正措置を試行させるように構成される。
【図面の簡単な説明】
【0012】
本発明の特定の実施形態の利点が容易に理解されるように、上記で簡単に説明した本発明のより具体的な説明は、添付の図面に示されている特定の実施形態を参照することによって提供される。これらの図面は、本発明の典型的な実施形態のみを示しており、したがってその範囲を限定するものと見なされるべきではないことを理解されたいが、本発明は、添付の図面を使用することによって追加の具体性および詳細を伴って説明および説明される。
【0013】
図1】本発明の一実施形態による、ロボティックプロセスオートメーション(RPA)システムを示すアーキテクチャ図である。
【0014】
図2】本発明の一実施形態による、展開されたRPAシステムを示すアーキテクチャ図である。
【0015】
図3】本発明の一実施形態による、デザイナ、アクティビティ、およびドライバの間の関係を示すアーキテクチャ図である。
【0016】
図4】本発明の一実施形態による、RPAシステムを示すアーキテクチャ図である。
【0017】
図5】本発明の一実施形態による、UI自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定を実行するように構成されたコンピューティングシステムを示すアーキテクチャ図である。
【0018】
図6A】本発明の一実施形態による、特定の状態を有するトランザクションアプリケーションウィンドウを示す図である。
【0019】
図6B】本発明の一実施形態による、ターゲットおよびアンカーの表示を有するトランザクションアプリケーションウィンドウのUIを示す図である。
【0020】
図6C】本発明の一実施形態による、表示されたターゲットおよびアンカーがターゲットを一意に識別しないトランザクションアプリケーションウィンドウのUIを示す図である。
【0021】
図6D】本発明の一実施形態による、ターゲットと複数のアンカーとの組み合わせがターゲットを一意に識別するトランザクションアプリケーションウィンドウを示す図である。
【0022】
図6E】本発明の一実施形態による、ターゲットと複数のアンカーとの組み合わせがターゲットを一意に識別しないトランザクションアプリケーションウィンドウを示す図である。
【0023】
図6F】本発明の一実施形態による、ターゲットの特定の半径内のすべての追加のアンカーが識別および選択されるが、ユーザーには見えないトランザクションアプリケーションウィンドウを示す図である。
【0024】
図6G】本発明の一実施形態による、ターゲットの特定の半径内のすべての追加のアンカーが識別および選択され、ユーザーに見えるトランザクションアプリケーションウィンドウを示す図である。
【0025】
図6H】本発明の一実施形態による、ウィンドウの一部が示されないようにウィンドウのサイズが水平方向に縮小されたトランザクションアプリケーションウィンドウを示す図である。
【0026】
図6I】本発明の一実施形態による、ターゲットの特定の半径内のウィンドウ内の可視アンカーが検出される、図6Hのトランザクションアプリケーションウィンドウを示す図である。
【0027】
図6J】本発明の一実施形態による、トランザクションアプリケーションウィンドウを部分的に覆う別のウィンドウを示す図である。
【0028】
図6K】本発明の一実施形態による、ターゲットの特定の半径内の可視アンカーが検出される、図6Jのトランザクションアプリケーションウィンドウを部分的に覆う他のウィンドウを示す図である。
【0029】
図6L】本発明の一実施形態による、ウィンドウの一部が示されず、別のウィンドウがトランザクションアプリケーションのウィンドウに隣接するようにウィンドウのサイズが水平方向に縮小されたトランザクションアプリケーションウィンドウを示す図である。
【0030】
図6M】本発明の一実施形態による、トランザクションアプリケーションウィンドウ内のターゲットの特定の半径内の可視アンカーが検出される、図6Lのシナリオの実行時実施態様を示す図である。
【0031】
図6N】本発明の一実施形態による、トランザクションアプリケーションウィンドウと他のウィンドウの両方におけるターゲットの特定の半径内の可視アンカーが検出される、図6Lのシナリオの設計時実施態様を示す図である。
【0032】
図7】本発明の一実施形態による、自動アンカー決定を実行するためのプロセスを示すフローチャートである。
【0033】
図8A】本発明の一実施形態による、自動アンカー決定およびターゲットグラフィカル要素識別を実行するためのプロセスを示すフローチャートである。
図8B】本発明の一実施形態による、自動アンカー決定およびターゲットグラフィカル要素識別を実行するためのプロセスを示すフローチャートである。
【0034】
図9】本発明の一実施形態による、ターゲットのウィンドウがブロックされているように見えるか、またはターゲットが見つからないかもしくは利用可能でない場合に、是正措置を試みるためのプロセスを示すフローチャートである。
【0035】
図10A】本発明の一実施形態による、確認および支援をユーザーに求めるポップアップを示す図である。
図10B】本発明の一実施形態による、確認および支援をユーザーに求めるポップアップを示す図である。
図10C】本発明の一実施形態による、確認および支援をユーザーに求めるポップアップを示す図である。
【0036】
図10D】本発明の一実施形態による、バウンディングボックスによって囲まれた「提出」ボタンを有するアプリケーションウィンドウを示す図である。
【0037】
別段の指示がない限り、同様の符号は、添付の図面を通して一貫して対応する特徴を示す。
【発明を実施するための形態】
【0038】
いくつかの実施形態は、UI自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定に関する。本明細書で使用される場合、「グラフィカル要素」および「UI要素」は互換的に使用される。そのような実施形態は、重複するターゲット候補を区別するコンテキストベースの機構を提供することができる。より具体的には、コンテキストを提供し、ターゲットを取り囲む領域に見えるターゲットUI要素に対して追加のアンカーが決定され、自動的に追加され得る。
【0039】
設計時に、ターゲットUI要素は、デザイナアプリケーション(例えば、UiPath Studio(商標))のユーザーによって示されてもよく、対応するアンカーが決定されてもよい。ターゲットアンカーペアと同じまたは類似の特性および/または関係を有するUI要素のペアが見つかった場合(例えば、図6Cを参照されたい)、ユーザー入力を要求することなく追加のアンカーを自動的に識別することができる。いくつかの実施形態では、追加のアンカーは、ターゲットUI要素の半径内のUI要素から選択されてもよい。どのアンカーが実行時に実際に存在するかは設計時に必ずしも知られていないため、複数の追加のアンカーを追加することができる。状況によっては、探索範囲内に他のアンカーが存在しない場合、単一の任意選択のアンカーのみが収集されることが起こり得る。しかしながら、これはほとんどの現実世界の実施態様ではありそうにない。実行時に、実行時変更に対応するために、複数の任意選択のアンカーが探索される。いくつかの実施形態では、自動アンカー検出は、デスクトップアプリケーションと仮想環境の両方の自動化に適用できる。
【0040】
上記により、いくつかの実施形態は、マルチアンカーUI要素識別手法を使用する。これは、ターゲットグラフィカル要素画像自体がUI内で一意でない場合に発生し得る。そのような場合、複数の追加のアンカーが自動的に選択されてもよいし、ユーザーによって指定されてもよい。
【0041】
アンカーは、ターゲットUI要素を一意に識別するのを支援するために使用できる他のUI要素である。例えば、同じ形状およびサイズの複数のテキストフィールドがUIに含まれる場合、テキストフィールド画像を探索するだけでは、所与のテキストフィールドを一意に識別するには不十分である。したがって、いくつかの実施形態は、所望のターゲットUI要素を一意に識別するために追加情報を探す。テキストフィールドの例を使用すると、名前を入力するためのテキストフィールドが、ラベル「名前」の右側に表示され得る。この名前ラベルは、「ターゲット」であるテキストフィールドを一意的に識別するのを助けるために「アンカー」として設定されてもよい。
【0042】
いくつかの実施形態では、潜在的に1つまたは複数の許容範囲内で、ターゲットとアンカーとの間の様々な位置的および/または幾何学的関連付けを使用して、ターゲットを一意に識別することができる。例えば、アンカーおよびターゲットのバウンディングボックスの中心を使用して、線分を定義することができる。次いで、この線分は、ターゲット/アンカー対を使用してターゲットを一意に識別するために、公差内の特定の長さおよび/または公差内の勾配を有する必要があり得る。しかしながら、いくつかの実施形態では、本発明の範囲から逸脱することなく、ターゲットおよび/またはアンカーに関連する位置の任意の所望の位置を使用することができる。例えば、線分の端点は、中心、左上隅、右上隅、左下隅、右下隅、バウンディングボックスの境界上の任意の他の位置、バウンディングボックス内の任意の位置、バウンディングボックスプロパティに関して識別されるバウンディングボックスの外側の位置、それらの組み合わせ(例えば、ターゲットのバウンディングボックスの中心およびアンカーのバウンディングボックスの右上隅)などであってもよい。特定の実施形態では、ターゲットおよび1つまたは複数のアンカーは、幾何学的一致に使用されるバウンディングボックス内またはバウンディングボックスの外側の異なる位置を有してもよい。
【0043】
上記のように、単一のアンカーは、画面上のターゲット要素を特定の信頼度で一意に識別するのに必ずしも十分であるとは限らない。例えば、名前を入力するための2つのテキストフィールドが、画面上の異なる場所のそれぞれのラベル「名前」の右側に表示されるウェブ形式を考える。この例では、1つまたは複数の追加のアンカーは、所与のターゲットを一意に識別するのに有用であり得る。実際、アンカーとターゲット(例えば、線分長、角度、および/または公差のある相対位置)との間の幾何学的特性を使用して、ターゲットを一意に識別することができる。いくつかの実施形態では、ターゲットの一致強度がしきい値を超えるまでアンカーを自動的に追加することができる。
【0044】
いくつかの実施形態では、ターゲットおよびアンカーグラフィカル要素は、UI記述子を使用して記述されてもよい。それらのコアにおいて、UI記述子はグラフィカル要素(例えば、テキストフィールド、ボタン、ラベル、メニュー、チェックボックスなど)を識別する。いくつかのタイプのUI記述子には、セレクタ、CV記述子、画像マッチング記述子、OCR記述子、複数の異なるタイプのUI記述子を直列または並列に利用することができる統一されたターゲット記述子などが含まれるが、これらに限定されない。UI記述子は、所与のUI記述子の属性をUIにおいて実行時に見られるUI要素の属性と比較するために使用されてもよい。
【0045】
いくつかの実施形態では、UI記述子は、それぞれのUI要素およびその親の属性を、例えば拡張マークアップ言語(XML)フラグメントで格納する。実行時に、UIに見られるUI要素の属性は、それぞれのRPAワークフローアクティビティの属性との一致を探索することができ、完全一致または「十分に近い」一致が一致しきい値内で見つかった場合、UI要素はそれに応じて識別され、インタラクトされ得る。属性は、テキストベースの識別子(ID)、クラス、役割などを含むことができる。CVの場合、属性は、ターゲット要素のタイプ、およびマルチアンカーマッチング手法で使用され得る1つまたは複数のアンカー要素との関係を含むことができる。OCRの場合、属性は、例えば、格納された文字列の形式のテキスト、および遂行中に格納された文字列がファジーマッチングされたOCRを介して見つかったテキストを含むことができる。本発明の範囲から逸脱することなく、任意の適切な属性およびグラフィカル要素検出技術を使用することができる。
【0046】
いくつかの実施形態は、UI要素およびその親の属性をXMLフラグメントに格納するUI記述子を使用する。最新のコンピューティングシステムでは、オペレーティングシステムは、通常、UIツリーと呼ばれる階層データ構造として各ユーザーインターフェースを表す。例示的なUIツリーは、ウェブブラウザアプリケーションによってレンダリングされたウェブページの基礎となる文書オブジェクトモデル(DOM)を含むことができる。
【0047】
セレクタは、いくつかの実施形態においてUI要素を検出するために使用され得るUI記述子に対するタイプである。セレクタは、いくつかの実施形態では以下の構造を有する。
<node_1/><node_2/>...<node_N/>
【0048】
最後のノードは対象のGUI要素を表し、すべての前のノードはその要素の親を表す。<node_1>は、通常、ルートノードと呼ばれ、アプリケーションのトップウィンドウを表す。
【0049】
各ノードは、選択されたアプリケーションの特定のレベルの正しい識別を支援する1つまたは複数の属性を有することができる。いくつかの実施形態では、各ノードは以下のフォーマットを有する。
<ui_system attr_name_1=´attr_value_1´...attr_name_N=´attr_value_N´/>
【0050】
すべての属性が割り当てられた値を有してもよく、一定の値を有する属性が選択されてもよい。アプリケーションが起動されるたびに属性の値が変化すると、セレクタが対応する要素を正しく識別できなくなる可能性があるからである。
【0051】
UI記述子は、UI要素を見つけるための命令のセットである。いくつかの実施形態におけるUI記述子は、UI要素セレクタ、アンカーセレクタ、CV記述子、OCR記述子、2つ以上のタイプのUI記述子を組み合わせた統合ターゲット記述子、画面画像キャプチャ(コンテキスト)、要素画像キャプチャ、他のメタデータ(例えば、アプリケーションおよびアプリケーションバージョン)、それらの組み合わせなどを含むカプセル化されたデータ/構造体フォーマットである。カプセル化されたデータ/構造体フォーマットは、プラットフォームに対する将来の更新で拡張可能であり得、上記の定義に限定されない。本発明の範囲から逸脱することなく、画面上のUI要素を識別するための任意の適切なUI記述子を使用することができる。UI記述子は、RPAワークフロー内のアクティビティから抽出され、UIアプリケーション、画面、およびUI要素によってUI記述子をグループ化する構造化スキーマに追加されてもよい。
【0052】
UI記述子は、いくつかの実施形態では、画像検出および定義が実行される複数またはすべてのUI要素検出機構を包含する統一されたターゲットと共に機能することができる。統一されたターゲットは、UI要素を識別し自動化する複数の技術を単一の結束した手法に統合することができる。統一されたターゲット記述子は、複数のタイプのUI記述子を直列に共にチェーン化し、それらを並列に使用し、または最初にある期間にわたって少なくとも1つの技術(例えば、セレクタ)を使用し、次いで、第1の技術がその期間内に一致を見つけない場合、並列に、または代替的に、少なくとも1つの他の技術を実行する。いくつかの実施形態では、統合ターゲット記述子は、有限状態機械(FSM)のように機能することができ、第1のコンテキストでは、第1のUI記述子機構が適用され、第2のコンテキストでは、第2のUI記述子が適用されるなどである。統合ターゲットは、セレクタベースおよびドライバベースのUI検出機構を優先し、いくつかの実施形態で最初の2つの機構が成功しなかった場合、CV、画像マッチング、および/または他の機構に戻ってグラフィカル要素を見つけることができる。
【0053】
いくつかの実施形態では、ファジーマッチングを使用することができ、1つまたは複数の属性は、特定の範囲内で、文字列メトリック(例えば、レーベンシュタイン距離、ハミング距離、ジャロ-ウィンクラー距離など)、それらの組み合わせなどを使用して、特定の精度(例えば、70%一致、80%一致、99%一致など)で一致する必要がある。当業者であれば、類似性尺度は、類似性の量、ならびに2つの属性値間の不一致の量を定量化することができることを理解するであろう。さらに、様々な実施形態において、類似度しきい値は、一致に必要な最大量の不一致度または最小量の類似度を表すことができる。
【0054】
類似性尺度を計算する選択された方法に応じて、類似度しきい値は様々な解釈を有することができる。例えば、類似度しきい値は、2つの文字列の間で異なり得る文字の最大数、または文字の総数の割合(例えば、結合ストリング長)として計算された部分的な不一致度を示すことができる。いくつかの実施形態では、類似度しきい値は、0と1との間、0と100との間、7と34との間などの所定の間隔に再スケーリングされてもよい。1つの非限定的な例では、比較的高い類似度しきい値(例えば、1または100%に近い)は、ほぼ完全な一致の要件を示す、すなわち、実行時ターゲットのファジー属性の値は、設計時間ターゲットのそれぞれの属性の値からごくわずかしか逸脱することができない。対照的に、類似度しきい値が比較的低い(例えば、0に近い)場合、それぞれのファジー属性のほぼすべての値が一致すると見なされる。
【0055】
特定の実施形態では、一致公差は、属性ごとに異なり得る。例えば、1つまたは複数の属性(例えば、特定の正確な名前を見つけることが望ましい場合がある)に対して完全一致が必要とされ得、1つまたは複数の他の属性に対してファジーマッチングが実行され得る。各グラフィカル要素検出技術から使用される属性の数および/またはタイプは、いくつかの実施形態では、RPA開発者によってカスタム指定されてもよい。
【0056】
いくつかの実施形態では、属性は、属性値ペアおよび/または属性値公差ペア(例えば、ファジーマッチング)として格納されてもよい。属性値ペアは、いくつかの実施形態では、それぞれのノードによって表されるUI要素の名前およびタイプを示すことができる。しかしながら、当業者は、本発明の範囲から逸脱することなく、属性値ペアのリスト以外のUIツリー内の特定のノードの位置を表す複数の方法があり得ることを理解するであろう。
【0057】
これらの属性値ペアおよび/または属性値許容差ペアは、いくつかの実施形態ではタグに格納されてもよく、各タグは、実施態様に固有の区切り記号(例えば、「<」で始まり「/>」で終わる)によってブックエンドされたシーケンスを有する文字のシーケンスを含んでもよい。属性値ペアは、いくつかの実施形態では、それぞれのノードによって表されるUI要素の名前およびタイプを示すことができる。しかしながら、当業者は、本発明の範囲から逸脱することなく、属性値ペアのリスト以外のUIツリー内の特定のノードの位置を表す複数の方法があり得ることを理解するであろう。
【0058】
RPAロボットによる成功した、理想的には明確な識別を可能にするために、いくつかの実施形態は、それぞれのUI要素を特徴付ける要素IDを使用して各UI要素を表す。いくつかの実施形態における要素IDは、UIツリー内のターゲットノードの位置を示し、ターゲットノードは、それぞれのUI要素を表す。例えば、要素IDは、ノードの選択されたサブセットのメンバーとしてターゲットノード/UI要素を識別することができる。ノードの選択されたサブセットは、系統、すなわち、各ノードが別のノードの祖先または子孫のいずれかであるUIツリーを通る下降線を形成することができる。
【0059】
いくつかの実施形態では、要素IDは、ノードインジケータの順序付きシーケンスを含み、シーケンスは、UIツリーを通る系統的パスを追跡し、パスは、それぞれのターゲットノード/UI要素で終了する。各ノードインジケータは、それぞれのUIのオブジェクト階層のメンバーと、それぞれの階層と一致するシーケンス内のその位置とを表すことができる。例えば、シーケンスの各メンバーは、前のメンバーの子孫(例えば、子ノード)を表し得、子孫(例えば、子ノード)として以下のメンバーを有してもよい。1つのハイパーテキストマークアップ言語(HTML)の例では、個々のフォームフィールドを表す要素IDは、それぞれのフォームフィールドがHTMLフォームの子であり、ウェブページの特定のセクションの子であることなどを示すことができる。いくつかの実施形態では、系統は完全である必要はない。
【0060】
いくつかの実施形態は、1つまたは複数のマルチアンカー一致属性を使用することができる。アンカーは、ターゲットUI要素を一意に識別するのを支援するために使用できる他のUI要素である。例えば、複数のテキストフィールドがUIに含まれる場合、テキストフィールドを探索するだけでは、所与のテキストフィールドを一意に識別するには不十分である。したがって、いくつかの実施形態は、所与のUI要素を一意に識別するために追加情報を探す。テキストフィールドの例を使用すると、名前を入力するためのテキストフィールドが、ラベル「名前」の右側に表示され得る。この名前ラベルは、「ターゲット」であるテキストフィールドを一意的に識別するのを助けるために「アンカー」として設定されてもよい。
【0061】
いくつかの実施形態では、潜在的に1つまたは複数の許容範囲内で、ターゲットとアンカーとの間の様々な位置的および/または幾何学的関連付けを使用して、ターゲットを一意に識別することができる。例えば、アンカーおよびターゲットのバウンディングボックスの中心を使用して、線分を定義することができる。次いで、この線分は、ターゲット/アンカー対を使用してターゲットを一意に識別するために、公差内の特定の長さおよび/または公差内の勾配を有する必要があり得る。しかしながら、いくつかの実施形態では、本発明の範囲から逸脱することなく、ターゲットおよび/またはアンカーに関連する位置の任意の所望の位置を使用することができる。例えば、線分を描くための点は、中心、左上隅、右上隅、左下隅、右下隅、バウンディングボックスの境界上の任意の他の位置、バウンディングボックス内の任意の位置、バウンディングボックスの特性に関して識別されるバウンディングボックスの外側の位置などにあってもよい。特定の実施形態では、ターゲットおよび1つまたは複数のアンカーは、幾何学的一致に使用されるバウンディングボックス内またはバウンディングボックスの外側の異なる位置を有してもよい。
【0062】
上記のように、単一のアンカーは、画面上のターゲットグラフィカル要素を特定の信頼度で一意に識別するのに必ずしも十分であるとは限らない。例えば、名前を入力するための2つのテキストフィールドが、画面上の異なる場所のそれぞれのラベル「名前」の右側に表示されるウェブ形式を考える。この例では、1つまたは複数の追加のアンカーは、所与のターゲットを一意に識別するのに有用であり得る。アンカーとターゲット(例えば、線分長、角度、および/または公差のある相対位置)との間の幾何学的特性は、ターゲットを一意に識別するために使用され得る。ユーザーは、ターゲットの一致強度がしきい値を超えるまでアンカーを追加し続けることを要求され得る。
【0063】
特定の実施形態は、ロボティックプロセスオートメーション(RPA)に使用することができる。図1は、本発明の一実施形態による、RPAシステム100を示すアーキテクチャ図である。RPAシステム100は、開発者がワークフローを設計および実装することを可能にするデザイナ110を含む。デザイナ110は、アプリケーション統合、ならびにサードパーティアプリケーション、管理情報技術(IT)タスク、およびビジネスITプロセスを自動化するためのソリューションを提供することができる。デザイナ110は、ビジネスプロセスのグラフィカル表現である自動化プロジェクトの開発を容易にすることができる。簡単に言えば、デザイナ110は、ワークフローおよびロボットの開発およびデプロイメントを容易にする。
【0064】
自動化プロジェクトは、本明細書で「アクティビティ」と定義される、ワークフローで開発されたステップのカスタムセット間の遂行順序および関係の制御を開発者に与えることによって、ルールベースのプロセスの自動化を可能にする。デザイナ110の一実施形態の一商用例は、UiPath Studio(商標)である。各アクティビティは、ボタンのクリック、ファイルの読み取り、ログパネルへの書き込みなどのアクションを含むことができる。いくつかの実施形態では、ワークフローはネストまたは埋め込みされてもよい。
【0065】
いくつかのタイプのワークフローは、シーケンス、フローチャート、FSM、および/またはグローバル例外ハンドラを含むことができるが、これらに限定されない。シーケンスは、ワークフローを乱すことなく1つのアクティビティから別のアクティビティへの流れを可能にする線形プロセスに特に適し得る。フローチャートは、より複雑なビジネスロジックに特に適しており、複数の分岐論理演算子を介してより多様な方法で決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適している場合がある。FSMは、条件(すなわち、遷移)またはアクティビティによってトリガされる有限数の状態をそれらの遂行において使用することができる。グローバル例外ハンドラは、遂行エラーに遭遇したときのワークフローの挙動を判定し、プロセスをデバッグするのに特に適し得る。
【0066】
ワークフローがデザイナ110で開発されると、ビジネスプロセスの遂行は、デザイナ110で開発されたワークフローを遂行する1つまたは複数のロボット130を編成するコンダクタ120によって編成される。コンダクタ120の一実施形態の一商用例は、UiPathオーケストレータ(商標)である。コンダクタ120は、環境内のリソースの作成、監視、およびデプロイメントの管理を容易にする。コンダクタ120は、第三者のソリューションおよびアプリケーションとの統合ポイントまたは集約ポイントのうちの1つとして機能することができる。
【0067】
コンダクタ120は、集中ポイントからロボット130を接続し遂行するすべてのロボット130を管理することができる。管理され得るロボット130のタイプは、これらに限定されないが、アテンディッドロボット132、アンアテンディッドロボット134、開発ロボット(アンアテンディッドロボット134と同様であるが、開発および試験の目的で使用される)、および非生産ロボット(アテンディッドロボット132と同様であるが、開発および試験の目的で使用される)を含む。アテンディッドロボット132は、ユーザーイベントによってトリガされるか、または自動的に発生するようにスケジュールされ、同じコンピューティングシステム上で人間と一緒に動作することができる。アテンディッドロボット132は、集中プロセスデプロイメントおよび記録媒体のためのコンダクタ120と共に使用することができる。アテンディッドロボット132は、人間のユーザーが様々なタスクを達成するのを助けることができ、ユーザーイベントによってトリガすることができる。いくつかの実施形態では、プロセスは、このタイプのロボットのコンダクタ120から開始することができず、および/またはロックされた画面の下で実行することができない。特定の実施形態では、アテンディッドロボット132は、ロボットトレイまたはコマンドプロンプトからのみ起動することができる。いくつかの実施形態では、アテンディッドロボット132は人間の監督下で動作するべきである。
【0068】
アンアテンディッドロボット134は、仮想環境または物理マシン上で無人で動作し、多くのプロセスを自動化することができる。アンアテンディッドロボット134は、リモート遂行、監視、スケジューリング、および作業待ち行列のサポートの提供を担当することができる。いくつかの実施形態では、すべてのロボットタイプのデバッグを、デザイナ110から実行することができる。アテンディッドロボットおよびアンアテンディッドロボットの両方は、メインフレーム、ウェブアプリケーション、VM、エンタープライズアプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって製造されたもの)、およびコンピューティングシステムアプリケーション(例えば、デスクトップおよびラップトップアプリケーション、モバイルデバイスアプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むがこれらに限定されない様々なシステムおよびアプリケーションを自動化することができる。
【0069】
コンダクタ120は、プロビジョニング、デプロイメント、バージョン管理、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含むがこれらに限定されない様々な機能を有することができる。プロビジョニングは、ロボット130とコンダクタ120(例えば、ウェブアプリケーション)との間の接続の作成および保守を含むことができる。デプロイメントは、遂行のために割り当てられたロボット130へのパッケージバージョンの正しい配信を保証することを含むことができる。バージョン管理は、いくつかの実施形態では、いくつかのプロセスまたは構成の固有のインスタンスの管理を含むことができる。構成は、ロボット環境およびプロセス構成の維持および配信を含むことができる。キューイングは、キューおよびキュー項目の管理を提供することを含むことができる。監視は、ロボット識別データを追跡し、ユーザー権限を維持することを含むことができる。ロギングは、データベース(例えば、SQLデータベース)および/または別のストレージ機構(例えば、大規模なデータセットを格納し、迅速にクエリする能力を提供するElasticSearch(登録商標))へのログの格納およびインデックス付けを含むことができる。コンダクタ120は、第三者のソリューションおよび/またはアプリケーションのための通信の集中ポイントとして作用することによって相互接続性を提供することができる。
【0070】
ロボット130は、デザイナ110に構築されたワークフローを実行する遂行エージェントである。ロボット130のいくつかの実施形態の一商用例は、UiPath Robots(商標)である。いくつかの実施形態では、ロボット130は、デフォルトでMicrosoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。結果として、そのようなロボット130は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開き、Windows(登録商標)サービスの権利を有することができる。
【0071】
いくつかの実施形態では、ロボット130は、ユーザーモードで設置することができる。このようなロボット130の場合、これは、所与のロボット130が設置されているユーザーと同じ権利を有することを意味する。この特徴は、その最大の可能性で各機械の完全な利用を保証する高密度(HD)ロボットにも利用可能であり得る。いくつかの実施形態では、任意のタイプのロボット130をHD環境で構成することができる。
【0072】
いくつかの実施形態におけるロボット130は、各々が特定の自動化タスク専用であるいくつかのコンポーネントに分割される。いくつかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と遂行ホスト(すなわち、ロボット130が遂行されるコンピューティングシステム)との間のプロキシとして機能する。これらのサービスは、ロボット130の資格情報で信頼され、管理する。コンソールアプリケーションは、ローカルシステムの下でSCMによって起動される。
【0073】
いくつかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と遂行ホストとの間のプロキシとして機能する。ユーザーモードロボットサービスは、ロボット130のための資格情報を信頼し管理することができる。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションを自動的に起動することができる。
【0074】
エグゼキュータは、Windows(登録商標)セッション下で所与のジョブを実行することができる(すなわち、エグゼキュータはワークフローを遂行することができる)。エグゼキュータは、モニターごとのドット/インチ(DPI)設定を認識することができる。エージェントは、システムトレイウィンドウに利用可能なジョブを表示するWindows(登録商標)Presentation Foundation(WPF)アプリケーションであってもよい。エージェントは、サービスのクライアントであってもよい。エージェントは、ジョブの開始または停止および設定の変更を要求することができる。コマンドラインは、サービスのクライアントである。コマンドラインは、ジョブの開始を要求し、その出力を待つことができるコンソールアプリケーションである。
【0075】
上記で説明したようにロボット130のコンポーネントを分割することは、開発者、サポートユーザー、およびコンピューティングシステムが各コンポーネントが実行しているものをより容易に実行、識別、および追跡するのに役立つ。このようにして、エグゼキュータおよびサービスに対して異なるファイアウォールルールを設定するなど、特別な挙動をコンポーネントごとに構成することができる。エグゼキュータは、いくつかの実施形態では、モニターごとにDPI設定を常に認識することができる。結果として、ワークフローは、それらが作成されたコンピューティングシステムの構成にかかわらず、任意のDPIで遂行され得る。いくつかの実施形態では、デザイナ110からのプロジェクトは、ブラウザのズームレベルとは無関係であってもよい。DPIを認識していない、または意図的に認識していないとマークされたアプリケーションの場合、いくつかの実施形態ではDPIを無効にすることができる。
【0076】
図2は、本発明の一実施形態による、展開されたRPAシステム200を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム200は、図1のRPAシステム100であってもよいし、その一部であってもよい。クライアント側、サーバー側、またはその両方は、本発明の範囲から逸脱することなく、任意の所望の数のコンピューティングシステムを含むことができることに留意されたい。クライアント側では、ロボットアプリケーション210は、エグゼキュータ212と、エージェント214と、デザイナ216と、を含む。しかしながら、いくつかの実施形態では、デザイナ216は、コンピューティングシステム210上で実行されていなくてもよい。エグゼキュータ212は、実行中のプロセスである。図2に示すように、いくつかのビジネスプロジェクトが同時に実行されてもよい。エージェント214(例えば、Windows(登録商標)サービス)は、この実施形態ではすべてのエグゼキュータ212に対する単一の接続ポイントである。この実施形態におけるすべてのメッセージは、データベースサーバー240、インデクササーバー250、またはその両方を介してそれらをさらに処理するコンダクタ230にログされる。図1に関して上述したように、エグゼキュータ212はロボットコンポーネントであってもよい。
【0077】
いくつかの実施形態では、ロボットは、機械名とユーザー名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理することができる。同時に実行される複数のインタラクティブなセッション(例えば、Windows(登録商標)Server 2012)をサポートするコンピューティングシステムでは、複数のロボットが同時に実行され、それぞれが一意のユーザー名を使用して別々のWindows(登録商標)セッションで実行されてもよい。これは、上記ではHDロボットと呼ばれる。
【0078】
エージェント214はまた、ロボットのステータス(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)を送信し、遂行されるパッケージの必要なバージョンをダウンロードする役割も担う。エージェント214とコンダクタ230との間の通信は、いくつかの実施形態では常にエージェント214によって開始される。通知シナリオでは、エージェント214は、ロボットにコマンド(例えば、始動、停止など)を送信するためにコンダクタ230によって後で使用されるWebSocketチャネルを開くことができる。
【0079】
サーバー側には、プレゼンテーション層(ウェブアプリケーション232、オープンデータプロトコル(OData)代表状態転送(REST)アプリケーション・プログラミング・インターフェース(API)エンドポイント234、ならびに通知および監視236)、サービス層(API実装/ビジネスロジック238)、永続層(データベースサーバー240、インデクササーバー250)が含まれる。コンダクタ230は、ウェブアプリケーション232、OData REST APIエンドポイント234、通知および監視236、ならびにAPI実装/ビジネスロジック238を含む。いくつかの実施形態では、ユーザーがコンダクタ230のインターフェース内で(例えば、ブラウザ220を介して)実行するほとんどのアクションは、様々なAPIを呼び出すことによって実行される。そのようなアクションは、本発明の範囲から逸脱することなく、ロボット上のジョブの開始、キュー内のデータの追加/削除、無人で実行するためのジョブのスケジューリングなどを含むことができるが、これらに限定されない。ウェブアプリケーション232は、サーバープラットフォームのビジュアル層である。この実施形態では、ウェブアプリケーション232は、ハイパーテキストマークアップ言語(HTML)およびJavaScript(JS)を使用する。しかしながら、本発明の範囲から逸脱することなく、任意の所望のマークアップ言語、スクリプト言語、または任意の他のフォーマットを使用することができる。ユーザーは、コンダクタ230を制御するための様々なアクションを実行するために、この実施形態ではブラウザ220を介してウェブアプリケーション232からのウェブページとインタラクトする。例えば、ユーザーは、ロボットグループを作成し、ロボットにパッケージを割り当て、ロボットごとおよび/またはプロセスごとにログを分析し、ロボットを起動および停止することなどができる。
【0080】
ウェブアプリケーション232に加えて、コンダクタ230はまた、OData REST APIエンドポイント234を公開するサービス層を含む。しかしながら、本発明の範囲から逸脱することなく、他のエンドポイントが含まれてもよい。REST APIは、ウェブアプリケーション232とエージェント214の両方によって消費される。エージェント214は、この実施形態ではクライアントコンピュータ上の1つまたは複数のロボットの管理者である。
【0081】
この実施形態におけるREST APIは、構成、ロギング、監視、およびキューイング機能をカバーする。構成エンドポイントは、いくつかの実施形態では、アプリケーションユーザー、権限、ロボット、アセット、リリース、および環境を定義および構成するために使用され得る。例えば、エラー、ロボットによって送信された明示的なメッセージ、および他の環境固有の情報などの様々な情報をログに記録するために、RESTエンドポイントをロギングすることができる。開始ジョブコマンドがコンダクタ230内で使用される場合に遂行されるべきパッケージバージョンをクエリするために、デプロイメントRESTエンドポイントがロボットによって使用されてもよい。RESTエンドポイントをキューイングすることは、キューにデータを追加すること、キューからトランザクションを取得すること、トランザクションの状態を設定することなど、キューおよびキュー項目管理を担当することができる。
【0082】
RESTエンドポイントの監視は、ウェブアプリケーション232およびエージェント214を監視することができる。通知監視API236は、エージェント214の登録、エージェント214への構成設定の配信、ならびにサーバーおよびエージェント214からの通知の送信/受信に使用されるRESTエンドポイントであってもよい。通知監視API236はまた、いくつかの実施形態では、WebSocket通信を使用してもよい。
【0083】
永続層は、この実施形態におけるサーバーのペア、すなわちデータベースサーバー240(例えば、SQLサーバー)およびインデクササーバー250を含む。この実施形態におけるデータベースサーバー240は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を格納する。この情報は、いくつかの実施形態ではウェブアプリケーション232を介して管理される。データベースサーバー240は、キューおよびキュー項目を管理することができる。いくつかの実施形態では、データベースサーバー240は、(インデクササーバー250に加えて、またはその代わりに)ロボットによって記録されたメッセージを格納することができる。
【0084】
インデクササーバー250は、いくつかの実施形態ではオプションであり、ロボットによって記録された情報を格納し、インデックス付けする。特定の実施形態では、インデクササーバー250は、構成設定を通じて無効にすることができる。いくつかの実施形態では、インデクササーバー250は、オープンソースプロジェクトのフルテキスト探索エンジンであるElasticSearch(登録商標)を使用する。ロボット(例えば、ログメッセージまたは行書き込みのようなアクティビティを使用する)によってログされたメッセージは、ロギングRESTエンドポイントを介してインデクササーバー250に送信されてもよく、そこでそれらは将来の利用のためにインデックス付けされる。
【0085】
図3は、本発明の一実施形態による、デザイナ310、アクティビティ320,330、ドライバ340、およびAI/MLモデル350の間の関係300を示すアーキテクチャ図である。上記により、開発者は、デザイナ310を使用して、ロボットによって遂行されるワークフローを開発する。ワークフローは、ユーザー定義のアクティビティ320およびUI自動化アクティビティ330を含むことができる。ユーザー定義のアクティビティ320および/またはUI自動化アクティビティ330は、いくつかの実施形態では、1つまたは複数のAI/MLモデル350を呼び出すことができ、これは、ロボットが動作しているコンピューティングシステムに対してローカルにおよび/またはそこから遠隔に配置することができる。いくつかの実施形態は、本明細書ではコンピュータビジョン(CV)と呼ばれる、画像内の非テキスト視覚コンポーネントを識別することができる。そのようなコンポーネントに関係するいくつかのCVアクティビティは、クリック、タイプ、テキストを取得、ホバー、要素存在、リフレッシュ範囲、ハイライトなどを含み得るが、これらに限定されない。いくつかの実施形態では、クリックは、例えば、CV、光学文字認識(OCR)、ファジー文字マッチング、およびマルチアンカーを使用して要素を識別し、それをクリックする。タイプは、上記および要素内のタイプを使用して要素を識別することができる。テキストを取得し、OCRを使用して特定のテキストの位置を識別し、それをスキャンすることができる。ホバーは、要素を識別し、それをホバーすることができる。要素が存在することは、上述した技術を使用して、画面上に要素が存在するかどうかをチェックすることができる。いくつかの実施形態では、デザイナ310に実装することができるアクティビティは、数百または数千であってもよい。しかしながら、本発明の範囲から逸脱することなく、任意の数および/またはタイプのアクティビティが利用可能であり得る。
【0086】
UI自動化アクティビティ330は、下位レベルコード(例えば、CVアクティビティ)に書き込まれ、UI層を介したアプリケーションとのインタラクションを容易にする特別な低レベルのアクティビティのサブセットである。特定の実施形態では、UI自動化アクティビティ300は、例えば、ウィンドウメッセージなどを介して「ユーザー入力」をシミュレートすることができる。UI自動化アクティビティ330は、ロボットが所望のソフトウェアとインタラクトすることを可能にするドライバ340および/またはAI/MLモデル350を介したこれらのインタラクションを容易にする。例えば、ドライバ340は、OSドライバ342、ブラウザドライバ344、VMドライバ346、エンタープライズアプリケーションドライバ348などを含むことができる。AI/MLモデル350のうちの1つまたは複数は、コンピューティングシステムとのインタラクションの実行を決定するためにUI自動化アクティビティ330によって使用され得る。いくつかの実施形態では、AI/MLモデル350は、ドライバ340を増強するか、それらを完全に置き換えることができる。実際、特定の実施形態では、ドライバ340は含まれない。
【0087】
ドライバ340は、フックを探し、キーを監視するなど、低レベルでOSとインタラクトすることができる。それらは、Chrome(登録商標)、IE(登録商標)、Citrix(登録商標)、SAP(登録商標)などとの統合を容易にすることができる。例えば、「クリック」アクティビティは、ドライバ340を介してこれらの異なるアプリケーションで同じ役割を実行する。
【0088】
図4は、本発明の一実施形態による、RPAシステム400を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム400は、図1および/または図2のRPAシステム100および/または200であり得るか、それらを含み得る。RPAシステム400は、ロボットを実行する複数のクライアントコンピューティングシステム410を含む。コンピューティングシステム410は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム420と通信することができる。次に、コンダクタコンピューティングシステム420は、データベースサーバー430および任意選択のインデクササーバー440と通信することができる。
【0089】
図1および図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、任意の適切なクライアントおよび/またはサーバーソフトウェアを使用できることに留意されたい。例えば、コンダクタは、クライアントコンピューティングシステム上の非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバー側アプリケーションを実行することができる。
【0090】
図5は、本発明の一実施形態による、UI自動化におけるターゲットグラフィカル要素識別のための自動アンカー決定を実行するように構成されたコンピューティングシステム500を示すアーキテクチャ図である。いくつかの実施形態では、コンピューティングシステム500は、本明細書に図示および/または記載されたコンピューティングシステムのうちの1つまたは複数であってもよい。コンピューティングシステム500は、情報を通信するためのバス505または他の通信機構と、情報を処理するためにバス505に結合されたプロセッサ510と、を含む。プロセッサ510は、中央プロセッシングユニット(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらの任意の組み合わせを含む、任意のタイプの汎用または専用プロセッサであってもよい。プロセッサ510はまた、複数の処理コアを有してもよく、コアの少なくともいくつかは、特定の機能を実行するように構成されてもよい。いくつかの実施形態では、複数並列処理が使用されてもよい。特定の実施形態では、プロセッサ510の少なくとも一方は、生体ニューロンを模倣する処理要素を含むニューロモーフィック回路であってもよい。いくつかの実施形態では、ニューロモーフィック回路は、フォン・ノイマン・コンピューティングアーキテクチャの典型的なコンポーネントを必要としない場合がある。
【0091】
コンピューティングシステム500は、プロセッサ510によって遂行される情報および命令を格納するためのメモリ515をさらに含む。メモリ515は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気もしくは光ディスクなどの静的ストレージ、または任意の他のタイプの非一時的コンピュータ可読媒体、またはそれらの組み合わせの任意の組み合わせで構成することができる。非一時的コンピュータ可読媒体は、プロセッサ510によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体、またはその両方を含んでもよい。媒体はまた、取り外し可能、取り外し不能、またはその両方であってもよい。
【0092】
さらに、コンピューティングシステム500は、無線接続および/または有線接続を介して通信ネットワークへのアクセスを提供するためのトランシーバなどの通信デバイス520を含む。いくつかの実施形態では、通信デバイス520は、周波数分割多元接続(FDMA)、シングルキャリアFDMA(SC-FDMA)、時分割多元接続(TDMA)、符号分割多元接続(CDMA)、直交周波数分割多重方式(OFDM)、直交周波数分割多元接続(OFDMA)、移動体用グローバルシステム(GSM)通信、汎用パケット無線サービス(GPRS)、ユニバーサル移動体通信システム(UMTS)、cdma2000、広帯域CDMA(W-CDMA)、高速ダウンリンクパケットアクセス(HSDPA)、高速アップリンクパケットアクセス(HSUPA)、高速パケットアクセス(HSPA)、ロングタームエボリューション(LTE)、LTEアドバンスト(LTE-A)、802.11x、Wi-Fi、Zigbee、超広帯域無線(UWB)、802.16x、802.15、ホームノードB(HnB)、Bluetooth、無線周波数識別(RFID)、赤外線データ協会(IrDA)、近距離通信(NFC)、第5世代(5G)、新無線(NR)、それらの任意の組み合わせ、ならびに/あるいは本発明の範囲から逸脱することなく、任意の他の現在存在する、または将来実施される通信規格および/またはプロトコルを使用するように構成されてもよい。いくつかの実施形態では、通信デバイス520は、本発明の範囲から逸脱することなく、単一、アレイ、位相、切り替え、ビームフォーミング、ビームステア、それらの組み合わせ、および/または任意の他のアンテナ構成である1つまたは複数のアンテナを含むことができる。
【0093】
プロセッサ510はさらに、バス505を介して、プラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、電界放出ディスプレイ(FED)、有機発光ダイオード(OLED)ディスプレイ、フレキシブルOLEDディスプレイ、フレキシブル基板ディスプレイ、プロジェクションディスプレイ、4Kディスプレイ、高精細ディスプレイ、Retina(登録商標)ディスプレイ、インプレーンスイッチング(IPS)ディスプレイ、またはユーザーに情報を表示するための任意の他の適切なディスプレイなどのディスプレイ525にさらに結合される。ディスプレイ525は、抵抗性、容量性、表面弾性波(SAW)容量性、赤外線、光学イメージング、分散信号技術、音響パルス認識、フラストレート全内部反射などを使用して、タッチ(触覚)ディスプレイ、3次元(3D)タッチディスプレイ、マルチ入力タッチディスプレイ、マルチタッチディスプレイなどとして構成され得る。本発明の範囲から逸脱することなく、任意の適切なディスプレイデバイスおよび触覚I/Oが使用され得る。
【0094】
キーボード530およびコンピュータマウス、タッチパッドなどのカーソル制御デバイス535は、ユーザーがコンピューティングシステム500とインターフェースすることを可能にするためにバス505にさらに結合される。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しなくてもよく、ユーザーは、ディスプレイ525および/またはタッチパッド(図示せず)のみを介してデバイスとインタラクトすることができる。入力デバイスの任意のタイプおよび組み合わせを、設計上の選択事項として使用することができる。特定の実施形態では、物理的入力デバイスおよび/またはディスプレイは存在しない。例えば、ユーザーは、それと通信する別のコンピューティングシステムを介してコンピューティングシステム500と遠隔でインタラクトすることができ、またはコンピューティングシステム500は自律的に動作することができる。
【0095】
メモリ515は、プロセッサ510によって遂行されると機能を提供するソフトウェアモジュールを格納する。モジュールは、コンピューティングシステム500のためのオペレーティングシステム540を含む。モジュールは、本明細書に記載のプロセスまたはその派生物の全部または一部を実行するように構成された自動アンカー決定モジュール545をさらに含む。コンピューティングシステム500は、追加の機能を含む1つまたは複数の追加の機能モジュール550を含むことができる。
【0096】
当業者は、「システム」が、本発明の範囲から逸脱することなく、サーバー、組込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、もしくは任意の他の適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを理解するであろう。上記の機能を「システム」によって実行されるものとして提示することは、本発明の範囲を決して限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図している。実際、本明細書に開示する方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と一致する局所化された形態および分散された形態で実装されてもよい。コンピューティングシステムは、ローカルエリアネットワーク(LAN)、移動通信ネットワーク、衛星通信ネットワーク、インターネット、パブリッククラウドもしくはプライベートクラウド、ハイブリッドクラウド、サーバーファーム、それらの任意の組み合わせなどの一部であるか、またはそれらによってアクセス可能であり得る。本発明の範囲から逸脱することなく、任意の局所化されたまたは分散されたアーキテクチャが使用されてもよい。
【0097】
本明細書に記載されたシステム特徴のいくつかは、それらの実施態様の独立性をより具体的に強調するために、モジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタムの超大規模集積(VLSI)回路またはゲートアレイ、ロジックチップ、トランジスタ、または他のディスクリートコンポーネントなどの既製の半導体を含むハードウェア回路として実装されてもよい。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックスプロセッシングユニットなどのプログラマブルハードウェアデバイスに実装されてもよい。
【0098】
モジュールはまた、様々なタイプのプロセッサによって遂行するためのソフトウェアに少なくとも部分的に実装されてもよい。遂行可能コードの識別されたユニットは、例えば、オブジェクト、プロシージャ、または関数として編成することができるコンピュータ命令の1つまたは複数の物理ブロックまたは論理ブロックを含むことができる。それにもかかわらず、識別されたモジュールの遂行可能ファイルは、物理的に共に配置される必要はないが、論理的に共に結合されたときにモジュールを含み、モジュールの記載された目的を達成する異なる場所に格納された異なる命令を含むことができる。さらに、モジュールは、コンピュータ可読媒体に格納されてもよく、それは、例えば、ハードディスクドライブ、フラッシュデバイス、RAM、テープ、および/または本発明の範囲から逸脱することなくデータを格納するために使用される任意の他のそのような非一時的コンピュータ可読媒体であってもよい。
【0099】
実際、遂行可能コードのモジュールは、単一の命令、または多くの命令であってもよく、いくつかの異なるコードセグメント、異なるプログラム、およびいくつかのメモリデバイスに分散されてもよい。同様に、操作データは、本明細書ではモジュール内で識別および図示されてもよく、任意の適切な形態で具現化され、任意の適切なタイプのデータ構造内に編成されてもよい。操作データは、単一のデータセットとして収集されてもよく、または異なるストレージデバイスを含む異なる場所に分散されてもよく、少なくとも部分的に、システムまたはネットワーク上の電子信号としてのみ存在してもよい。
【0100】
図6Aは、本発明の一実施形態による、特定の状態を有するトランザクションアプリケーションウィンドウ600を示す。例えば、トランザクションアプリケーションウィンドウ600は、預金トランザクション中の特定の時点に現れるようなものであってもよい。図1のデザイナアプリケーション110または図3のデザイナアプリケーション310などのデザイナアプリケーションを使用して、ユーザーは、いくつかの実施形態では、ユーザーが画面上でグラフィカル要素を示すことを可能にする機能を有効にすることができる。例えば、ユーザーは、RPAワークフロー内のアクティビティによってインタラクトされるターゲットUI要素を指定することができる。図6Bを参照すると、ユーザーがテキストフィールド610をターゲットとして選択し、「現金」ラベル612をアンカーとして選択した場合、このペアは画面上でテキストフィールド610を一意に識別するのに十分であり、追加のアンカーを識別する必要はない。この実施形態では、最後に選択されたターゲットまたはアンカーUI要素について円内の「x」が表示される。いくつかの実施形態では、自動アンカー決定論理は、ターゲットのみが画面上で一意ではないと判定した後に、ユーザー入力を必要とせずにアンカーを自動的に選択することができる(例えば、最も近いアンカーを選択すること、ターゲットとアンカーの組み合わせがターゲットを一意的に識別する場所で見出される第1のアンカーを選択すること、特定の開始方向から時計回りまたは反時計回りである第1のアンカーを選択することなど)。
【0101】
しかしながら、いくつかのターゲットアンカーペアは、ターゲット検出のために使用されるロジックの下で一意ではない場合がある。例えば、図6Cを考える。この例では、ユーザーは、テキストフィールド620をターゲットとして選択し、「当行払い小切手」ラベル622をアンカーとして選択している。しかしながら、「非当行払い小切手」ラベル626のテキストフィールド624および「当行払い小切手」部分は、それぞれテキストフィールド620および「当行払い小切手」ラベル622の画像と同一である。さらに、これらのペアのバウンディングボックス間の線分の長さおよび角度も同一である。したがって、デザイナアプリケーションは、ユーザーが重複検出を見ることができるように、テキストフィールド624および「非当行払い小切手」ラベル626の「当行払い小切手」部分をハイライトさせる。
【0102】
この問題を解決するために、1つまたは複数のアンカーを自動的に選択することができる。図6Dを参照すると、「現金」ラベル628の選択および包含は、テキストフィールド620の固有の識別を可能にする。例えば、テキストフィールド620と「当行払い小切手」ラベル622およびテキストフィールド624と「非当行払い小切手」ラベル626の「当行払い小切手」部分とのバウンディングボックス間の線分の長さおよび角度は同じであるが、テキストフィールド620と「現金」ラベル628との間およびテキストフィールド624と「現金」ラベル628との間の線分の長さおよび角度は異なる。
【0103】
しかしながら、すべての追加のアンカー選択がすべての検出論理の一意の識別を可能にするわけではない。例えば、図6Eでは、セグメント間の角度関係のみが使用される場合、「預金トランザクション」ラベル630とテキストフィールド620との間のセグメント、および「預金トランザクション」ラベル630とテキストフィールド624との間のセグメントは、許容値から十分に逸脱しない可能性がある同様の角度を有する。これは、長さも使用される場合にも起こり得るが、長さの偏差の許容範囲は両方のセグメントを包含する。公差は、例えば、アプリケーションのUIの変更および/または設計時と実行時との間に発生する画面解像度の変更に対応するために使用されてもよい。いくつかの実施形態では、角度公差(例えば、1%、2%、5%、1°、2°、5°など)および/またはセグメント長公差(例えば、1%、2%、5%、1個の正規化画素、5個の正規化画素、20個の正規化画素など)を使用することができる。
【0104】
図6Fは、本発明の一実施形態による、ターゲット620の特定の半径640内のすべての追加のアンカー642が識別および選択されるが、ユーザーには見えないトランザクションアプリケーションウィンドウ600を示す。いくつかの実施形態では、半径は、異なるディスプレイ内の異なる数および/またはサイズの画素に対応する正規化された画素に基づいて定義される。例えば、Macbook(登録商標)の網膜ディスプレイは、他のほとんどのディスプレイの画素よりも約3倍小さい。
【0105】
この実施形態では、ユーザーは、第1のアンカーとして「当行払い小切手」ラベル622を選択する。このターゲット/アンカーの組み合わせはターゲット620を一意に識別しないため、半径640内の追加のアンカー642が識別される。アンカーは、ターゲットの「コンテキスト」内にある。この例で使用される場合、「コンテキスト」は、アプリケーション内の他のUI要素を指す。
【0106】
半径640内の追加のアンカー642を捕捉することにより、これは実行時により信頼性の高いターゲット識別を提供することができる。これは、ターゲットのアプリケーション内のUI要素の少なくとも1つが設計時と実行時との間で変化する場合、別のウィンドウが実行時にターゲットのアプリケーションウィンドウを部分的に覆う場合などを含む。いくつかの実施形態では、別のアプリケーションのウィンドウがターゲットに関連するアプリケーションのウィンドウを部分的に覆う場合、および/または他のアプリケーションの要素が半径内にある場合など、設計時に取り込まれた追加のアンカーはすべて同じアプリケーションウィンドウ内にあるとは限らない。これは、例えば、記録されたスクリーンショットが処理され、プロセス抽出のために示されている場合に特に当てはまり得る。
【0107】
いくつかの実施形態では、追加のアンカーおよび/または半径は、ユーザーに表示されてもよく(図6Gを参照)、または表示されなくてもよい(図6Fを参照)。追加のアンカーの自動選択が失敗した場合(例えば、半径内に追加のアンカーは存在せず、追加のアンカーはターゲットの固有の識別を可能にしないなど)、デザイナアプリケーションは、追加の入力(例えば、半径の外側にある1つまたは複数のアンカーの選択、半径の増加など)をユーザーに要求することができる。特定の実施形態では、初期半径でターゲットの一意の識別を実行することができない場合、半径を自動的に増加させることができ(すなわち、拡張される)、この増加は、一意の識別を容易にする追加の要素が見つからない場合に複数回実行することができる。半径を特定のサイズに増加させた後もターゲットを一意に識別できない場合、ユーザーは追加の入力を求められる場合がある。
【0108】
いくつかの実施形態では、複数の半径が使用されてもよく、追加のアンカーは、それらが検出された第1の半径に基づいてグループ化されてもよい。実行時に、UI自動化アプリケーション(例えば、RPAロボット)は、第1の半径にアンカーを使用することができ、これがターゲットを一意に識別しない場合、および/またはアンカーが見つからない場合、第2の半径アンカーなどを使用する。本発明の範囲から逸脱することなく、任意の適切な数およびサイズの半径を使用することができる。
【0109】
いくつかの実施形態では、いくつかの潜在的なアンカーは、多くの非要素領域またはホワイトスペースを有してもよい。ホワイトスペースは、未使用のUIのセクションまたはオブジェクトの周りのスペースを含んでもよい。特定の例では、ターゲットグラフィカル要素の近くにグラフィカル要素がなく、したがって特定の半径内でピックアップする適切なアンカーがない場合がある。いくつかの実施形態では、アルゴリズムは、ターゲットUI要素からの距離の順に要素をピックアップするので、要素がターゲットに近くない場合でも、さらに離れたアンカーが見つけられて使用される。いくつかの実施形態では、アンカー候補は、特定の基準(例えば、アンカー候補の特定の割合を超えるピクセルがホワイトスペースを含み、アンカー候補が冗長であり、UI内で複数回発見されるなど)に基づいて破棄され得る。
【0110】
ターゲットおよびアンカーは、ユーザーが設計時にワークフローを設計している間、およびその後実行時に、ターゲットを一意に識別するコンテキストが自動的に選択されるように格納される。したがって、単一のターゲット/アンカーの組み合わせがターゲットを一意に識別しない各ターゲットについて、1つまたは複数の追加のアンカーがターゲット識別に自動的に使用される。いくつかの実施形態では、すべての追加のアンカーは使用されない。むしろ、UI自動化アプリケーションは、追加のアンカーを試みてもよく、これがターゲットを一意に識別するのを支援しない場合、ターゲットが一意に識別されるまで次の追加のアンカーなどを試みる。すべてのアンカーを必須として指定しないことも新規である。いくつかの実施形態では、1つの必須のアンカーと複数の任意選択のアンカーとの組み合わせは、偽陽性または偽陰性を与えずに正しいターゲットを見つけるのを助けることができる。他の組み合わせ(例えば、複数の必須のアンカーのみ、または複数の任意選択のアンカーのみ)は、場合によっては偽陽性または偽陰性のいずれかをもたらし得る。
【0111】
ターゲットUI要素を有するアプリケーションのウィンドウが縮小される(例えば、図6Hおよび図6I)か、またはそのアンカーグラフィカル要素の一部が覆われるように別のウィンドウによって部分的に覆われる(例えば、図6Jおよび図6K)シナリオが発生する可能性がある。図6Hおよび図6Iでは、トランザクションアプリケーションウィンドウ600は、ウィンドウの一部が示されないように水平方向にサイズが縮小されている。この場合、トランザクション番号ラベルおよび現金計数ボタンのための追加のアンカーは、図6Fで見ることができるものであり、例えば、それらが検出されないように部分的に隠される。しかしながら、残りのアンカーは依然として検出される。このシナリオは、ウィンドウがユーザーの裁量でこのようにサイズ設定される場合、設計時に発生する可能性があり、その場合、目に見える追加のアンカーは実行時に後で使用される。このシナリオは、その後に、ユーザーがウィンドウを手動でサイズ変更するときに、実行時にも起こり得る。設計時に半径内にすべてのアンカーを含めることは、実行時にUI自動化をより堅牢にするのに役立ち得る。
【0112】
図6Jおよび図6Kでは、ウェブブラウザウィンドウ650は、トランザクションアプリケーションウィンドウ600のほぼ下半分を覆う。この場合、「非当行払い小切手」ラベルの追加のアンカーは非表示にされ、その関連するテキストフィールドは部分的にしか見えないが、残りのアンカーは依然として検出される。このシナリオは、ユーザーが何をしているかに応じて、設計時または実行時に発生する可能性がある。
【0113】
別のウィンドウがターゲットUI要素のアプリケーションウィンドウに隣接している場合(例えば、図6L図6N)、またはターゲットUI要素のアプリケーションウィンドウを部分的に覆う両方が重なっている場合にも、シナリオが発生する可能性がある。図6Lでは、ウェブブラウザ650の一部がこの図に見え、トランザクションアプリケーションウィンドウ600の隣に配置されている。ターゲットおよびアンカーが、例えば、図6Fおよび図6Gに示すように設計時に構成され、図6Lに示すシナリオが実行時に発生する場合、可視アンカーは、図6Mに示すように検出され得る。しかしながら、シナリオが設計時に発生すると予想される場合、図6Nに示すように、ウィンドウ650内の半径内の追加のアンカーが検出され、ターゲットUI要素の検出のためにトランザクションアプリケーションウィンドウ600のアンカーと併せて使用され得る。これは、実行時に隣接ウィンドウが潜在的にターゲットUI要素に近接し得ると予想される場合に特に有用であり得る。
【0114】
いくつかの実施形態では、機械学習(ML)モデルは、ウィンドウ(例えば、選択されたウィンドウ例を有するラベル付きスクリーンショットサンプルを使用することによって)を検出するように訓練され得る。次いで、そのような訓練されたMLモデルを使用して、一次アンカー(例えば、図6A図6Nの「当行払い小切手」ラベル)に関連するウィンドウを検出することができる。AI/MLモデルを使用してこのウィンドウが検出された後に、そのウィンドウ内の追加のアンカーが検出されてもよい。
【0115】
いくつかの実施形態は、ターゲットのウィンドウがブロックされているように見える場合、またはそうでなければターゲットが見つからないかもしくは利用可能でない場合、是正措置を講じることを試みることができる。例えば、1つまたは複数のアンカーがCVを使用して高い信頼度(例えば、95%、100%など)で検出されるが、ターゲットが検出されないか、またはターゲット/アンカーのいずれも検出されない場合には、アプリケーションウィンドウが別のウィンドウによってブロックされているか、その一部が画面から外れているか、または関連するアプリケーションが開いていないと想定され得る。次いで、RPAロボットは、ターゲットおよび潜在的にアンカーの少なくとも1つを含むアプリケーションウィンドウ全体またはその少なくとも一部を可視にするために、以下を含むがこれらに限定されないアクションまたはアクションのシーケンスを実行することができる。(1)ALT-TABを押してアプリケーションを選択し、ターゲットを含むべきアプリケーションウィンドウを前面に移動させる、(2)検出されたアンカーに関連する(アンカーUI要素が提出ボタンなどの何らかのアクションを実行する場合には、いくつかのしきい値内でそれに隣接する)画面上の位置にマウスを移動させ、ALT-SPACEまたはCTRL+ALT+SPACEを押し、「移動」メニューオプションを選択し、それが見えるようにウィンドウを移動させる、(3)そのような機構を使用して、ターゲットを有するはずのアプリケーションウィンドウをブロックしている他方のウィンドウを移動させる、(4)アプリケーションがまだ開いていない場合に開くことを試みる、(5)オペレーティングシステムレベルのAPI呼び出しを使用してそのような機能を実行する、または(6)それらの任意の組み合わせ。次いで、RPAロボットは、本明細書に記載されているようなターゲット/アンカー技術を使用して、再びターゲットを見つけようと試みることができる。いくつかの実施形態では、そのようなアクションは、ターゲットUI要素を識別しようと試みる前に先取り的に行われてもよい。
【0116】
特定の実行時シナリオでは、ユーザーは、ユーザー端末がローカルでアプリケーションを実行していない仮想マシンを使用している場合がある。むしろ、ユーザー端末は、例えば、キー押下、マウス移動、およびマウスクリックに関する情報を送信することができ、ユーザー端末は、ソフトウェアアプリケーションを実行しているリモートサーバーまたはクラウドシステムからビデオのストリームを受信することができる。そのような場合、どのウィンドウがどのアプリケーションに関連しているか、またはアプリケーションウィンドウが存在するかさえも分からない場合がある。しかし、MLモデルを用いれば、MLモデルがこの情報を検出できる可能性がある。
【0117】
したがって、いくつかの実施形態は、例えば、初期画面の画像を格納し、次いでALT-TABを使用して次のウィンドウを前面にもたらすことができる。次いで、この画面画像は、ターゲット/アンカーロジックを使用して分析することができる。ターゲットが見つからない場合、次のアプリケーションウィンドウを前面に持ってくることができ、画面を分析することができ、これを所定の回数、またはいくつかの実施形態では画面が初期画面と一致するまで繰り返すことができ、その時点で、デザイナアプリケーション(設計時)またはロボット(実行時)はユーザーに支援を求めることができる。
【0118】
いくつかの注目される実施形態では、RPAロボットは、是正措置を講じることを試みる前に、ユーザーがコンピューティングシステムとのインタラクションを一定時間停止するのを待つことができる。これにより、RPAロボットが、ユーザーが現在達成しようとしていることに干渉する方法でコンピューティングシステムを制御することを防止することができる。例えば、RPAロボットは、本発明の範囲から逸脱することなく、コンポーネントオブジェクトモデル(COM)オブジェクトおよび/または任意の他の適切な機構にサブスクライブするキー押下、マウスクリック、マウス移動などを監視することができる。ユーザーが一定期間(例えば、3秒、5秒、10秒、1分、10分など)コンピューティングシステムとインタラクトしなかった場合には、RPAロボットが是正措置を試みることができる。特定の実施形態では、RPAロボットは、ユーザーがコンピューティングシステムを使用している可能性が低い1つまたは複数の期間(例えば、真夜中から午前6:00まで)にのみ動作する。いくつかの実施形態では、RPAロボットは、是正措置を講じるべきかどうかに関してユーザーにプロンプトを出すことができる。
【0119】
デスクトップシナリオとは異なり、仮想環境のCVでは、ウィンドウがどこに配置されているか、およびそれらが何に関係するかに関する情報が多くのアプリケーションに関してオペレーティングシステムから取得され得る場合、何が実行されているかを知ることは特に困難であり得る。自動化ID、グラフィカル要素名、状態など、デスクトップ環境で利用可能であり得る追加の情報は、仮想環境では容易に利用可能ではない場合がある。実際、いくつかの実施形態では、仮想環境のCVは、画面およびテキスト上のグラフィカル要素を検出することができるが、どの特定のアプリケーションが実行中/可視であり、どのグラフィカル要素がどのアプリケーションに属するかを判定することができない場合がある。テキストおよびグラフィカル要素が画面上の様々な位置に表示される可能性があるため、この情報の限定されたセットは、二次アンカーへの依存をより頻繁にもたらす可能性がある。また、IDが変更または再利用されるデスクトップシナリオ(例えば、多くのウェブブラウザアプリケーションにおいて)では、二次アンカーを使用することも有益であり得る。
【0120】
アプリケーションが開いているがVM上で最小化されている場合、アプリケーションウィンドウは、タスクバーアイコンをクリックすることによって、またはWindows(登録商標)の新しいバージョンの右下のキャレットアイコンをクリックし、アイコンを認識し、それをクリックすることによって表示され得る。これは、設計時に訓練されたMLモデルを介して達成することができる。特定の実施形態では、修復ロジックは、サーバー側(例えば、VM機能を促進しているリモートサーバー上で動作するRPAロボットを介して)に移動させることができる。サーバー側RPAロボットは、ユーザーのコンピューティングシステム上で実行されているクライアント側RPAロボットから、ターゲットグラフィカル要素が見つからなかったことを示す情報を受信することができる。次いで、サーバー側RPAロボットは、VM上で実行されているものおよび場所に関する情報をクライアント側RPAロボットに送信することができる。VMは、シトリックス(登録商標)およびリモートデスクトッププロトコル(RDP)によって提供されるものなど、いくつかの実施形態ではクラウドベースであってもよい。
【0121】
いくつかの実施形態は、ターゲット検出のために必須のアンカーを必要とする。必須のアンカーが見つからない場合、ターゲットも欠落していると仮定することができる。必須のアンカーは、偽陽性を防止することができる。必須のアンカーが存在しない場合、実行時に、設計時にキャプチャされた潜在的に多くの任意選択のアンカーのうち、実行時の画面上のグラフィカル要素は、実行時グラフィカル要素が正しいターゲットグラフィカル要素でなくても、ターゲットグラフィカル要素と同様に見える場合がある。
【0122】
図7は、本発明の一実施形態による、自動アンカー決定を実行するためのプロセス700を示すフローチャートである。プロセスは、710において、ターゲットが単独で十分に目立つかどうかをチェックすることから始まる。これは、本発明の範囲から逸脱することなく、CV、画像マッチング、グラフィカル要素のサイズおよび/または形状、1つまたは複数の許容範囲内の色、および/または任意の他の適切な機構を使用して達成することができる。720でターゲットが特定の信頼度で一意に識別できる場合には、730でターゲットに関連する処理(例えば、設計時にその識別のためにターゲット情報のみを使用するようにRPAワークフローのアクティビティを構成すること、実行時でのRPAワークフローのアクティビティのロジックに基づいてターゲットとインタラクトすることなど)が実行される。
【0123】
しかしながら、720でターゲットを一意に識別できない場合には、740でターゲットと単一のアンカーとの間の幾何学的関係(例えば、セグメント長、セグメント角度など)を使用することができる。いくつかの実施形態では、単一のアンカーは、ユーザーが選択したアンカーである。しかしながら、特定の実施形態では、アンカーは自動的に選択されたアンカーである。
【0124】
750でターゲット/アンカーの組み合わせを使用してターゲットを一意に識別できる場合、プロセスは730でターゲットに関連する処理を実行することに進む。しかしながら、750でターゲットを一意に識別できない場合には、システムは、ターゲットの半径内の1つまたは複数の追加のアンカーを自動的に識別し、760でターゲットと少なくとも2つのアンカーとの間の幾何学的関係を使用してターゲットを一意に識別しようと試みる。770において、ターゲットと少なくとも2つのアンカーとの組み合わせを使用してターゲットを一意に識別することができる場合、プロセスは、730においてターゲットに関連する処理を実行することに進む。しかしながら、770でターゲットを見つけることができない場合には、780でユーザーが入力を求められ、またはエラーが投げられる。
【0125】
図8Aおよび図8Bは、本発明の一実施形態による、設計時および実行時にそれぞれ自動アンカー決定およびターゲットグラフィカル要素識別を実行するためのプロセスを示すフローチャートである。図8Aを参照すると、プロセスは、805において、画像内のターゲットグラフィカル要素が設計時に少なくとも信頼度をもって識別され得るかどうかをチェックすることから始まる。これは、本発明の範囲から逸脱することなく、CV、画像マッチング、グラフィカル要素のサイズおよび/または形状、1つまたは複数の許容範囲内の色、および/または任意の他の適切な機構を使用して達成することができる。810でターゲットが特定の信頼度で一意に識別できる場合、815でターゲットに関連する処理(例えば、設計時にその識別のためにターゲット情報のみを使用するようにRPAワークフローのアクティビティを構成すること、実行時でのRPAワークフローのアクティビティのロジックに基づいてターゲットとインタラクトすることなど)が実行される。
【0126】
しかしながら、810においてターゲットが少なくとも信頼度で一意に識別され得ない場合には、いくつかの実施形態では、820において、一次アンカーまたは必須のアンカーの指定が受信される(および潜在的に必要とされる)か、または自動的に実行され得る。追加のアンカーは、825において、ターゲットグラフィカル要素の近傍内で自動的に探索される。いくつかの実施形態では、近傍は、ターゲットグラフィカル要素からの半径によって定義される。830で追加のアンカーが見つかると、835でアンカーが格納され、プロセスは終了するかまたは図8Bに進む。
【0127】
いくつかの実施形態では、MLモデルを利用して、指定された一次アンカーを含むウィンドウを検出することができる。検出されたウィンドウ内の自動的に決定されたアンカーの一致する可視アンカーを識別することができる。次いで、これらの一致する可視アンカーを実行時に使用して、ターゲットグラフィカル要素を識別することができる。
【0128】
いくつかの実施形態では、所定量を超えるホワイトスペースを有するか、またはターゲットグラフィカル要素とそれぞれのアンカー候補との間に所定量を超えるホワイトスペースがあるアンカー候補は無視される。特定の実施形態では、自動的に決定されたアンカーの1つまたは複数は、ターゲットグラフィカル要素とは異なるアプリケーションウィンドウに配置される。
【0129】
830で追加のアンカーが見つからない場合には、探索のための近傍が840で拡張される。これは、例えば、追加のアンカーが見つかるまで、最大の近傍に達するまで、またはUI全体が探索されるまで繰り返されてもよい。アンカーが見つかると、プロセスはステップ835に進む。アンカーが見つからない場合、ユーザーは案内を促されてもよく、またはエラーが投げられてもよい。
【0130】
図8Bを参照すると、これは、実行時にターゲットのみがターゲットグラフィカル要素の識別に成功しなかった場合を考慮し、追加のアンカーが必要とされた。845において、ターゲットグラフィカル要素と、ターゲットグラフィカル要素に対して以前に決定された自動的に決定されたアンカーに一致する1つまたは複数の可視アンカーについて探索が実行される。いくつかの実施形態では、1つまたは複数の一致する可視アンカーとターゲットグラフィカル要素との間の幾何学的関係を使用して、UI内のターゲットグラフィカル要素を識別することができる。特定の実施形態では、ターゲットグラフィカル要素の識別は、CVと、ターゲットグラフィカル要素と1つまたは複数の一致する可視アンカーの少なくとも1つとの間の幾何学的関係と、の組み合わせを少なくとも部分的に使用して実行される。いくつかの実施形態では、幾何学的関係は、1つもしくは複数の線分長、1つもしくは複数の角度、またはその両方を含む。いくつかの実施形態では、含まれる場合、一次アンカーまたは必須のアンカーの存在が必要とされ得る。特定の実施形態では、自動的に決定されたアンカーと一致する1つまたは複数の可視アンカーは、ターゲットグラフィカル要素と指定された主または必須のアンカーとの間の関係が実行時にターゲットグラフィカル要素を一意に識別しない場合にのみ探索される。いくつかの実施形態では、1つまたは複数の一致する可視アンカーの探索は、ターゲットグラフィカル要素の半径内で実行される。
【0131】
いくつかの実施形態では、一致する可視アンカーのサブセットは、ターゲットグラフィカル要素を識別するために使用される。特定の実施形態では、一致する可視アンカーは、ターゲットグラフィカル要素が識別されるまで、またはターゲットグラフィカル要素の識別が成功せずにすべての一致する可視アンカーが試行されるまで、一度に1つずつ試行される。いくつかの実施形態では、1つまたは複数の一致する可視アンカーのうちの1つまたは複数は、ターゲットグラフィカル要素とは異なるアプリケーションウィンドウに位置する。特定の実施形態では、MLモデルは、ウィンドウ内の一致する可視アンカーを識別するために使用され、それらの可視アンカーのみが使用される。
【0132】
850でターゲットが見つかった場合には、855でUI自動化のためにターゲットとのインタラクションが実行され、UI自動化の遂行が継続する。しかしながら、850において、ターゲットグラフィカル要素の半径内の1つまたは複数の一致する可視アンカーがターゲットグラフィカル要素の識別をもたらさないか、または半径内に一致する可視アンカーが見つからない場合には、半径が拡張され、拡張された半径内の1つまたは複数の一致する可視アンカーが860において自動的に決定される。このステップは、一致する可視アンカーが見つかるまで、最大半径に達するまで、UI全体が探索されるまでなど繰り返され得る。865において、拡張半径(または半径)からの一致する可視アンカーに基づいてターゲットが見つかった場合には、プロセスはステップ855に進む。しかしながら、ターゲットが見つからなかった場合には、ユーザーは支援を求められるか、または870でエラーが投げられる。
【0133】
図9は、本発明の一実施形態による、ターゲットのウィンドウがブロックされているように見えるか、またはターゲットが見つからないかもしくは利用可能でない場合に、是正措置を試みるためのプロセス900を示すフローチャートである。プロセスは、910において、ターゲットグラフィカル要素を探索することから始まる。いくつかの実施形態では、図7図8A、または図8Bの関連する探索ステップに従って探索を実行することができる。920でターゲットが見つかった場合、930で、ターゲットグラフィカル要素に関連する処理(例えば、設計時にその識別のためにターゲット情報のみを使用するようにRPAワークフローのアクティビティを構成すること、実行時にRPAワークフローのアクティビティのロジックに基づいてターゲットとインタラクトすることなど)、またはターゲットとのインタラクションがUI自動化のために実行される。いくつかの実施形態では、UI自動化の後続のステップで別のターゲットグラフィカル要素とインタラクトされる場合には、プロセスはそのターゲットに対して再びステップ910に進む。
【0134】
しかしながら、CVを使用して1つまたは複数のアンカーが高い信頼度(例えば、95%、100%など)で検出されるが、ターゲットが検出されない、またはターゲット/アンカーのいずれも検出されない場合など、920でターゲットが見つからない場合には、アプリケーションウィンドウが別のウィンドウによってブロックされているか、その一部が画面から外れているか、または関連するアプリケーションが開いていないと想定され得る。いくつかの実施形態では、UI自動化(例えば、RPAロボットによって実行されるように)は、940において、ユーザーがコンピューティングシステムを使用している可能性が低い期間にわたって待機するか、または時間ウィンドウにわたって待機する。その後に、UI自動化は、950において、1つまたは複数の是正措置を試みる。例えば、UI自動化は、次いで、ターゲットおよび潜在的にアンカーの少なくとも1つを含むアプリケーションウィンドウ全体またはその少なくとも一部を可視にするために、アクションまたはアクションのシーケンスを実行することができる。アクションまたはアクションのシーケンスは、以下を含むことができるが、これらに限定されない。(1)ALT-TABを押して(例えば、これらのキーの押下をシミュレートして)アプリケーションを選択し、ターゲットを含むべきアプリケーションウィンドウをUIの前面に移動させる、(2)検出されたアンカーに関連する(アンカーUI要素が提出ボタンなどの何らかのアクションを実行する場合には、いくつかのしきい値内でそれに隣接する)画面上の位置にマウスポインタを移動させ、ALT-SPACEまたはCTRL+ALT+SPACEを押し、「移動」メニューオプションを選択し、それが見えるようにウィンドウを移動させる、(3)そのような機構を使用して、ターゲットを有するはずのアプリケーションウィンドウをブロックしている他のウィンドウ(または複数のウィンドウ)を移動させる、(4)アプリケーションがまだ開いていない場合に開くことを試みる、(5)オペレーティングシステムレベルのAPI呼び出しを使用してそのような機能を実行する、または(6)それらの任意の組み合わせ。
【0135】
いくつかの仮想実施形態では、RPAロボットは、アプリケーションおよびウィンドウ情報をローカルに決定することができない場合がある。そのような実施形態では、RPAロボットは、実行中のアプリケーション、開いているウィンドウ、および開いているウィンドウの位置に関する情報を、VMを実行しているサーバーから受信することができる。次いで、RPAロボットは、受信した情報を使用して、マウスクリック情報、キー押下情報、またはその両方を生成し、サーバーに、ターゲットグラフィカル要素に関連するウィンドウをUIのフォアグラウンドに移動させるか、ターゲットグラフィカル要素に関連するアプリケーションを起動させるか、またはその両方を行わせることができる。このように、VM環境においても、上記と同様の動作を実行することができる。
【0136】
960でターゲットの発見に成功した場合、プロセスはステップ930に進む。しかしながら、是正措置を取った後にターゲットがうまく見つからなかった場合、ユーザーは支援を求められる可能性があり、または970でエラーが投げられる。いくつかの実施形態では、ステップ940および/または950は、ターゲットUI要素および潜在的に1つまたは複数のアンカーを先取りして可視にする試みにおいて、ステップ910の前に実行されてもよいことに留意されたい。
【0137】
いくつかの実施形態では、ステップ970は、ターゲットグラフィカル要素の指示を取得すること、またはユーザーによって行われた是正措置を記録することを含むことができる。例えば、いくつかの実施形態では、UI内の検出されていないターゲットグラフィカル要素を識別するバウンディングボックスまたは指示を受信することができ、バウンディングボックスまたは指示に関連するターゲットグラフィカル要素のためのUI記述子を決定することができ、UI自動化に関連付けするロジックを更新することができ、または決定されたUI記述子を使用するようにMLモデルを再訓練することができる。特定の実施形態では、コンピューティングシステムとの是正ユーザーインタラクションを観察するレコーダを開始することができ、是正ユーザーインタラクションを記録することができ、記録された是正ユーザーインタラクションを使用して、UI自動化に関連するロジックを更新するか、またはMLモデルを再訓練してターゲットグラフィカル要素を見つけることができる。
【0138】
上記により、グラフィカル要素が画面上にまったくないか、または存在するが、(例えば、動的であり、ロボットが期待するものともはや一致しないセレクタの変化に起因して)検出されなかった場合が発生する可能性がある。そのような場合、図10Aのポップアップ1000などのポップアップが表示され、ターゲットグラフィカル要素が画面上に見えるかどうかをユーザーに問い合わせることができる。そうである場合、ポップアップは、ユーザーがターゲットグラフィカル要素を指定したいかどうかをユーザーに尋ねることができる。例えば、図10Bを参照されたい。次いで、ユーザーは、画面上でターゲットグラフィカル要素を指定することができる。例えば、図10Dのショッピングカート出荷情報ウィンドウ1010において、ユーザーは、ターゲットグラフィカル要素の周りにバウンディングボックス1012を描画することができる。あるいは、ユーザーはターゲットグラフィカル要素の位置をクリックし、RPAロボットはその位置にどのグラフィカル要素が配置されているかを把握することができる。そして、ロボットは、この情報を使用して、将来のグラフィカル要素を見つけることができる。例えば、RPAロボットは、グラフィカル要素のセレクタ情報を、ユーザーが指示した要素のセレクタと比較することができる。その後に、ロボットはこのセレクタ情報を将来使用することができる。特定の実施形態では、この情報は、ローカルまたはグローバルMLモデルを再訓練するために使用され得る。多くのユーザーマシンで有効にされるそのような特徴は、より堅牢なグローバルMLモデルをもたらすことができる。
【0139】
いくつかの実施形態では、ターゲットグラフィカル要素が画面上にまったくない場合、ユーザーは、ユーザーの是正ステップを監視するレコーダを始動することができる。例えば、ユーザーが図10Aの「いいえ」ボタンをクリックした場合、ポップアップ1000は、図10Cに示すように、レコーダを始動するかどうかをユーザーに尋ねることができる。その後に、レコーダアプリケーションがバックグラウンドで実行されてもよく、またはレコーダロジックがRPAロボットによって実行されてもよい。次に、レコーダアプリケーションまたはRPAロボットは、ユーザーが戻るボタンをクリックしてターゲットグラフィカル要素を含む前のウェブページに戻り、それをクリックするなど、ユーザーが行った各アクションを記録することができる。この記録された情報(例えば、マウスのクリックおよび位置、キーの押下、各アクションの順序など)は、ユーザーによって取られた是正措置を再現する方法をRPAロボットに教示するため、または是正措置を実行するようにMLモデルを訓練するために使用され得る。
【0140】
いくつかの実施形態では、レコーダ機能を実装するRPAロボットは、RPAデザイナアプリケーションでRPA開発者によって使用される記録された是正情報(例えば、XAMLファイルとして)を送信することができる。その後に、RPA開発者は、RPAロボットのワークフローを修正して、そのロジックを修正することができる。特定の実施形態では、記録された是正情報は、RPA開発者によるアクションなしでRPAロボットのワークフローに組み込まれてもよい。
【0141】
図7図9で実行されるプロセスステップは、本発明の実施形態に従って、プロセッサが図7図9で説明したプロセスの少なくとも一部を実行するための命令を符号化するコンピュータプログラムによって実行されてもよい。コンピュータプログラムは、非一時的コンピュータ可読媒体上で具現化されてもよい。コンピュータ可読媒体は、ハードディスクドライブ、フラッシュデバイス、RAM、テープ、および/またはデータを格納するために使用される任意の他のそのような媒体または媒体の組み合わせであってもよいが、これらに限定されない。コンピュータプログラムは、コンピュータ可読媒体に格納することもできる、図7図9で説明したプロセスステップの全部または一部を実施するようにコンピューティングシステムのプロセッサ(例えば、図5のコンピューティングシステム500のプロセッサ510)を制御するための符号化命令を含むことができる。
【0142】
コンピュータプログラムは、ハードウェア、ソフトウェア、またはハイブリッド実装で実施することができる。コンピュータプログラムは、互いに動作可能に通信し、表示するために情報または命令を渡すように設計されたモジュールから構成することができる。コンピュータプログラムは、汎用コンピュータ、ASIC、または任意の他の適切なデバイス上で動作するように構成することができる。
【0143】
本発明の様々な実施形態のコンポーネントは、本明細書の図に一般的に記載および図示するように、多種多様な異なる構成で配置および設計されてもよいことが容易に理解されよう。したがって、添付の図面に表される本発明の実施形態の詳細な説明は、特許請求される本発明の範囲を限定することを意図するものではなく、本発明の選択された実施形態を単に代表するものである。
【0144】
本明細書を通して説明される本発明の特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。例えば、本明細書全体を通して「特定の実施形態」、「いくつかの実施形態」、または同様の文言への言及は、実施形態に関連して説明される特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して、「特定の実施形態では」、「いくつかの実施形態では」、「他の実施形態では」、または同様の文言の出現は、必ずしもすべてが同じ実施形態のグループを指すわけではなく、記載された特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。
【0145】
本明細書を通して特徴、利点、または同様の文言を参照することは、本発明で実現され得る特徴および利点のすべてが本発明の任意の単一の実施形態であるべきであること、または本発明の任意の単一の実施形態であることを意味するものではないことに留意されたい。むしろ、特徴および利点に言及する文言は、一実施形態に関連して説明される特定の特徴、利点、または特性が本発明の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書を通して、特徴および利点、ならびに同様の文言の説明は、必ずしもそうとは限らないが、同じ実施形態を参照することができる。
【0146】
さらに、本発明の記載された特徴、利点、および特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。当業者は、特定の実施形態の特定の特徴または利点の1つまたは複数なしで本発明を実施できることを認識するであろう。他の例では、本発明のすべての実施形態には存在しない可能性がある特定の実施形態において、追加の特徴および利点が認識され得る。
【0147】
当業者は、上述の本発明が、異なる順序のステップ、および/または開示されているものとは異なる構成のハードウェア要素を用いて実施され得ることを容易に理解するであろう。したがって、本発明をこれらの好ましい実施形態に基づいて説明してきたが、本発明の趣旨および範囲内に留まりながら、特定の修正、変形、および代替構築が明らかであることは、当業者には明らかであろう。したがって、本発明の範囲を決定するために、添付の特許請求の範囲を参照すべきである。
図1
図2
図3
図4
図5
図6A
図6B
図6C
図6D
図6E
図6F
図6G
図6H
図6I
図6J
図6K
図6L
図6M
図6N
図7
図8A
図8B
図9
図10A
図10B
図10C
図10D