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

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

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

<>
  • 特表-ロボットブラウザ埋め込み 図1
  • 特表-ロボットブラウザ埋め込み 図2
  • 特表-ロボットブラウザ埋め込み 図3
  • 特表-ロボットブラウザ埋め込み 図4
  • 特表-ロボットブラウザ埋め込み 図5
  • 特表-ロボットブラウザ埋め込み 図6
  • 特表-ロボットブラウザ埋め込み 図7
  • 特表-ロボットブラウザ埋め込み 図8
  • 特表-ロボットブラウザ埋め込み 図9
  • 特表-ロボットブラウザ埋め込み 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-31
(54)【発明の名称】ロボットブラウザ埋め込み
(51)【国際特許分類】
   G06F 9/445 20180101AFI20220124BHJP
   G06F 21/33 20130101ALI20220124BHJP
【FI】
G06F9/445
G06F21/33
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2020553477
(86)(22)【出願日】2020-08-31
(85)【翻訳文提出日】2020-11-26
(86)【国際出願番号】 US2020048695
(87)【国際公開番号】W WO2021071605
(87)【国際公開日】2021-04-15
(31)【優先権主張番号】201911041286
(32)【優先日】2019-10-11
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】16/706,581
(32)【優先日】2019-12-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
2.ZIGBEE
3.BLUETOOTH
(71)【出願人】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】90 Park Avenue,20th Floor,New York,NY 10016,United States of America
(74)【代理人】
【識別番号】100180781
【弁理士】
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【弁理士】
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】エバン コーエン
(72)【発明者】
【氏名】アンキット サラフ
(72)【発明者】
【氏名】ナレン ベンカテスワラン
(72)【発明者】
【氏名】サンカラ ナラヤナン ベンカタラマン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE07
5B376AE44
5B376FA13
5B376GA13
(57)【要約】
ロボティックプロセスオートメーション(RPA)のための1または複数のアプリケーションから、1または複数のロボットが起動されてもよい。アプリケーションからロボットを起動するためのプロセスは、アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムからアプリケーションを起動することを含んでもよい。プロセスはまた、アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始することを含み得る。プロセスはまた、アプリケーションによってランダム化されたコードを生成し、アプリケーションからロボットを起動するためにコンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動することを含み得る。プロセスはまた、ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報およびトークンをグローバルリスナーモジュールに渡すことを含み得る。プロセスはまた、グローバルリスナーモジュールからトークンおよびポートの識別情報を受信し、アプリケーションがロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット起動プロセスを完了することを含み得る。
【選択図】図1
【特許請求の範囲】
【請求項1】
アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムから前記アプリケーションを起動し、
前記アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始し、
前記アプリケーションによってランダム化されたコードを生成し、前記アプリケーションから前記ロボットを起動するために前記コンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、
前記ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報および前記トークンをグローバルリスナーモジュールに渡し、
前記グローバルリスナーモジュールから前記トークンおよびポートの識別情報を受信し、前記アプリケーションが前記ロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進することを含む、コンピュータ実装方法。
【請求項2】
前記ロボットリンクの起動に使用された前記アプリケーションが信頼されていないドメインからのものである、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ロボット対話プロセスを促進することは、
通信媒体を介してロボットリスナーモジュール上の特定のアプリケーションプログラミングインターフェース(API)を前記ロボットリンクによって起動することを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記ロボットリスナーモジュールは、エグゼキュータまたは前記ロボットの状態の問い合わせ、コンダクタからの接続、切断、またはその両方、前記ロボット上で利用可能なプロセスのリスト、前記ロボット上のプロセスの開始、停止、一時停止、および/または終了、前記ロボット上で実行中または実行されているプロセスの状態の問い合わせ、ならびに/あるいは前記プロセスを開始している間、すでに前記プロセスを実行している間、もしくは前記プロセスの実行が完了したときにデータを送信および/または受信するように構成される、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記ロボット対話プロセスを促進することは、さらに、
前記ロボットリスナーモジュールによって、前記ロボットリンクによって要求された動作を実行するために、ロボットサービスと通信することを含む、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記ロボット対話プロセスを促進することは、さらに、
前記要求された動作を実現するために、前記ロボットサービスによってエグゼキュータ、ロボット、および/またはコンダクタと通信することを含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記ロボット対話プロセスを促進することは、さらに、
前記ロボットリスナーおよび前記ロボットリンクを介して、前記要求された動作の結果を前記ロボットサービスから前記アプリケーションに返すことを含む、請求項6に記載のコンピュータ実装方法。
【請求項8】
非一時的なコンピュータ読み取り可能な媒体上に具現化されたコンピュータプログラムであって、前記コンピュータプログラムは、少なくとも1つのプロセッサが、
アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムから前記アプリケーションを起動し、
前記アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始し、
前記アプリケーションによってランダム化されたコードを生成し、前記アプリケーションから前記ロボットを起動するために前記コンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、
前記ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報および前記トークンをグローバルリスナーモジュールに渡し、
前記グローバルリスナーモジュールから前記トークンおよびポートの識別情報を受信し、前記アプリケーションが前記ロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進するように構成される、コンピュータプログラム。
【請求項9】
前記ロボットリンクの起動に使用された前記アプリケーションが信頼されていないドメインからのものである、請求項8に記載のコンピュータプログラム。
【請求項10】
前記コンピュータプログラムはさらに、前記少なくとも1つのプロセッサが、
通信媒体を介してロボットリスナーモジュール上の特定のアプリケーションプログラミングインターフェース(API)を前記ロボットリンクによって起動するように構成される、請求項8に記載のコンピュータプログラム。
【請求項11】
前記ロボットリスナーモジュールは、エグゼキュータまたは前記ロボットの状態の問い合わせ、コンダクタからの接続、切断、またはその両方、前記ロボット上で利用可能なプロセスのリスト、前記ロボット上のプロセスの開始、停止、一時停止、および/または終了、前記ロボット上で実行中または実行されているプロセスの状態の問い合わせ、ならびに/あるいは前記プロセスを開始している間、すでに前記プロセスを実行している間、もしくは前記プロセスの実行が完了したときにデータを送信および/または受信するように構成される、請求項10に記載のコンピュータプログラム。
【請求項12】
前記コンピュータプログラムはさらに、少なくとも1つのプロセッサが、
前記ロボットリスナーモジュールによって、前記ロボットリンクによって要求された動作を実行するために、ロボットサービスと通信するように構成される、請求項11に記載のコンピュータプログラム。
【請求項13】
前記コンピュータプログラムはさらに、少なくとも1つのプロセッサが、
前記要求された動作を実現するために、前記ロボットサービスによってエグゼキュータ、ロボット、および/またはコンダクタと通信するように構成される、請求項12に記載のコンピュータプログラム。
【請求項14】
前記コンピュータプログラムはさらに、少なくとも1つのプロセッサが、
前記ロボットリスナーおよび前記ロボットリンクを介して、前記要求された動作の結果を前記ロボットサービスから前記アプリケーションに返すように構成される、請求項13に記載のコンピュータプログラム。
【請求項15】
機械読み取り可能なコンピュータプログラム命令を格納するメモリと、
前記コンピュータプログラム命令を実行するように構成された少なくとも1つのプロセッサとを含み、前記命令は、前記少なくとも1つのプロセッサが、
アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムから前記アプリケーションを起動し、
前記アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始し、
前記アプリケーションによってランダム化されたコードを生成し、前記アプリケーションから前記ロボットを起動するために前記コンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、
前記ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報および前記トークンをグローバルリスナーモジュールに渡し、
前記グローバルリスナーモジュールから前記トークンおよびポートの識別情報を受信し、前記アプリケーションが前記ロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進するように構成される、コンピューティングシステム。
【請求項16】
前記ロボットリンクの起動に使用された前記アプリケーションが信頼されていないドメインからのものである、請求項15に記載のコンピューティングシステム。
【請求項17】
前記命令はさらに、前記少なくとも1つのプロセッサが、
通信媒体を介してロボットリスナーモジュール上の特定のアプリケーションプログラミングインターフェース(API)を前記ロボットリンクによって起動するように構成される、請求項15に記載のコンピューティングシステム。
【請求項18】
前記ロボットリスナーモジュールは、エグゼキュータまたは前記ロボットの状態の問い合わせ、コンダクタからの接続、切断、またはその両方、前記ロボット上で利用可能なプロセスのリスト、前記ロボット上のプロセスの開始、停止、一時停止、および/または終了、前記ロボット上で実行中または実行されているプロセスの状態の問い合わせ、ならびに/あるいは前記プロセスを開始している間、すでに前記プロセスを実行している間、もしくは前記プロセスの実行が完了したときにデータを送信および/または受信するように構成される、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記命令はさらに、前記少なくとも1つのプロセッサが、
前記ロボットリスナーモジュールによって、前記ロボットリンクによって要求された動作を実行するために、ロボットサービスと通信するように構成される、請求項18に記載のコンピューティングシステム。
【請求項20】
前記命令はさらに、前記少なくとも1つのプロセッサが、
前記要求された動作を実現するために、前記ロボットサービスによってエグゼキュータ、ロボット、および/またはコンダクタと通信するように構成される、請求項19に記載のコンピューティングシステム。
【請求項21】
前記命令はさらに、前記少なくとも1つのプロセッサが、
前記ロボットリスナーおよび前記ロボットリンクを介して、前記要求された動作の結果を前記ロボットサービスから前記アプリケーションに返すように構成される、請求項20に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本出願は、2019年10月11日に出願されたインド特許出願第201911041286号に対する35 U.S.C.§119に基づく優先権を主張する、2019年12月6日に出願された米国非仮特許出願第16/706,581号の利益を主張する。これらの先に出願された出願の主題は、その全体を参照することにより、本明細書に組み込まれる。
【0002】
技術分野
本発明は概して、ロボティックプロセスオートメーション(RPA)に関し、より具体的には、RPAのための1または複数のアプリケーションからロボットプロセスを起動することに関する。
【背景技術】
【0003】
ローカルマシン上で動作するロボットは概して、ロボットトレイまたはコンダクタアプリケーションプログラミングインターフェース(API)によって起動される。いずれの場合も、ユーザーはロボットトレイまたはコンダクタAPIを介してロボットを起動する。しかし、ユーザーが1または複数の異なるアプリケーションで作業している場合、ユーザーは物理的にロボットを起動することができない。
【0004】
このように、ロボットトレイまたはコンダクタAPIに到達することなく、1または複数のロボットを起動することが有益である場合がある。
【発明の概要】
【0005】
本発明の特定の実施形態は、現在のRPA技術によってまだ十分に特定されていない、評価されていない、または解決されていない本分野における問題およびニーズのソリューションを提供し得る。例えば、本発明のいくつかの実施形態は、1または複数のアプリケーションから1または複数のロボットプロセスを起動することに関連する。
【0006】
実施形態では、コンピュータ実装方法は、アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムからアプリケーションを起動することを含む。方法はまた、アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始することを含み得る。方法は、アプリケーションによってランダム化されたコードを生成し、アプリケーションからロボットを起動するためにコンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報およびトークンをグローバルリスナーモジュールに渡すこととをさらに含んでもよい。方法はまた、グローバルリスナーモジュールからトークンおよびポートの識別情報を受信し、アプリケーションがロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進することを含み得る。
【0007】
別の実施形態では、コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体上に具現化される。コンピュータプログラムは、少なくとも1つのプロセッサがアプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムからアプリケーションを起動するように構成される。コンピュータプログラムはさらに、少なくとも1つのプロセッサがポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスをアプリケーションから開始するように構成される。コンピュータプログラムはまた、少なくとも1つのプロセッサがアプリケーションによってランダム化されたコードを生成し、アプリケーションからロボットを起動するためにコンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動するように構成される。コンピュータプログラムはさらに、少なくとも1つのプロセッサがランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報およびトークンをグローバルリスナーモジュールに渡し、グローバルリスナーモジュールからトークンおよびポート識別を受信し、アプリケーションがロボットとの間で自身を認証し、通信することを可能にし、それによってロボットの対話プロセスを促進するように構成される。
【0008】
さらに別の実施形態では、システムは、コンピュータプログラム命令を格納するメモリと、コンピュータプログラム命令を実行するように構成された少なくとも1つのプロセッサとを含む。命令は、少なくとも1つのプロセッサがアプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムからアプリケーションを起動するように構成される。命令はさらに、少なくとも1つのプロセッサがアプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始させ、アプリケーションによってランダム化されたコードを生成し、アプリケーションからロボットを起動するためにコンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動させるように構成される。命令はまた、少なくとも1つのプロセッサがランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報およびトークンをグローバルリスナーモジュールに渡し、グローバルリスナーモジュールからトークンおよびポート識別を受信し、アプリケーションがロボットとの間で自身を認証し、通信することを可能にし、それによってロボットの対話プロセスを促進するように構成される。
【図面の簡単な説明】
【0009】
本発明の特定の実施形態の利点が容易に理解されるように、上記で簡単に説明した本発明のより特定の説明は、添付の図面に図示されている特定の実施形態を参照して描写される。これらの図面は、本発明の典型的な実施形態のみを描いており、したがって、その範囲を限定するものとは考えられないことが理解されるべきであるが、本発明は、以下の添付の図面を使用することにより、さらなる特定および詳細をもって描写され、説明されるであろう。
【0010】
図1】本発明の実施形態による、RPAシステムを示すアーキテクチャ図である。
【0011】
図2】本発明の実施形態による、展開したRPAシステムを示すアーキテクチャ図である。
【0012】
図3】本発明の実施形態による、デザイナ、アクティビティ、およびドライバの間の関係を示すアーキテクチャ図である。
【0013】
図4】本発明の実施形態による、RPAシステムを示すアーキテクチャ図である。
【0014】
図5】本発明の実施形態による、アプリケーションからロボットを起動するように構成されたコンピューティングシステムを説明するアーキテクチャ図である。
【0015】
図6】本発明の実施形態による、1または複数のセッションとロボットトレイとの間で通信するためのデスクトップ構成を説明するブロック図である。
【0016】
図7】本発明の実施形態による、ポート発見プロセスを説明するフロー図である。
【0017】
図8】本発明の実施形態による、認証プロセスを説明するフロー図である。
【0018】
図9】本発明の実施形態による、ロボットサービス対話プロセスを説明するフロー図である。
【0019】
図10】本発明の実施形態による、ロボット対話プロセスを促進するためのプロセスを説明するフロー図である。
【発明を実施するための形態】
【0020】
(実施形態の詳細な説明)
いくつかの実施形態は、ロボティックプロセスオートメーション(RPA)のための1または複数のアプリケーションから1または複数のロボットを起動することに関連する。アプリケーションは、マシン上の任意のアプリケーションとして定義することができ、ブラウザ上に埋め込んだり、ハイパーテキストマークアップ言語(HTML)およびJavaScript(JS)コードを実行したりすることができる。つまり、アプリケーションは「ウェブベースのアプリケーション」に限定されるものではなく、ロボットを起動するためのアプリケーションであれば、どのようなものであってもよい。説明の都合上、「アプリケーション」と表記する。特定の実施形態では、ロボットを起動するために使用され得るアプリケーションは、信頼されていないドメインからのものであってもよい。いくつかの実施形態では、ロボットリンクは、1または複数のアプリケーションに埋め込まれており、1または複数のロボットを起動することができる。実施形態では、コンピューティングシステムのユーザーは、アプリケーション内に埋め込まれたロボットリンクを起動するためにアプリケーションを起動する。アプリケーションから、ポート発見プロセスは、ポート、ポートの詳細、およびトークンを識別するために起動され得る。次いでアプリケーションは、ランダム化されたコードを生成し得、アプリケーションからロボットを起動するためにコンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し得る。ランダム化されたコードは、ローカルリスナーモジュールに登録され、ユーザー情報とトークンはグローバルリスナーモジュールに転送され得る。トークンおよびポート識別は、グローバルリスナーモジュールから受信され得、アプリケーションが自身を認証してロボットと通信することを可能にする。
【0021】
図1は、本発明の実施形態による、RPAシステム100を示すアーキテクチャ図である。RPAシステム100は、開発者がワークフローを設計して実装することを可能にするデザイナ110を含む。デザイナ110は、アプリケーション統合のためのソリューションを提供するとともに、サードパーティアプリケーション、管理情報技術(IT)タスク、およびビジネスITプロセスを自動化する。デザイナ110は、ビジネスプロセスのグラフィック表現である自動化プロジェクトの開発を容易にし得る。簡単に言えば、デザイナ110は、ワークフローおよびロボットの開発およびデプロイメントを容易にする。
【0022】
自動化プロジェクトは、本明細書で「アクティビティ」と定義されるワークフローで開発されたカスタムセットのステップ間の実行順序および関係の制御を開発者に与えることにより、ルールベースのプロセスの自動化を可能にする。デザイナ110の実施形態の商業的な一例は、UiPath Studio(商標)である。各アクティビティは、ボタンをクリックする、ファイルを読む、ログパネルに書き込むなどのアクションを含み得る。いくつかの実施形態では、ワークフローは入れ子になっているか、または埋め込まれ得る。
【0023】
ワークフローのタイプには、シーケンス、フローチャート、有限状態機械(FSM)、および/またはグローバル例外ハンドラなどを含み得るが、これらに限定されない。シーケンスは、ワークフローを乱雑にすることなく、あるアクティビティから別のアクティビティへのフローを可能にする、線形プロセスに特に適し得る。フローチャートは、特により複雑なビジネスロジックに適し得、複数の分岐ロジックオペレータを介して、より多様な方法で意思決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)またはアクティビティによってトリガされる有限の数の状態をそれらの実行中に使用し得る。グローバル例外ハンドラは、実行エラーに遭遇したときのワークフローの動作を決定したり、プロセスをデバッグしたりするのに特に適し得る。
【0024】
ワークフローがデザイナ110内で開発されると、ビジネスプロセスの実行は、コンダクタ120によって調整され、デザイナ110内で開発されたワークフローを実行する1または複数のロボット130を調整する。コンダクタ120の実施形態の商業的な一例は、UiPath Orchestrator(商標)である。コンダクタ120は、環境におけるリソースの生成、監視、およびデプロイメントの管理を容易にする。コンダクタ120は、サードパーティのソリューションおよびアプリケーションとの統合ポイントとして動作し得る。
【0025】
コンダクタ120は、全てのロボット130を管理し得、ロボット130を集中ポイントから接続して実行する。管理され得るロボット130のタイプには、アテンディッドロボット132、アンアテンディッドロボット134、開発ロボット(アンアテンディッドロボット134と同様であるが、開発およびテストの目的で使用される)、および非生産ロボット(アテンディッドロボット132と同様であるが、開発およびテストの目的で使用される)が含まれるが、これらに限定されない。アテンディッドロボット132は、ユーザーイベントによってトリガされ、同じコンピューティングシステム上で人と並んで動作する。アテンディッドロボット132は、集中プロセスデプロイメントおよびロギング媒体のためのコンダクタ120とともに使用され得る。アテンディッドロボット132は、人のユーザーが様々なタスクを達成するのを支援してもよく、ユーザーイベントによってトリガされてもよい。いくつかの実施形態では、プロセスは、このタイプのロボット上でコンダクタ120から開始することができず、および/またはそれらはロックされた画面の下で実行することができない。特定の実施形態では、アテンディッドロボット132は、ロボットトレイからまたはコマンドプロンプトからのみ起動され得る。アテンディッドロボット132は、いくつかの実施形態では、人の監督下で動作することが好ましい。
【0026】
アンアテンディッドロボット134は、仮想環境で無人で動作し、多くのプロセスを自動化し得る。アンアテンディッドロボット134は、リモート実行、監視、スケジューリング、および作業キューのサポートの提供を担当し得る。全てのロボットタイプのためのデバッグは、いくつかの実施形態では、デザイナ110で実行され得る。アテンディッドロボットおよびアンアテンディッドロボットの両方は、メインフレーム、ウェブアプリケーション、VM、エンタープライズアプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって生成されたもの)、およびコンピューティングシステムアプリケーション(例えば、デスクトップおよびラップトップアプリケーション、モバイル装置アプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むが、これらに限定されない様々なシステムおよびアプリケーションを自動化し得る。
【0027】
コンダクタ120は、プロビジョニング、デプロイメント、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含むがこれらに限定されない様々な能力を有し得る。プロビジョニングは、ロボット130とコンダクタ120(例えば、ウェブアプリケーション)との間の接続を作成し、維持することを含み得る。デプロイメントは、実行のために割り当てられたロボット130へのパッケージバージョンの正しい配信を保証することを含み得る。構成は、ロボット環境およびプロセス構成のメンテナンスおよび配信を含み得る。キューイングは、キューおよびキュー項目の管理を提供することを含み得る。監視は、ロボットの識別データを追跡し、ユーザーの権限を維持することを含み得る。ロギングは、データベース(例えば、SQLデータベース)および/または別のストレージメカニズム(例えば、大規模なデータセットを格納し、迅速にクエリを実行する能力を提供するElasticSearch(登録商標)へのログの保存およびインデックス作成を含み得る。コンダクタ120は、サードパーティのソリューションおよび/またはアプリケーションのための通信の集中点として動作することにより、相互接続性を提供し得る。
【0028】
ロボット130は、デザイナ110で構築されたワークフローを実行する実行エージェントである。ロボット(複数可)130のいくつかの実施形態の1つの商業的な例は、UiPath Robots(商標)である。いくつかの実施形態では、ロボット130は、デフォルトで、Microsoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。その結果、このようなロボット130は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開くことができ、Windows(登録商標)サービスの権利を有し得る。
【0029】
いくつかの実施形態では、ロボット130は、ユーザーモードで設置され得る。このようなロボット130については、所定のロボット130が設置されているユーザーと同じ権利を有することを意味する。この特色はまた、各機械を最大限に全活用することを保証する高密度(HD)ロボットにも利用可能であり得る。いくつかの実施形態では、いずれかのタイプのロボット130は、HD環境で構成され得る。
【0030】
いくつかの実施形態におけるロボット130は、複数のコンポーネントに分割され、それぞれが特定の自動化タスクに特化されている。いくつかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と実行ホスト(すなわち、ロボット130が実行されるコンピューティングシステム)との間のプロキシとして動作する。これらのサービスは、ロボット130の資格情報を任されて管理する。コンソールアプリケーションは、ローカルシステム下のSCMによって起動される。
【0031】
いくつかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と実行ホストとの間のプロキシとして動作する。ユーザーモードロボットサービスは、ロボット130の資格情報を任されて管理し得る。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションが自動的に起動され得る。
【0032】
エグゼキュータは、Windows(登録商標)セッションの下で与えられたジョブを実行し得る(つまり、ワークフローを実行し得る。エグゼキュータは、モニタ毎のドットパーインチ(DPI)設定を意識し得る。エージェントは、システムトレイウィンドウに利用可能なジョブを表示するWindows(登録商標) Presentation Foundation(WPF)アプリケーションであり得る。エージェントはサービスのクライアントとなり得る。エージェントは、ジョブの開始または停止、設定の変更を依頼し得る。コマンドラインはサービスのクライアントである。コマンドラインは、ジョブの開始を要求し、その出力を待つことができるコンソールアプリケーションである。
【0033】
上で説明したように、ロボット130のコンポーネントが分割されていることは、開発者、サポートユーザー、およびコンピューティングシステムが、各コンポーネントが何を実行しているかをより容易に実行し、識別し、および追跡するのに役立つ。この方法では、エグゼキュータとサービスに異なるファイアウォールルールを設定するなど、コンポーネントごとに特別な動作を構成し得る。エグゼキュータは常に、いくつかの実施形態では、モニタごとのDPI設定を認識し得る。その結果、ワークフローは、ワークフローが作成されたコンピューティングシステムの構成に関係なく、いずれかのDPIで実行し得る。また、いくつかの実施形態では、デザイナ110からのプロジェクトは、ブラウザのズームレベルに依存しないようにし得る。DPIを認識していないまたは意図的に認識していないとマークされているアプリケーションの場合、いくつかの実施形態ではDPIを無効にし得る。
【0034】
図2は、本発明の実施形態による、展開したRPAシステム200を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム200は、図1のRPAシステム100であってもよく、またはその一部であってもよい。クライアント側、サーバー側、またはその両方が、本発明の範囲から逸脱することなく、いずれかの所望の数のコンピューティングシステムを含むことができることに留意すべきである。クライアント側では、ロボットアプリケーション210は、エグゼキュータ212、エージェント214、およびデザイナ216を含む。しかし、いくつかの実施形態では、デザイナ216は、コンピューティングシステム210上で実行されていなくてもよい。エグゼキュータ212はプロセスを実行する。図2に示すように、複数のビジネスプロジェクトが同時に実行され得る。エージェント214(例えば、Windows(登録商標)サービス)は、本実施形態では、全てのエグゼキュータ212のための単一の接続ポイントである。この実施形態における全てのメッセージは、コンダクタ230に記録され、コンダクタ230は、データベースサーバー240、インデクササーバー250、またはその両方を介して、それらをさらに処理する。図1に関して上述したように、エグゼキュータ212は、ロボットコンポーネントであり得る。
【0035】
特定の実施形態では、デザイナ216は、プロセス上の入力および出力を設定するために使用される。これらの入力および出力は、エージェント214を介してエグゼキュータ212によって処理されてもよい。さらに、入力および出力は、初期化中にワークフローと通信し、実行中または実行完了後に結果を受信するメカニズムを形成する。
【0036】
いくつかの実施形態では、ロボットは、マシン名とユーザー名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理し得る。同時に実行される複数の対話型セッションをサポートするコンピューティングシステム(Windows(登録商標)Server 2012など)では、複数のロボットが同時に実行され得、それぞれが一意のユーザー名を使用して別々のWindows(登録商標)セッションで実行され得る。これは、上記のHDロボットと呼ばれる。
【0037】
エージェント214はまた、ロボットの状態を送信し(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)、実行されるパッケージの必要なバージョンをダウンロードすることにも責任を負う。エージェント214とコンダクタ230との間の通信は、いくつかの実施形態では、常にエージェント214によって開始される。通知シナリオでは、エージェント214は、後にコンダクタ230によってロボットにコマンド(例えば、開始、停止など)を送信するために使用されるWebSocketチャネルを開いてもよい。
【0038】
サーバー側には、プレゼンテーション層(ウェブアプリケーション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およびJSを使用する。しかし、本発明の範囲を逸脱することなく、いずれかの所望のマークアップ言語、スクリプト言語、または他のいずれかのフォーマットを使用し得る。ユーザーは、コンダクタ230を制御するための様々な動作を実行するために、本実施形態ではブラウザ220を介してウェブアプリケーション232からのウェブページと対話する。例えば、ユーザーは、ロボットグループを作成し、ロボットへのパッケージの割り当てを行い、ロボット毎および/またはプロセス毎のログを解析し、ロボットを起動しおよび停止し得る。
【0039】
ウェブアプリケーション232に加えて、コンダクタ230は、OData REST APIエンドポイント234を公開するサービス層も含む。しかし、本発明の範囲を逸脱することなく、他のエンドポイントが含まれていてもよい。REST APIは、ウェブアプリケーション232とエージェント214の両方によって消費される。エージェント214は、本実施形態では、クライアントコンピュータ上の1または複数のロボットのスーパーバイザである。
【0040】
本実施形態のREST APIは、構成、ロギング、監視、およびキューイング機能をカバーする。構成エンドポイントは、いくつかの実施形態では、アプリケーションのユーザー、権限、ロボット、アセット、リリース、および環境を定義し、構成するために使用されてもよい。ロギングRESTエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、およびその他の環境固有の情報など、様々な情報をログに記録するために使用され得る。デプロイメントRESTエンドポイントは、コンダクタ230においてジョブ開始コマンドが使用された場合に実行されるべきパッケージのバージョンを問い合わせるためにロボットによって使用されてもよい。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キューおよびキューアイテムの管理を担ってもよい。
【0041】
RESTエンドポイントの監視は、ウェブアプリケーション232およびエージェント214を監視する。通知および監視API236は、エージェント214の登録、エージェント214への構成設定の配信、およびサーバーとエージェント214との間の通知の送受信に使用されるRESTエンドポイントであってもよい。通知および監視API236は、いくつかの実施形態では、WebSocket通信を使用してもよい。
【0042】
永続層は、本実施形態では、一対のサーバー-データベースサーバー240(例えば、SQLサーバー)およびインデクササーバー250-を含む。本実施形態におけるデータベースサーバー240は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を格納する。この情報は、いくつかの実施形態では、ウェブアプリケーション232を介して管理される。データベースサーバー240は、キューおよびキューアイテムを管理してもよい。いくつかの実施形態では、データベースサーバー240は、ロボットによって記録されたメッセージを(インデクササーバー250に加えて、またはインデクササーバー250に代えて)格納してもよい。
【0043】
いくつかの実施形態では任意であるが、インデクササーバー250は、ロボットによって記録された情報を保存し、インデックスを作成する。特定の実施形態では、インデクササーバー250は、構成設定を介して無効化されてもよい。いくつかの実施形態では、インデクササーバー250は、オープンソースプロジェクトの全文検索エンジンであるElasticSearch(登録商標)を使用する。ロボットによって記録されたメッセージ(例えば、ログメッセージまたはライン書き込みのようなアクティビティを使用して)は、ロギングRESTエンドポイント(複数可)を介してインデクササーバー250に送信されてもよく、そこで将来の利用のためにそれらはインデックス化される。
【0044】
図3は、本発明の実施形態による、デザイナ310、アクティビティ320、330、およびドライバ340の間の関係300を示すアーキテクチャ図である。以上のように、開発者は、デザイナ310を用いて、ロボットによって実行されるワークフローを開発する。ワークフローは、ユーザー定義のアクティビティ320およびUI自動化アクティビティ330を含んでもよい。いくつかのコンピュータビジョン(CV)アクティビティのは、クリック、タイプ、テキストを取得、ホバー、要素の有無を検出、スコープの更新、ハイライトなどを含むが、これらに限定されない。いくつかの実施形態では、クリックは、例えば、CV、光学的文字認識(OCR)、ファジーテキストマッチング、およびマルチアンカーを使用して要素を識別し、それをクリックする。タイプは、上記および要素内のタイプを用いて要素を識別してもよい。テキストの取得は、特定のテキストの場所を特定し、OCRを使用してそれをスキャンし得る。ホバーは、要素を識別し、その上にホバーし得る。要素の有無の検出は、上述した技術を用いて、画面上に要素の有無を検出するかどうかを確認し得る。いくつかの実施形態では、デザイナ310に実装され得る数百または数千でさえのアクティビティが存在してもよい。しかし、本発明の範囲を逸脱することなく、いずれかの数および/またはアクティビティのタイプを利用することができる。
【0045】
UI自動化アクティビティ330は、低レベルのコード(例えば、CVアクティビティ)で記述され、画面との対話を促進する特別な低レベルのアクティビティのサブセットである。UI自動化アクティビティ330は、ロボットが所望のソフトウェアと対話することを可能にするドライバ340を介して、これらの対話を促進する。例えば、ドライバ340は、OSドライバ342、ブラウザドライバ344、VMドライバ346、エンタープライズアプリケーションドライバ348などを含んでもよい。
【0046】
ドライバ340は、フックを探したり、キーを監視したりするなど、低レベルでOSと対話してもよい。それらは、Chrome(登録商標)、IE(登録商標)、Citrix(登録商標)、SAP(登録商標)などとの統合を促進してもよい。例えば、「クリック」アクティビティは、ドライバ340を介して、これらの異なるアプリケーションにおいて同じ役割を果たす。
【0047】
図4は、本発明の実施形態による、RPAシステム400を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム400は、図1および/または図2のRPAシステム100および/または200であってもよいし、それを含んでもよい。RPAシステム400は、ロボットを実行する複数のクライアントコンピューティングシステム410を含む。コンピューティングシステム410は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム420と通信することができる。コンダクタコンピューティングシステム420は、順番に、データベースサーバー430および任意のインデクササーバー440と通信することができる。
【0048】
図2および図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、いずれかの適切なクライアント/サーバーソフトウェアを使用することができることに留意すべきである。例えば、コンダクタは、クライアントコンピューティングシステム上で、非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバーサイドアプリケーションを実行してもよい。
【0049】
図5は、本発明の実施形態による、1または複数のアプリケーションからロボットを起動するように構成されたコンピューティングシステム500を説明するアーキテクチャ図である。いくつかの実施形態では、コンピューティングシステム500は、本明細書に描かれたおよび/または記載された1または複数のコンピューティングシステムであってもよい。コンピューティングシステム500は、情報を通信するためのバス505または他の通信機構と、情報を処理するためのバス505に結合されたプロセッサ(複数可)510とを含む。プロセッサ(複数可)510は、中央処理ユニット(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらのいずれかの組み合わせを含む、いずれかのタイプの一般的または特定用途向けプロセッサであり得る。プロセッサ(複数可)510はまた、複数の処理コアを有してもよく、コアの少なくとも一部は、特定の機能を実行するように構成され得る。いくつかの実施形態では、複数並列処理が使用されてもよい。特定の実施形態では、少なくとも1つのプロセッサ(複数可)510は、生物学的ニューロンを模倣する処理要素を含むニューロモーフィック回路であり得る。いくつかの実施形態では、ニューロモーフィック回路は、フォンノイマンコンピューティングアーキテクチャの典型的なコンポーネントを必要としない場合がある。
【0050】
コンピューティングシステム500は、プロセッサ(複数可)510によって実行される情報および命令を格納するためのメモリ515をさらに含む。メモリ515は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気ディスクもしくは光ディスクなどの静的記憶装置、または他のタイプの非一時的なコンピュータ読み取り可能な媒体、あるいはそれらのいずれかの組み合わせで構成され得る。非一時的なコンピュータ読み取り可能な媒体は、プロセッサ(複数可)510によってアクセス可能ないずれかの利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体または両方などを含み得る。また、媒体は、取り外し可能なもの、取り外し不可能なもの、または両方であってもよい。
【0051】
さらに、コンピューティングシステム500は、無線および/または有線接続を介して通信ネットワークへのアクセスを提供するために、トランシーバなどの通信装置520を含む。いくつかの実施形態では、通信装置520は、周波数分割多元接続(FDMA)、シングルキャリアFDMA(SC-FDMA)、時分割多元接続(TDMA)、符号分割多元接続(CDMA)、直交周波数分割多重方式(OFDM)、直交周波数分割多元接続(OFDMA)、移動体用グローバルシステム(GSM:Global System for Mobile)通信、汎用パケット無線サービス(GPRS:General Packet Radio Service)、ユニバーサル移動体通信システム(UMTS:Universal Mobile Telecommunications System)、cdma2000、広帯域CDMA(W-CDMA:Wideband CDMA)、高速ダウンリンクパケットアクセス(HSDPA:High-Speed Downlink Packet Access)、高速アップリンクパケットアクセス(HSUPA:High-Speed Uplink Packet Access)、高速パケットアクセス(HSPA:High-Speed Packet Access)、ロングタームエボリューション(LTE:Long Term Evolution)、LTEアドバンスト(LTE-A:LTE Advanced)、802.11x、Wi-Fi、Zigbee、超広帯域無線(UWB:Ultra-WideBand)、802.16x、802.15、Home Node-B(HnB)、Bluetooth、無線IDタグ(RFID:Radio Frequency Identification)、IrDA(Infrared Data Association)、近距離無線通信(NFC:Near-Field Communications)、第5世代(5G)、New Radio(NR)、それらのいずれかの組み合わせ、および/または本発明の範囲から逸脱することなく、いずれかの他の現在存在するまたは将来実装される通信標準および/またはプロトコルを使用するように構成され得る。いくつかの実施形態では、通信装置520は、本発明の範囲から逸脱することなく、単数のアンテナ、アレイ状のアンテナ、フェーズドアンテナ、スイッチドアンテナ、ビームフォーミングアンテナ、ビームステアリングアンテナ、それらの組み合わせ、および/またはいずれかの他のアンテナ構成である1または複数のアンテナを含み得る。
【0052】
プロセッサ(複数可)510は、バス505を介して、プラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、電界放出ディスプレイ(FED)、有機発光ダイオード(OLED)ディスプレイ、フレキシブルOLEDディスプレイ、フレキシブル基板ディスプレイ、プロジェクションディスプレイ、4Kディスプレイ、高精細ディスプレイ、Retina(登録商標)ディスプレイ、IPS(In-Plane Switching)ディスプレイ、またはユーザーに情報を表示するためのいずれかの他の適切なディスプレイなどのディスプレイ525にさらに結合されている。ディスプレイ525は、抵抗方式、静電容量方式、表面弾性波(SAW)静電容量方式、赤外線方式、光学イメージング方式、分散信号方式、音響パルス認識方式、フラストレート全内部反射方式などを用いて、タッチ(ハプティック)ディスプレイ、3次元(3D)タッチディスプレイ、マルチ入力タッチディスプレイ、マルチタッチディスプレイなどとして構成されていてもよい。本発明の範囲を逸脱することなく、いずれかの好適な表示装置およびハプティックI/Oを使用することができる。
【0053】
コンピュータマウス、タッチパッドなどのようなキーボード530およびカーソル制御装置535は、ユーザーがコンピューティングシステムとインターフェースすることを可能にするために、バス505にさらに結合されている。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しない場合があり、ユーザーは、ディスプレイ525および/またはタッチパッド(図示せず)のみを介してデバイスと対話することができる。入力デバイスの種類および組み合わせは、設計の選択の問題として使用され得る。特定の実施形態では、物理的な入力装置および/またはディスプレイは存在しない。例えば、ユーザーは、コンピューティングシステム500と通信している別のコンピューティングシステムを介してリモートでコンピューティングシステム500と対話してもよいし、コンピューティングシステム500は自律的に動作してもよい。
【0054】
メモリ515は、プロセッサ(複数可)510によって実行されたときに機能を提供するソフトウェアモジュールを格納する。モジュールは、コンピューティングシステム500のためのオペレーティングシステム540を含む。モジュールはさらに、本明細書に記載されたプロセスの全部もしくは一部またはその派生物を実行するように構成されたロボット起動モジュール545を含む。コンピューティングシステム500は、付加的な機能を含む1または複数の付加的な機能モジュール550を含み得る。
【0055】
当業者であれば、「システム」は、本発明の範囲から逸脱することなく、サーバー、組み込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、または他のいずれかの適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを理解するであろう。上述した機能を「システム」によって実行されるものとして提示することは、何ら本発明の範囲を限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図するものである。実際、本明細書に開示された方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と整合性のあるローカライズされた形態および分散された形態で実装されてもよい。
【0056】
本明細書で説明するシステム特色のいくつかは、実装の独立性をより強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタムの非常に大規模な集積(VLSI)回路またはゲートアレイ、ロジックチップ、トランジスタ、または他の個別部品のような既製の半導体を含むハードウェア回路として実装され得る。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジック装置、グラフィックス処理ユニットなどのプログラマブルハードウェア装置に実装され得る。
【0057】
モジュールはまた、様々なタイプのプロセッサによって実行されるためのソフトウェアに少なくとも部分的に実装され得る。例えば、実行可能コードの識別された単位は、例えば、オブジェクト、プロシージャ、または関数として編成されていてもよいコンピュータ命令の1または複数の物理的または論理的なブロックを含み得る。それにもかかわらず、実行可能な識別されたモジュールは、物理的に一緒に配置されている必要はなく、論理的に結合されたときにモジュールを含み、モジュールのために述べられた目的を達成するために、異なる場所に格納された別々の命令を含んでいてもよい。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュ装置、RAM、テープのようなコンピュータ読み取り可能な媒体、および/または本発明の範囲から逸脱することなくデータを格納するために使用される他のいずれかの非一時的なコンピュータ読み取り可能な媒体に格納されていてもよい。
【0058】
実際、実行可能コードのモジュールは、単一の命令であってもよいし、多数の命令であってもよいし、さらには、複数の異なるコードセグメント、異なるプログラム間、および複数のメモリ装置間に分散されていてもよい。同様に、操作データは、モジュール内で識別され、ここで示されてもよく、いずれかの適切なタイプのデータ構造体内でいずれかの適切な形態で具現化され、組織化され得る。操作データは、単一のデータセットとして収集されてもよいし、または異なる記憶装置にわたり異なる場所に分散されていてもよく、少なくとも部分的には、単にシステムまたはネットワーク上の電子信号として存在していてもよい。
【0059】
図6は、本発明の実施形態による、1または複数のユーザーセッション602とロボットトレイとの間で通信するためのコンピューティングシステムのデスクトップ構成600を説明するブロック図である。本実施例では、単一のユーザーセッション602が参照されるが、デスクトップ構成600上で実行されているセッションが複数存在してもよい。
【0060】
いくつかの実施形態では、ユーザーセッション602は、ウェブブラウザ604上で実行されるアプリケーションを含む。アプリケーションには、ロボット(例えば、JavaScript(JS)標準開発キット(SDK)を介して)リンク606が埋め込まれている。ロボットリンク606は、ロボットトレイに到達することなく、アプリケーションからロボットを起動する能力をユーザーに提供する。特定の実施形態では、ロボットリンク606は、JSベースのSDKであり、アプリケーションとプロトコルハンドラ608、ハイパーテキスト転送プロトコル(HTTP)リスナー610、およびHTTPポート発見サービス612との間のポート発見、認証、対話、および通信フローを簡素化する役割を担う。アプリケーションがロボットリンク606を使用しないことを決定する実施形態では、アプリケーションは、プロトコルハンドラ608、HTTPリスナー610、およびHTTPポート発見サービス612と直接対話してもよい。
【0061】
ロボットを起動するために、ユーザーは、ロボットがアクセスされるアプリケーションを起動し、アプリケーション内に埋め込まれたロボットリンク606がロボットを起動させる。カスタムプロトコルハンドラアプリケーションまたは同意アプリケーションとも呼ばれるプロトコルハンドラ608は、ユーザーがユーザーセッション602を認証することを可能にする。いくつかの実施形態では、コンピューティングシステム600は、マシン上の任意の場所から起動されたときに特定のアプリケーションを起動することができるカスタムプロトコルハンドラ(カスタムURIスキームとしても知られている)をマシン上に登録することを可能にする。例えば、http://はブラウザを起動し、またはmailto://はメールクライアントを起動する。プロトコルハンドラ608は、いくつかの実施形態では、インストール時に、カスタムプロトコルハンドラを登録し得る。このプロトコルは、それを起動するために使用され得る。
【0062】
グローバルリスナーモジュールとも呼ばれるHTTPポート発見サービス612は、ポートの動的割り当てを提供するために「セッション0」でポート発見を実行する。これらの実施形態は、HTTPプロトコルに限定されず、他の通信チャネルまたはプロトコルが使用されてもよいことが理解されるべきである。いくつかの実施形態では、HTTPポート発見サービス612は、コンピュータシステム600上の周知のポート上で動作する。この周知のポートは、ロボットリンク606に知られており、ロボットHTTPリスナー610の認証トークンおよびポート発見を取り戻すために使用される。これらの実施形態は、HTTPリスナーに限定されず、HTTP以外の他のプロトコルが使用されてもよいことが理解されるべきである。HTTPポート発見サービス612は、コンピューティングシステム600がブートしたとき、またはユーザーがコンピューティングシステム600にログインしたときに自動的に起動するように設定されてもよい。このようにして、HTTPポート発見サービス612は常に利用可能である。
【0063】
さらに、いくつかの実施形態では、プロトコルハンドラ608はまた、HTTPポート発見サービス612がすでに実行されていない場合、HTTPポート発見サービス612を開始してもよい。それらの実施形態では、プロトコルハンドラ608は、HTTPポート発見を開始するための昇格した権限(または管理者権限)を有し得る。複数のユーザーセッションがコンピューティングシステム600上で実行されているので、全てのユーザーセッションからのロボットHTTPリスナー610、プロトコルハンドラ608およびロボットリンク606がHTTPポート発見サービス612にアクセスできるようにするために、HTTPポート発見サービス612は、マシンセッション(またはwindowsではセッション0)で開始されてもよい。
【0064】
いくつかの実施形態では、HTTPポート発見サービス612は、ユーザーセッション602で直接実行されてもよい。それらの実施形態では、HTTPポート発見サービス612とロボットHTTPリスナー610は、単一のサービスに結合される。また、これらの実施形態では、ロボットリンク606がHTTPリスナー610の周知のポートを認識しているので、HTTPポート発見サービス612は不要であってもよい。
【0065】
ユーザーセッション602を参照して、ロボットHTTPリスナー(またはローカルリスナーモジュール)610は、ロボットリンク606およびロボットトレイを介したアプリケーション間の通信を容易にする。ロボットHTTPリスナー610は、プロセスを実行し、ロボット210のエグゼキュータ212からデータを送受信するために、ウェブブラウザ604がロボットサービス614と対話することを担当する。ロボットHTTPリスナー610は、ロボットリンク606によって使用されるHTTP APIを提供してもよい。コンピューティングシステム600は、その上で実行されている複数のユーザーセッションを有し、同じコンピューティングシステム600上の異なるユーザー間のセキュリティを提供するために、ロボットHTTPリスナー610は、ユーザーセッション602内で実行され、特定のユーザーに代わってロボットサービス614と通信する。ロボットHTTPリスナー610は、ユーザーセッション602が開始されたとき、またはプロトコルハンドラ608によって開始されたときに、ロボットサービス614と自動的に通信を開始してもよい。コンピュータ上の単一のHTTPポートは、Windows(登録商標)上で単一のロボットHTTPリスナー610によってのみ使用することができるので、ロボットHHTPリスナー610サービスは、同じマシン上でアクティブな複数のユーザーセッションがある場合に競合を避けるために、毎回ランダムなポートで起動する。各起動時に、ロボットHTTPリスナー610は、それが選択されたポートおよびそれが実行されているユーザーセッションをHTTPポート発見サービス612に登録する。これにより、HTTPポート発見サービス612が、ポート発見処理の後、通信するためにポート番号をロボットリンク606に提供することができるようになる。
【0066】
HTTPポート発見サービス612とロボットHTTPリスナー610の両方が、他の外部マシンがこれらのサービスと通信するのを防ぐために、ローカルホストまたは127.0.0.1で聞くように構成されていてもよいことが理解されるべきである。これらの保証は、オペレーティングシステムによって提供される。
【0067】
ロボットサービスは、図2のエージェント214であり、上述したようにエグゼキュータ212を管理する役割を担っている。
【0068】
特定の実施形態は、ポート発見プロセス、認証プロセス、およびロボットサービス対話を含んでもよい。特定の実施形態では、ポート発見プロセスと認証プロセスの両方を単一のフローに結合することができるが、そうする必要はないことが理解されるべきである。他の実施形態では、これらのプロセスの両方を別々に実行することができる。
【0069】
HTTPリスナー610、プロトコルハンドラ608、HTTPポート発見サービス612、およびロボットサービス614間の通信は、オペレーティングシステムによって提供される安全に認証されたアプリケーション対アプリケーションおよび/または認証されたサービス対サービスのチャネル(例えば、NTLM認証)を使用することをさらに理解すべきである。
【0070】
ポート発見プロセス
【0071】
図7は、本発明の実施形態による、ポート発見プロセス700を説明するフロー図である。ロボットHTTPリスナー610は、使用されていない任意のランダムなポートで起動するように構成されているので、ロボットリンク606は、ロボットリンク606がポートと通信し得る前に、ロボットHTTPリスナー610のポートを発見するために、ポート発見プロセス700を開始する。
【0072】
実施形態では、プロセス700は、アプリケーションがロボットリンク606からのAPIを使用し、ロボットリンク606がポートを認識していない場合に、ポート発見プロセスを開始することから702で開始される。704において、ロボットリンク606は、カスタムプロトコルハンドラを使用して、トークンT1を渡しながらプロトコルハンドラ608を起動する。これにより、プロトコルハンドラ608は、現在のユーザーのために起動され、そのマシン上の任意の他のユーザーセッションのためには起動されないことを保証する。
【0073】
706において、プロトコルハンドラ608は、トークンT1をHTTPポート発見サービス612に渡す。プロトコルハンドラ608はまた、それがどのユーザーセッションの下で実行されていたかについての情報を渡す(例えば、セッション0)。プロトコルハンドラ608はまた、ロボットHTTPリスナーサービス610およびHTTPポート発見サービス612が実行されていないときに、ロボットHTTPリスナーサービス610およびHTTPポート発見サービス612を起動してもよい。
【0074】
708において、ロボットリンク606はまた、HTTPポート発見サービス612と通信し、トークンT1を提供し、それが通信すべきロボットHTTPリスナー610のポートを提供するようにHTTPポート発見サービス612を要求する。
【0075】
710において、HTTPポート発見サービス612は、トークンT1がどのユーザーに属するかを識別するプロトコルハンドラ608から受信した情報をレビューし、次いでその特定のユーザーのためのロボットHTTPリスナー610のポートを特定するために、登録されたポートのリストを使用する。712において、HTTPポート発見サービス612は、通信すべきロボットHTTPリスナー610のポートをロボットリンク606に返信し、それによってポート発見プロセスを完了する。
【0076】
認証
【0077】
図8は、本発明の実施形態による、認証プロセス800を説明するフロー図である。ロボットHTTPリスナー610がコンピューティングシステム600上のHTTPポート上で実行される場合、コンピューティングシステム600上で実行されている任意のソフトウェアは、別のユーザーの代理であっても、HTTPポートにアクセスすることができる。これは、セキュリティリスク、すなわち、コンピューティングシステム600上で実行されている別のユーザーまたはソフトウェアが、ユーザーに代わってロボットプロセスを起動することができるという結果をもたらし得る。このリスクを軽減するために、ロボットHTTPリスナー610へのそれぞれの呼び出しは、呼び出しが受け入れられる前に認証され、承認される。これは、ロボットリンク606がロボットHTTPリスナー610と通信し得る前に、ロボットHTTPリスナー610の認証トークンを強制的に取り戻させる。
【0078】
いくつかの実施形態では、プロセス800は、アプリケーションがロボットリンク606からの任意のAPIを使用し、ロボットリンク606がポートを知らない場合に、ポート発見プロセスを開始することから802で開始される。ポート発見プロセスが完了した後、804において、ロボットリンク606は、ロボットHTTPリスナー610への呼び出しをする。ロボットHTTPリスナー610がトークンまたは有効なトークンを受信しない場合、ロボットHTTPリスナー610は、ロボットリンク606からの呼び出しを拒否する。
【0079】
呼び出しが拒否された場合、ロボットリンク606は、ロボットHTTPリスナー610を2回目に呼び出す前に、有効なトークンを使用して認証され、承認される必要がある。このため、806において、ロボットリンク606は、カスタムプロトコルハンドラを使用して、トークンT1を渡しながらプロトコルハンドラ608を起動する。これにより、プロトコルハンドラ608は、現在のユーザーのために起動され、同じコンピューティングシステム600上の別のセッション上の別のユーザーのために起動されることはないことを確実にする。いくつかの任意の実施形態では、808において、ロボットリンク606はまた、トークンT1を使用して要求を承認することをユーザーに通知するアプリケーション上のプロンプトを示す。
【0080】
810において、一度起動されると、プロトコルハンドラ608は、ロボットリンク606からの要求を承認するためのユーザーインターフェース(UI)ポップアップをユーザーに表示する。特定の実施形態では、トークンT1はまた、ユーザーが要求を検証するのを助けるために、すなわち、要求が特定のロボットリンク606またはアプリケーションから来たものであり、要求がコンピューティングシステム600上の別のアプリケーションまたはユーザーから来たものではないことを検証するために示されてもよい。
【0081】
812において、ユーザーがリクエストを承認すると、プロトコルハンドラ608は、トークンT1をHTTPポート発見サービス612に渡し、またどのユーザーセッションの下でそれが実行されていたかに関する情報を渡す。また、プロトコルハンドラ608は、ロボットHTTPリスナー610およびHTTPポート発見サービス612がこの時点で実行されていない場合、それらを開始してもよい。
【0082】
814において、ロボットリンク606はまた、HTTPポート発見サービス612と通信し、HTTPポート発見サービス612にトークンT1を提供し、ロボットHTTPリスナー610との通信のための認証トークンT2を提供するためにHTTPポート発見サービス612に要求する。816において、HTTPポート発見サービス612は、プロトコルハンドラ608から受信した情報をレビューして、トークンT1がどのユーザーに属するかを特定する。また、HTTPポート発見サービス612は、登録されたサービスのリストを使用して、その特定のユーザーのためのロボットHTTPリスナー610を特定する。818において、HTTPポート発見サービス612は、新しいトークンT2を生成し、認証のための有効なトークンとしてトークンT2をロボットHTTPリスナー610に通信する。なお、トークンT2には、認証フローを支援するために、それが登録されているドメイン、その作成時刻、その有効期限などの追加情報が含まれていてもよい。820において、HTTPポート発見サービス612は、それが要求していたロボットHTTPリスナー610のための認証トークンT2をロボットリンク606に返信する。822において、ロボットリンク606は、認証トークンT2を使用してロボットHTTPリスナー610と通信し、それによって認証プロセスを完了することが今やできるようになり得る。
【0083】
特定の実施形態では、認証トークンT2はまた、プロトコルハンドラ608によって生成されてもよく、認証トークンT2がHTTPポート発見サービス612によって生成される代わりに、HTTPポート発見サービス612とロボットHTTPリスナー610の両方と通信してもよい。
【0084】
ロボットサービス対話
【0085】
特定の実施形態では、ロボットサービス614によって提供される様々な機能を有するロボットHTTPリスナー610が提供される。例えば、ロボットHTTPリスナー610は、エグゼキュータ212またはロボット210の状態を照会してもよく、コンダクタ230と接続および/または切断してもよく、ロボット210上で利用可能なプロセスをリストアップしてもよく、ロボット210上のプロセスを開始、停止、一時停止、終了などしてもよく、ロボット210上で実施中または実行中のプロセスの状態を照会してもよく、ならびに/またはプロセスを開始している間、すでにプロセスを実行している間、もしくはプロセスの実行が完了したときに、データを送信および/もしくは受信してもよい。具体的には、いくつかの実施形態では、アプリケーションが、ローカルマシンからデータをフェッチおよび/または送信するためにRPAを起動することを可能にしてもよい。
【0086】
図9は、本発明の実施形態による、ロボットサービス対話プロセス900を説明するフロー図である。いくつかの実施形態では、アプリケーションは、ロボットリンク606を使用してロボットサービス614と対話する。これらの実施形態では、アプリケーションは、ロボットリンク606によって提供されるサポートされたAPI/機能/動作のいずれかを起動し得る。
【0087】
いくつかの実施形態では、プロセス900は、アプリケーションがサポートされたAPI/機能/動作のいずれかを起動するときに、ポート発見および認証が完了することを確実にするロボットリンク606で902において始まる。904において、ロボットリンク606は、HTTPを介してロボットHTTPリスナー610上で特定のAPIを起動する。906におけるロボットHTTPリスナー610は、ロボットサービス614と通信して、ロボットリンク606によって要求された動作を実行する。908において、ロボットサービス614は、要求された動作を実行するために必要に応じて、エグゼキュータ212、ロボット210、コンダクタ230、または他の任意のアプリケーションと通信する。910において、ロボットサービス614は、要求された動作の結果をロボットHTTPリスナー610に返信し、912において、ロボットHTTPリスナー610は、結果をロボットリンク606に返信する。914において、ロボットリンク606は、データをアプリケーションに返す。
【0088】
図10は、本発明の実施形態による、ロボットサービス対話プロセスを促進するためのプロセス1000を説明するフロー図である。この実施形態では、プロセス1000は、アプリケーション内に埋め込まれたロボットリンクを起動するためにコンピューティングシステムからアプリケーションを起動する1002において始まり、1004において、アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始する。1006において、プロセス1000は、アプリケーションによってランダム化されたコードを生成し、アプリケーションからロボットを起動するためにコンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動することをし続ける。1008において、プロセス1000は、ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報およびトークンをグローバルリスナーモジュールに渡すことをさらに行い、1010において、プロセス1000は、グローバルリスナーモジュールからトークンおよびポート識別を受信し、アプリケーションがロボットとの間で自身を認証し、そして通信することを可能にし、それにより、ロボット対話プロセスを容易にすることを行う。
【0089】
埋め込みロボットリンクを有するアプリケーションは、ローカルアプリケーション開発プラットフォーム内に構築され得、アテンディッドロボットとアンアテンディッドロボットの両方に接続されていてもよいことが理解されるべきである。特定の実施形態では、アプリケーションは、コンピューティングシステムのデスクトップ上で実行され、ウェブブラウザの一部ではない「.exe」ファイルとして使用されてもよい。いくつかのさらなる実施形態では、アプリケーションは、アプリケーションが他のアプリケーションと同時に通信できるように、スクリーンにドッキングされてもよい。
【0090】
図7-10で実行されるプロセスステップは、本発明の実施形態に従って、図7-10で説明したプロセスの少なくとも一部を実行するようにプロセッサ(複数可)への命令をエンコードするコンピュータプログラムによって実行されてもよい。コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体に具現化されていてもよい。コンピュータ読み取り可能な媒体は、ハードディスクドライブ、フラッシュ装置、RAM、テープ、および/またはデータを格納するために使用される他のそのような媒体または媒体の組み合わせであってもよいが、これらに限定されるものではない。コンピュータプログラムは、図7-10に記載されたプロセスステップの全部または一部を実装するために、コンピューティングシステム(例えば、図5のコンピューティングシステム500のプロセッサ(複数可)510)のプロセッサ(複数可)を制御するためのコード化された命令を含んでもよく、これはまた、コンピュータ読み取り可能な媒体に格納されてもよい。
【0091】
コンピュータプログラムは、ハードウェア、ソフトウェア、またはハイブリッド実装で実装され得る。コンピュータプログラムは、互いに操作可能な通信を行うモジュールで構成され得、情報または命令をディスプレイに送るように設計されている。コンピュータプログラムは、汎用コンピュータ、ASIC、またはいずれかの他の好適な装置で動作するように構成され得る。
【0092】
本発明の様々な実施形態のコンポーネントは、本明細書に一般的に記載され、図示されているように、様々な異なる構成で配置され、設計されてもよいことが、容易に理解されるであろう。したがって、添付の図に表されるような本発明の実施形態の詳細な説明は、特許請求されるような本発明の範囲を限定することを意図するものではなく、本発明の選択された実施形態を代表するものにすぎない。
【0093】
本明細書を通して記載された本発明の特色、構造、または特徴は、1または複数の実施形態では、いずれかの好適な方法で組み合わせられ得る。例えば、本明細書全体を通して「特定の実施形態」、「いくつかの実施形態」、または類似の言語を参照することは、実施形態に関連して記載された特定の特色、構造、または特徴が、本発明の少なくとも1つの実施形態に含まれていることを意味する。したがって、本明細書全体を通して「特定の実施形態では」、「いくつかの実施形態では」、「他の実施形態では」、または類似の言語の出現は、必ずしも全ての実施形態の同じグループを指すものではなく、記載された特色、構造、または特徴は、1または複数の実施形態ではいずれかの好適な方法で組み合わせられ得る。
【0094】
本明細書全体を通して特色、利点、または類似の言語への参照は、本発明で実現され得る特色および利点の全てが、本発明のいずれかの単一の実施形態にあるべきであること、または本発明のいずれかの実施形態にあることを意味するものではないことに留意すべきである。むしろ、特色および利点に言及する言語は、実施形態に関連して記載された特定の特色、利点、または特徴が、本発明の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体での特色および利点の議論、ならびに類似の言語は、同じ実施形態を参照することができるが、必ずしもその必要性はない。
【0095】
さらに、本発明の記載された特色、利点、および特徴は、1または複数の実施形態では、いずれかの好適な方法で組み合わせることができる。関連する技術の当業者は、本発明が、1または複数の特定の実施形態の特定の特徴または利点なしに実施され得ることを認識するであろう。他の例では、追加の特徴および利点は、本発明の全ての実施形態には存在しないかもしれない特定の実施形態では認識され得る。
【0096】
本分野における通常の技術を有する者は、上述したような本発明を、異なる順序でのステップを用いて、および/または開示されているものとは異なる構成のハードウェア要素を用いて実施することができることを容易に理解するであろう。したがって、本発明は、これらの好ましい実施形態に基づいて説明されてきたが、本発明の精神および範囲内にとどまりながら、特定の変更、変形、および代替的な構成が明らかになることは、当業者には明らかであろう。したがって、本発明の範囲を決定するためには、添付の特許請求の範囲を参照すべきである。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2020-12-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムから前記アプリケーションを起動し、
前記アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始し、
前記アプリケーションによってランダム化されたコードを生成し、前記アプリケーションから前記ロボットを起動するために前記コンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、
前記ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報および前記トークンをグローバルリスナーモジュールに渡し、
前記グローバルリスナーモジュールから前記トークンおよびポートの識別情報を受信し、前記アプリケーションが前記ロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進することを含む、コンピュータ実装方法。
【請求項2】
前記ロボットリンクの起動に使用された前記アプリケーションが信頼されていないドメインからのものである、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ロボット対話プロセスを促進することは、
通信媒体を介してロボットリスナーモジュール上の特定のアプリケーションプログラミングインターフェース(API)を前記ロボットリンクによって起動することを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記ロボットリスナーモジュールは、エグゼキュータまたは前記ロボットの状態の問い合わせ、コンダクタからの接続、切断、またはその両方、前記ロボット上で利用可能なプロセスのリスト、前記ロボット上のプロセスの開始、停止、一時停止、および/または終了、前記ロボット上で実行中または実行されているプロセスの状態の問い合わせ、ならびに/あるいは前記プロセスを開始している間、すでに前記プロセスを実行している間、もしくは前記プロセスの実行が完了したときにデータを送信および/または受信するように構成される、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記ロボット対話プロセスを促進することは、さらに、
前記ロボットリスナーモジュールによって、前記ロボットリンクによって要求された動作を実行するために、ロボットサービスと通信することを含む、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記ロボット対話プロセスを促進することは、さらに、
前記要求された動作を実現するために、前記ロボットサービスによってエグゼキュータ、ロボット、および/またはコンダクタと通信することを含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記ロボット対話プロセスを促進することは、さらに、
前記ロボットリスナーおよび前記ロボットリンクを介して、前記要求された動作の結果を前記ロボットサービスから前記アプリケーションに返すことを含む、請求項6に記載のコンピュータ実装方法。
【請求項8】
非一時的なコンピュータ読み取り可能な媒体上に具現化されたコンピュータプログラムであって、前記コンピュータプログラムは、少なくとも1つのプロセッサが、
アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムから前記アプリケーションを起動し、
前記アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始し、
前記アプリケーションによってランダム化されたコードを生成し、前記アプリケーションから前記ロボットを起動するために前記コンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、
前記ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報および前記トークンをグローバルリスナーモジュールに渡し、
前記グローバルリスナーモジュールから前記トークンおよびポートの識別情報を受信し、前記アプリケーションが前記ロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進するように構成される、コンピュータプログラム。
【請求項9】
前記ロボットリンクの起動に使用された前記アプリケーションが信頼されていないドメインからのものである、請求項8に記載のコンピュータプログラム。
【請求項10】
前記コンピュータプログラムはさらに、前記少なくとも1つのプロセッサが、
通信媒体を介してロボットリスナーモジュール上の特定のアプリケーションプログラミングインターフェース(API)を前記ロボットリンクによって起動するように構成される、請求項8に記載のコンピュータプログラム。
【請求項11】
前記ロボットリスナーモジュールは、エグゼキュータまたは前記ロボットの状態の問い合わせ、コンダクタからの接続、切断、またはその両方、前記ロボット上で利用可能なプロセスのリスト、前記ロボット上のプロセスの開始、停止、一時停止、および/または終了、前記ロボット上で実行中または実行されているプロセスの状態の問い合わせ、ならびに/あるいは前記プロセスを開始している間、すでに前記プロセスを実行している間、もしくは前記プロセスの実行が完了したときにデータを送信および/または受信するように構成される、請求項10に記載のコンピュータプログラム。
【請求項12】
前記コンピュータプログラムはさらに、少なくとも1つのプロセッサが、
前記ロボットリスナーモジュールによって、前記ロボットリンクによって要求された動作を実行するために、ロボットサービスと通信するように構成される、請求項11に記載のコンピュータプログラム。
【請求項13】
前記コンピュータプログラムはさらに、少なくとも1つのプロセッサが、
前記要求された動作を実現するために、前記ロボットサービスによってエグゼキュータ、ロボット、および/またはコンダクタと通信するように構成される、請求項12に記載のコンピュータプログラム。
【請求項14】
前記コンピュータプログラムはさらに、少なくとも1つのプロセッサが、
前記ロボットリスナーおよび前記ロボットリンクを介して、前記要求された動作の結果を前記ロボットサービスから前記アプリケーションに返すように構成される、請求項13に記載のコンピュータプログラム。
【請求項15】
機械読み取り可能なコンピュータプログラム命令を格納するメモリと、
前記コンピュータプログラム命令を実行するように構成された少なくとも1つのプロセッサとを含み、前記命令は、前記少なくとも1つのプロセッサが、
アプリケーション内に埋め込まれたロボットリンクを起動するために、コンピューティングシステムから前記アプリケーションを起動し、
前記アプリケーションからポート、ポートの詳細、およびトークンを識別するためのポート発見プロセスを開始し、
前記アプリケーションによってランダム化されたコードを生成し、前記アプリケーションから前記ロボットを起動するために前記コンピューティングシステムのユーザーからの承認を要求する同意アプリケーションを起動し、
前記ランダム化されたコードをローカルリスナーモジュールに登録し、ユーザー情報および前記トークンをグローバルリスナーモジュールに渡し、
前記グローバルリスナーモジュールから前記トークンおよびポートの識別情報を受信し、前記アプリケーションが前記ロボットとの間で自分自身を認証し、通信することを可能にし、それによってロボット対話プロセスを促進するように構成される、コンピューティングシステム。
【請求項16】
前記ロボットリンクの起動に使用された前記アプリケーションが信頼されていないドメインからのものである、請求項15に記載のコンピューティングシステム。
【請求項17】
前記命令はさらに、前記少なくとも1つのプロセッサが、
通信媒体を介してロボットリスナーモジュール上の特定のアプリケーションプログラミングインターフェース(API)を前記ロボットリンクによって起動するように構成される、請求項15に記載のコンピューティングシステム。
【請求項18】
前記ロボットリスナーモジュールは、エグゼキュータまたは前記ロボットの状態の問い合わせ、コンダクタからの接続、切断、またはその両方、前記ロボット上で利用可能なプロセスのリスト、前記ロボット上のプロセスの開始、停止、一時停止、および/または終了、前記ロボット上で実行中または実行されているプロセスの状態の問い合わせ、ならびに/あるいは前記プロセスを開始している間、すでに前記プロセスを実行している間、もしくは前記プロセスの実行が完了したときにデータを送信および/または受信するように構成される、請求項17に記載のコンピューティングシステム
【請求項19】
前記命令はさらに、前記少なくとも1つのプロセッサが、
前記ロボットリスナーモジュールによって、前記ロボットリンクによって要求された動作を実行するために、ロボットサービスと通信するように構成される、請求項18に記載のコンピューティングシステム。
【請求項20】
前記命令はさらに、前記少なくとも1つのプロセッサが、
前記要求された動作を実現するために、前記ロボットサービスによってエグゼキュータ、ロボット、および/またはコンダクタと通信するように構成される、請求項19に記載のコンピューティングシステム。
【請求項21】
前記命令はさらに、前記少なくとも1つのプロセッサが、
前記ロボットリスナーおよび前記ロボットリンクを介して、前記要求された動作の結果を前記ロボットサービスから前記アプリケーションに返すように構成される、請求項20に記載のコンピューティングシステム。
【国際調査報告】