(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-08
(45)【発行日】2025-01-17
(54)【発明の名称】人工知能の使用によるロボティックプロセスオートメーションのためのモデルの選択および連鎖化
(51)【国際特許分類】
G06N 20/00 20190101AFI20250109BHJP
【FI】
G06N20/00
(21)【出願番号】P 2022520182
(86)(22)【出願日】2020-08-18
(86)【国際出願番号】 US2020046772
(87)【国際公開番号】W WO2021076223
(87)【国際公開日】2021-04-22
【審査請求日】2023-08-08
(32)【優先日】2019-10-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-12-09
(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)【参考文献】
【文献】特開2019-159556(JP,A)
【文献】特表2018-533795(JP,A)
【文献】国際公開第2019/058508(WO,A1)
【文献】米国特許出願公開第2019/0156247(US,A1)
【文献】米国特許出願公開第2017/0364831(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 - 99/00
G06Q 10/00
(57)【特許請求の範囲】
【請求項1】
ロボティックプロセスオートメーション(RPA)のための機械学習(ML)モデル
を鎖化するために人工知能(AI)を使用するための、コンピュータにより実施される方法であって、
RPAロボットのワークフローにおいて呼び出されるMLモデルプール内の個々のMLモデルおよびMLモデルの連鎖の性能を解析するモデルのモデルを実行するステップと、
既存のMLモデルまたはMLモデルの連鎖よりも優れた性能
結果が前記モデルのモデルによって発見された場合に、
前記発見されたMLモデルまたはMLモデルの連鎖を展開し、それにより、前記既存のMLモデルまたはMLモデルの連鎖を置き換えるステップと
、
前記発見されたMLモデルまたはMLモデルの連鎖を呼び出すために、前記RPAロボットの前記ワークフローを修正するステップと、を含
み、
前記個々のMLモデルおよびMLモデルの連鎖の前記性能の前記解析は、直列、並列、またはこれらの組み合わせの連鎖MLモデルの順列に対してAIベースの実験を実行するステップと、前記個々のMLモデルおよびMLモデルの連鎖によって出力された結果を解析するステップ、を含む、コンピュータにより実施される方法。
【請求項2】
前記RPAロボットの前記修正されたワークフローを実施する前記RPAロボットの新しいバージョンを生成するステップと、
前記RPAロボットの前記生成された新しいバージョンを展開するステップと、
をさらに含む、請求項
1に記載のコンピュータにより実施される方法。
【請求項3】
前記RPAロボットの前記修正されたワークフローを遂行する場合に、前記RPAロボット
の前記生成された新しいバージョンによって、
前記発見されたMLモデルまたはMLモデルの連鎖を呼び出すステップをさらに含む、
請求項
2に記載のコンピュータにより実施される方法。
【請求項4】
前記連鎖MLモデルの順列は、
MLモデルの連鎖内の同じMLモデルの複数のインスタンスを含む、請求項
1に記載のコンピュータにより実施される方法。
【請求項5】
前記優れた性能
結果は、状態空間
の探索を導き、目標を達成しようと試みるために
、報酬を用いて中間遷移およびステップを探索する報酬関数によって支配される、請求項
1に記載のコンピュータにより実施される方法。
【請求項6】
直列および並列の連鎖MLモデルの順列のうちの少なくとも1つの順列は、直列および並列のMLモデルを交互に繰り返すことを含む、請求項
1に記載のコンピュータにより実施される方法。
【請求項7】
前記モデルのモデルは、MLモデルまたはRPAロボットである、請求項
1に記載のコンピュータにより実施される方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2019年12月9日に出願された米国非仮特許出願第16/707,933号および2019年10月15日に出願された米国仮特許出願第62/915,399号の利益を主張する。これらの先願の主題は、その全体が参照により本明細書に組み込まれる。
【0002】
本発明は、一般に、ロボティックプロセスオートメーション(RPA)に関し、より具体的には、人工知能(AI)を使用してRPAのためのモデルを選択および/または連鎖化することに関する。
【背景技術】
【0003】
通常、特定の条件下で特定のタスクを実行するために、単一のRPAワークフローが構築され、単一のロボットに展開される。例えば、画像内の特定の視覚的成分を探し、請求書から特定の情報を引き出すなどのロボットを構築および展開することができる。しかしながら、現在の問題に対する変更に基づいて新しいルールを継続的に構築したり、どのアクティビティが適切に動作しているかを理解したりすることなく、新しい変更が認識されない場合があり、またはロボットが完全に故障する場合がある。さらに、単一のロボットはすべてのシナリオに最適であるとは限らない。したがって、改善された手法が有益であり得る。
【発明の概要】
【0004】
本発明の特定の実施形態は、現在のRPA技術によってまだ完全に識別、認識、または解決されていない当技術分野の問題および必要性に対するソリューションを提供することができる。例えば、本発明のいくつかの実施形態は、RPAのモデルを選択および/または連鎖化するためにAIを使用することに関する。
【0005】
一実施形態では、AIを使用してRPAのためのMLモデルを選択および/または連鎖化するためのコンピュータにより実施される方法は、コンピューティングシステムによって、RPAロボットのワークフローで呼び出されるMLモデルプール内の個々のMLモデルおよびMLモデルの連鎖の性能を解析するモデルのモデルを実行するステップを含む。既存のMLモデルまたはMLモデルの連鎖よりも優れた性能がモデルのモデルによって発見された場合に、コンピュータにより実施される方法はまた、コンピューティングシステムによって、発見されたMLモデルまたはMLモデルの連鎖を展開し、それによって既存のMLモデルまたはMLモデルの連鎖を置き換えるステップを含む。
【0006】
別の実施形態では、AIを使用してRPAのためのMLモデルを選択および/または連鎖化するためのコンピュータにより実施される方法は、RPAロボットのワークフローで呼び出されるMLモデルプール内の個々のMLモデルおよびMLモデルの連鎖の性能を解析するモデルのモデルを実行するステップを含む。既存のMLモデルまたはMLモデルの連鎖よりも優れた性能がモデルのモデルによって発見された場合に、コンピュータにより実施される方法はまた、発見されたMLモデルまたはMLモデルの連鎖を展開し、それによって既存のMLモデルまたはMLモデルの連鎖を置き換えるステップと、発見されたMLモデルまたはMLモデルの連鎖を呼び出すためにRPAロボットのワークフローを修正するステップと、を含む。
【0007】
さらに別の実施形態では、AIを使用してRPAのためのMLモデルを連鎖化するためのコンピュータにより実施される方法は、RPAロボットのワークフローで呼び出されるMLモデルプール内のMLモデルの連鎖の性能を解析するモデルのモデルを実行するステップを含む。既存のMLモデルまたはMLモデルの連鎖よりも優れた性能がモデルのモデルによって発見された場合に、コンピュータにより実施される方法はまた、発見されたMLモデルの連鎖を展開し、それによって既存のMLモデルまたはMLモデルの連鎖を置き換えることと、発見されたMLモデルの連鎖を呼び出すためにRPAロボットのワークフローを修正するステップと、を含む。MLモデルの連鎖の性能の解析は、直列、並列、またはそれらの組み合わせの連鎖MLモデルの順列に対してAIベースの実験を実行するステップと、MLモデルの連鎖によって出力された結果を解析するステップと、を含む。
【図面の簡単な説明】
【0008】
本発明の特定の実施形態の利点が容易に理解されるように、上記で簡単に説明した本発明のより具体的な説明は、添付の図面に示されている特定の実施形態を参照することによって提供される。これらの図面は、本発明の典型的な実施形態のみを示しており、したがってその範囲を限定するものとみなされるべきではないことを理解されたいが、本発明は、添付の図面を使用することによって追加の具体性および詳細を伴って説明および説明される。
【0009】
【
図1】本発明の一実施形態による、RPAシステムを示すアーキテクチャ図である。
【0010】
【
図2】本発明の一実施形態による、展開されたRPAシステムを示すアーキテクチャ図である。
【0011】
【
図3】本発明の一実施形態による、デザイナ、アクティビティ、およびドライバの間の関係を示すアーキテクチャ図である。
【0012】
【
図4】本発明の一実施形態による、RPAシステムを示すアーキテクチャ図である。
【0013】
【
図5】本発明の一実施形態による、RPAのためのRPAモデルのモデルを選択および連鎖化するためにAIを使用するように構成されたコンピューティングシステムを示すアーキテクチャ図である。
【0014】
【
図6】本発明の一実施形態による、複数のモデルを連鎖化し、より良い結果を達成するために実験を実行する「モデルのモデル」を使用するためのプロセスを示す図である。
【0015】
【
図7】本発明の一実施形態による、AIを使用してRPAのためのモデルを選択および/または連鎖化するためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0016】
いくつかの実施形態は、「モデルのモデル」を介して問題に対してより最適化されたモデル性能を作成するために、所与の問題に対してモデルを選択することおよび/または複数のモデルを連鎖化することに関する。いくつかの実施形態では、モデルのモデルは、RPAロボットであってもよく、またはそれ自体がRPAロボットによって呼び出されるMLモデルであってもよい。そのようなモデルのモデルは、既存のモデルをより効果的にする既存のシステム上の追加の層として機能することができる。いくつかの実施形態では、このモデルのモデルは、既存のモデルから改善されたまたは最良のルールおよび/または順序のセットを学習し、モデルプールから最良の性能のモデルを潜在的に決定し、モデルから特定のアクティビティを取得し、あるモデルからの入力を別のモデルに供給し、および/またはモデルを連鎖化するAIを組み込むことができる。特定の実施形態では、モデルのモデルは、比較的多数の既存のモデル(例えば、5、10、50、100以上など)を検索し、これらのモデルの少なくともいくつかを適用して優れた結果をもたらし得る。
【0017】
航空機またはドローンにおいて自動飛行制御を実行するためのソフトウェアを展開する場合を考える。様々なセンサは異なる読み取り値を提供し、これらの入力をどのように使用して適切なモデルを選択して呼び出すことができるかを決定することが望ましい場合がある。例えば、航空機またはドローンを旋回させるために、補助翼のみが使用されるべきか、または飛行制御面の何らかの組み合わせがより良好に機能するか? モデルのモデルは、どのモデルを選択するかを決定することができ、この選択は、報酬関数によって管理することができる。報酬関数は、状態空間の探索を導き、目標(例えば、燃料効率の改善、制御操作の実行の成功など)を達成しようと試みるために、短期報酬および長期報酬の両方を有する中間遷移およびステップを探索する。
【0018】
いくつかの実施形態では、プロセスマイニング/タスクマイニングシステムは、ユーザーがワークフローで使用する異なるステップのログを収集することができる。これらのログは、使用のパターンおよびいわゆるプロセスフロー図を明らかにするためにプロセスマイニングシステムによって解析することができる。特定の実施形態では、システムは、プロセスログおよび/またはプロセスフロー図から入力を取得して、そのワークフロー/プロセスの最適化をもたらすことができるAIモデルを提案することができる。
【0019】
複数のモデルが連鎖している場合、これらのモデルは、直列、並列、またはそれらの組み合わせで実行することができる。例えば、4つのモデルを連鎖させる実施形態を考える。直列の実施態様では、データはモデル1を介して実行され、その出力はモデル2を介して実行され、その出力はモデル3を介して実行され、その出力はモデル4を介して実行され、連鎖の最終出力を生成する。並列の実施態様では、データは、モデル1~4を個別に実行することができる。組み合わせの実施態様では、データはモデル1および2に直列に供給され、次いでモデル2の出力がモデル3および4を通して並列に実行され、データがモデル1および2を通して並列に実行され、モデル1および2の各々からの出力がモデル3および4を通して直列に供給され得る、などである。
【0020】
例えば、販売において、ソフトウェアアプリケーションが販売員に推奨を提供する場合には、1つのモデルはどのタイプのリードが最も成功したかを考慮することができ、第2のモデルはユーザーがどのアプリケーションを使用しているかを調べることができる。それぞれからの推奨に基づいて、収益の増加、収益の減少、または収益が同じままであるかどうかを監視することができる。次いで、モデルの出力を連鎖させることが改善につながるかどうかを確認するために実験を実行することができる(例えば、販売員が使用している異なるアプリケーションで最も成功したリードタイプをテストする)。
【0021】
請求書処理の場合を考える。直列の実施態様の場合、請求書処理のモデルのモデルは、最初に、電子メールが請求書を含むかどうかを決定し、電子メールが含むものを分類するモデルを実行することができる。請求書が存在すると判定された場合、第2のモデルは、請求書の内容を抽出する抽出子であってもよい。
【0022】
特定の実施形態では、コンピューティングシステムのユーザーからの入力は、モデルのモデルによって考慮され、基礎となるモデルが所与のシナリオで正しく動作していないか、または不適切に動作しているかを判定する。モデルのモデルはまた、基礎となるモデルのうちのどれが所与のシナリオで正しく動作しているかを判定することができる。どのモデルを使用するかの決定は、A/Bテスト、カナリアテストなどを介して行うことができる。
【0023】
動作中、モデルのモデルは、所与の既存のモデルを、そのモデルに固有の、複数のモデルによって共通に共有される、すべてのモデルによって共通に共有される、などの信頼度しきい値と比較することができる。例えば、航空機内のミッションクリティカルシステム、会計業務などの非常に機密性の高いプロセスを実行するモデルは、成功のためのより高い信頼度しきい値を有することができる。しかしながら、請求書処理を実行するためのモデルなどの機密性の低いモデルは、より低い信頼度しきい値を有してもよい。
【0024】
特定の実施形態では、モデルのモデルは、そのしきい値で観測された性能に基づいて、1つまたは複数の基礎となるモデルの信頼度しきい値を修正することができる。例えば、基礎となる画像解析モデルの信頼度しきい値が結果を返さない場合、しきい値を下げることができる。あるいは、誤判定がモデルによって提供されている場合には、しきい値を上げることができる。したがって、信頼度しきい値は、モデルのモデルによって管理される基礎となるモデルの要件に応じて変更することができる。
【0025】
販売を例にとると、複数のモデルが存在してもよい。例えば、可能な限り最良のリードを提供するためのモデル、離れる顧客を検出する別のモデル、などがあり得る。これらのモデルは、それらがどれだけ優れているかを知らないかもしれないが、モデルは依然としてユーザーに推奨を提供することができる。これらの推奨は、ユーザーが報酬関数として効果を見ることを可能にする。
【0026】
例えば、新規リードを予測するモデルは有効ではない場合がある。しかしながら、顧客がすぐに離れるかどうかを予測し、潜在的に顧客が離れるのを防ぐためのアクションの提案を提供するモデルは、非常に有益であり得る。顧客が離れる可能性があるかどうかを予測するモデルを作成するために、N個の新しい機械学習モデルをテストし、それらがどれだけ成功しているかを見るために互いに比較することができる。これらのモデルを比較することにより、AIを適用して、より良い結果を得るためにモデルを一緒に連鎖化する方法、異なる組み合わせでモデルを使用する方法などを学習することができ、それにより、任意の単一のモデル単独よりも効果的なモデルのモデルを作成することができる。
【0027】
ポリシーネットワークの例を考える。この例では、報酬関数からの正のデルタが異なるモデルのテストから受信されていない場合には、AIを使用してモデルを一緒に連鎖化し、異なるモデルの順序を試して改善があるかどうかを確認することができる。例えば、新しいリードを識別する方法を知っているモデルがあり、偽の電子メールアドレスを検出できる別のモデルがある場合には、AIを使用して、新しいリード識別モデルの前に疑わしい電子メールチェッカを実行することを学習し、疑わしい電子メールチェッカが新しいリード識別モデルに実行された後に残った電子メールアドレスを供給することができる。次に、このロジックを展開して、リードをチェックする前に偽の(またはスパム)電子メールを追い出すことができる。したがって、AIは、モデルのモデルとして効率を改善するために、モデルおよびそれらの間に提供されるべきデータを使用する順序を決定することができる。
【0028】
図1は、本発明の一実施形態による、RPAシステム100を示すアーキテクチャ図である。RPAシステム100は、開発者がワークフローを設計および実装することを可能にするデザイナ110を含む。デザイナ110は、アプリケーション統合、ならびに第三者アプリケーション、管理情報技術(IT)タスク、およびビジネスITプロセスを自動化するためのソリューションを提供することができる。デザイナ110は、ビジネスプロセスのグラフィカル表現である自動化プロジェクトの開発を容易にすることができる。簡単に言えば、デザイナ110は、ワークフローおよびロボットの開発およびデプロイメントを容易にする。
【0029】
自動化プロジェクトは、本明細書で「アクティビティ」と定義される、ワークフローで開発されたステップのカスタムセット間の遂行順序および関係の制御を開発者に与えることによって、ルールベースのプロセスの自動化を可能にする。デザイナ110の一実施形態の一商用例は、UiPath Studio(商標)である。各アクティビティは、ボタンのクリック、ファイルの読み取り、ログパネルへの書き込みなどのアクションを含むことができる。いくつかの実施形態では、ワークフローはネストまたは埋め込みされてもよい。
【0030】
いくつかのタイプのワークフローは、シーケンス、フローチャート、有限状態機械(FSM)、および/またはグローバル例外ハンドラを含むことができるが、これらに限定されない。シーケンスは、ワークフローを乱すことなく1つのアクティビティから別のアクティビティへの流れを可能にする線形プロセスに特に適し得る。フローチャートは、より複雑なビジネスロジックに特に適しており、複数の分岐論理演算子を介してより多様な方法で決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適している場合がある。FSMは、条件(すなわち、遷移)またはアクティビティによってトリガされる有限数の状態をそれらの遂行において使用することができる。グローバル例外ハンドラは、遂行エラーに遭遇したときのワークフローの挙動を判定し、プロセスをデバッグするのに特に適し得る。
【0031】
ワークフローがデザイナ110で開発されると、ビジネスプロセスの遂行は、デザイナ110で開発されたワークフローを遂行する1つまたは複数のロボット130を編成するコンダクタ120によって編成される。コンダクタ120の一実施形態の一商用例は、UiPathオーケストレータ(商標)である。コンダクタ120は、環境内のリソースの作成、監視、およびデプロイメントの管理を容易にする。コンダクタ120は、第三者のソリューションおよびアプリケーションとの統合ポイントとして機能することができる。
【0032】
コンダクタ120は、集中ポイントからロボット130を接続し遂行するすべてのロボット130を管理することができる。管理され得るロボット130のタイプは、これらに限定されないが、アテンディッドロボット132、アンアテンディッドロボット134、開発ロボット(アンアテンディッドロボット134と同様であるが、開発および試験の目的で使用される)、および非生産ロボット(アテンディッドロボット132と同様であるが、開発および試験の目的で使用される)を含む。アテンディッドロボット132は、ユーザーイベントによってトリガされ、同じコンピューティングシステム上で人間と一緒に動作する。アテンディッドロボット132は、集中プロセスデプロイメントおよび記録媒体のためのコンダクタ120と共に使用することができる。アテンディッドロボット132は、人間のユーザーが様々なタスクを達成するのを助けることができ、ユーザーイベントによってトリガすることができる。いくつかの実施形態では、プロセスは、このタイプのロボットのコンダクタ120から開始することができず、および/またはロックされた画面の下で実行することができない。特定の実施形態では、アテンディッドロボット132は、ロボットトレイまたはコマンドプロンプトからのみ起動することができる。いくつかの実施形態では、アテンディッドロボット132は人間の監督下で動作するべきである。
【0033】
アンアテンディッドロボット134は、仮想環境で無人で動作し、多くのプロセスを自動化することができる。アンアテンディッドロボット134は、リモート遂行、監視、スケジューリング、および作業待ち行列のサポートの提供を担当することができる。いくつかの実施形態では、すべてのロボットタイプのデバッグを、デザイナ110で実行することができる。アテンディッドロボットおよびアンアテンディッドロボットの両方は、メインフレーム、ウェブアプリケーション、VM、エンタープライズアプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって製造されたもの)、およびコンピューティングシステムアプリケーション(例えば、デスクトップおよびラップトップアプリケーション、モバイルデバイスアプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むがこれらに限定されない様々なシステムおよびアプリケーションを自動化することができる。
【0034】
コンダクタ120は、プロビジョニング、デプロイメント、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含むがこれらに限定されない様々な機能を有することができる。プロビジョニングは、ロボット130とコンダクタ120(例えば、ウェブアプリケーション)との間の接続の作成および保守を含むことができる。デプロイメントは、遂行のために割り当てられたロボット130へのパッケージバージョンの正しい配信を保証することを含むことができる。構成は、ロボット環境およびプロセス構成の維持および配信を含むことができる。キューイングは、キューおよびキュー項目の管理を提供することを含むことができる。監視は、ロボット識別データを追跡し、ユーザー権限を維持することを含むことができる。ロギングは、データベース(例えば、SQLデータベース)および/または別のストレージ機構(例えば、大規模なデータセットを格納し、迅速にクエリする能力を提供するElasticSearch(登録商標))へのログの格納およびインデックス付けを含むことができる。コンダクタ120は、第三者のソリューションおよび/またはアプリケーションのための通信の集中ポイントとして作用することによって相互接続性を提供することができる。
【0035】
ロボット130は、デザイナ110に構築されたワークフローを実行する遂行エージェントである。ロボット130のいくつかの実施形態の一商用例は、UiPath Robots(商標)である。いくつかの実施形態では、ロボット130は、デフォルトでMicrosoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。結果として、そのようなロボット130は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開き、Windows(登録商標)サービスの権利を有することができる。
【0036】
いくつかの実施形態では、ロボット130は、ユーザーモードで設置することができる。このようなロボット130の場合、これは、所与のロボット130が設置されているユーザーと同じ権利を有することを意味する。この特徴は、その最大の可能性で各機械の完全な利用を保証する高密度(HD)ロボットにも利用可能であり得る。いくつかの実施形態では、任意のタイプのロボット130をHD環境で構成することができる。
【0037】
いくつかの実施形態におけるロボット130は、各々が特定の自動化タスク専用であるいくつかのコンポーネントに分割される。いくつかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と遂行ホスト(すなわち、ロボット130が遂行されるコンピューティングシステム)との間のプロキシとして機能する。これらのサービスは、ロボット130の資格情報で信頼され、管理する。コンソールアプリケーションは、ローカルシステムの下でSCMによって起動される。
【0038】
いくつかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と遂行ホストとの間のプロキシとして機能する。ユーザーモードロボットサービスは、ロボット130のための資格情報を信頼し管理することができる。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションを自動的に起動することができる。
【0039】
エグゼキュータは、Windows(登録商標)セッション下で所与のジョブを実行することができる(すなわち、エグゼキュータはワークフローを遂行することができる)。エグゼキュータは、モニターごとのドット/インチ(DPI)設定を認識することができる。エージェントは、システムトレイウィンドウに利用可能なジョブを表示するWindows(登録商標)Presentation Foundation(WPF)アプリケーションであってもよい。エージェントは、サービスのクライアントであってもよい。エージェントは、ジョブの開始または停止および設定の変更を要求することができる。コマンドラインは、サービスのクライアントである。コマンドラインは、ジョブの開始を要求し、その出力を待つことができるコンソールアプリケーションである。
【0040】
上記で説明したようにロボット130のコンポーネントを分割することは、開発者、サポートユーザー、およびコンピューティングシステムが各コンポーネントが実行しているものをより容易に実行、識別、および追跡するのに役立つ。このようにして、エグゼキュータおよびサービスに対して異なるファイアウォールルールを設定するなど、特別な挙動をコンポーネントごとに構成することができる。エグゼキュータは、いくつかの実施形態では、モニターごとにDPI設定を常に認識することができる。結果として、ワークフローは、それらが作成されたコンピューティングシステムの構成にかかわらず、任意のDPIで遂行され得る。いくつかの実施形態では、デザイナ110からのプロジェクトは、ブラウザのズームレベルとは無関係であってもよい。DPIを認識していない、または意図的に認識していないとマークされたアプリケーションの場合、いくつかの実施形態ではDPIを無効にすることができる。
【0041】
図2は、本発明の一実施形態による、展開されたRPAシステム200を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム200は、
図1のRPAシステム100であってもよいし、その一部であってもよい。クライアント側、サーバー側、またはその両方は、本発明の範囲から逸脱することなく、任意の所望の数のコンピューティングシステムを含むことができることに留意されたい。クライアント側では、ロボットアプリケーション210は、エグゼキュータ212と、エージェント214と、デザイナ216と、を含む。しかしながら、いくつかの実施形態では、デザイナ216は、コンピューティングシステム210上で実行されていなくてもよい。エグゼキュータ212は、実行中のプロセスである。
図2に示すように、いくつかのビジネスプロジェクトが同時に実行されてもよい。エージェント214(例えば、Windows(登録商標)サービス)は、この実施形態ではすべてのエグゼキュータ212に対する単一の接続ポイントである。この実施形態におけるすべてのメッセージは、データベースサーバー240、インデクササーバー250、またはその両方を介してそれらをさらに処理するコンダクタ230にログされる。
図1に関して上述したように、エグゼキュータ212はロボットコンポーネントであってもよい。
【0042】
いくつかの実施形態では、ロボットは、機械名とユーザー名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理することができる。同時に実行される複数のインタラクティブなセッション(例えば、Windows(登録商標)Server 2012)をサポートするコンピューティングシステムでは、複数のロボットが同時に実行され、それぞれが一意のユーザー名を使用して別々のWindows(登録商標)セッションで実行されてもよい。これは、上記ではHDロボットと呼ばれる。
【0043】
エージェント214はまた、ロボットのステータス(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)を送信し、遂行されるパッケージの必要なバージョンをダウンロードする役割も担う。エージェント214とコンダクタ230との間の通信は、いくつかの実施形態では常にエージェント214によって開始される。通知シナリオでは、エージェント214は、ロボットにコマンド(例えば、始動、停止など)を送信するためにコンダクタ230によって後で使用されるWebSocketチャネルを開くことができる。
【0044】
サーバー側には、プレゼンテーション層(ウェブアプリケーション232、オープンデータプロトコル(OData)代表状態転送(REST)アプリケーションプログラミングインターフェース(API)エンドポイント234、ならびに通知および監視236)、サービス層(API実装/ビジネスロジック238)、永続層(データベースサーバー240、インデクササーバー250)が含まれる。コンダクタ230は、ウェブアプリケーション232、OData REST APIエンドポイント234、通知および監視236、ならびにAPI実装/ビジネスロジック238を含む。いくつかの実施形態では、ユーザーがコンダクタ220のインターフェース内で(例えば、ブラウザ220を介して)実行するほとんどのアクションは、様々なAPIを呼び出すことによって実行される。そのようなアクションは、本発明の範囲から逸脱することなく、ロボット上のジョブの開始、キュー内のデータの追加/削除、無人で実行するためのジョブのスケジューリングなどを含むことができるが、これらに限定されない。ウェブアプリケーション232は、サーバープラットフォームのビジュアル層である。この実施形態では、ウェブアプリケーション232は、ハイパーテキストマークアップ言語(HTML)およびJavaScript(JS)を使用する。しかしながら、本発明の範囲から逸脱することなく、任意の所望のマークアップ言語、スクリプト言語、または任意の他のフォーマットを使用することができる。ユーザーは、コンダクタ230を制御するための様々なアクションを実行するために、この実施形態ではブラウザ220を介してウェブアプリケーション232からのウェブページとインタラクトする。例えば、ユーザーは、ロボットグループを作成し、ロボットにパッケージを割り当て、ロボットごとおよび/またはプロセスごとにログを解析し、ロボットを起動および停止することなどができる。
【0045】
ウェブアプリケーション232に加えて、コンダクタ230はまた、OData REST APIエンドポイント234を公開するサービス層を含む。しかしながら、本発明の範囲から逸脱することなく、他のエンドポイントが含まれてもよい。REST APIは、ウェブアプリケーション232とエージェント214の両方によって消費される。エージェント214は、この実施形態ではクライアントコンピュータ上の1つまたは複数のロボットの管理者である。
【0046】
この実施形態におけるREST APIは、構成、ロギング、監視、およびキューイング機能をカバーする。構成エンドポイントは、いくつかの実施形態では、アプリケーションユーザー、権限、ロボット、アセット、リリース、および環境を定義および構成するために使用され得る。例えば、エラー、ロボットによって送信された明示的なメッセージ、および他の環境固有の情報などの様々な情報をログに記録するために、RESTエンドポイントをロギングすることができる。開始ジョブコマンドがコンダクタ230内で使用される場合に遂行されるべきパッケージバージョンをクエリするために、デプロイメントRESTエンドポイントがロボットによって使用されてもよい。RESTエンドポイントをキューイングすることは、キューにデータを追加すること、キューからトランザクションを取得すること、トランザクションの状態を設定することなど、キューおよびキュー項目管理を担当することができる。
【0047】
監視RESTエンドポイントは、ウェブアプリケーション232およびエージェント214を監視する。通知監視API236は、エージェント214の登録、エージェント214への構成設定の配信、ならびにサーバーおよびエージェント214からの通知の送信/受信に使用されるRESTエンドポイントであってもよい。通知監視API236はまた、いくつかの実施形態では、WebSocket通信を使用してもよい。
【0048】
永続層は、この実施形態におけるサーバーのペア、すなわちデータベースサーバー240(例えば、SQLサーバー)およびインデクササーバー250を含む。この実施形態におけるデータベースサーバー240は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を格納する。この情報は、いくつかの実施形態ではウェブアプリケーション232を介して管理される。データベースサーバー240は、キューおよびキュー項目を管理することができる。いくつかの実施形態では、データベースサーバー240は、(インデクササーバー250に加えて、またはその代わりに)ロボットによって記録されたメッセージを格納することができる。
【0049】
インデクササーバー250は、いくつかの実施形態ではオプションであり、ロボットによって記録された情報を格納し、インデックス付けする。特定の実施形態では、インデクササーバー250は、構成設定を通じて無効にすることができる。いくつかの実施形態では、インデクササーバー250は、オープンソースプロジェクトのフルテキスト検索エンジンであるElasticSearch(登録商標)を使用する。ロボット(例えば、ログメッセージまたは行書き込みのようなアクティビティを使用する)によってログされたメッセージは、ロギングRESTエンドポイントを介してインデクササーバー250に送信されてもよく、そこでそれらは将来の利用のためにインデックス付けされる。
【0050】
図3は、本発明の一実施形態による、デザイナ310、アクティビティ320、330、およびドライバ340の間の関係300を示すアーキテクチャ図である。上記により、開発者は、デザイナ310を使用して、ロボットによって遂行されるワークフローを開発する。ワークフローは、ユーザー定義のアクティビティ320およびUI自動化アクティビティ330を含むことができる。いくつかの実施形態は、本明細書ではコンピュータビジョン(CV)と呼ばれる、画像内の非テキスト視覚コンポーネントを識別することができる。そのようなコンポーネントに関係するいくつかのCVアクティビティは、クリック、タイプ、テキストを取得、ホバー、要素存在、リフレッシュ範囲、ハイライトなどを含み得るが、これらに限定されない。いくつかの実施形態では、クリックは、例えば、CV、光学文字認識(OCR)、ファジー文字マッチング、およびマルチアンカーを使用して要素を識別し、それをクリックする。タイプは、上記および要素内のタイプを使用して要素を識別することができる。テキストを取得し、OCRを使用して特定のテキストの位置を識別し、それをスキャンすることができる。ホバーは、要素を識別し、それをホバーすることができる。要素が存在することは、上述した技術を使用して、画面上に要素が存在するかどうかをチェックすることができる。いくつかの実施形態では、デザイナ310に実装することができるアクティビティは、数百または数千であってもよい。しかしながら、本発明の範囲から逸脱することなく、任意の数および/またはタイプのアクティビティが利用可能であり得る。
【0051】
UI自動化アクティビティ330は、下位レベルコード(例えば、CVアクティビティ)に書き込まれ、画面とのインタラクションを容易にする特別な低レベルのアクティビティのサブセットである。UI自動化アクティビティ330は、ロボットが所望のソフトウェアとインタラクトすることを可能にするドライバ340を介したこれらのインタラクションを容易にする。例えば、ドライバ340は、OSドライバ342、ブラウザドライバ344、VMドライバ346、エンタープライズアプリケーションドライバ348などを含んでもよい。
【0052】
ドライバ340は、フックを探し、キーを監視するなど、低レベルでOSとインタラクトすることができる。それらは、Chrome(登録商標)、IE(登録商標)、Citrix(登録商標)、SAP(登録商標)などとの統合を容易にすることができる。例えば、「クリック」アクティビティは、ドライバ340を介してこれらの異なるアプリケーションで同じ役割を実行する。
【0053】
図4は、本発明の一実施形態による、RPAシステム400を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム400は、
図1および/または
図2のRPAシステム100および/または200であり得るか、それらを含み得る。RPAシステム400は、ロボットを実行する複数のクライアントコンピューティングシステム410を含む。コンピューティングシステム410は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム420と通信することができる。次に、コンダクタコンピューティングシステム420は、データベースサーバー430および任意選択のインデクササーバー440と通信することができる。
【0054】
図1および
図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、任意の適切なクライアント/サーバーソフトウェアを使用できることに留意されたい。例えば、コンダクタは、クライアントコンピューティングシステム上の非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバー側アプリケーションを実行することができる。
【0055】
図5は、本発明の一実施形態による、RPAのためのRPAモデルのモデルを選択および連鎖化するためにAIを使用するように構成されたコンピューティングシステム500を示すアーキテクチャ図である。いくつかの実施形態では、コンピューティングシステム500は、本明細書に図示および/または記載されたコンピューティングシステムのうちの1つまたは複数であってもよい。コンピューティングシステム500は、情報を通信するためのバス505または他の通信機構と、情報を処理するためにバス505に結合されたプロセッサ510と、を含む。プロセッサ510は、中央プロセッシングユニット(CPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらの任意の組み合わせを含む、任意のタイプの汎用または専用プロセッサであってもよい。プロセッサ510はまた、複数の処理コアを有してもよく、コアの少なくともいくつかは、特定の機能を実行するように構成されてもよい。いくつかの実施形態では、複数並列処理が使用されてもよい。特定の実施形態では、プロセッサ510の少なくとも一方は、生体ニューロンを模倣する処理要素を含むニューロモーフィック回路であってもよい。いくつかの実施形態では、ニューロモーフィック回路は、フォンノイマンコンピューティングアーキテクチャの典型的なコンポーネントを必要としない場合がある。
【0056】
コンピューティングシステム500は、プロセッサ510によって遂行される情報および命令を格納するためのメモリ515をさらに含む。メモリ515は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気もしくは光ディスクなどの静的ストレージ、または任意の他のタイプの非一時的コンピュータ可読媒体、またはそれらの組み合わせの任意の組み合わせで構成することができる。非一時的コンピュータ可読媒体は、プロセッサ510によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体、またはその両方を含んでもよい。媒体はまた、取り外し可能、取り外し不能、またはその両方であってもよい。
【0057】
さらに、コンピューティングシステム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つまたは複数のアンテナを含むことができる。
【0058】
プロセッサ510はさらに、バス505を介して、プラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、電界放出ディスプレイ(FED)、有機発光ダイオード(OLED)ディスプレイ、フレキシブルOLEDディスプレイ、フレキシブル基板ディスプレイ、プロジェクションディスプレイ、4Kディスプレイ、高精細ディスプレイ、Retina(登録商標)ディスプレイ、インプレーンスイッチング(IPS)ディスプレイ、またはユーザーに情報を表示するための任意の他の適切なディスプレイなどのディスプレイ525にさらに結合される。ディスプレイ525は、抵抗性、容量性、表面弾性波(SAW)容量性、赤外線、光学イメージング、分散信号技術、音響パルス認識、フラストレート全内部反射などを使用して、タッチ(触覚)ディスプレイ、3次元(3D)タッチディスプレイ、マルチ入力タッチディスプレイ、マルチタッチディスプレイなどとして構成され得る。本発明の範囲から逸脱することなく、任意の適切なディスプレイデバイスおよび触覚I/Oが使用され得る。
【0059】
キーボード530およびコンピュータマウス、タッチパッドなどのカーソル制御デバイス535は、ユーザーがコンピューティングシステムとインターフェースすることを可能にするためにバス505にさらに結合される。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しなくてもよく、ユーザーは、ディスプレイ525および/またはタッチパッド(図示せず)のみを介してデバイスとインタラクトすることができる。入力デバイスの任意のタイプおよび組み合わせを、設計上の選択事項として使用することができる。特定の実施形態では、物理的入力デバイスおよび/またはディスプレイは存在しない。例えば、ユーザーは、それと通信する別のコンピューティングシステムを介してコンピューティングシステム500と遠隔でインタラクトすることができ、またはコンピューティングシステム500は自律的に動作することができる。
【0060】
メモリ515は、プロセッサ510によって遂行されると機能を提供するソフトウェアモジュールを格納する。モジュールは、コンピューティングシステム500のためのオペレーティングシステム540を含む。モジュールは、本明細書に記載のプロセスまたはその派生物の全部または一部を実行するように構成されたモデル選択および連鎖モジュール545をさらに含む。コンピューティングシステム500は、追加の機能を含む1つまたは複数の追加の機能モジュール550を含むことができる。
【0061】
当業者は、「システム」が、本発明の範囲から逸脱することなく、サーバー、組込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、もしくは任意の他の適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを理解するであろう。上記の機能を「システム」によって実行されるものとして提示することは、本発明の範囲を決して限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図している。実際、本明細書に開示する方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と一致する局所化された形態および分散された形態で実装されてもよい。
【0062】
本明細書に記載されたシステム特徴のいくつかは、それらの実装の独立性をより具体的に強調するために、モジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタムの超大規模集積(VLSI)回路またはゲートアレイ、ロジックチップ、トランジスタ、または他のディスクリートコンポーネントなどの既製の半導体を含むハードウェア回路として実装されてもよい。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックスプロセッシングユニットなどのプログラマブルハードウェアデバイスに実装されてもよい。
【0063】
モジュールはまた、様々なタイプのプロセッサによって遂行するためのソフトウェアに少なくとも部分的に実装されてもよい。遂行可能コードの識別されたユニットは、例えば、オブジェクト、プロシージャ、または関数として編成することができるコンピュータ命令の1つまたは複数の物理ブロックまたは論理ブロックを含むことができる。それにもかかわらず、識別されたモジュールの遂行可能ファイルは、物理的に共に配置される必要はないが、論理的に共に結合されたときにモジュールを含み、モジュールの記載された目的を達成する異なる場所に格納された異なる命令を含むことができる。さらに、モジュールは、コンピュータ可読媒体に格納されてもよく、それは、例えば、ハードディスクドライブ、フラッシュデバイス、RAM、テープ、および/または本発明の範囲から逸脱することなくデータを格納するために使用される任意の他のそのような非一時的コンピュータ可読媒体であってもよい。
【0064】
実際、遂行可能コードのモジュールは、単一の命令、または多くの命令であってもよく、いくつかの異なるコードセグメント、異なるプログラム、およびいくつかのメモリデバイスに分散されてもよい。同様に、操作データは、本明細書ではモジュール内で識別および図示されてもよく、任意の適切な形態で具現化され、任意の適切なタイプのデータ構造内に編成されてもよい。操作データは、単一のデータセットとして収集されてもよく、または異なるストレージデバイスを含む異なる場所に分散されてもよく、少なくとも部分的に、システムまたはネットワーク上の電子信号としてのみ存在してもよい。
【0065】
図6は、本発明の一実施形態による、複数のモデルを連鎖させ、より良い結果を達成するために実験を実行する「モデルのモデル」を使用するためのプロセス600を示す。この例では、様々なタスクに対して、異なる訓練されたMLモデル(すなわち、MLモデルA~I)のモデルプールが存在する。次いで、連鎖MLモデルの様々な順列に対してAIベースの実験が実行される(おそらく、連鎖内の同じモデルを複数回含むテストを含む)。MLモデルは、直列、並列、またはそれらの組み合わせ(直列と並列とを複数回交互にする可能性がある)で実行され得る。所与の問題に対して優れた結果を有するMLモデルの連鎖が発見された場合、この連鎖は、その問題に適用されて展開され得るモデルのモデルとして出力される。図示するように、この連鎖は、直列、並列、またはそれらの組み合わせであってもよい。実際、本発明の範囲から逸脱することなく、任意の順列または組み合わせを識別して使用することができる。また、特定の実施形態では、単一のモデルを任意の連鎖にわたって最適であると識別し、選択することができる。
【0066】
図7は、本発明の一実施形態による、AIを使用してRPAのモデルを選択および/または連鎖化するためのプロセス700を示すフローチャートである。プロセスは、710において、MLモデルプール上で個々のMLモデルおよびMLモデルの連鎖の性能を解析する「モデルのモデル」を実行することによって、MLモデルプールに対してAIベースの実験を実行することから始まる。いくつかの実施形態では、プロセススニフィング/プロセスマイニングシステムを使用して、ユーザーワークフローを解析し、それらのワークフローに組み込むことができる異なるAIモデルを決定することができる。720において、単一のMLモデルまたは連鎖する複数のMLモデル(例えば、直列、並列、それらの組み合わせ、連鎖の交互の直列および/または並列部分など)から既存のMLモデルまたはMLモデルの連鎖よりも優れた性能が発見されない場合、優れたMLモデルおよび/または組み合わせの探索が710において継続する。
【0067】
しかしながら、ある構成で連鎖したMLモデルまたはMLモデルの組み合わせが720で発見された場合、このMLモデルまたはMLモデルの連鎖は730で展開される。新しいMLモデルまたはMLモデルの連鎖を呼び出し、MLモデルまたはMLモデルの連鎖を所与のタスクに適用するために、RPAロボットワークフローが740で修正される。次いで、750でRPAロボットの新しいバージョンが生成され、760で展開される。次いで、RPAロボットの新しいバージョンは、770での動作中にMLモデルまたはMLモデルの連鎖を呼び出す。
【0068】
図7で実行されるプロセスステップは、本発明の実施形態に従って、プロセッサが
図7で説明したプロセスの少なくとも一部を実行するための命令を符号化するコンピュータプログラムによって実行されてもよい。コンピュータプログラムは、非一時的コンピュータ可読媒体上で具現化されてもよい。コンピュータ可読媒体は、ハードディスクドライブ、フラッシュデバイス、RAM、テープ、および/またはデータを格納するために使用される任意の他のそのような媒体または媒体の組み合わせであってもよいが、これらに限定されない。コンピュータプログラムは、コンピュータ可読媒体に格納することもできる、
図7で説明したプロセスステップの全部または一部を実施するようにコンピューティングシステムのプロセッサ(例えば、
図5のコンピューティングシステム500のプロセッサ510)を制御するための符号化命令を含むことができる。
【0069】
コンピュータプログラムは、ハードウェア、ソフトウェア、またはハイブリッド実装で実施することができる。コンピュータプログラムは、互いに動作可能に通信し、表示するために情報または命令を渡すように設計されたモジュールから構成することができる。コンピュータプログラムは、汎用コンピュータ、ASIC、または任意の他の適切なデバイス上で動作するように構成することができる。
【0070】
本発明の様々な実施形態のコンポーネントは、本明細書の図に一般的に記載および図示するように、多種多様な異なる構成で配置および設計されてもよいことが容易に理解されよう。したがって、添付の図面に表される本発明の実施形態の詳細な説明は、特許請求される本発明の範囲を限定することを意図するものではなく、本発明の選択された実施形態を単に代表するものである。
【0071】
本明細書を通して説明される本発明の特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。例えば、本明細書全体を通して「特定の実施形態」、「いくつかの実施形態」、または同様の文言への言及は、実施形態に関連して説明される特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して、「特定の実施形態では」、「いくつかの実施形態では」、「他の実施形態では」というフレーズ、または同様の文言の出現は、必ずしもすべてが同じ実施形態のグループを指すわけではなく、記載された特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。
【0072】
本明細書を通して特徴、利点、または同様の文言を参照することは、本発明で実現され得る特徴および利点のすべてが本発明の任意の単一の実施形態であるべきであること、または本発明の任意の単一の実施形態であることを意味するものではないことに留意されたい。むしろ、特徴および利点に言及する文言は、一実施形態に関連して説明される特定の特徴、利点、または特性が本発明の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書を通して、特徴および利点、ならびに同様の文言の説明は、必ずしもそうとは限らないが、同じ実施形態を参照することができる。
【0073】
さらに、本発明の記載された特徴、利点、および特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。当業者は、特定の実施形態の特定の特徴または利点の1つまたは複数なしで本発明を実施できることを認識するであろう。他の例では、本発明のすべての実施形態には存在しない可能性がある特定の実施形態において、追加の特徴および利点が認識され得る。
【0074】
当業者は、上述の本発明が、異なる順序のステップ、および/または開示されているものとは異なる構成のハードウェア要素を用いて実施され得ることを容易に理解するであろう。したがって、本発明をこれらの好ましい実施形態に基づいて説明してきたが、本発明の趣旨および範囲内に留まりながら、特定の修正、変形、および代替構築が明らかであることは、当業者には明らかであろう。