(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムであって、
子ウィンドウと子セッションを起動することと、
ロボティックプロセスオートメーション（ＲＰＡ）ロボットをプロセスとして前記子セッションにおいて初期化することと、
前記ＲＰＡロボットを実行することと、
を少なくとも１つのプロセッサに実行させるように構成され、
前記子セッションはオペレーティングシステムの親セッションの子であり、
前記子ウィンドウは前記親セッションの親ウィンドウ内に配置され、
前記ＲＰＡロボットは、実行中、前記子ウィンドウ内の複数のアクティビティを含むＲＰＡワークフローを実行し、
前記親セッションと前記子セッションは共通のファイルシステムにアクセス可能であり、
前記ＲＰＡワークフローにおける前記複数のアクティビティを実行するときに、前記ＲＰＡロボットは、コンピューティングシステム上で実行されている一又は複数の共通のアプリケーションと対話し、ユーザは前記親セッションを介して前記一又は複数の共通のアプリケーションにアクセス可能であり、前記ＲＰＡロボットは前記子セッションを介して前記一又は複数の共通のアプリケーションにアクセス可能であり、
前記ＲＰＡロボットがアテンディッド（操作要）ロボットである場合に、ユーザが前記親セッションを介してアプリケーションのインスタンスと対話することは、前記ＲＰＡロボットが前記子セッションを介して該アプリケーションの異なるインスタンス又は異なるアプリケーションのインスタンスと対話することを妨げないことを特徴とするコンピュータプログラム。
【請求項２】
前記子ウィンドウは、前記親セッションのウィンドウにおけるロボットトレイアプリケーションから起動されることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項３】
前記ロボットトレイアプリケーションと前記ＲＰＡロボットの間の通信は、プロセス間通信（ＩＰＣ）プロトコルを使用して行われ、
前記ロボットトレイアプリケーションは、前記ＩＰＣプロトコルを介して前記ＲＰＡロボットのプロセスにコマンドを送るように構成されていることを特徴とする、請求項２に記載のコンピュータプログラム。
【請求項４】
前記ＲＰＡロボットは、前記ＩＰＣプロトコルを介して前記ロボットトレイアプリケーションにステータス通知を送るように構成されていることを特徴とする、請求項３に記載のコンピュータプログラム。
【請求項５】
前記ＲＰＡロボットが前記ＲＰＡワークフローの実行を完了した後、前記子セッションを自動的に終了させ、前記子ウィンドウを閉じること
を前記少なくとも１つのプロセッサにさらに実行させるように構成されていることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項６】
前記共通のファイルシステムを共有する追加の子ウィンドウと追加の個別セッションを起動することと、
前記追加の子セッションにおいて別のＲＰＡロボットを起動することと、
前記別のＲＰＡロボットを実行することと
を前記少なくとも１つのプロセッサにさらに実行させるように構成されていることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項７】
前記ＲＰＡロボットがアテンディッドロボットであって前記ＲＰＡロボットが対話しているアプリケーションとユーザが対話することを試みるときに、
前記ＲＰＡロボットが現在該アプリケーションにアクセスしていることを示すメッセージを前記親セッションのウィンドウでユーザに対して表示すること
を前記少なくとも１つのプロセッサにさらに実行させるように構成されていることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項８】
前記親セッションと前記子セッションは設計時に起動され、
前記ＲＰＡロボットはアテンディッド（操作要）自動化を実行し、
統合開発環境（ＩＤＥ）アプリケーションが、前記親セッションと関連付けられたコンピューティングシステム上で実行され、前記アテンディッド自動化を起動するように構成されていることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項９】
前記親セッションと前記子セッションは異なるコンピューティングシステムで実行されることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項１０】
前記親ウィンドウ、前記子ウィンドウ、又はこれら両方が、メインユーザインタフェース（ＵＩ）内に表示されるＵＩを表すウィンドウ、コンピューティングシステムの第２のディスプレイの第２の画面、仮想デスクトップ、又は隔離された環境を含むことを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項１１】
前記子ウィンドウと前記子セッションの起動、前記子セッションにおける前記ＲＰＡロボットの初期化、及び前記ＲＰＡロボットの実行は、リモートコンピューティングシステムを介して実行されることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項１２】
前記ＲＰＡロボットはアンアテンディド（操作不要）ロボットであることを特徴とする、請求項１に記載のコンピュータプログラム。
【請求項１３】
設計時のロボティックプロセスオートメーション（ＲＰＡ）のためのアテンディッド（操作要）自動化を実行するためのコンピュータ実施方法であって、
前記コンピュータ実施方法は、
統合開発環境（ＩＤＥ）から子ウィンドウと子セッションを起動することと
ロボティックプロセスオートメーション（ＲＰＡ）ロボットをプロセスとして前記子セッションにおいて初期化することと、
前記ＲＰＡロボットを実行することと、
を含み、
前記子セッションはオペレーティングシステムの親セッションの子であり、
前記子ウィンドウは前記親セッションの親ウィンドウ内に配置され、
前記ＲＰＡロボットは、実行中、前記子ウィンドウ内の複数のアクティビティを含むＲＰＡワークフローを実行し、
前記親セッションと前記子セッションは共通のファイルシステムにアクセス可能であり、
前記ＲＰＡワークフローにおける前記複数のアクティビティを実行するときに、前記ＲＰＡロボットは、コンピューティングシステム上で実行されている一又は複数の共通のアプリケーションと対話し、ユーザは前記親セッションを介して前記一又は複数の共通のアプリケーションにアクセス可能であり、前記ＲＰＡロボットは前記子セッションを介して前記一又は複数の共通のアプリケーションにアクセス可能であり、
前記ＲＰＡロボットはアテンディッド（操作要）ロボットであり、
ユーザが前記親セッションを介してアプリケーションのインスタンスと対話することは、前記ＲＰＡロボットが前記子セッションを介して該アプリケーションの異なるインスタンス又は異なるアプリケーションのインスタンスと対話することを妨げないことを特徴とするコンピュータ実施方法。
【請求項１４】
ロボット動作中に前記ＲＰＡロボットからステータスメッセージを受け取ることと、
前記ステータスメッセージを前記ＩＤＥに表示することと、
をさらに含むことを特徴とする、請求項１３に記載のコンピュータ実施方法。
【請求項１５】
ユーザが前記ＲＰＡロボットの動作を終了させるコマンドを与えるときに、
前記コンピュータ実施方法は、
前記ＲＰＡロボット、前記子セッション、及び前記子ウィンドウの動作を前記ＩＤＥによって終了させること
をさらに含むことを特徴とする、請求項１３に記載のコンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ロボティックプロセスオートメーション（ＲＰＡ）に関し、より詳細には、アテンディッド（操作要）ロボット又はアンアテンディド（操作不要）ロボットのためのＲＰＡ用自動化ウィンドウに関する。
【背景技術】
【０００２】
アテンディッド（操作要）自動化ロボットは、ユーザによって操作されるコンピューティングシステム上で実行される。アテンディッド自動化シナリオで発生する可能性がある問題は、ユーザがコンピューティングシステムと対話することを試みるときに、ロボットがユーザのコンピューティングシステムを「テイクオーバする（引き継ぐ）」可能性があることである。つまり、ロボットは、ユーザが行うのと同じ方法で（例えば、マウスクリックやキーボード入力をシミュレートするなどして）、ユーザインタフェース（ＵＩ）を介してアプリケーションを制御する。
【０００３】
オペレーティングシステム又はオペレーティングシステム上で実行されているアプリケーションの完全な又は部分的なコピーを作成する様々な技術が存在する。エミュレータは何十年にわたり存在しており、アプリケーションをテスト、デバッグする機能を開発者に提供する場合がある。例えば、エミュレータは、開発ツールの実行を直接サポートしていないオペレーティングシステムを使用するモバイルアプリケーションをテスト、デバッグする機能を開発者に提供する。Ａｎｄｒｏｉｄ（登録商標）及びｉＯＳ（登録商標）はどちらも、それらのモバイルオペレーションシステム上で開発者用ツールをネイティブで実行できないため、開発マシンから実行されてＡｎｄｒｏｉｄ（登録商標）又はｉＯＳ（登録商標）アプリケーションをテスト、デバッグできるエミュレータを提供する。
【０００４】
シミュレータにより、開発者は、開発マシンでの実行が困難又は不可能なアプリケーションの振る舞いを開発者がテスト、デバッグできる自身のローカルマシンでウィンドウをホストすることができる。例えば、シミュレータにより、開発者は、ボタンをクリックしてシミュレータを回転できる。これにより、シミュレータ内で実行されているアプリケーションに、このようなイベントに応答するアプリケーションの振る舞いをテスト、デバッグする目的でデバイスが回転されたことが通知される。別の一般的な例はマルチタッチである。多くの開発者マシンはタッチをサポートしていないため、シミュレータにより、開発者は、アプリケーションが複数のタッチポイントにどのように応答するかをテスト、デバッグできる。Ａｎｄｒｏｉｄ（登録商標）及びｉＯＳ（登録商標）エミュレータもシミュレーション機能を提供する。さらに、Ｍｉｃｒｏｓｏｆｔ（登録商標）は、ユニバーサルＷｉｎｄｏｗｓプラットフォーム（ＵＷＰ）アプリケーション用のシミュレータを提供する。
【０００５】
仮想マシンは、マシン上で第２のオペレーティングシステムをホストし、ウィンドウを介して開かれ、監視されることが可能である。これは、完全に異なるオペレーティングシステムを実行し、ハードウェアをホストマシンと共有する。「ゲスト」マシンには、アプリケーションの「ゲスト」マシン自身のコピーがインストールされている必要があり、「ゲスト」マシンは、共通のリソースやファイルをユーザマシンと共有しない。
【０００６】
Ｄｏｃｋｅｒ（登録商標）コンテナは、概念的には仮想マシンのハイブリッド形式である。実行される必要がある全てのアプリケーションが、ホストオペレーティングシステムで直接実行される不変のパッケージにパッケージ化される。パッケージは別のオペレーティングシステムの完全なコピーではないが、デフォルトではホストマシン上のアプリケーションやリソースを共有したりそれらにアクセスしたりすることはない。したがって、ユーザエクスペリエンスの観点からは、Ｄｏｃｋｅｒ（登録商標）コンテナは仮想マシンに類似するように感じられるが、技術的には、コンテナは完全に別のオペレーティングシステム上で実行されていない。
【０００７】
しかし、従来のエミュレータ、シミュレータ、仮想マシン（ＶＭ）、オペレーティングシステム（ＯＳ）レベルの仮想化を提供するハイブリッドＶＭ（例えば、Ｄｏｃｋｅｒ（登録商標）コンテナなど）は、ユーザと同じコンピューティングシステムで動作するアテンディッド自動化ロボットで発生する問題に対処していない。したがって、ユーザは、基本的に自身のコンピューティングシステムの見物人になり、ロボットの作業を監視し、ユーザとの対話（相互作用）を必要とするマシン上の他のアプリケーションと対話できなくなる。したがって、向上したアプローチが有益である可能性がある。
【発明の概要】
【０００８】
本発明の特定の実施形態は、現在のＲＰＡ技術によってまだ完全に識別、認識、又は解決されていない、当技術分野における課題及び必要性に対する解決方法を提供する可能性がある。例えば、本発明の幾つかの実施形態は、アテンディッド（操作要）ロボット又はアンアテンディド（操作不要）ロボットのためのＲＰＡ用自動化ウィンドウに関する。
【０００９】
一実施形態において、コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体で具現化される。該プログラムは、子セッションウィンドウと子セッションを起動することを少なくとも１つのプロセッサに実行させるように構成されている。子セッションはオペレーティングシステムの親セッションの子であり、子セッションウィンドウは親セッションの親ウィンドウ内に配置される。該プログラムはさらに、ユーザコンピューティングシステム上でユーザセッションウィンドウを起動することと、ユーザセッションウィンドウの子ウィンドウとしてロボットセッションのロボットセッションウィンドウを起動することと、ＲＰＡロボットをプロセスとしてロボット子セッションにおいて初期化することと、ＲＰＡロボットを実行することと、を少なくとも１つのプロセッサに実行させるように構成されている。ＲＰＡロボットは、実行中、子セッションウィンドウ内の複数のアクティビティを含むＲＰＡワークフローを実行する。親セッションと子セッションは共通のファイルシステムにアクセス可能である。
【００１０】
別の実施形態において、設計時のＲＰＡのためのアテンディッド（操作要）自動化を実行するためのコンピュータ実施方法は、統合開発環境（ＩＤＥ）から子セッションウィンドウと子セッションを起動することとを含む。子セッションはオペレーティングシステムの親セッションの子であり、子セッションウィンドウは親セッションの親ウィンドウ内に配置される。コンピュータ実施方法はさらに、ＲＰＡロボットをプロセスとして子セッションにおいて初期化することと、ＲＰＡロボットを実行することと、を含む。ＲＰＡロボットは、実行中、子セッションウィンドウ内の複数のアクティビティを含むＲＰＡワークフローを実行する。親セッションと子セッションは共通のファイルシステムにアクセス可能である。
【００１１】
さらに別の実施形態において、ＲＰＡの自動化監視のためのコンピュータ実施方法は、コンピューティングシステムに関連付けられた親セッションで監視及びトラブルシューティングアプリケーションを初期化して実行することを含む。コンピュータ実施方法はさらに、子セッションウィンドウと子セッションを起動することを含む。子セッションはオペレーティングシステムの親セッションの子である。コンピュータ実施方法はさらに、アンアテンディッドＲＰＡロボットをプロセスとして子セッションで初期化して実行することと、監視及びトラブルシューティングアプリケーションのユーザからアンアテンディッドＲＰＡロボットの動作を終了させるコマンドを受け取ることと、コマンドの受信に応答してアンアテンディッドＲＰＡロボットの動作を一時停止又は終了させることと、を含む。親セッションと子セッションは共通のファイルシステムにアクセス可能である。
【図面の簡単な説明】
【００１２】
本発明の特定の実施形態の利点が容易に理解されるように、上記簡単に説明した本発明のより詳細な説明を、添付の図面に示す特定の実施形態を参照して行う。これらの図面は、本発明の典型的な実施形態のみを示すもので、その範囲を限定するものと見なされるべきではないことを理解されたい。本発明は、添付の図面の使用を通じて追加の特性及び詳細とともに記載され説明される。
【００１３】
【図１】本発明の一実施形態によるロボティックプロセスオートメーション（ＲＰＡ）システムを示すアーキテクチャ図である。
【００１４】
【図２】本発明の一実施形態による、デプロイされたＲＰＡシステムを示すアーキテクチャ図である。
【００１５】
【図３】本発明の一実施形態による、デザイナとアクティビティとドライバとの関係を示すアーキテクチャ図である。
【００１６】
【図４】本発明の一実施形態によるＲＰＡシステムを示すアーキテクチャ図である。
【００１７】
【図５】本発明の一実施形態による、ＲＰＡ用自動化ウィンドウを実行するように構成されたコンピューティングシステムを示すアーキテクチャ図である。
【００１８】
【図６】本発明の一実施形態による、ユーザとアテンディッド自動化ロボットのセッションを実行するユーザコンピューティングシステムの幾つかのアプリケーションを、ユーザコンピューティングシステムで実行される幾つかのアプリケーションと共に示す。
【００１９】
【図７】図７Ａ〜図７Ｋは、本発明の一実施形態による、ユーザとＲＰＡ用ロボットのための別々のセッションの例を示すスクリーンショットである。
【００２０】
【図８】本発明の一実施形態による、ロボットとユーザがアテンディッド自動化ウィンドウを使用して同時にコンピューティングシステムを操作できるようにするためのプロセスを示すフローチャートである。
【００２１】
【図９】本発明の一実施形態による、ロボットとＲＰＡ開発者がアテンディッド自動化ウィンドウを使用して同時にコンピューティングシステムを操作できるようにするためのプロセスを示すフローチャートである。
【００２２】
【図１０】本発明の一実施形態による、ユーザのための自動化ウィンドウを使用してアテンディッド（操作要）又はアンアテンディッド（操作不要）自動化を実行するためのプロセスを示すフローチャートである。
【００２３】
【図１１】本発明の一実施形態による、ＲＰＡ開発者のための自動化ウィンドウを使用してアテンディッド又はアンアテンディッド自動化を実行するためのプロセスを示すフローチャートである。
【００２４】
【図１２】本発明の一実施形態による、自動化監視を実行するためのプロセスを示すフローチャートである。
【００２５】
特に示さない限り、同様の符号は、添付の図面全体を通して一貫して対応する特徴を示す。
【発明を実施するための形態】
【００２６】
幾つかの実施形態は、アテンディッド（操作要）ロボット又はアンアテンディッド（操作不要）ロボットのためのＲＰＡ用自動化ウィンドウに関する。幾つかの実施形態において、自動化ウィンドウは、アテンディッド（操作要）自動化のために使用される。しかし、幾つかの実施形態において、以下で説明するように、自動化ウィンドウは、オペレーションエンジニアがサーバで実行されている一又は複数のロボットをリモートで監視する場合など、アンアテンディッドロボットの監視のために使用されてもよい。自動化ウィンドウのアプリケーションには、エミュレータ、シミュレータ、ＶＭ、ＯＳレベルの仮想化を提供するハイブリッドＶＭ（例えば、Ｄｏｃｋｅｒ（登録商標）コンテナなど）が含まれるが、これらに限定されない。幾つかの実施形態は、アテンディッド自動化プロセスによって制御されているアプリケーションのＵＩを含むウィンドウとして第２の（例えば、子）セッションを作成し、ホストする。本明細書で使用される場合、「ウィンドウ」は、本発明の範囲から逸脱することなく、メインＵＩ内に示されるＵＩを表すウィンドウ、コンピューティングシステムの第２のディスプレイの第２の画面、仮想デスクトップ、隔離された環境（即ち、該環境内で起動された全てのアプリケーション（「子」という）のＵＩを描画し、（ホストセッションのコンテキストにおいて）それらを実行するウィンドウ（「ホスト」という）など）などに適用されてもよい。
【００２７】
複数のセッションを実行することにより、ユーザが第１のセッション（例えば、親セッションなど）と対話している間、ロボットはこの第２のセッションで動作できる。或いは、ユーザが第２のセッションで操作している間、ロボットが第１のセッションで動作してもよい。したがって、ユーザは、ロボットが使用していないアプリケーションと対話可能であってもよい（例えば、ロボットがＥｘｃｅｌ（登録商標）からウェブブラウザにデータを移動している間、ユーザはＯｕｔｌｏｏｋ（登録商標）を使用可能であってもよい）。或いは、ユーザとロボットが同じアプリケーションと対話可能であり、これは、該アプリケーションがこの機能に対応している場合に可能であってもよい（例えば、ユーザがあるインスタンスと対話している間、ロボットはウェブブラウザにおける別のインスタンスと対話するなど）。
【００２８】
ユーザとロボットが両方とも、同じアプリケーションインストール及びファイルシステムと対話する。アプリケーションでロボット及びユーザを介して行われた変更は、ユーザとロボットがそれぞれ別のバージョンのアプリケーションとファイルシステムで機能するというよりはむしろ、単一のユーザが変更を行ったかのように行われるであろう。つまり、アプリケーションはユーザのローカルのＥｘｃｅｌ（登録商標）、Ｏｕｔｌｏｏｋ（登録商標）などである。また、ローカルファイルシステムは追加構成なしで利用されてもよい。これは、例えば、ファイルシステムにアクセスするために追加構成手順が必要なＤｏｃｋｅｒ（登録商標）コンテナとは異なる。
【００２９】
幾つかの実施形態において、本発明の範囲から逸脱することなく、任意の数のロボットの任意の所望の数のセッションが作成されて使用されてもよい。例えば、ユーザは第１のセッションと対話してもよく、第１のロボットは第２のセッションと対話してもよく、第２のロボットは第３のセッションと対話してもよいなど。特定の実施形態において、複数のロボットが単一のセッションと対話してもよい。
【００３０】
セッションを作成する機能は、例えば、Ｗｉｎｄｏｗｓ（登録商標）ターミナルサービスの子セッションを介して実装されてもよく、これにより、ユーザがログアウトする必要なく、ユーザ自身のマシンにセッションを作成できる。新しく作成されたセッションは、子ウィンドウとして表示され、ユーザのセッションに存在するアプリケーションを含み、起動する。つまり、ユーザとロボットの分離がＵＩレベルで生じる。例えば、ファイルが削除された場合、これはコンピューティングシステムで実行されている全てのセッションにわたり生じる。
【００３１】
特定の実施形態は、ロボティックプロセスオートメーション（ＲＰＡ）に使用されてもよい。図１は、本発明の一実施形態による、ＲＰＡシステム１００を示すアーキテクチャ図である。ＲＰＡシステム１００は、開発者がワークフローを設計及び実装することを可能にするデザイナ１１０を含む。デザイナ１１０は、アプリケーション統合、並びにサードパーティアプリケーション、管理情報技術（ＩＴ）タスク、及びビジネスＩＴプロセスの自動化のためのソリューションを提供してもよい。デザイナ１１０は、ビジネスプロセスのグラフィック表現である自動化プロジェクトの開発を容易にしてもよい。簡単に言うと、デザイナ１１０はワークフロー及びロボットの開発とデプロイメントを容易にしてもよい。
【００３２】
自動化プロジェクトは、開発者が、本明細書において「アクティビティ」として定義される、ワークフローで開発されたカスタムセットのステップ間の実行順序及び関係を制御できるようにすることで、ルールベースのプロセスの自動化を可能にする。デザイナ１１０の実施形態の１つの商業的な例は、ＵｉＰａｔｈ  Ｓｔｕｄｉｏ（商標）である。各アクティビティには、例えばボタンのクリック、ファイルの読み込み、ログパネルへの書き込みなどのアクションが含まれていてもよい。幾つかの実施形態において、ワークフローがネストされ又は埋め込まれてもよい。
【００３３】
一部の種類のワークフローには、シーケンス、フローチャート、ＦＳＭ、及び／又はグローバル例外ハンドラが含まれてもよいが、これらに限定されない。シーケンスは、線形プロセスに特に適している可能性があり、ワークフローを混乱させることなく、あるアクティビティから別のアクティビティへのフローを可能にする。フローチャートは、より複雑なビジネスロジックに特に適している可能性があり、複数の分岐論理演算子によって、より多様な方法で決定の統合及びアクティビティの接続を可能にする。ＦＳＭは、大規模なワークフローに特に適している可能性がある。ＦＳＭは、実行時に有限数の状態を使用してもよく、それらの状態は、条件（即ち、遷移）又はアクティビティによってトリガされる。グローバル例外ハンドラは、実行エラーが発生したときのワークフローの振る舞いを決定したり、プロセスをデバッグしたりするのに特に適している可能性がある。
【００３４】
ワークフローがデザイナ１１０で開発されると、ビジネスプロセスの実行は、デザイナ１１０で開発されたワークフローを実行する一又は複数のロボット１３０を調整するコンダクタ１２０によって調整される。コンダクタ１２０の実施形態の１つの商用的な例は、ＵｉＰａｔｈ  Ｏｒｃｈｅｓｔｒａｔｏｒ（商標）である。コンダクタ１２０は、環境におけるリソースの作成、監視、及びデプロイメントの管理を容易にする。コンダクタ１２０は、サードパーティのソリューション及びアプリケーションとの統合ポイント又は集約ポイントの１つとして機能してもよい。
【００３５】
コンダクタ１２０は、全てのロボット１３０を管理して、集中ポイントからロボット１３０を接続して実行してもよい。管理可能なロボット１３０の種類には、アテンディッドロボット１３２、アンアテンディッドロボット１３４、開発ロボット（アンアテンディッドロボット１３４と同様であるが、開発及びテストの目的で使用される）、及び非生産ロボット（アテンディッドロボット１３２と同様であるが、開発及びテストの目的で使用される）が含まれるが、これらに限定されない。アテンディッドロボット１３２は、ユーザイベントによってトリガされ、又は自動的に実行されるようにスケジュールされて、同じコンピューティングシステム上で人間と一緒に動作する。アテンディッドロボット１３２は、集中プロセス展開及びロギング媒体のためにコンダクタ１２０と共に使用されてもよい。アテンディッドロボット１３２は、人間のユーザが様々なタスクを達成するのを助け、ユーザイベントによってトリガされてもよい。幾つかの実施形態において、プロセスは、この種のロボットのコンダクタ１２０から開始されることができず、且つ／又は、ロックされた画面の下で実行できない。特定の実施形態において、アテンディッドロボット１３２は、ロボットトレイから又はコマンドプロンプトから開始できるのみである。幾つかの実施形態において、アテンディッドロボット１３２は、人間の監督下で動作するべきである。
【００３６】
アンアテンディッドロボット１３４は、仮想環境で操作不要で実行され、多くのプロセスを自動化できる。アンアテンディッドロボット１３４は、遠隔実行、監視、スケジューリング、及びワークキューのサポートの提供を担当してもよい。幾つかの実施形態において、全てのロボットの種類のデバッグをデザイナ１１０から実行してもよい。アテンディッドロボットとアンアテンディッドロボットの両方が、メインフレーム、ウェブアプリケーション、ＶＭ、エンタープライズアプリケーション（例えば、ＳＡＰ（登録商標）、ＳａｌｅｓＦｏｒｃｅ（登録商標）、Ｏｒａｃｌｅ（登録商標）などによって生成されたもの）、及びコンピューティングシステムアプリケーション（例えば、デスクトップ及びラップトップアプリケーション、モバイルデバイスアプリケーション、ウェアラブルコンピュータアプリケーションなど）を含むがこれらに限定されない様々なシステム及びアプリケーションを自動化してもよい。
【００３７】
コンダクタ１２０は、プロビジョニング、デプロイメント、バージョニング、コンフィギュレーション、キューイング、監視、ロギング、及び／又は相互接続性の提供を含むがこれらに限定されない様々な機能を有してもよい。プロビジョニングには、ロボット１３０とコンダクタ１２０（例えば、ウェブアプリケーションなど）の間の接続の作成及び保守が含まれてもよい。デプロイメントには、実行のために割り当てられたロボット１３０へのパッケージバージョンの正しい配信を保証することが含まれてもよい。バージョニングには、幾つかの実施形態において、幾つかのプロセス又はコンフィギュレーションの固有のインスタンスの管理が含まれてもよい。コンフィギュレーションには、ロボット環境及びプロセスコンフィギュレーションの保守及び配信が含まれてもよい。キューイングには、キュー及びキューアイテムの管理の提供が含まれてもよい。監視には、ロボット識別データの追跡及びユーザ権限の維持が含まれてもよい。ロギングには、データベース（例えば、ＳＱＬデータベースなど）及び／又は他のストレージメカニズム（例えば、ＥｌａｓｔｉｃＳｅａｒｃｈ（登録商標）など。これは、大規模なデータセットを記憶してすばやくクエリを実行する機能を提供する）へのログの記憶及びインデックス付けが含まれてもよい。コンダクタ１２０は、サードパーティのソリューション及び／又はアプリケーションのための通信の集中ポイントとして機能することで、相互接続性を提供してもよい。
【００３８】
ロボット１３０は、デザイナ１１０に組み込まれたワークフローを実行する実行エージェントである。ロボット１３０の幾つかの実施形態のうち１つの商用的な例は、ＵｉＰａｔｈ  Ｒｏｂｏｔｓ（商標）である。幾つかの実施形態において、ロボット１３０は、デフォルトで、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）サービスコントロールマネージャー（ＳＣＭ）が管理するサービスをインストールする。その結果、そのようなロボット１３０が、ローカルシステムアカウントでインタラクティブなＷｉｎｄｏｗｓ（登録商標）セッションを開き、Ｗｉｎｄｏｗｓ（登録商標）サービスの権限を有してもよい。
【００３９】
幾つかの実施形態において、ロボット１３０は、ユーザモードでインストールされてもよい。そのようなロボット１３０の場合、これは、ユーザのもとでロボット１３０がインストールされて、そのユーザと同じ権利をロボット１３０が有することを意味する。この特徴は、高密度（ＨＤ）ロボットで利用可能であってもよく、各マシンの最大限の活用を確実にしてもよい。幾つかの実施形態において、任意の種類のロボット１３０が、ＨＤ環境で構成されてもよい。
【００４０】
幾つかの実施形態におけるロボット１３０は、それぞれが特定の自動化タスク専用である幾つかのコンポーネントに分割される。幾つかの実施形態におけるロボットコンポーネントには、ＳＣＭ管理のロボットサービス、ユーザモードのロボットサービス、エグゼキュータ、エージェント、及びコマンドラインが含まれるが、これらに限定されない。ＳＣＭ管理のロボットサービスは、Ｗｉｎｄｏｗｓ（登録商標）セッションを管理、監視してコンダクタ１２０と実行ホスト（即ち、ロボット１３０が実行されるコンピューティングシステム）の間のプロキシとして機能する。このようなサービスは、ロボット１３０の資格情報で信頼され、これを管理する。コンソールアプリケーションは、ローカルシステムのもとでＳＣＭによって起動される。
【００４１】
幾つかの実施形態におけるユーザモードロボットサービスは、Ｗｉｎｄｏｗｓ（登録商標）セッションを管理、監視し、コンダクタ１２０と実行ホストの間のプロキシとして機能する。ユーザモードロボットサービスは、ロボット１３０の資格情報で信頼され、これを管理してもよい。ＳＣＭ管理のロボットサービスがインストールされていない場合、Ｗｉｎｄｏｗｓ（登録商標）アプリケーションが自動的に起動されてもよい。
【００４２】
エグゼキュータは、Ｗｉｎｄｏｗｓ（登録商標）セッションのもとで所定のジョブを実行してもよい（即ち、エグゼキュータはワークフローを実行してもよい。エグゼキュータは、モニタ毎のドット／インチ（ＤＰＩ）設定を認識していてもよい。エージェントは、システムトレイウィンドウで利用可能なジョブを表示するＷｉｎｄｏｗｓ（登録商標）Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎ（ＷＰＦ）アプリケーションであってもよい。エージェントはこのサービスのクライアントであってもよい。エージェントは、ジョブの開始又は停止を要求し、設定を変更してもよい。コマンドラインはそのサービスのクライアントであってもよい。コマンドラインは、ジョブの開始を要求可能なコンソールアプリケーションであり、その出力を待つ。
【００４３】
上記で説明したようにロボット１３０のコンポーネントを分割することにより、開発者、サポートユーザ、及びコンピューティングシステムが、各コンポーネントの実行内容の実行、識別、及び追跡をより容易に行うことができる。このように、例えばエグゼキュータとサービスに異なるファイアウォールルールを設定するなど、コンポーネント毎に特別な振る舞いが構成されてもよい。幾つかの実施形態において、エグゼキュータは、モニタ毎のＤＰＩ設定を常に認識していてもよい。その結果、ワークフローが作成されたコンピューティングシステムの構成に関わらず、ワークフローが任意のＤＰＩで実行されてもよい。幾つかの実施形態において、デザイナ１１０からのプロジェクトは、ブラウザのズームレベルから独立していてもよい。ＤＰＩを認識しない又は意図的に認識しないとマークされているアプリケーションの場合、幾つかの実施形態においてＤＰＩが無効にされてもよい。
【００４４】
図２は、本発明の一実施形態による、デプロイされたＲＰＡシステム２００を示すアーキテクチャ図である。幾つかの実施形態において、ＲＰＡシステム２００は、図１のＲＰＡシステム１００であってもよいし、その一部であってもよい。クライアント側、サーバ側、又はこれらの両方が、本発明の範囲から逸脱することなく、任意の所望の数のコンピューティングシステムを含んでもよいことに留意されたい。クライアント側では、ロボットアプリケーション２１０が、エグゼキュータ２１２、エージェント２１４、及びデザイナ２１６を含む。しかし、幾つかの実施形態において、デザイナ２１６はコンピューティングシステム２１０で実行されていなくてもよい。エグゼキュータ２１２はプロセスを実行する。図２に示すように、複数のビジネスプロジェクトが同時に実行されてもよい。このような実施形態において、エージェント２１４（例えば、Ｗｉｎｄｏｗｓ（登録商標）サービスなど）は、全てのエグゼキュータ２１２の単一の接続ポイントである。このような実施形態における全てのメッセージは、さらにデータベースサーバ２４０、インデクササーバ２５０、又はこれらの両方を介して、それらのメッセージを処理するコンダクタ２３０にログインされる。図１に関して上記で説明したように、エグゼキュータ２１２はロボットコンポーネントであってもよい。
【００４５】
幾つかの実施形態において、ロボットは、マシン名とユーザ名の間の関連付けを表す。ロボットは同時に複数のエグゼキュータを管理してもよい。同時に実行されている複数の対話型セッションをサポートするコンピューティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）Ｓｅｒｖｅｒ  ２０１２など）では、複数のロボットが同時に実行され、それぞれが一意のユーザ名を使用する個別のＷｉｎｄｏｗｓ（登録商標）セッションで実行されてもよい。これを上記のＨＤロボットという。
【００４６】
エージェント２１４はまた、ロボットのステータスを送り（例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送り）、実行されるパッケージの必要なバージョンをダウンロードすることも担当する。幾つかの実施形態において、エージェント２１４とコンダクタ２３０の間の通信は、常にエージェント２１４によって開始される。通知シナリオにおいて、エージェント２１４は、コンダクタ２３０によって後で使用されるＷｅｂＳｏｃｋｅｔチャネルを開き、ロボットにコマンド（例えば、開始、停止など）を送ってもよい。
【００４７】
サーバ側では、プレゼンテーション層（ウェブアプリケーション２３２、Ｏｐｅｎ  Ｄａｔａ  Ｐｒｏｔｏｃｏｌ（ＯＤａｔａ）Ｒｅｐｒｅｓｅｎｔａｔｉｖｅ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（ＲＥＳＴ）Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ＡＰＩ）エンドポイント２３４、通知監視２３６）、サービス層（ＡＰＩ実装／ビジネスロジック２３８）、及び永続層（データベースサーバ２４０及びインデクササーバ２５０）が含まれる。コンダクタ２３０には、ウェブアプリケーション２３２、ＯＤａｔａ  ＲＥＳＴ  ＡＰＩエンドポイント２３４、通知監視２３６、及びＡＰＩ実装／ビジネスロジック２３８が含まれる。幾つかの実施形態において、コンダクタ２２０のインタフェースで（例えば、ブラウザ２２０を介して）ユーザが実行する殆どのアクションが、様々なＡＰＩを呼び出すことで実行される。このようなアクションには、本発明の範囲から逸脱することなく、ロボットでのジョブの開始、キュー内のデータの追加／削除、操作不要で実行するジョブのスケジューリングなどが含まれてもよいが、これらに限定されない。ウェブアプリケーション２３２は、サーバプラットフォームのビジュアル層である。このような実施形態において、ウェブアプリケーション２３２は、ハイパーテキストマークアップ言語（ＨＴＭＬ）及びＪａｖａＳｃｒｉｐｔ（ＪＳ）を使用する。しかし、本発明の範囲から逸脱することなく、任意の所望のマークアップ言語、スクリプト言語、又は任意の他のフォーマットが使用されてもよい。このような実施形態において、ユーザは、コンダクタ２３０を制御するための様々なアクションを実行するため、ブラウザ２２０を介してウェブアプリケーション２３２からウェブページと対話する。例えば、ユーザは、ロボットグループを作成し、ロボットにパッケージを割り当て、ロボット毎に且つ／又はプロセス毎にログを分析し、ロボットを起動、停止させるなどしてもよい。
【００４８】
ウェブアプリケーション２３２に加えて、コンダクタ２３０には、ＯＤａｔａ  ＲＥＳＴ  ＡＰＩエンドポイント２３４を公開するサービス層も含まれる。しかし、本発明の範囲から逸脱することなく、他のエンドポイントが含まれてもよい。ＲＥＳＴ  ＡＰＩは、ウェブアプリケーション２３２とエージェント２１４の両方によって使用される。このような実施形態において、エージェント２１４は、クライアントコンピュータ上の一又は複数のロボットのスーパーバイザである。
【００４９】
このような実施形態におけるＲＥＳＴ  ＡＰＩは、コンフィギュレーション、ロギング、監視、及びキューイングの機能をカバーする。幾つかの実施形態において、コンフィギュレーションエンドポイントが使用されて、アプリケーションユーザ、権限、ロボット、アセット、リリース、及び環境を定義、構成してもよい。ロギングＲＥＳＴエンドポイントが使用されて、例えばエラー、ロボットによって送られた明示的なメッセージ、その他の環境固有の情報など、様々な情報をログに記録してもよい。デプロイメントＲＥＳＴエンドポイントがロボットによって使用されて、コンダクタ２３０でジョブ開始コマンドが使用される場合に実行する必要があるパッケージバージョンをクエリしてもよい。キューイングＲＥＳＴエンドポイントは、例えばキューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キュー及びキューアイテムの管理を担当してもよい。
【００５０】
監視ＲＥＳＴエンドポイントは、ウェブアプリケーション２３２及びエージェント２１４を監視してもよい。通知監視ＡＰＩ２３６は、エージェント２１４の登録、エージェント２１４へのコンフィギュレーション設定の配信、並びにサーバ及びエージェント２１４からの通知の送受信に使用されるＲＥＳＴエンドポイントであってもよい。幾つかの実施形態において、通知監視ＡＰＩ２３６はまた、ＷｅｂＳｏｃｋｅｔ通信を使用してもよい。
【００５１】
永続層は、この実施形態では１対のサーバ、つまり、データベースサーバ２４０（例えば、ＳＱＬサーバなど）及びインデクササーバ２５０を含む。この実施形態のデータベースサーバ２４０は、ロボット、ロボットグループ、関連プロセス、ユーザ、ロール、スケジュールなどのコンフィギュレーションを記憶する。このような情報は、幾つかの実施形態において、ウェブアプリケーション２３２を介して管理される。データベースサーバ２４０は、キュー及びキューアイテムを管理してもよい。幾つかの実施形態において、データベースサーバ２４０は、（インデクササーバ２５０に加えて又はその代わりに）ロボットによってログに記録されたメッセージを記憶してもよい。
【００５２】
幾つかの実施形態において任意であるインデクササーバ２５０は、ロボットによってログに記録された情報を記憶し、インデックスを付ける。特定の実施形態において、インデクササーバ２５０は、コンフィギュレーション設定を通じて無効にされてもよい。幾つかの実施形態において、インデクササーバ２５０は、オープンソースプロジェクトの全文検索エンジンであるＥｌａｓｔｉｃＳｅａｒｃｈ（登録商標）を使用する。ロボットによって（例えば、ログメッセージ、行書き込みなどのアクティビティを使用して）ログに記録されたメッセージは、ロギングＲＥＳＴエンドポイントを介してインデクササーバ２５０に送られてもよく、そこで将来の利用のためにインデックスが付けられてもよい。
【００５３】
図３は、本発明の一実施形態による、デザイナ３１０とアクティビティ３２０、３３０とドライバ３４０との間の関係３００を示すアーキテクチャ図である。上記のとおり、開発者は、デザイナ３１０を使用して、ロボットによって実行されるワークフローを開発する。ワークフローは、ユーザ定義のアクティビティ３２０とＵＩ自動化アクティビティ３３０を含んでもよい。幾つかの実施形態は、本明細書においてコンピュータビジョン（ＣＶ）という、画像における非テキストのビジュアルコンポーネントを識別することができる。そのようなコンポーネントに関連する一部のＣＶアクティビティには、クリック（ｃｌｉｃｋ）、タイプ（ｔｙｐｅ）、テキストを取得（ｇｅｔ  ｔｅｘｔ）、ホバー（ｈｏｖｅｒ）、要素の有無を検出（ｅｌｅｍｅｎｔ  ｅｘｉｓｔｓ）、スコープの更新（ｒｅｆｒｅｓｈ  ｓｃｏｐｅ）、ハイライト（ｈｉｇｈｌｉｇｈｔ）などが含まれてもよいが、これらに限定されない。幾つかの実施形態において、クリック（ｃｌｉｃｋ）は、例えば、ＣＶ、光学式文字認識（ＯＣＲ）、ファジーテキストマッチング、及び複数のアンカーを使用する要素を識別し、クリックする。タイプ（ｔｙｐｅ）は、上記を使用して要素を識別してもよく、要素内でタイプする。テキストを取得（ｇｅｔ  ｔｅｘｔ）は、特定のテキストの位置を識別し、ＯＣＲを使用してスキャンしてもよい。ホバー（ｈｏｖｅｒ）は、要素を識別し、その上にホバーしてもよい。要素の有無を検出（ｅｌｅｍｅｎｔ  ｅｘｉｓｔｓ）は、上記の技術を使用して、要素が画面上に存在するか否かを確認してもよい。幾つかの実施形態において、デザイナ３１０で実装可能な数百又は数千ものアクティビティがあってもよい。しかし、本発明の範囲から逸脱することなく、任意の数及び／又は種類のアクティビティが利用可能であってもよい。
【００５４】
ＵＩ自動化アクティビティ３３０は、低レベルのコードで書かれた特別な低レベルのアクティビティ（例えば、ＣＶアクティビティなど）のサブセットであり、画面との対話を容易にする。ＵＩ自動化アクティビティ３３０は、ロボットが所望のソフトウェアと対話することを可能にするドライバ３４０を介して、このような対話を容易にする。例えば、ドライバ３４０は、ＯＳドライバ３４２、ブラウザドライバ３４４、ＶＭドライバ３４６、エンタープライズアプリケーションドライバ３４８などを含んでもよい。
【００５５】
ドライバ３４０は、低レベルでＯＳと対話して、フックを探したりキーを監視したりするなどしてもよい。ドライバ３４０は、Ｃｈｒｏｍｅ（登録商標）、ＩＥ（登録商標）、Ｃｉｔｒｉｘ（登録商標）、ＳＡＰ（登録商標）などとの統合を容易にしてもよい。例えば、「クリック」アクティビティは、ドライバ３４０を介してそのような異なるアプリケーションで同じ役割を果たす。
【００５６】
図４は、本発明の一実施形態によるＲＰＡシステム４００を示すアーキテクチャ図である。幾つかの実施形態において、ＲＰＡシステム４００は、図１及び／又は図２のＲＰＡシステム１００及び／又は２００であってもよいし、それを含んでもよい。ＲＰＡシステム４００は、ロボットを実行する複数のクライアントコンピューティングシステム４１０を含む。コンピューティングシステム４１０は、そこで実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム４２０と通信可能である。次に、コンダクタコンピューティングシステム４２０は、データベースサーバ４３０及び任意のインデクササーバ４４０と通信可能である。
【００５７】
図１及び図３に関して、これらの実施形態においてウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、任意の適切なクライアント／サーバソフトウェアが使用されてもよいことに留意されたい。例えば、コンダクタは、クライアントコンピューティングシステム上の非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバ側アプリケーションを実行してもよい。
【００５８】
図５は、本発明の一実施形態による、ＲＰＡ用自動化ウィンドウを実行するように構成されたコンピューティングシステム５００を示すアーキテクチャ図である。幾つかの実施形態において、コンピューティングシステム５００は、本出願において図示及び／又は説明される一又は複数のコンピューティングシステムであってもよい。コンピューティングシステム５００は、情報を通信するためのバス５０５又は他の通信メカニズムと、情報を処理するためにバス５０５に接続されたプロセッサ５１０とを含む。プロセッサ５１０は、中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、グラフィックスプロセッシングユニット（ＧＰＵ）、それらの複数の例、及び／又はそれらのうちの任意の組み合わせを含む、任意の種類の汎用又は特定用途のプロセッサであってもよい。プロセッサ５１０はまた、複数の処理コアを有してもよく、コアの少なくとも一部が、特定の機能を実行するように構成されてもよい。幾つかの実施形態において、複数並列処理を使用されてもよい。特定の実施形態において、少なくとも１つのプロセッサ５１０が、生体ニューロンを模倣する処理要素を含むニューロモーフィック回路であってもよい。幾つかの実施形態において、ニューロモーフィック回路は、フォンノイマンコンピューティングアーキテクチャの典型的なコンポーネントを必要としなくてもよい。
【００５９】
コンピューティングシステム５００は、プロセッサ５１０によって実行される情報及び命令を記憶するためのメモリ５１５をさらに含む。メモリ５１５は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、キャッシュ、例えば磁気若しくは光ディスクなどの静的記憶装置、又は任意の他の種類の非一時的なコンピュータ読み取り可能な媒体、又はこれらのうちの組み合わせのうちの任意の組み合わせから構成されてもよい。非一時的なコンピュータ読み取り可能な媒体は、プロセッサ５１０によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体、又はその両方を含んでもよい。媒体は、取り外し可能、取り外し不可能、又はその両方であってもよい。
【００６０】
さらに、コンピューティングシステム５００は、無線及び／又は有線接続を介して通信ネットワークへのアクセスを提供するために、例えばトランシーバなどの通信デバイス５２０を含む。幾つかの実施形態において、通信デバイス５２０は、本発明の範囲から逸脱することなく、周波数分割多元接続（ＦＤＭＡ）、シングルキャリアＦＤＭＡ（ＳＣ−ＦＤＭＡ）、時分割多元接続（ＴＤＭＡ）、符号分割多元接続（ＣＤＭＡ）、直交周波数分割多重方式（ＯＦＤＭ）、直交周波数分割多元接続（ＯＦＤＭＡ）、移動体用グローバルシステム（ＧＳＭ）通信、汎用パケット無線サービス（ＧＰＲＳ）、ユニバーサル移動体通信システム（ＵＭＴＳ）、ｃｄｍａ２０００、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）、高速ダウンリンクパケットアクセス（ＨＳＤＰＡ）、高速アップリンクパケットアクセス（ＨＳＵＰＡ）、高速パケットアクセス（ＨＳＰＡ）、Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ（ＬＴＥ）、ＬＴＥアドバンスト（ＬＴＥ−Ａ）、８０２．１１ｘ、Ｗｉ−Ｆｉ、Ｚｉｇｂｅｅ、超広帯域無線（ＵＷＢ）、８０２．１６ｘ、８０２．１５、Ｈｏｍｅ  Ｎｏｄｅ−Ｂ（ＨｎＢ）、Ｂｌｕｅｔｏｏｔｈ、Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ（ＲＦＩＤ）、Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ（ＩｒＤＡ）、Ｎｅａｒ−Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＮＦＣ）、第５世代（５Ｇ）、Ｎｅｗ  Ｒａｄｉｏ（ＮＲ）、これらのうちの任意の組み合わせ、及び／又は任意の他の現在存在する又は将来実施される通信規格及び／又はプロトコルを使用するように構成されてもよい。幾つかの実施形態において、通信デバイス５２０は、本発明の範囲から逸脱することなく、単一、アレイ、フェーズド、スイッチド、ビームフォーミング、ビームステアリング、これらのうちの組み合わせ、及び／又は任意の他のアンテナ構成である一又は複数のアンテナを含んでもよい。
【００６１】
プロセッサ５１０は、バス５０５を介して、例えばプラズマディスプレイ、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイ、電界放出ディスプレイ（ＦＥＤ）、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、フレキシブルＯＬＥＤディスプレイ、フレキシブル基板ディスプレイ、プロジェクションディスプレイ、４Ｋディスプレイ、高精細ディスプレイ、Ｒｅｔｉｎａ（登録商標）ディスプレイ、インプレーンスイッチング（ＩＰＳ）ディスプレイ、又はユーザに情報を表示するための任意の他の適切なディスプレイなどのディスプレイ５２５にさらに接続される。ディスプレイ５２５は、抵抗性、容量性、表面弾性波（ＳＡＷ）容量性、赤外線、光学イメージング、分散信号技術、音響パルス認識、フラストレート全内部反射などを使用して、タッチ（触覚）ディスプレイ、３次元（３Ｄ）タッチディスプレイ、マルチ入力タッチディスプレイ、マルチタッチディスプレイなどとして構成されてもよい。任意の適切な表示デバイス及び触覚Ｉ／Ｏが、本発明の範囲から逸脱することなく、使用されてもよい。
【００６２】
キーボード５３０と、例えばコンピュータマウス、タッチパッドなどのようなカーソル制御デバイス５３５とが、さらにバス５０５に接続されて、ユーザがコンピューティングシステム５００とインタフェースをとることを可能にする。しかし、特定の実施形態において、物理的なキーボード及びマウスが存在しなくてもよく、ユーザは、ディスプレイ５２５及び／又はタッチパッド（図示略）を介してのみデバイスとインタフェースをとってもよい。入力デバイスの任意の種類及び組み合わせが、設計上の選択事項として使用されてもよい。特定の実施形態において、物理的な入力デバイス及び／又はディスプレイが存在しない。例えば、ユーザは、コンピューティングシステム５００と通信する別のコンピューティングシステムを介してリモートでコンピューティングシステム５００と対話してもよく、或いは、コンピューティングシステム５００は自律的に動作してもよい。
【００６３】
メモリ５１５は、プロセッサ５１０によって実行されると機能を提供するソフトウェアモジュールを記憶する。該モジュールは、コンピューティングシステム５００用のオペレーティングシステム５４０を含む。モジュールは、本明細書に記載されているプロセス又はその派生のプロセスの全て又は一部を実行するように構成される自動化ウィンドウモジュール５４５をさらに含む。コンピューティングシステム５００は、追加の機能を含む一又は複数の追加の機能モジュール５５０を含んでもよい。
【００６４】
当業者は、「システム」が、本発明の範囲から逸脱することなく、サーバ、組込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、任意の他の適切なコンピューティングデバイス、又はデバイスの組み合わせとして具現化され得ることを理解するであろう。上記の機能を「システム」によって実行されるものとして示すことは、決して本発明の範囲を限定することを意図するものではなく、本発明の多くの実施形態の一例を示すことを意図する。実際、本明細書において開示される方法、システム、及び装置は、クラウドコンピューティングシステムを含むコンピューティング技術と整合するローカライズされ分散された形式で実装されてもよい。
【００６５】
本明細書に記載されているシステム機能の一部は、実装の独立性をより強調するため、モジュールとして示されていることに留意されたい。例えば、モジュールは、カスタムの超大規模集積（ＶＬＳＩ）回路又はゲートアレイを含むハードウェア回路、ロジックチップ、トランジスタ、又は他のディスクリートコンポーネントなどの既製の半導体として実装されてもよい。モジュールは、例えばフィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックスプロセッシングユニットなどのプログラマブルハードウェアデバイスにおいて実装されてもよい。
【００６６】
モジュールは、様々な種類のプロセッサによる実行のため、ソフトウェアで少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されたユニットは、例えばオブジェクト、手順、又は機能として構成され得るコンピュータ命令の一又は複数の物理ブロック又は論理ブロックを含んでもよい。これにも関わらず、識別されたモジュールの実行可能ファイルは物理的に一緒に配置される必要はないが、論理的に結合されるとモジュールを含んでモジュールの上記目的を達成するような様々な場所に記憶された異種の命令を含んでもよい。さらに、モジュールは、本発明の範囲から逸脱することなく、コンピュータ読み取り可能な媒体に記憶されてもよく、コンピュータ読み取り可能な媒体は、例えば、ハードディスクドライブ、フラッシュデバイス、ＲＡＭ、テープ、及び／又はデータを記憶するために使用される他のそのような非一時的なコンピュータ読み取り可能な媒体であってもよい。
【００６７】
実際、実行可能コードのモジュールは、単一の命令であっても多数の命令であってもよく、異なるプログラム間で複数の異なるコードセグメントにわたり、複数のメモリデバイスにわたって分散されてもよい。同様に、動作データが、識別されて、本明細書においてモジュール内に示されてもよく、任意の適切な形式で具体化され、任意の適切な種類のデータ構造内で構成されてもよい。動作データは、単一のデータセットとしてまとめられてもよく、或いは、異なるストレージデバイスを含む異なる場所に分散されてもよく、少なくとも部分的に、単にシステム又はネットワーク上の電子信号として存在してもよい。
【００６８】
ユーザのためのアテンディッド自動化（実行時）
【００６９】
上記のように、アテンディッド（操作要）自動化では、ロボットはユーザと共に同じコンピューティングシステム上で動作する。ＲＰＡにおけるロボットは同様の方法でコンピューティングシステムと対話することが多いため（例えば、マウスクリック及びキープレスイベントの生成、ＡＰＩを介したこのようなイベントのシミュレーション（例えば、ウィンドウメッセージの使用など）など）、幾つかの実施形態は、そこでアテンディッド自動化をホストし実行するための第２のセッションを作成する。既存のＲＰＡシステムと異なり、ユーザは、ロボットが第２のセッションでアテンディッド自動化を実行している間、コンピューティングシステムと対話する機能の恩恵を受けることができる。ユーザは、ロボットの動作を引き続き監視し、第２のセッションのホスト自動化ウィンドウを介してロボットと対話してもよい。これにより、ＲＰＡロボットは、単にユーザよりも速く且つ確実にタスクを実行することから、ユーザと並行して作業を実行できる真のデジタルアシスタントになるまでに効果的に進化し、生産性をさらに一層向上させる。幾つかの実施形態において、第１及び第２のセッションは、ユーザのコンピューティングシステムによって制御されるリモートマシン上で実行されてもよい。
【００７０】
特定の実施形態において、ＲＰＡロボットは、ユーザのコンピューティングシステム上で実行されていて、リモートランタイムを介して（例えば、ＵｉＰａｔｈ  Ｒｏｍｏｔｅ  Ｒｕｎｔｉｍｅ（商標）を介して）リモートコンピューティングシステムを駆動していてもよい。ＵｉＰａｔｈ  Ｒｅｍｏｔｅ  Ｒｕｎｔｉｍｅ（商標）は、リモートアプリケーション又はデスクトップ（例えば、Ｃｉｔｒｉｘ  Ｖｉｒｔｕａｌ  Ａｐｐｓ  ａｎｄ  Ｄｅｓｋｔｏｐｓ（商標）など）と、専用のＵｉＰａｔｈ（登録商標）拡張機能（例えば、Ｃｉｔｒｉｘ（商標）用のＵｉＰａｔｈ（登録商標）拡張機能、Ｗｉｎｄｏｗｓ（登録商標）リモートデスクトップ用のＵｉＰａｔｈ（登録商標）拡張機能など）との間の通信を容易にするコンポーネントである。ＵｉＰａｔｈ  Ｒｅｍｏｔｅ  Ｒｕｎｔｉｍｅ（商標）は、リモートアプリケーションの対象となるＵＩ要素に関連する情報を収集し、この情報を対応する拡張機能に送り、ＵＩ  Ｅｘｐｌｏｒｅｒ（商標）でセレクタがネイティブに生成されるようにする。
【００７１】
上記のように、ユーザとロボットはどちらも同じアプリケーションインスタンス及びファイルシステムと対話する。図６は、本発明の一実施形態による、ユーザセッション６１０とアテンディッド自動化ロボットセッション６２０を実行するユーザコンピューティングシステム６００の幾つかのアプリケーションを、ユーザコンピューティングシステム６００で実行される幾つかのアプリケーションと共に示す。図６に示すように、ウェブブラウザアプリケーション６３０、スプレッドシートアプリケーション６４０、及び電子メールアプリケーション６５０が、ユーザセッション６１０及びアテンディッド自動化ロボットセッション６２０の両方によってアクセス可能である。ユーザセッション６１０及びアテンディッド自動化ロボットセッション６２０は、ウェブブラウザアプリケーション６３０及び電子メールアプリケーション６５０と同時に対話することができる。
【００７２】
しかし、ロボットがスプレッドシートアプリケーション６４０の同じファイルと対話している場合、ユーザはこのアプリケーションと対話できない（例えば、ユーザは「読み取り専用」ビューで開くことができるのみであってもよいし、ユーザがそのファイルを開くことが完全に妨げられていてもよい）。ユーザは、スプレッドシートアプリケーション６４０がロックされている、別の「ユーザ」（即ち、ロボット）によってアクセスされているなどを示すメッセージを受け取ってもよい。ユーザセッション６１０及びアテンディッド自動化ロボットセッション６２０の両方が、ファイルシステム６６０と対話することができる。それぞれのセッションを介してアプリケーションでロボットとユーザを介して行われた変更は、ユーザとロボットがそれぞれ別のバージョンのアプリケーションとファイルシステムで動作するのではなく、単一のユーザが行ったように行われる。
【００７３】
図７Ａ〜図７Ｋは、本発明の一実施形態による、ユーザとＲＰＡ用ロボットのための別々のセッションの例を示すスクリーンショットである。図７Ａにおいて、ユーザセッションウィンドウ７００が示され、ここで、ユーザはＵＩ内のアプリケーションと対話することができ、ロボットは現在実行されていない。図７Ｂにおいて、ユーザは（例えば、画面の右下にあるアイコンをクリックすることにより）ロボットトレイ７１０を引き出し、ユーザのコンピューティングシステム上で実行するロボットを選択する。実行するロボットを選択した後、図７Ｃに示すように、ロボットセッションウィンドウ７２０が、画面上の子ウィンドウとして現れる。ロボットは、ロボットセッションウィンドウ７２０で動作する。
【００７４】
図７Ｄ、図７Ｅ（図７Ｄの一部の拡大図）を参照すると、この例では、ロボットはＭｉｃｒｏｓｏｆｔ  Ｎｏｔｅｐａｄ（登録商標）アプリケーション７３０を起動し、そこにテキスト７３２を入力し始める。この実行の間、ユーザは、ユーザセッションウィンドウ７００内のアプリケーションと対話したり、ロボットセッションウィンドウ７２０を移動、サイズ変更、最小化したりするなどできる。図７Ｆに示すように、ロボットトレイ７１０は、ロボットが実行中であることを示す。
【００７５】
図７Ｇにおいて、ユーザは、ユーザセッションウィンドウ７００内でＧｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）を開いている。ロボットセッションウィンドウ７２０は、フォアグラウンドで見ることができる。図７Ｈと図７Ｉに示すその拡大部分において、ユーザがＧｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）を使用してウェブをナビゲートするとき、ロボットは、ユーザのウェブナビゲーションと並行してＭｉｃｒｏｓｏｆｔ  Ｎｏｔｅｐａｄ（登録商標）アプリケーション７３０にテキスト７３２を入力し続ける。
【００７６】
図７Ｊは、ロボットのためのＲＰＡワークフロー７５０の一部を伴うＵｉＰａｔｈ  Ｓｔｕｄｉｏ（商標）７４０を示す。図７Ｋに示すように、開発者は、ＵｉＰａｔｈ  Ｓｔｕｄｉｏ（商標）７４０を使用してＲＰＡワークフロー７５０をステップスルーすることができる。ＵｉＰａｔｈ  Ｓｔｕｄｉｏ（商標）７４０とロボットセッションウィンドウ７２０は両方とも、ユーザセッションウィンドウ７００で見ることができる。各ステップで、テキスト７３２は、Ｍｉｃｒｏｓｏｆｔ  Ｎｏｔｅｐａｄ（登録商標）アプリケーション７３０に入力される。
【００７７】
図８は、本発明の一実施形態による、ロボットとユーザがアテンディッド自動化ウィンドウを使用して同時にコンピューティングシステムを操作できるようにするためのプロセス８００を示すフローチャートである。該プロセスは、８１０でユーザセッションウィンドウを起動することから始まる。これは、例えば、ユーザコンピューティングシステムで実行されているオペレーティングシステムに関連するメインウィンドウであってもよい。次に、８２０で、ロボットセッションウィンドウがユーザセッションウィンドウの子ウィンドウとして起動される。幾つかの実施形態において、ロボットセッションウィンドウは、例えば、開始されている又は他の方法で起動されているロボットに応答して起動されてもよい。次に、８３０で、ロボットはロボットセッションで開始され、８４０で、ロボットはロボットセッションでそのワークフローを実行する。幾つかの実施形態において、８５０で、自動的にロボットセッションが終了されてロボットセッションウィンドウが閉じられる。
【００７８】
幾つかの実施形態において、子セッションは、オペレーティングシステムの子セッションＡＰＩを介して作成されてもよい。幾つかの実施形態において、本発明の範囲から逸脱することなく、オペレーティングシステムによって提供されるＷｉｎｄｏｗｓ（登録商標）ターミナルサービスの子セッション又は別の子セッションＡＰＩを使用して、第２のセッションを作成してもよい。次に、ロボットトレイアプリケーション（例えば、ＵｉＰａｔｈ（登録商標）Ｒｏｂｏｔ  Ａｇｅｎｔ  Ｄｅｓｋｔｏｐなど）は、適切な引数を使用してオペレーティングシステムでプロセス作成ＡＰＩを使用して、その子セッションでロボットプロセスを開始してもよい。次に、ロボットトレイアプリケーションは、適切なプロトコル（例えば、名前付きパイプ上に構築されたプロトコルなど）を使用して、ロボットプロセスと通信してもよい。
【００７９】
２つのセッション間のロボットとの通信は、ＩＰＣプロトコルを使用して実行されてもよい。これらのプロトコルは、ネットワーク、パイプ、コンポーネントオブジェクトモデル（ＣＯＭ）、リモートプロシージャコール（ＲＰＣ）、ソケットなどを介した通信を促進する可能性がある。適切なセッション作成メカニズム及びＩＰＣプロトコルが、サポートされている他のオペレーティングシステムにも使用されてもよい。ユーザがロボットトレイ上のボタンをクリックすると、ロボットトレイアプリケーションがＩＰＣプロトコルを使用してそのコマンドをロボットプロセスに送ってもよい。ロボットは、ＩＰＣプロトコルを介して、ロボットトレイアプリケーションにステータス通知（例えば、ロボットが開始している、実行している、一時停止しているなどを示す）を送ってもよい。
【００８０】
ＲＰＡ開発者のためのアテンディッド自動化（設計時）
【００８１】
幾つかの実施形態において、アテンディッド自動化ウィンドウは、設計時に開発環境から使用されたときに自動化をテスト、デバッグする目的で、アテンディッド自動化をホストし実行するための第２のセッションを作成してもよい。これにより、ＲＰＡ開発者は、ロボットのアテンディッド自動化ウィンドウ内で実行されるアテンディッド自動化が意図したとおりに動作することを確実にすることができる。
【００８２】
ＲＰＡ開発者はこの機能を使用して、ロボットの実行中にユーザが所望するようにアプリケーションにアクセスできるスムーズなエクスペリエンスを提供するアテンディッド自動化を作成してもよい。アテンディッド自動化により実行中にユーザがユーザのコンピューティングシステムと対話することが困難である場合、又は、統合開発環境（ＩＤＥ）からアテンディッド自動化を起動するＲＰＡ開発者がアテンディッド自動化の実行中にＩＤＥを見たりＩＤＥにアクセスしたりすることが困難である場合に、ＲＰＡ開発者がロボットをより煩わしくない方法で実行するよう変更することが望ましい場合がある。例えば、自動化によりアプリケーションがＩＤＥの前のフォアグラウンドに移動すると、開発者はリアルタイムでプロセスからストリーミングしているログ情報を見ることができない。したがって、ＲＰＡ開発者はＩＤＥから起動設定を変更して、このようなことが起きないようにしてもよい。
【００８３】
図９は、本発明の一実施形態による、ロボットとＲＰＡ開発者がアテンディッド自動化ウィンドウを使用して同時にコンピューティングシステムを操作できるようにするためのプロセス９００を示すフローチャートである。該プロセスは、９１０で開発者セッションウィンドウを起動することから始まる。これは、例えば、ＲＰＡ開発者コンピューティングシステム上で実行されているオペレーティングシステムに関連するメインウィンドウであってもよい。次に、９２０で、ＩＤＥが起動され、９３０で、ＲＰＡ開発者がアテンディッド自動化を開始するコマンドを発行する。これにより、９４０で、ロボットセッションウィンドウが起動し、９５０で、ロボットがロボットセッションで初期化される。次に、９６０で、ロボットはロボットセッションでのワークフローを実行して、アテンディッド自動化ロジックを実行する。開発者がロボットの動作に満足していない場合、９７０で、開発者はＩＤＥでの実行を停止して、ロボットセッションを終了してロボットセッションウィンドウを閉じてもよい。その後、プロセスはステップ９３０に戻る。
【００８４】
ＲＰＡのための自動化監視
【００８５】
幾つかの実施形態において、第２のセッションは、自動化監視及びトラブルシューティングに使用されてもよい。例えば、アンアテンディッド（操作不要）自動化をホストしているサーバを担当するオペレーションエンジニア（即ち、ユーザが実行を監視している自動化プロセスによるライセンス要件や期待値はない）がエラーを修正するために介入することを望む場合がある。オペレーションエンジニアは、第２のセッションウィンドウを介してこれを行ってもよい。例えば、オペレーションエンジニアは、エラーが発生しているロボットの動作に介入してその動作を強制終了してもよい。
【００８６】
幾つかの実施形態において、オペレーションエンジニアは、リモートデスクトップ技術を使用してコンピューティングシステムにアクセスしてもよい。例えば、オペレーションエンジニアは、コンピューティングシステム（例えば、本番環境のマシンなど）にログインして、そのユーザインタフェースをユーザのコンピューティングシステム上で見ることができてもよい。したがって、オペレーションエンジニアが、ＵＩを見て、所望するようにリモートコンピューティングシステムを制御できてもよい。
【００８７】
ロボットは、本番環境のマシン上で第２のセッションでＵＩを実行、制御してもよい。つまり、オペレーションエンジニアは、マシンを制御できなくなることなく、ロボットからのストリーミングログを監視したり、ロボットによって駆動されているＵＩ（存在する場合）を視覚的に監視したりするなどできるようになる。ロボット制御ソフトウェアが第１のセッション又は親セッションで実行されているため、問題が発生した場合、エンジニアは、エンジニアがログインしている親セッションから実行を一時停止／終了／再開できる。幾つかの実施形態において、ロボットは親セッションで実行されていてもよく、監視は子セッションから実行されてもよい。
【００８８】
Ｍｉｃｒｏｓｏｆｔ（登録商標）ユニバーサルＷｉｎｄｏｗｓプラットフォーム（ＵＷＰ）シミュレータは、例えばジオロケーション、マルチタッチ、回転などの振る舞いをシミュレートする機能を提供する。このような振る舞いは、開発者のマシンでテストするのが困難又は不可能である可能性がある。例えば、開発者が、例えばマッププログラムなどの様々な位置に依存するアプリケーションの振る舞いをテストしたい場合、開発者がテストのために国中又は世界中に自分のコンピュータを持ち運ぶことは非常に不便である。ユーザから「ＵＩテイクオーバ」を分離させることやＲＰＡにのみ関連することに重点を置くことよりはむしろ、ＵＷＰアプリケーションは、単一のウィンドウに含まれる単一のアプリケーションである。したがって、ＵＩ制御を分離する必要性は問題にならない。したがって、ＵＷＰシミュレータは、単一のアプリケーションの「シミュレーションシナリオ」を解決してもよい。
【００８９】
図１０は、本発明の一実施形態による、ユーザのための自動化ウィンドウを使用してアテンディッド又はアンアテンディッド自動化を実行するためのプロセス１０００を示すフローチャートである。該プロセスは、１０１０で子セッションウィンドウと子セッションを起動することから始まる。子セッションはオペレーティングシステムの親セッションの子であり、子ウィンドウは親セッションの親ウィンドウ内に配置される。１０２０で、ＲＰＡロボットはプロセスとして子セッションで初期化され、１０３０で、ＲＰＡロボットは実行される。実行中、ＲＰＡロボットは、子セッションウィンドウ内の複数のアクティビティを含むＲＰＡワークフローを実行する。親セッションと子セッションは、共通のファイルシステムにアクセスできる。
【００９０】
１０４０で、ＲＰＡロボットと同じアプリケーションにユーザがアクセスすることを試みると、１０５０で、ＲＰＡロボットが現在アプリケーションにアクセスしていることを示すメッセージが親セッションウィンドウでユーザに対して表示される。１０６０で、ＲＰＡロボットがＲＰＡワークフローの実行を完了した後、子セッションは自動的に終了され、子セッションウィンドウは自動的に閉じられる。直列（シリアル）に又は並列に子セッションで実行されている任意の所望の数のロボットに対して、ステップ１０１０〜１０６０が繰り返されてもよい。
【００９１】
幾つかの実施形態において、ＲＰＡワークフローで複数のアクティビティを実行するとき、ＲＰＡロボットは、コンピューティングシステムで実行されている一又は複数の共通のアプリケーションと対話する。この一又は複数の共通のアプリケーションに、ユーザは親セッションを介してアクセス可能であり、ＲＰＡロボットは子セッションを介してアクセス可能である。特定の実施形態において、ＲＰＡロボットはアテンディッドロボットであり、ユーザが親セッションを介してアプリケーションのインスタンスと対話することは、ＲＰＡロボットが子セッションを介して該アプリケーションの異なるインスタンス又は異なるアプリケーションのインスタンスと対話することを妨げない。幾つかの実施形態において、子セッションウィンドウは、親セッションウィンドウにおけるロボットトレイアプリケーションから起動される。特定の実施形態において、ロボットトレイアプリケーションとＲＰＡロボットの間の通信は、ＩＰＣプロトコルを使用して行われ、ロボットトレイアプリケーションは、ＩＰＣプロトコルを介してＲＰＡロボットプロセスにコマンドを送るように構成される。幾つかの実施形態において、ＲＰＡロボットは、ＩＰＣプロトコルを介してロボットトレイアプリケーションにステータス通知を送るように構成される。
【００９２】
幾つかの実施形態において、親セッション及び子セッションは設計時に起動され、ＲＰＡロボットはアテンディッド自動化を実行し、ＩＤＥアプリケーションは、親セッションに関連付けられたコンピューティングシステムで実行され、アテンディッド自動化を開始するように構成される。特定の実施形態において、親セッションと子セッションは、異なるコンピューティングシステム上で実行される。幾つかの実施形態において、親ウィンドウ、子ウィンドウ、又はこれら両方が、メインＵＩ内に表示されるＵＩを表すウィンドウ、コンピューティングシステムの第２のディスプレイの第２の画面、仮想デスクトップ、又は隔離された環境を含む。
【００９３】
幾つかの実施形態において、ＲＰＡロボットはアテンディッドロボットであり、ＲＰＡロボットは、ユーザが親セッションと対話する間に親セッションで初期化され実行される。特定の実施形態において、子セッションウィンドウと子セッションの起動、子セッションにおけるＲＰＡロボットの初期化、及びＲＰＡロボットの実行は、リモートコンピューティングシステムを介して実行される。幾つかの実施形態において、ＲＰＡロボットはアンアテンディッドロボットである。
【００９４】
図１１は、本発明の一実施形態による、ＲＰＡ開発者のための自動化ウィンドウを使用してアテンディッド又はアンアテンディッド自動化を実行するためのプロセス１１００を示すフローチャートである。該プロセスは、１１１０でＩＤＥから子セッションウィンドウと子セッションを起動することから始まる。子セッションはオペレーティングシステムの親セッションの子であり、子ウィンドウは親セッションの親ウィンドウ内に配置される。１１２０で、ＲＰＡロボットはプロセスとして子セッションで初期化され、１１３０で、ＲＰＡロボットは実行される。実行中、ＲＰＡロボットは、子セッションウィンドウ内の複数のアクティビティを含むＲＰＡワークフローを実行する。親セッションと子セッションは、共通のファイルシステムにアクセスできる。
【００９５】
１１４０で、ロボット動作中にＲＰＡロボットからステータスメッセージが受け取られ、受け取られたステータスメッセージがＩＤＥに表示される。ロボットが意図したとおりに動作していない場合、ユーザ（例えば、ＲＰＡ開発者など）がその動作を終了することを望む可能性がある。ユーザがＲＰＡロボットの動作を終了させるコマンドを与えると、ＲＰＡロボット、子セッション、及び子ウィンドウの動作がＩＤＥによって終了される。
【００９６】
図１２は、本発明の一実施形態による、自動化監視を実行するためのプロセス１２００を示すフローチャートである。該プロセスは、１２１０で、コンピューティングシステムに関連付けられた親セッションで監視及びトラブルシューティングアプリケーションを初期化して実行することから始まる。１２２０で、子セッションウィンドウと子セッションが起動される。子セッションは、オペレーティングシステムの親セッションの子である。
【００９７】
１２３０で、アンアテンディッドＲＰＡロボットは、プロセスとして子セッションで初期化され実行される。１２４０で、監視及びトラブルシューティングアプリケーションのユーザから、アンアテンディッドＲＰＡロボットの動作を終了させるコマンドが受け取られる。次に、コマンドの受信に応答して、１２５０で、アンアテンディッドＲＰＡロボットの動作が一時停止又は終了され、１２６０で、子セッションと子セッションウィンドウが強制終了される。親セッションと子セッションは、共通のファイルシステムにアクセスできる。
【００９８】
幾つかの実施形態において、子セッションウィンドウは、親セッションが実行されているのとは異なるコンピューティングシステムに表示される。特定の実施形態において、ＲＰＡワークフローで複数のアクティビティを実行するとき、アンアテンディッドＲＰＡロボットは、親セッションと子セッションの両方を介してアクセス可能な一又は複数の共通のアプリケーションと対話する。幾つかの実施形態において、親セッションを介したアプリケーションのインスタンスとのユーザの対話は、アンアテンディッドＲＰＡロボットが子セッションを介して該アプリケーションの異なるインスタンス又は異なるアプリケーションのインスタンスと対話することを妨げない。特定の実施形態において、アンアテンディッドＲＰＡロボットがＲＰＡワークフローの実行を完了した後、子セッションは自動的に終了され、子セッションウィンドウは自動的に閉じられる。
【００９９】
幾つかの実施形態において、任意の所望の数の追加のロボットが、ステップ１２２０のものと直列に又は並列にそれぞれの子セッションで実行されてもよい。特定の実施形態において、アンアテンディッドＲＰＡロボットが対話しているアプリケーションと対話することをユーザが試みると、アンアテンディッドＲＰＡロボットが現在アプリケーションにアクセスしていることを示すメッセージが親セッションウィンドウでユーザに対して表示されてもよい。幾つかの実施形態において、親セッションと子セッションは、異なるコンピューティングシステム上で実行される。特定の実施形態において、親ウィンドウ、子ウィンドウ、又はこれら両方が、メインＵＩ内に表示されるＵＩを表すウィンドウ、コンピューティングシステムの第２のディスプレイの第２の画面、仮想デスクトップ、又は隔離された環境を含む。幾つかの実施形態において、子セッションウィンドウ及び子セッションの起動、子セッションにおけるアンアテンディッドＲＰＡロボットの初期化、及びアンアテンディッドＲＰＡロボットの実行は、リモートコンピューティングシステムを介して実行される。
【０１００】
図８〜図１２で実行されるプロセスステップは、本発明の一実施形態に従って、コンピュータプログラムによって実行されて、図８〜図１２に記載されているプロセスの少なくとも一部をプロセッサが実行するための命令を符号化してもよい。コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体で具現化されてもよい。コンピュータ読み取り可能な媒体は、ハードディスクドライブ、フラッシュデバイス、ＲＡＭ、テープ、及び／又はデータを記憶するために使用される他のそのような媒体又は媒体の組み合わせであってもよいが、これらに限定されない。コンピュータプログラムは、図８〜図１２に記載されたプロセスステップの全て又は一部を実施するようにコンピューティングシステムのプロセッサ（例えば、図５のコンピューティングシステム５００のプロセッサ５１０など）を制御するための符号化された命令を含んでもよく、これもまた、コンピュータ読み取り可能な媒体に記憶されてもよい。
【０１０１】
コンピュータプログラムは、ハードウェア、ソフトウェア、又はハイブリッド実装で実装されてもよい。コンピュータプログラムは、互いに動作可能に通信し、表示する情報又は命令を渡すように設計されたモジュールで構成されてもよい。コンピュータプログラムは、汎用コンピュータ、ＡＳＩＣ、又は任意の他の適切なデバイスで動作するように構成されてもよい。
【０１０２】
本発明の様々な実施形態の構成要素は、本願の図面で一般的に記載され示されているように、多種多様な異なる構成で配置、設計されてもよいことは容易に理解されるであろう。したがって、添付の図面に表されている本発明の実施形態の詳細な説明は、クレームされている本発明の範囲を限定することを意図しておらず、単に本発明の選択された実施形態を表すものである。
【０１０３】
本明細書全体を通して説明される本発明の特徴、構造、又は特性は、一又は複数の実施形態において任意の適切な方法で組み合わせられてもよい。例えば、本明細書全体を通して「特定の実施形態」、「幾つかの実施形態」、又は類似の文言への言及は、実施形態に関連して説明される特定の特徴、構造、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体を通して「特定の実施形態において」、「幾つかの実施形態において」、「他の実施形態において」という語句、又は同様の文言の出現は、必ずしも全て同じ実施形態のグループを指すとは限らず、説明された特徴、構造、又は特性は、一又は複数の実施形態において任意の適切な方法で組み合わせられてもよい。
【０１０４】
本明細書全体を通して特徴、利点、又は同様の文言への言及は、本発明で実現され得る特徴及び利点の全てが本発明の任意の単一の実施形態であるか或いはそれに含まれることを意味しないことに留意されたい。むしろ、特徴及び利点に言及する文言は、実施形態に関連して説明される特定の特徴、利点、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体を通して特徴、利点、及び類似の文言の説明は、必ずしもそうではないが、同じ実施形態を指してもよい。
【０１０５】
さらに、本発明の説明された特徴、利点、及び特性は、一又は複数の実施形態において任意の適切な方法で組み合わせられてもよい。当業者は、特定の実施形態の特定の特徴又は利点のうちの一又は複数がなくても本発明を実施できることを認識するであろう。他の例において、本発明の全ての実施形態には存在しない可能性がある特定の実施形態において、追加の特徴及び利点が認識されてもよい。
【０１０６】
当業者は、上記の本発明が異なる順序のステップで、及び／又は開示されているものとは異なる構成のハードウェア要素で実施されてもよいことを容易に理解するであろう。したがって、本発明をこのような好ましい実施形態に基づいて説明してきたが、本発明の主旨及び範囲内にありながら、特定の修正、変形、及び代替構造が明らかであることは当業者には明らかであろう。したがって、本発明の境界及び範囲を決定するために、添付の特許請求の範囲を参照されたい。
【要約】      （修正有）【課題】アテンディッド又はアンアテンディドロボットのためのロボティックプロセスオートメーション（ＲＰＡ）用自動化ウィンドウを提供する。【解決手段】子セッションが作成されて親セッションに関連付けられたウィンドウのアプリケーションのユーザインタフェース（ＵＩ）を含むウィンドウとしてホストされる。複数セッションの実行により、ユーザが親セッションと対話している間、ロボットがこの子セッションで動作できる。したがって、ユーザは、ロボットが使用していないアプリケーションと対話可能であってもよく、或いは、ユーザとロボットが同じアプリケーションと対話可能であり、該アプリケーションがこの機能に対応している場合に可能であってもよい。ユーザとロボットは同じアプリケーションインスタンス及びファイルシステムと対話する。アプリケーションでロボットとユーザを介した変更は、単一のユーザによる変更のように行われる。【選択図】図６【図１】
0006929422.tif 000002
【図２】
0006929422.tif 000003
【図３】
0006929422.tif 000004
【図４】
0006929422.tif 000005
【図５】
0006929422.tif 000006
【図６】
0006929422.tif 000007
【図７Ａ】
0006929422.tif 000008
【図７Ｂ】
0006929422.tif 000009
【図７Ｃ】
0006929422.tif 000010
【図７Ｄ】
0006929422.tif 000011
【図７Ｅ】
0006929422.tif 000012
【図７Ｆ】
0006929422.tif 000013
【図７Ｇ】
0006929422.tif 000014
【図７Ｈ】
0006929422.tif 000015
【図７Ｉ】
0006929422.tif 000016
【図７Ｊ】
0006929422.tif 000017
【図７Ｋ】
0006929422.tif 000018
【図８】
0006929422.tif 000019
【図９】
0006929422.tif 000020
【図１０】
0006929422.tif 000021
【図１１】
0006929422.tif 000022
【図１２】
0006929422.tif 000023