(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-22
(54)【発明の名称】ロボティックプロセスオートメーションのための自動スケーリング戦略
(51)【国際特許分類】
G06F 9/50 20060101AFI20240415BHJP
G06F 9/455 20180101ALI20240415BHJP
【FI】
G06F9/50 120Z
G06F9/455 150
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021572644
(86)(22)【出願日】2021-10-29
(85)【翻訳文提出日】2022-02-14
(86)【国際出願番号】 US2021072099
(87)【国際公開番号】W WO2022220891
(87)【国際公開日】2022-10-20
(32)【優先日】2021-04-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】1 Vanderbilt Avenue, 60th Floor, New York, NY 10017, United States of America
(74)【代理人】
【識別番号】100180781
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】マ,タオ
(72)【発明者】
【氏名】リパ,ボグダン コンスタンチン
(72)【発明者】
【氏名】オーロス,アンドレイ ロバート
(72)【発明者】
【氏名】プフ,クリスチャン
(72)【発明者】
【氏名】フォシェレ,クレメント ビー.
(72)【発明者】
【氏名】マドクール,タレク
(57)【要約】
RPA(ロボティックプロセスオートメーション)作業負荷を完了するためにコンピューティング環境を割り当てるためのシステム及び方法が提供される。RPA作業負荷を完了するための要求が受信される。RPA作業負荷を完了するために割り当てるべきコンピューティング環境の数は、複数のRPA自動スケーリング戦略のうちの選択された1つに基づいて計算される。計算された数のコンピューティング環境は、RPA作業負荷を完了するために1つ以上のRPAロボットを割り当てるために割り当てられる。コンピューティング環境が仮想マシンであってもよい。
【特許請求の範囲】
【請求項1】
RPA(ロボティックプロセスオートメーション)作業負荷を完了するための要求を受信するステップと、
複数のRPA自動スケーリング戦略のうちの選択された1つに基づいて前記RPA作業負荷を完了するために割り当てるべきコンピューティング環境の数を計算するステップと、
前記RPA作業負荷を完了するべく1つ以上のRPAロボットを割り当てるために前記計算された数のコンピューティング環境を割り当てるステップと、
を含むコンピュータ実装方法。
【請求項2】
前記コンピューティング環境が仮想マシンを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記複数のRPA自動スケーリング戦略は、スピードオーバーコスト戦略、バランスド戦略、及び、コストオーバースピード戦略を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
割り当てるべきコンピューティング環境の前記数は、前記RPA作業負荷を完了するコンピューティング環境の数、プール内に作成され得るコンピューティング環境の最大数、及び、ライセンスによって許可されるRPAロボットの数に基づいて計算される、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記複数のRPA自動スケーリング戦略は、ユーザーが1つ以上の制御変数を構成するカスタム戦略を含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記複数のRPA自動スケーリング戦略は、1つ以上の制御変数が作業負荷タイプに基づいて自動的に調整されるダイナミック戦略を含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記選択されたRPA自動スケーリング戦略の選択をユーザーから受けるステップを更に含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
スケジュールにしたがって前記選択されたRPA自動スケーリング戦略を自動的に選択するステップを更に含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記RPA作業負荷のソースに基づいて前記選択されたRPA自動スケーリング戦略を自動的に選択するステップを更に含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
コンピュータ命令を記憶するメモリと、
前記コンピュータ命令を遂行するように構成される少なくとも1つのプロセッサであって、前記コンピュータ命令が、前記少なくとも1つのプロセッサに、
RPA(ロボティックプロセスオートメーション)作業負荷を完了するための要求を受信する操作と、
複数のRPA自動スケーリング戦略のうちの選択された1つに基づいて前記RPA作業負荷を完了するために割り当てるべきコンピューティング環境の数を計算する操作と、
前記RPA作業負荷を完了するべく1つ以上のRPAロボットを割り当てるために前記計算された数のコンピューティング環境を割り当てる操作と、
を実行させるように構成される、少なくとも1つのプロセッサと、
を備える装置。
【請求項11】
前記コンピューティング環境が仮想マシンを含む、請求項10に記載の装置。
【請求項12】
前記複数のRPA自動スケーリング戦略は、スピードオーバーコスト戦略、バランスド戦略、及び、コストオーバースピード戦略を含む、請求項10に記載の装置。
【請求項13】
割り当てるべきコンピューティング環境の前記数は、前記RPA作業負荷を完了するコンピューティング環境の数、プール内に作成され得るコンピューティング環境の最大数、及び、ライセンスによって許可されるRPAロボットの数に基づいて計算される、請求項10に記載の装置。
【請求項14】
前記複数のRPA自動スケーリング戦略は、ユーザーが1つ以上の制御変数を構成するカスタム戦略を含む、請求項10に記載の装置。
【請求項15】
コンピュータプログラム命令を記憶する非一時的コンピュータ可読媒体であって、前記コンピュータプログラム命令が、少なくとも1つのプロセッサ上で実行されると、前記少なくとも1つのプロセッサに、
RPA(ロボティックプロセスオートメーション)作業負荷を完了するための要求を受信する操作と、
複数のRPA自動スケーリング戦略のうちの選択された1つに基づいて前記RPA作業負荷を完了するために割り当てるべきコンピューティング環境の数を計算する操作と、
前記RPA作業負荷を完了するべく1つ以上のRPAロボットを割り当てるために前記計算された数のコンピューティング環境を割り当てる操作と、
を含む操作を実行させる、非一時的コンピュータ可読媒体。
【請求項16】
前記コンピューティング環境が仮想マシンを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記複数のRPA自動スケーリング戦略は、1つ以上の制御変数が作業負荷タイプに基づいて自動的に調整されるダイナミック戦略を含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記操作は、
前記選択されたRPA自動スケーリング戦略の選択をユーザーから受ける操作を更に含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記操作は、
スケジュールにしたがって前記選択されたRPA自動スケーリング戦略を自動的に選択する操作を更に含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記操作は、
前記RPA作業負荷のソースに基づいて前記選択されたRPA自動スケーリング戦略を自動的に選択する操作を更に含む、請求項15に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ロボティックプロセスオートメーション(RPA)に関し、より詳細には、1つ以上のRPAロボットを遂行するために仮想マシン又は他のコンピューティング環境を割り当てるためのRPA自動スケーリング戦略に関する。
【背景技術】
【0002】
ロボティックプロセスオートメーション(RPA)において、ジョブは、RPAワークフローを自動的に遂行する1つ以上のRPAロボットによって完了される。多くの場合、そのようなジョブは、速度又はコストを優先して完了される必要があり得る。従来、RPAロボットを実装するための機械は、ユーザーによって手動で割り当てられる。しかしながら、機械の手動割り当ては、面倒であるとともに、速度又はコストを優先するためにRPAの実装に関連する様々なコンテキスト情報をユーザーが知る必要がある。他の従来の手法において、RPAロボットを実装するための機械は、中央処理装置(CPU)の使用、メモリの使用などのコンピューティングリソースに基づいて割り当てられる。しかしながら、そのような従来の手法は、保留中のジョブなどのロボットの作業負荷を考慮していない。
【発明の概要】
【0003】
本発明の実施形態は、仮想マシン又は他のコンピューティング環境を割り当てて、ジョブを完了するための速度とコストとのバランスをとるためのRPA(ロボティックプロセスオートメーション)自動スケーリング戦略を提供する。
【0004】
1つ以上の実施形態によれば、RPA作業負荷を完了するためにコンピューティング環境を割り当てるためのシステム及び方法が提供される。RPA作業負荷を完了するための要求が受信される。RPA作業負荷を完了するために割り当てるべきコンピューティング環境の数は、複数のRPA自動スケーリング戦略のうちの選択された1つに基づいて計算される。計算された数のコンピューティング環境は、RPA作業負荷を完了するために1つ以上のRPAロボットを割り当てるために割り当てられる。
【0005】
一実施形態では、コンピューティング環境が仮想マシンを含む。
【0006】
一実施形態において、複数のRPA自動スケーリング戦略は、スピードオーバーコスト戦略、バランスド戦略、及び、コストオーバースピード戦略を含む。割り当てるべきコンピューティング環境の数は、RPA作業負荷を完了するコンピューティング環境の数、プール内に作成され得るコンピューティング環境の最大数、及び、ライセンスによって許可されるRPAロボットの数に基づいて計算される。
【0007】
一実施形態において、複数のRPA自動スケーリング戦略は、ユーザーが1つ以上の制御変数を構成するカスタム戦略を含む。他の実施形態において、複数のRPA自動スケーリング戦略は、1つ以上の制御変数が作業負荷タイプに基づいて自動的に調整されるダイナミック戦略を含む。
【0008】
一実施形態では、選択されたRPA自動スケーリング戦略の選択がユーザーから受けられる。他の実施形態において、選択されたRPA自動スケーリング戦略は、スケジュールにしたがって及び/又はRPA作業負荷のソースに基づいて自動的に選択される。
【0009】
本発明のこれら及び他の利点は、以下の詳細な説明及び添付の図面を参照することによって当業者には明らかになる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態に係る、RPA(ロボティックプロセスオートメーション)システムを示すアーキテクチャ図である。
【0011】
【
図2】本発明の一実施形態に係る、配備されたRPAシステムの一例を示すアーキテクチャ図である。
【0012】
【
図3】本発明の一実施形態に係る、RPAシステムの簡略化された配備例を示すアーキテクチャ図である。
【0013】
【
図4】本発明の一実施形態に係る、ロボティックプロセスオートメーションロボットのクラウドベースの管理を実施するためのクラウドRPAシステムを示すアーキテクチャ図である。
【0014】
【
図5】本発明の一実施形態に係る、RPAロボットを遂行するためのコンピューティング環境を割り当てるための方法を示す。
【0015】
【
図6】本発明の実施形態を実施するために使用されてもよいコンピューティングシステムのブロック図である。
【発明を実施するための形態】
【0016】
ロボティックプロセスオートメーション(RPA)は、ワークフロー及びプロセスを自動化するために使用される。
図1は、1つ以上の実施形態に係る、RPAシステム100のアーキテクチャ図である。
図1に示されるように、RPAシステム100は、開発者が自動化プロセスを設計できるようにするためのデザイナ102を含む。より具体的には、デザイナ102は、プロセスにおけるアクティビティを実行するためのRPAプロセス及びロボットの開発及びデプロイメントを容易にする。デザイナ102は、アプリケーション統合のためのソリューション、並びに、サードパーティアプリケーション、管理情報技術(IT)タスク、及び、コンタクトセンター運用のためのビジネスプロセスの自動化をもたらすことができる。デザイナ102の一実施形態の1つの市販例は、UiPath Studio(商標)である。
【0017】
ルールベースのプロセスの自動化を設計する際、開発者は、遂行順序、及び、本明細書中で「アクティビティ」と定義されるプロセスで開発されるカスタムセットのステップ間の関係を制御する。各アクティビティは、ボタンのクリック、ファイルの読み取り、ログパネルへの書き込みなどのアクションを含むことができる。幾つかの実施形態では、プロセスがネストされ又は埋め込まれてもよい。
【0018】
幾つかのタイプのプロセスは、シーケンス、フローチャート、有限状態機械(FSM)、及び/又は、グローバル例外ハンドラを含んでもよいが、これらに限定されない。シーケンスは、プロセスを雑然とさせることなく1つのアクティビティから他のアクティビティへの流れを可能にする線形プロセスに特に適し得る。フローチャートは、複数の分岐論理演算子を介してより多様な態様で決定の統合及びアクティビティの接続を可能にする、より複雑なビジネスロジックに特に適し得る。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)又はアクティビティによってトリガされる有限数の状態をそれらの遂行において使用することができる。グローバル例外ハンドラは、遂行エラーに遭遇したときのワークフローの挙動を決定し、プロセスをデバッグするのに特に適し得る。
【0019】
デザイナ102においてプロセスが開発された時点で、ビジネスプロセスの遂行がコンダクタ104によって編成され、コンダクタ104は、デザイナ102において開発されたプロセスを遂行する1つ以上のロボット106を編成する。コンダクタ104の一実施形態の1つの市販例は、UiPath Orchestrator(商標)である。コンダクタ220は、RPA環境におけるリソースの作成、監視、及び、デプロイメントの管理を容易にする。一例では、コンダクタ104がウェブアプリケーションである。また、コンダクタ104は、サードパーティソリューション及びアプリケーションとの統合ポイントとして機能することもできる。
【0020】
コンダクタ104は、集中ポイントからロボット106を接続して遂行することによって、RPAロボット106のフリートを管理することができる。コンダクタ104は、プロビジョニング、デプロイメント、コンフィギュレーション、キューイング、監視、ロギング、及び/又は、相互接続性の提供を含むがこれらに限定されない様々な機能を有することができる。プロビジョニングは、ロボット106とコンダクタ104(例えば、ウェブアプリケーション)との間の接続の作成及び維持を含むことができる。デプロイメントは、遂行のために割り当てられたロボット106へのパッケージバージョンの正しい配信を保証することを含むことができる。コンフィギュレーションは、ロボット環境及びプロセス構成の維持及び配信を含むことができる。キューイングは、キュー及びキュー項目の管理を行なうことを含むことができる。監視は、ロボット識別データを追跡し、ユーザー権限を維持することを含むことができる。ロギングは、データベース(例えば、SQLデータベース)及び/又は他の記憶機構(例えば、大規模なデータセットを記憶して迅速に照会できる能力を与えるElasticSearch(登録商標)へのログの記憶及びインデックス付けを含むことができる。コンダクタ104は、サードパーティソリューション及び/又はアプリケーションのための通信の集中ポイントとして作用することによって相互接続性をもたらすことができる。
【0021】
ロボット106は、デザイナ102で構築されたプロセスを実行する遂行エージェントである。ロボット106の幾つかの実施形態の一市販例は、UiPath Robots(商標)である。ロボット106のタイプとしては、アテンディッドロボット108及びアンアテンディッドロボット110を挙げることができるが、これらに限定されない。アテンディッドロボット108は、ユーザー又はユーザーイベントによってトリガされ、同じコンピューティングシステム上で人間のユーザーと一緒に動作する。アテンディッドロボット108は、人間のユーザーが様々なタスクを達成するのを助けることができ、人間のユーザーによって及び/又はユーザーイベントによって直接にトリガされ得る。アテンディッドロボットの場合、コンダクタ104は、集中プロセスデプロイメント及びロギング媒体をもたらすことができる。特定の実施形態において、アテンディッドロボット108は、「ロボットトレイ」から又はウェブアプリケーションにおけるコマンドプロンプトからのみ起動することができる。アンアテンディッドロボット110は、仮想環境において無人モードで動作し、例えば大量のバックエンドプロセスなどのために、多くのプロセスを自動化するために使用され得る。アンアテンディッドロボット110は、遠隔遂行、監視、スケジューリング、及び、作業キューのためのサポートの提供に関与することができる。アテンディッドロボット及びアンアテンディッドロボットはいずれも、メインフレーム、ウェブアプリケーション、VM、企業アプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって製造されたもの)、及び、コンピューティングシステムアプリケーション(例えば、デスクトップ及びラップトップアプリケーション、モバイルデバイスアプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むがこれらに限定されない様々なシステム及びアプリケーションを自動化することができる。
【0022】
幾つかの実施形態において、ロボット106は、初期設定でMicrosoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。結果として、そのようなロボット106は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開き、Windows(登録商標)サービスの権利を有することができる。幾つかの実施形態では、ユーザーと同じ権利を有するユーザーモードでロボット106を設置することができ、ユーザーモード下では所定のロボット106が設置されてしまっている。
【0023】
幾つかの実施形態におけるロボット106は、それぞれが特定のタスク専用である幾つかのコンポーネントに分割される。幾つかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、及び、コマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理及び監視するとともに、コンダクタ104と遂行ホスト(すなわち、ロボット106が遂行されるコンピューティングシステム)との間のプロキシとしての機能を果たす。これらのサービスは、ロボット106のための資格情報で信頼され、この資格情報を管理する。コンソールアプリケーションは、ローカルシステムの下でSCMによって起動される。幾つかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理及び監視するとともに、コンダクタ104と遂行ホストとの間のプロキシとしての機能を果たす。ユーザーモードロボットサービスは、ロボット106のための資格情報で信頼されてこの資格情報を管理することができる。SCM管理ロボットサービスがインストールされなければ、Windows(登録商標)アプリケーションを自動的に起動することができる。エグゼキュータは、Windows(登録商標)セッション下で所定のジョブを実行することができ(例えば、エグゼキュータはワークフローを遂行することができる)、モニタごとのドット/インチ(DPI)設定を認識することができる。エージェントは、システムトレイウィンドウで利用可能なジョブを表示するWindows(登録商標)Presentation Foundation(WPF)アプリケーションであってもよい。エージェントは、サービスのクライアントであってもよい。エージェントは、ジョブを開始又は停止して設定を変更するように要求することができる。コマンドラインは、サービスのクライアントであり、ジョブを開始するように要求することができるとともにジョブの出力を待つコンソールアプリケーションである。ロボットコンポーネントの分割は、開発者を助け、ユーザーをサポートするとともに、各ロボットコンポーネントが遂行しているものをコンピューティングシステムがより容易に実行、識別、及び、追跡できるようにし得る。例えば、エグゼキュータ及びサービスに関して異なるファイアウォールルールを設定するなど、ロボットコンポーネントごとに特別な挙動を構成することができる。更なる例として、エグゼキュータは、幾つかの実施形態ではモニタごとのDPI設定を認識することができ、その結果、ワークフローは、それらが作成されたコンピューティングシステムのコンフィギュレーションに関係なく、任意のDPIで遂行することができる。
【0024】
図2は、1つ以上の実施形態に係るRPAシステム200を示す。RPAシステム200は、
図1のRPAシステム100であってもよく又はRPAシステム100の一部であってもよい。「クライアント側」、「サーバ側」、又は、その両方は、本発明の範囲から逸脱することなく、任意の所望の数のコンピューティングシステムを含むことができることに留意すべきである。
【0025】
この実施形態におけるクライアント側に示されるように、コンピューティングシステム202は、1つ以上のエグゼキュータ204、エージェント206、及び、デザイナ208を含む。他の実施形態において、デザイナ208は、同じコンピューティングシステム202上で実行されていなくてもよい。エグゼキュータ204(前述のようにロボットコンポーネントであってもよい)はプロセスを実行し、幾つかの実施形態では、複数のビジネスプロセスが同時に実行されてもよい。この例において、エージェント206(例えば、Windows(登録商標)サービス)は、エグゼキュータ204を管理するための単一の接続ポイントである。
【0026】
幾つかの実施形態において、ロボットは、機械名とユーザー名との間の関連付けを表わす。ロボットは、複数のエグゼキュータを同時に管理することができる。同時に実行される複数のインタラクティブなセッション(例えば、Windows(登録商標)Server2012)をサポートするコンピューティングシステムでは、複数のロボットがそれぞれ固有のユーザー名を使用して別々のWindows(登録商標)セッションで同時に(例えば、高密度(HD)環境)実行されてもよい。
【0027】
また、エージェント206は、ロボットの状態を送信し(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信し)、遂行されるべきパッケージの必要なバージョンをダウンロードすることにも関与する。エージェント206とコンダクタ212との間の通信は、幾つかの実施形態ではエージェント206によって開始される。通知シナリオの例において、エージェント206は、ロボットにコマンド(例えば、始動、停止など)を送信するためにコンダクタ212によって後で使用されるWebSocketチャネルを開くことができる。
【0028】
この実施形態においてサーバ側に示されるように、プレゼンテーション層は、ウェブアプリケーション214と、オープンデータプロトコル(OData)表象状態転送(REST)アプリケーションプログラミングインターフェース(API)エンドポイント216と、通知監視API218とを備える。サーバ側のサービス層は、API実装/ビジネスロジック220を含む。サーバ側の永続層は、データベースサーバ222とインデクササーバ224とを含む。コンダクタ212は、ウェブアプリケーション214、OData REST APIエンドポイント216、通知監視API218、及び、API実装/ビジネスロジック220を含む。
【0029】
様々な実施形態において、コンダクタ212のインターフェースにおいてユーザーが(例えば、ブラウザ210を介して)実行する殆どのアクションは、様々なAPIを呼び出すことによって実行される。そのようなアクションとしては、ロボット上のジョブの開始、キュー内のデータの追加/削除、無人で実行すべきジョブのスケジューリングなどを挙げることができるが、これらに限定されない。ウェブアプリケーション214は、サーバプラットフォームのビジュアル層である。この実施形態において、ウェブアプリケーション214は、ハイパーテキストマークアップ言語(HTML)及びJavaScript(登録商標)(JS)を使用する。しかしながら、本発明の範囲から逸脱することなく、任意の所望のマークアップ言語、スクリプト言語、又は、任意の他のフォーマットを使用することができる。ユーザーは、コンダクタ212を制御するための様々なアクションを実行するために、この実施形態ではブラウザ210を介してウェブアプリケーション214からのウェブページと対話する。例えば、ユーザーは、ロボットグループを作成し、ロボットにパッケージを割り当て、ロボットごと及び/又はプロセスごとにログを分析し、ロボットを起動及び停止することなどができる。
【0030】
ウェブアプリケーション214に加えて、コンダクタ212は、OData REST APIエンドポイント216を露出させるサービス層も含む(又は、本発明の範囲から逸脱することなく他のエンドポイントが実装されてもよい)。REST APIは、ウェブアプリケーション214及びエージェント206の両方によって消費される。エージェント206は、この例示的な構成ではクライアントコンピュータ上の1つ以上のロボットのスーパーバイザーである。
【0031】
この実施形態におけるREST APIは、コンフィギュレーション、ロギング、監視、及び、キューイング機能をカバーする。幾つかの実施形態では、コンフィギュレーションRESTエンドポイントを使用して、アプリケーションユーザー、権限、ロボット、アセット、リリース、及び、環境を定義及び構成することができる。RESTエンドポイントのロギングは、例えば、エラー、ロボットによって送信された明示的なメッセージ、及び、他の環境固有の情報などの異なる情報をロギングするのに有用であり得る。開始ジョブコマンドがコンダクタ212内で使用される場合に遂行されるべきパッケージバージョンを照会するために、デプロイメントRESTエンドポイントがロボットによって使用されてもよい。RESTエンドポイントをキューイングすることは、キューにデータを追加すること、キューからトランザクションを取得すること、トランザクションの状態を設定することなど、キュー及びキュー項目の管理に関与できる。RESTエンドポイントの監視は、ウェブアプリケーション214及びエージェント206を監視する。通知監視API218は、エージェント206の登録、エージェント206への構成設定の配信、並びに、サーバ及びエージェント206からの通知の送信/受信のために使用されるRESTエンドポイントであってもよい。また、通知監視API218は、幾つかの実施形態では、WebSocket通信を使用してもよい。
【0032】
サーバ側の永続層は、この例示的な実施形態におけるサーバの対、すなわち、データベースサーバ222(例えば、SQLサーバ)及びインデクササーバ224を含む。この実施形態におけるデータベースサーバ222は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を記憶する。この情報は、幾つかの実施形態ではウェブアプリケーション214を介して管理される。また、データベースサーバ222は、キュー及びキュー項目を管理することもできる。幾つかの実施形態において、データベースサーバ222は、(インデクササーバ224に加えて又はインデクササーバ224の代わりに)ロボットによってロギングされるメッセージを記憶することができる。インデクササーバ224は、幾つかの実施形態ではオプションであり、ロボットによってロギングされる情報を記憶し、インデックス付けする。特定の実施形態において、インデクササーバ224は、構成設定を通じて無効にされてもよい。幾つかの実施形態において、インデクササーバ224は、オープンソースプロジェクトのフルテキスト検索エンジンであるElasticSearch(登録商標)を使用する。ロボットによって(例えば、ログメッセージ又は行書き込みのようなアクティビティを使用して)ロギングされるメッセージは、ロギングRESTエンドポイントを介してインデクササーバ224に送信されてもよく、そこで、それらのメッセージは将来の利用のためにインデックス付けされる。
【0033】
図3は、1つ以上の実施形態に係る、RPAシステム300の簡略化された配備例を示すアーキテクチャ図である。幾つかの実施形態において、RPAシステム300は、
図1及び
図2のそれぞれのRPAシステム100及び/又は200であってもよく、RPAシステム100及び/又は200を含んでもよい。RPAシステム300は、ロボットを実行する複数のクライアントコンピューティングシステム302を含む。コンピューティングシステム302は、そこで実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム304と通信することができる。更に、コンダクタコンピューティングシステム304は、データベースサーバ306及び随意的なインデクササーバ308と通信する。
図2及び
図3に関して、これらの実施形態ではウェブアプリケーションが使用されるが、本発明の範囲から逸脱することなく任意の適切なクライアント/サーバソフトウェアを使用できることに留意すべきである。例えば、コンダクタは、クライアントコンピューティングシステム上の非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバ側アプリケーションを実行することができる。
【0034】
一実施形態において、
図1のRPAシステム100、
図2のRPAシステム200、及び/又は、図のRPAシステム300は、RPAロボットのクラウドベースの管理のために実装されてもよい。そのようなRPAロボットのクラウドベースの管理により、RPAをサービスとしてのソフトウェア(SaaS)として提供することができる。したがって、
図1のコンダクタ104、
図2のコンダクタ212、及び/又は、
図3のコンダクタ304は、例えば、RPAロボットを作成する、RPAロボットを提供する、RPAロボットに関するタスクをスケジューリングする、RPAロボットを停止する、又は、RPAロボットを管理するための任意の他のオーケストレーションタスクを実行するべく、RPAロボットのクラウドベースの管理のためにクラウドに実装される。
【0035】
図4は、1つ以上の実施形態に係る、RPAロボットのクラウドベースの管理を実施するためのクラウドRPAシステム400のアーキテクチャ図を示す。クラウドRPAシステム400は、クラウドコンピューティング環境402及びローカルコンピューティング環境404を備える。ローカルコンピューティング環境404は、例えば企業、会社などのユーザー又は任意の他の1つ又は複数のエンティティのローカルネットワークアーキテクチャを表わす。ローカルコンピューティング環境404はローカルネットワーク406を含む。クラウドコンピューティング環境402は、ローカルコンピューティング環境404においてユーザーから離れた作業負荷のサービス又は処理を提供するクラウドコンピューティングネットワークアーキテクチャを表わす。クラウドコンピューティング環境402は、インターネット414、ユーザーによって管理(又は制御)されてクラウドプラットフォームプロバイダによってホストされるクラウドネットワークを表わすユーザークラウドネットワーク418、及び、クラウドサービスプロバイダによって管理されてクラウドプラットフォームプロバイダによってホストされるクラウドネットワークを表わすクラウドサービスプロバイダクラウドネットワーク420を含む、様々なクラウドネットワークを備える。クラウドサービスプロバイダは、クラウドを介してサービス(例えば、RPA)を提供するエンティティである。クラウドプラットフォームプロバイダは、クラウドコンピューティングインフラストラクチャを維持するエンティティである。ローカルコンピューティング環境404のローカルネットワーク406は、ローカルコンピューティング環境404とクラウドコンピューティング環境402との間の通信を容易にするために、クラウドコンピューティング環境402のインターネット414に通信可能に結合される。
【0036】
図4に示されるように、クラウドオーケストレータ430は、RPAロボットのクラウドベースの管理を可能にするためにクラウドコンピューティング環境402に実装される。特に、クラウドオーケストレータ430は、クラウドサービスプロバイダによって管理されるとともに、クラウドコンピューティング環境402内のクラウドサービスプロバイダクラウドネットワーク420内でホストされる。一実施形態において、クラウドサービスプロバイダは、ローカルコンピューティング環境404内のユーザーにRPAを提供する。
【0037】
クラウドオーケストレータ430は、クラウドコンピューティング環境402内のRPAロボットを管理する。特に、ユーザーは、ローカルコンピューティング環境404内のコンピューティングデバイス412と対話して、RPAロボットを管理するための命令をクラウドコンピューティング環境402内のクラウドオーケストレータ430に送信する。或いは、ユーザーは、ローカルコンピューティング環境404内のコンピューティングデバイス412と対話して、RPAロボットを管理するためにユーザーに代わって命令を自動的に送信するようにクラウドオーケストレータ430上にスケジュールを設定する。RPAロボットを管理するための典型的な命令としては、RPAロボットを作成するための命令、RPAロボットをプロビジョニングするための命令、RPAロボット上のタスクをスケジューリングするための命令(例えば、タスクを実行するための時間及びタスクを実行するためのロボットのタイプをスケジューリングする)、RPAロボットをデコミッションするための命令、又は、RPAロボットのための任意の他の編成命令が挙げられる。命令を受信したことに応じて、クラウドオーケストレータ430は、例えば、RPAロボットの作成、RPAロボットのプロビジョニング、RPAロボットのタスクのスケジューリング、RPAロボットのデコミッショニングなどによって命令を実行する。一実施形態において、クラウドオーケストレータ430は、
図1のコンダクタ104、
図2のコンダクタ212、又は、
図3のコンダクタ304と同様であってもよいが、クラウドコンピューティング環境402内のクラウドサービスプロバイダクラウドネットワーク420に実装されてもよい。
【0038】
クラウドオーケストレータ430によって管理されるRPAロボットは、クラウドコンピューティング環境402内に配備されて維持されるクラウドロボットのプールを含んでもよい。そのようなクラウドロボットは、クラウドサービスロボットプール426の1つ以上のクラウドサービスロボット428-A、...、428-X(以下、まとめてクラウドサービスロボット428と呼ぶ)と、クラウド管理ロボットプール422の1つ以上のクラウド管理ロボット424-A、...、424-Y(以下、まとめてクラウド管理ロボット424と呼ぶ)とを含むことができる。そのようなクラウドロボットは、クラウドコンピューティング環境402において(すなわち、プロセス)タスクを実行し、タスクの結果をローカルコンピューティング環境404内のユーザーに送信する。これに加えて又は代えて、クラウドオーケストレータ430によって管理されるRPAロボットは、ローカルロボットプール408の1つ以上のローカルロボット410-A、...、410-Z(以下、まとめてローカルロボット410と呼ぶ)を含んでもよい。
【0039】
クラウドサービスロボット428は、ローカルネットワーク環境404内のユーザーのためにクラウドコンピューティング環境402内でRPAタスクを実行するために、クラウドサービスプロバイダのクラウドネットワーク420内のクラウドサービスプロバイダによって維持される。クラウドサービスロボット428は、ユーザーがコンピューティングデバイス412からクラウドオーケストレータ430に命令を送信することによって、要求に応じて作成される。作成されると、クラウドサービスロボット428は、タスク(又はワークフロー)を実行するのを待っている間、待機モードに入る。待機モードにある間、クラウドサービスロボット428を動作させるためのコストは最小化される或いはさもなければ低減される。タスクは、ユーザーがコンピューティングデバイス412からクラウドオーケストレータ430に命令を送ることによって、クラウドサービスロボット428上にスケジューリングされる。タスクをスケジューリングするための命令は、タスクを実行するための時間及びタスクを実行するためのロボットのタイプを定義する。クラウドサービスロボット428は、タスクを実行するために待機モードから起動し、タスクが完了すると待機モードに戻る。したがって、クラウドサービスロボット428は、ローカルコンピューティング環境404内のユーザーのためにクラウドサービスプロバイダクラウドネットワーク420上でタスクを実行する。
【0040】
クラウド管理ロボット424は、ローカルネットワーク環境404内のユーザーのためにクラウドコンピューティング環境402内でRPAタスクを実行するために、ユーザークラウドネットワーク418内のユーザーによって維持される。クラウド管理ロボット424は、クラウドサービスロボット428と機能が類似しており、また、クラウドコンピューティング環境402でホストされる。しかしながら、クラウド管理ロボット424がホストされるユーザークラウドネットワーク418は、ユーザーによって管理され、一方、クラウドサービスロボット428がホストされるクラウドサービスプロバイダクラウドネットワーク420は、クラウドサービスプロバイダによって管理されてクラウドプラットフォームプロバイダによってホストされる。クラウドオーケストレータ430は、クラウドサービスプロバイダクラウドネットワーク420とユーザークラウドネットワーク418との間の接続を確立することによって、クラウド管理ロボット424を管理する。ユーザークラウドネットワーク418は、ローカルネットワーク406にトンネルバックするために、クラウドプロバイダ技術を利用するユーザーによって確立されてもよい。ユーザーは、ローカルネットワーク406からクラウドサービスプロバイダクラウドネットワーク420への専用ネットワーク接続を確立することができる。接続は、一般に、例えば、任意対任意(例えば、インターネットプロトコル仮想プライベートネットワーク)ネットワーク、ポイントツーポイントEthernetネットワーク、又は、コロケーション施設における接続プロバイダを介した仮想交差接続の形態を成す。これらの接続は、公衆インターネットを経由しない。これは、インターネットを介した典型的な接続よりも高い信頼性、より速い速度、一貫した待ち時間、及び、より高いセキュリティを提供する。ユーザークラウドネットワーク418は、ユーザーによって完全に制御及び管理され続け、それによって、ユーザーにデータに対する厳格な制御を提供する。
【0041】
クラウドサービスプロバイダクラウドネットワーク420とユーザークラウドネットワーク418との間の接続が確立されると、クラウド管理ロボット424は、コンピューティングデバイス412を介してクラウドオーケストレータ430と対話するユーザーによる要求に応じて作成される。クラウド管理ロボット424は、ユーザークラウドネットワーク418上に作成される。したがって、クラウド管理ロボット424は、ローカルコンピューティング環境404内のユーザーのためにユーザークラウドネットワーク418上でタスクを実行する。アルゴリズムを適用して、クラウド管理ロボットプール422内のロボットの利用を最大化し、ユーザーの運用コストを削減することができる。
【0042】
ローカルロボット410は、ローカルネットワーク環境404内のユーザーのためにRPAタスクを実行するべく、ローカルネットワーク406内のユーザーによって維持される。ローカルネットワーク406は、ユーザーによって制御又は管理される。クラウドオーケストレータ430は、標準的なHTTPS接続を介してローカルロボット410への接続を維持する。
【0043】
動作中、例えば
図1のRPAシステム100、
図2のRPAシステム200、
図3のRPAシステム300、及び/又は、
図4のクラウドRPAシステム400などのRPAシステムは、ジョブを完了するように構成される。そのようなジョブは、1つ以上のRPAワークフローを遂行するために仮想マシン(又は任意の他のコンピューティング環境)上で遂行又は実行される1つ以上のRPAロボットによって完了される。仮想マシンは、他のコンピュータシステム上で遂行されるコンピュータシステムの仮想化又はエミュレーションである。時として、時間、コスト、又は、時間とコストとのバランスを優先することによってRPAジョブを完了することが望ましい場合がある。本明細書中に記載の実施形態は、時間、コスト、又は、時間のバランスを優先するためのRPA自動スケーリング戦略を提供する。好適には、コンピューティング環境は、選択されたRPA自動スケーリング戦略に基づいてジョブを完了するために1つ以上のRPAロボットを実行するために割り当てられ、それにより、最小限の手動ユーザー構成で優先された時間、コスト、又は、バランスにしたがってジョブを完了する。
【0044】
図5は、1つ以上の実施形態に係る、RPAロボットを遂行するためにコンピューティング環境を割り当てるための方法500を示す。方法500のステップは、例えば
図6のコンピューティングシステム600などの、1つ以上の適切なコンピューティングデバイスによって実行することができる。一実施形態において、方法500のステップは、例えば、
図1のRPAシステム100のコンダクタ104、
図2のRPAシステム200のコンダクタ212、
図3のRPAシステム300のコンダクタ304、又は、
図4のクラウドRPAシステム400のクラウドオーケストレータ430などの、RPAシステムのオーケストレータ又はコンダクタによって実行される。
【0045】
ステップ502では、RPA作業負荷を完了するための要求が受信される。RPA作業負荷は、例えば、RPAジョブのセットであってもよい。
【0046】
ステップ504において、RPA作業負荷を完了するために割り当てるべきコンピューティング環境の数は、複数のRPA自動スケーリング戦略のうちの選択された1つに基づいて計算される。一実施形態では、コンピューティング環境が仮想マシンである。しかしながら、コンピューティング環境は、例えば仮想化されたデスクトップ環境、コンテナなどのRPAロボットを遂行するための任意の他の適切なコンピューティング環境であってもよい。RPA自動スケーリング戦略は、例えばRPA自動スケーリングプロファイルとして、複数の方法で定義又は実装され得る。
【0047】
複数のRPA自動スケーリング戦略は、RPA作業負荷を完了するための時間とコストとのバランスをとる。一実施形態において、複数のRPA自動スケーリング戦略は、スピードオーバーコスト戦略、バランスド戦略、及び、コストオーバースピード戦略を含む。スピードオーバーコスト戦略は、RPA作業負荷を完了するための最も速い時間を有するが、インフラストラクチャコストが最も高い。バランスド戦略は、RPA作業負荷を完了するための中程度の時間及び中程度のインフラストラクチャコストを有する。コストオーバースピード戦略は、RPA作業負荷を完了するための時間が最も遅いが、インフラストラクチャコストが最も低い。一実施形態では、コストオーバースピード戦略がデフォルト戦略である。
【0048】
割り当てるべきコンピューティング環境の数は、選択された自動スケーリング戦略に基づいて様々な制御変数又はパラメータにしたがって決定される。一実施形態において、割り当てるべきコンピューティング環境の数は、1)RPA作業負荷を完了するコンピューティング環境の数を表わすMAX_MACHINES_FOR_WORKLOAD、2)プール内のコンピューティング環境の最大数を表わすMAX_MACHINES、及び、3)ライセンスによって許可されるアクティブRPAロボットの数を表わすLICENSED_ROBOTSに基づいて、選択された自動スケーリング戦略にしたがって決定される。
【0049】
スピードオーバーコスト戦略の場合、ALLOCATION_MACHINE_COUNTを割り当てるべきコンピューティング環境の数は、以下のように計算される。
ALLOCATION_MACHINE_COUNT=
min(MAX_MACHINES_FOR_WORKLOAD,MAX_MACHINES)/X
ここで、制御変数Xは任意の正の整数(例えば、2)であり、MAX_MACHINESはプール内のコンピューティング環境の最大数であると定義され、MIN_MACHINESは1であると定義され、MACHINE_IDLEは30分であると定義され、MACHINE_DELETEはZ分であると定義される。バランスド戦略の場合、ALLOCATION_MACHINE_COUNTを割り当てるべきコンピューティング環境の数は、以下のように計算される。
ALLOCATION_MACHINE_COUNT=
min(MAX_MACHINES_FOR_WORKLOAD,MAX_MACHINES)/Y
ここで、制御変数YはXより大きい任意の正の整数(例えば、4)であり、MAX_MACHINESはプール内のコンピューティング環境の最大数であると定義され、MIN_MACHINESは0であると定義され、MACHINE_IDLEは10分であると定義され、MACHINE_DELETEはZ分であると定義される。コストオーバースピード戦略の場合、ALLOCATION_MACHINE_COUNTを割り当てるべきコンピューティング環境の数は、以下のように定義される。
ALLOCATION_MACHINE_COUNT=1
ここで、制御変数MAX_MACHINESはプール内のコンピューティング環境の最大数であると定義され、MIN_MACHINESは0であると定義され、MACHINE_IDLEは3分であると定義され、MACHINE_DELETEはZ分であると定義される。
【0050】
割り当てるべきコンピューティング環境の数は、選択されたRPA自動スケーリング戦略に関連する式にしたがってALLOCATION_MACHINE_COUNTを計算することによって計算され、この場合、計算された結果は次の整数に切り上げられる。上記の計算では、制御変数ALLOCATION_MACHINE_COUNTが割り当てるべきコンピューティング環境の数であり、制御変数MAX_MACHINES_FOR_WORKLOADがRPA作業負荷を完了するコンピューティング環境の数(例えば保留中のジョブ、実行中のジョブ、ライセンスされたRPAロボット実行時間などの状態情報を考慮に入れる)であり、制御変数MAX_MACHINESがプール内に作成され得るコンピューティング環境の最大数であり、制御変数MIN_MACHINESが常に利用可能なままであるべきコンピューティング環境の最小数であり(保留中のジョブがない場合でも)、制御変数MACHINE_IDLEは、コンピューティング環境が待機状態になる前にアイドルになった後に待機する時間量であり、制御変数MACHINE_DELETEは、コンピューティング環境が削除される前に割り当て解除された後に待機する時間量である。
【0051】
他のタイプの戦略も複数のRPA自動スケーリング戦略に含まれ得ることを理解すべきである。一例において、複数のRPA自動スケーリング戦略は、RPA作業負荷を完了するための時間とコストとを手動でバランスさせるべくユーザーが1つ以上の制御変数を構成する1つ以上のカスタム戦略を含むことができる。例えば、カスタム戦略は、X又はYのユーザー定義値にしたがって上記スピードオーバーコスト戦略又はバランスド戦略に関連する式に基づいてコンピューティング環境を割り当てることができる。他の例において、複数のRPA自動スケーリング戦略は、例えば、作業負荷タイプ(例えば、RPAジョブのセットに関する平均遂行時間)、内部制約(例えば、コンピューティング環境を配備するための時間、ジョブの完了のための平均時間、利用可能なRPAライセンスの数)などに基づいてRPA作業負荷を完了するための時間とコストとのバランスをとるために1つ以上の制御変数が自動的に調整されるダイナミック戦略を含むことができる。例えば、スケジューラは、保留中のジョブ、コンピューティングリソースなどを監視し、ダイナミック戦略の1つ以上の制御変数を自動的に調整することができる。幾つかの実施形態において、ダイナミック戦略における1つ以上の制御変数は、機械学習ベースのモデルを使用して自動的に調整される。
【0052】
一実施形態において、選択されたRPA自動スケーリング戦略の選択は、例えばRPAシステムのオーケストレータのユーザーインターフェースと対話するユーザーから受信される。他の実施形態では、選択されたRPA自動スケーリング戦略が自動的に選択される。一例において、選択されたRPA自動スケーリング戦略は、選択されたRPA自動スケーリング戦略を適用するための開始時間及び終了時間を定義するスケジュールにしたがって自動的に選択されてもよい。例えば、税申告や書類処理を行なう会計会社の場合、RPAの作業負荷は、各月の月末及び各四半期の終わりに増加する。スピードオーバーコスト戦略は、各月の終わり及び各四半期の終わりにスケジューリングすることができ、コストオーバースピード戦略は、残りの期間にスケジューリングすることができる。他の例として、学生の入学及び卒業を処理する大学の場合、RPA作業負荷は、入学のために学年度の初めに学生が新人研修を受け、かつ、卒業のために学年度の終わりに学生が下校する場合に増加する。スピードオーバーコスト戦略は、学年度の初め及び終わりにスケジューリングされてもよく、コストオーバースピード戦略は、残りの期間にスケジューリングされてもよい。他の例において、選択されたRPA自動スケーリング戦略は、RPA作業負荷のソースに基づいて自動的に選択されてもよい。これにより、ユーザーは、スピードオーバーコスト戦略を選択することによって作業負荷がより速く処理される一方で、コストオーバースピード戦略を使用して他のソースから受信される作業負荷をコスト効率的に処理できるように、特定のソースから受信される作業負荷に優先順位を付けることができる。一例として、IT(情報技術)ヘルプデスクの場合、スピードオーバーコスト戦略は、ソースに関連付けられたSLA(サービスレベル合意)又はソースに関連付けられたビジネスクリティカルフラグにしたがって要求に関して選択されてもよく、バランスド戦略は、他の全ての要求に関して選択されてもよい。
【0053】
ステップ506において、計算された数のコンピューティング環境が、RPA作業負荷を完了するために1つ以上のRPAロボットを割り当てるために割り当てられる。
【0054】
図6は、本発明の一実施形態に係る、
図5の方法500を含む、本明細書中に記載の方法、ワークフロー、及び、プロセスを遂行するように構成されるコンピューティングシステム600を示すブロック図である。幾つかの実施形態において、コンピューティングシステム600は、図示された及び/又は本明細書中に記載されたコンピューティングシステムのうちの1つ以上であってもよい。コンピューティングシステム600は、情報を通信するためのバス602又は他の通信機構と、情報を処理するためにバス602に結合されたプロセッサ604とを含む。プロセッサ604は、中央処理装置(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、及び/又は、それらの任意の組み合わせを含む、任意のタイプの汎用又は専用プロセッサであってもよい。また、プロセッサ604は、複数の処理コアを有してもよく、また、コアの少なくとも幾つかは、特定の機能を実行するように構成されてもよい。幾つかの実施形態では、複数並列処理を使用することができる。
【0055】
コンピューティングシステム600は、プロセッサ604によって遂行される情報及び命令を記憶するためのメモリ606を更に含む。メモリ606は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気もしくは光ディスクなどの静的ストレージ、又は、任意の他のタイプの非一時的コンピュータ可読媒体、又は、それらの組み合わせの任意の組み合わせから構成することができる。非一時的コンピュータ可読媒体は、プロセッサ604によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体、又はその両方を含んでもよい。また、媒体は、取り外し可能、取り外し不能、又は、その両方であってもよい。
【0056】
更に、コンピューティングシステム600は、任意の現在存在する又は将来実施される通信規格及び/又はプロトコルに従って、無線及び/又は有線接続を介して通信ネットワークへのアクセスを提供するためのトランシーバなどの通信デバイス608を含む。
【0057】
プロセッサ604は、バス602を介して、ユーザーに情報を表示するのに適したディスプレイ610に更に結合される。また、ディスプレイ610は、タッチディスプレイ及び/又は任意の適切な触覚I/Oデバイスとして構成されてもよい。
【0058】
キーボード612及びコンピュータマウス、タッチパッドなどのカーソル制御デバイス614は、ユーザーがコンピューティングシステムとインターフェースすることを可能にするためにバス602に更に結合される。しかしながら、特定の実施形態では、物理的なキーボード及びマウスが存在しなくてもよく、ユーザーは、ディスプレイ610及び/又はタッチパッド(図示せず)のみを介してデバイスと対話することができる。入力デバイスの任意のタイプ及び組み合わせを、設計上の選択事項として使用することができる。特定の実施形態では、物理的入力デバイス及び/又はディスプレイは存在しない。例えば、ユーザーは、それと通信する別のコンピューティングシステムを介してコンピューティングシステム600と遠隔的に対話することができ、又はコンピューティングシステム600は自律的に動作することができる。
【0059】
メモリ606は、プロセッサ604によって遂行されると機能を与えるソフトウェアモジュールを記憶する。モジュールは、コンピューティングシステム600のためのオペレーティングシステム616と、本明細書に記載のプロセス又はその派生物の全部又は一部を実行するように構成された1つ以上の更なる機能モジュール618とを含む。
【0060】
当業者であれば分かるように、「システム」は、本発明の範囲から逸脱することなく、サーバ、組込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、もしくは、任意の他の適切なコンピューティングデバイス、又は、デバイスの組み合わせとして具現化され得る。上記の機能を「システム」によって実行されるものとして提示することは、本発明の範囲を決して限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図している。実際に、本明細書中に開示される方法、システム、及び、装置は、クラウドコンピューティングシステムを含むコンピューティング技術と一致する局所化された形態及び分散された形態で実装され得る。
【0061】
本明細書中に記載されたシステム特徴の幾つかは、それらの実装の独立性をより具体的に強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタムの超大規模集積(VLSI)回路又はゲートアレイ、ロジックチップ、トランジスタ、又は、他のディスクリートコンポーネントなどの既製の半コンダクタを含むハードウェア回路として実装されてもよい。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックスプロセッシングユニットなどのプログラマブルハードウェアデバイスに実装されてもよい。また、モジュールは、様々なタイプのプロセッサによって遂行するためのソフトウェアに少なくとも部分的に実装されてもよい。遂行可能コードの識別されたユニットは、例えば、オブジェクト、手順、又は、機能として編成することができるコンピュータ命令の1つ以上の物理ブロック又は論理ブロックを含むことができる。それにもかかわらず、識別されたモジュールの遂行可能ファイルは、物理的に一緒に配置される必要はないが、論理的に一緒に結合されたときにモジュールを含み、モジュールの記載された目的を達成する異なる場所に記憶された異なる命令を含むことができる。更に、モジュールは、例えば、ハードディスクドライブ、フラッシュデバイス、RAM、テープ、及び/又は、本発明の範囲から逸脱することなくデータを記憶するために使用される任意の他のそのような非一時的コンピュータ可読媒体であってもよいコンピュータ可読媒体に記憶されてもよい。実際に、遂行可能コードのモジュールは、単一の命令、又は、多くの命令であってもよく、幾つかの異なるコードセグメント、異なるプログラム、及び、幾つかのメモリデバイスに分散されてもよい。同様に、操作データは、モジュール内で識別され及び本明細書中に例示されてもよく、任意の適切な形態で具体化され、任意の適切なタイプのデータ構造内に編成されてもよい。操作データは、単一のデータセットとして収集されてもよく、又は、異なるストレージデバイスを含む異なる場所に分散されてもよく、少なくとも部分的に、システム又はネットワーク上の電子信号としてのみ存在してもよい。
【0062】
以上は本開示の原理を単に例示するにすぎない。したがって、本明細書中に明示的に記載され又は示されないが、本開示の原理を具現化するとともに本開示の思想及び範囲内に含まれる様々な構成を当業者が考え出すことができるのが分かる。更に、本明細書中に列挙される全ての例及び条件付き言語は、主に、本開示の原理と本技術を進展させるために本発明者によって寄与される概念とを読者が理解するのを助けるための教育目的のためのものにすぎず、そのような具体的に列挙された例及び条件に限定しないように解釈されるべきである。更に、本開示の原理、態様、及び、実施形態、並びに、その特定の例を列挙する本明細書中の全ての記述は、その構造的及び機能的な均等物の両方を包含しようとするものである。更に、そのような均等物が現在知られている均等物及び将来開発される均等物の両方を含むことが意図される。
【国際調査報告】