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

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

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

特表2023-524917ロボティックプロセスオートメーションのためのアプリケーション統合
<>
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図1
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図2
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図3
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図4
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図5
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図6A
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図6B
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図7
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図8
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図9A
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図9B
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図9C
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図9D
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図9E
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図10
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図11
  • 特表-ロボティックプロセスオートメーションのためのアプリケーション統合 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-14
(54)【発明の名称】ロボティックプロセスオートメーションのためのアプリケーション統合
(51)【国際特許分類】
   G06F 9/445 20180101AFI20230607BHJP
【FI】
G06F9/445 120
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2020553460
(86)(22)【出願日】2020-09-23
(85)【翻訳文提出日】2020-12-16
(86)【国際出願番号】 US2020052160
(87)【国際公開番号】W WO2021230902
(87)【国際公開日】2021-11-18
(31)【優先権主張番号】15/930,518
(32)【優先日】2020-05-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
2.ZIGBEE
3.BLUETOOTH
(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)【発明者】
【氏名】ブリジット グラハム
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE44
5B376AE51
5B376GA13
(57)【要約】
RPAが有効なアプリケーションの開発のために構成された開発アプリケーションを用いたロボティックプロセスオートメーション(RPA)のためのアプリケーション統合が開示される。いくつかの実施形態における開発アプリケーションは、RPAが有効なアプリケーションのインスタンスと同じコンピューティングシステム上でローカルに実行するアテンディッドロボット、リモートコンピューティングシステム上で実行するアンアテンディッドロボット、またはその両方とのアプリケーション統合のために使用され、RPAが有効なアプリケーションを生成し得る。RPAが有効なアプリケーションの1もしくは複数のユーザーインターフェース(UI)要素、変数、および/またはイベントは、1または複数のそれぞれのRPAプロセスにリンクされ、それぞれのRPAロボット(複数可)に関連する機能を実行させ得る。
【選択図】図1
【特許請求の範囲】
【請求項1】
ロボティックプロセスオートメーション(RPA)が有効なアプリケーションを開発するためのコンピュータ実装方法であって、
開発アプリケーションにより、前記RPAが有効なアプリケーションのトリガをRPAロボットにより実行されるRPAプロセスにリンクさせ、
前記開発アプリケーションによって、前記リンクされたトリガを含む前記RPAが有効なアプリケーションのインスタンスを生成し、
前記開発アプリケーションによって、前記RPAが有効なアプリケーションの前記インスタンスをコンピューティングシステムに展開することを含む、コンピュータ実装方法。
【請求項2】
前記トリガは、ユーザーインターフェース(UI)要素とのユーザー対話、前記RPAが有効なアプリケーションもしくは他のアプリケーションで発生するイベント、前記RPAが有効なアプリケーションが展開されている前記コンピューティングシステムもしくはリモートコンピューティングシステムで発生するイベント、前記RPAが有効なアプリケーションの変数、別のアプリケーションの変数、RPAロボットの変数、オペレーティングシステムの変数、またはそれらの組み合わせを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記開発アプリケーションは、前記RPAが有効なアプリケーションのUIにユーザーインターフェース(UI)要素を展開するためのドラッグアンドドロップ機能、ポイントアンドクリック機能、ユーザーが指定した数式および式、またはそれらの組み合わせを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記開発アプリケーションは、RPA開発プラットフォームであるまたはそれを含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記RPAロボットは、前記RPAが有効なアプリケーションが展開された前記コンピューティングシステム上で実行されるアテンディッドRPAロボット、またはRPAサービスプラットフォームを介して前記RPAが有効なアプリケーションによってリモートでアクセス可能なアンアテンディッドロボットである、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記RPAが有効なアプリケーションにより、前記RPAプロセスの開始の前記トリガを受信し、
アンアテンディッドロボット用のRPAサービスプラットフォームに、またはプロセス間通信(IPC)を介してローカルで実行中のアテンディッドロボットにプロセス開始要求を送信し、
IPCを介して前記アテンディッドロボットからまたは前記アンアテンディッドRPAロボット用の前記RPAサービスプラットフォームから前記RPAプロセスを実行することから生成された出力を受信することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記RPAが有効なアプリケーションにより、前記プロセスを実行してから生成された前記出力からの結果をユーザーインターフェース(UI)に表示することをさらに含む、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記開発アプリケーションにより、前記トリガのロボットタイプ変数を、アテンディッド、アンアテンディッド、またはインテリジェントに設定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記トリガの前記ロボットタイプ変数がインテリジェントに設定されている場合、前記方法はさらに、
前記RPAが有効なアプリケーションにより、前記RPAプロセスの開始の前記トリガを受信し、
前記RPAが有効なアプリケーションにより、前記RPAプロセスのためのアテンディッドロボットをローカルに検索し、
前記RPAプロセスに適したローカルアテンディッドロボットが見つかった場合、前記RPAが有効なアプリケーションにより、前記アテンディッドロボットが前記RPAプロセスを実行することを引き起こすことを含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記RPAプロセスに適したローカルアテンディッドロボットが見つからない場合、前記方法はさらに、
前記RPAが有効なアプリケーションにより、前記RPAプロセスに適したアンアテンディッドロボットのためのRPAサービスプラットフォームに問い合わせ、
前記RPAプロセスに適したアンアテンディッドロボットが見つかった場合、前記RPAが有効なアプリケーションにより、アンアテンディッドロボットの実行を引き起こすことを含む、請求項9に記載のコンピュータ実装方法。
【請求項11】
非一時的なコンピュータ読み取り可能な媒体上に具現化されたロボティックプロセスオートメーション(RPA)が有効なアプリケーションを開発するためのコンピュータプログラムであって、前記プログラムは、少なくとも1つのプロセッサが、
前記RPAが有効なアプリケーションのトリガをRPAロボットにより実行されるRPAプロセスにリンクさせ、
前記リンクされたトリガを含む前記RPAが有効なアプリケーションのインスタンスを生成し、
前記RPAが有効なアプリケーションの前記インスタンスをコンピューティングシステムに展開するように構成される、コンピュータプログラム。
【請求項12】
前記トリガは、ユーザーインターフェース(UI)要素とのユーザー対話、前記RPAが有効なアプリケーションもしくは他のアプリケーションで発生するイベント、前記RPAが有効なアプリケーションが展開されている前記コンピューティングシステムもしくはリモートコンピューティングシステムで発生するイベント、前記RPAが有効なアプリケーションの変数、別のアプリケーションの変数、RPAロボットの変数、オペレーティングシステムの変数、またはそれらの組み合わせを含む、請求項11に記載のコンピュータプログラム。
【請求項13】
前記開発アプリケーションは、前記RPAが有効なアプリケーションのUIにユーザーインターフェース(UI)要素を展開するためのドラッグアンドドロップ機能、ポイントアンドクリック機能、ユーザーが指定した数式および式、またはそれらの組み合わせを含む、請求項11に記載のコンピュータプログラム。
【請求項14】
前記プログラムは、RPA開発プラットフォームであるまたはそれを含む、請求項11に記載のコンピュータプログラム。
【請求項15】
前記RPAロボットは、前記RPAが有効なアプリケーションが展開された前記コンピューティングシステム上で実行されるアテンディッドRPAロボット、またはRPAサービスプラットフォームを介して前記RPAが有効なアプリケーションによってリモートでアクセス可能なアンアテンディッドロボットである、請求項11に記載のコンピュータプログラム。
【請求項16】
前記プログラムはさらに、前記少なくとも1つのプロセッサが、
前記トリガのロボットタイプ変数を、アテンディッド、アンアテンディッド、またはインテリジェントに設定するように構成される、請求項11に記載のコンピュータプログラム。
【請求項17】
非一時的なコンピュータ読み取り可能な媒体上に具現化されたコンピュータプログラムであって、前記コンピュータプログラムは、少なくとも1つのプロセッサが、
RPAロボットにより実行されるロボティックプロセスオートメーション(RPA)プロセスの開始のためのトリガを受信し、
アンアテンディッドロボット用のRPAサービスプラットフォームに、またはプロセス間通信(IPC)を介してローカルで実行中のアテンディッドロボットにプロセス開始要求を送信し、
IPCを介して前記アテンディッドロボットからまたは前記アンアテンディッドRPAロボット用の前記RPAサービスプラットフォームから前記RPAプロセスを実行することから生成された出力を受信するように構成される、コンピュータプログラム。
【請求項18】
前記プログラムはさらに、前記少なくとも1つのプロセッサが、
前記RPAが有効なアプリケーションのユーザーインターフェース(UI)に、前記プロセスを実行してから生成された前記出力からの結果を表示するように構成される、請求項17に記載のコンピュータプログラム。
【請求項19】
前記トリガのためのロボットタイプ変数がインテリジェントに設定されている場合に、前記プログラムはさらに、前記少なくとも1つのプロセッサが、
前記RPAプロセスの開始の前記トリガを受信し、
前記RPAプロセスのためのアテンディッドロボットをローカルに検索し、
前記RPAプロセスに適したローカルアテンディッドロボットが見つかった場合、前記アテンディッドロボットが前記RPAプロセスを実行することを引き起こすように構成される、請求項17に記載のコンピュータプログラム。
【請求項20】
前記RPAプロセスに適したローカルアテンディッドロボットが見つからない場合、前記プログラムはさらに、前記少なくとも1つのプロセッサが、
前記RPAプロセスに適したアンアテンディッドロボットのためのRPAサービスプラットフォームに問い合わせ、
前記RPAプロセスに適したアンアテンディッドロボットが見つかった場合、前記アンアテンディッドロボットの実行を引き起こすように構成される、請求項19に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本出願は、2020年5月13日に出願された米国非仮特許出願第15/930,518号の利益を主張する。先に提出された本出願の主題は、その全体を参照することにより、本明細書に組み込まれる。
【0002】
本発明は、一般に、ロボティックプロセスオートメーション(RPA)に関し、より詳細には、RPAのためのアプリケーション統合に関する。
【背景技術】
【0003】
ロボティックプロセスオートメーション(RPA)は、日常的に発生し、コンピューティングシステムのユーザーの手作業を必要とするような反復的な作業を自動化することができる。例えば、RPAロボットは、アプリケーションにログインしてデータを入力し、計算を行い、タスクを完了させて、その後ログアウトし得る。ユーザーは、集合的なタスクを完了するために複数のRPAロボットを実行してもよいし、複数のタスクを完了するために複数のRPAロボットを実行してもよい。人を介さずに反復的な作業を行うためには、RPAロボットを用いてアプリケーションとの様々な対話を自動化することが有益であり得る。現在のRPA技術は、アプリケーションにハードコード化された自動化機能を提供する。したがって、改良されたRPA用のソリューションが有益であり得る。
【発明の概要】
【0004】
本発明の特定の実施形態は、現在のRPA技術よってまだ十分に特定されていない、評価されていない、または解決されていない本分野における問題およびニーズのソリューションを提供し得る。例えば、いくつかの実施形態は、ローコード開発アプリケーションによって促進される可能性のあるRPAのアプリケーション統合に関連する。
【0005】
実施形態では、RPAが有効なアプリケーション(Robotic Process Automation (RPA)-enabled application)を開発するためのコンピュータ実装方法は、開発アプリケーションにより、RPAが有効なアプリケーション内のトリガをRPAロボットによって実行されるRPAプロセスにリンクすることを含む。コンピュータ実装方法は、開発アプリケーションにより、リンクされたトリガを含むRPAが有効なアプリケーションのインスタンスを生成し、開発アプリケーションにより、RPAが有効なアプリケーションのインスタンスをコンピューティングシステムに展開することを含む。
【0006】
別の実施形態では、RPAが有効なアプリケーションを開発するためのコンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体上に具現化される。プログラムは、少なくとも1つのプロセッサが、RPAが有効なアプリケーション内のトリガを、RPAロボットによって実行されるRPAプロセスにリンクするように構成される。プログラムはまた、少なくとも1つのプロセッサが、リンクされたトリガを含むRPAが有効なアプリケーションのインスタンスを生成し、RPAが有効なアプリケーションのインスタンスをコンピューティングシステムに展開するように構成される。
【0007】
さらに別の実施形態では、コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体上に具現化される。プログラムは、少なくとも1つのプロセッサが、RPAロボットによって実行されるRPAプロセスの開始のためのトリガを受信するように構成される。プログラムは、少なくとも1つのプロセッサが、アンアテンディッドロボット用のRPAサービスプラットフォームに、またはプロセス間通信(IPC)を介してローカルで実行中のアテンディッドロボットにプロセス開始要求を送信するように構成される。プログラムは、少なくとも1つのプロセッサが、IPCを介してアテンディッドロボットからまたはアンアテンディッドRPAロボット用のRPAサービスプラットフォームからRPAプロセスを実行することから生成された出力を受信するように構成される。
【図面の簡単な説明】
【0008】
本発明の特定の実施形態の利点が容易に理解されるように、簡単に説明した上記発明のより特定の説明は、添付の図面に図示されている特定の実施形態を参照して描写される。これらの図面は、本発明の典型的な実施形態のみを描いており、したがって、その範囲を限定するものとは考えられないことが理解されるべきであるが、本発明は、以下の添付の図面を使用することにより、さらなる特定および詳細をもって描写され、説明されるであろう。
【0009】
図1】本発明の実施形態による、RPAシステムを示すアーキテクチャ図である。
【0010】
図2】本発明の実施形態による、展開したRPAシステムを示すアーキテクチャ図である。
【0011】
図3】本発明の実施形態による、デザイナ、アクティビティ、およびドライバの間の関係を示すアーキテクチャ図である。
【0012】
図4】本発明の実施形態による、RPAシステムを示すアーキテクチャ図である。
【0013】
図5】本発明の実施形態による、RPAが有効なアプリケーションのインスタンスを提供および/または実行するように構成されたコンピューティングシステムを示すアーキテクチャ図である。
【0014】
図6A】本発明の実施形態による、RPAシステムと統合されたローコードアプリケーション開発プラットフォームを示すアーキテクチャ図である。
【0015】
図6B】本発明の実施形態による、アプリケーション設計時間と実行時の間のローコードアプリケーション開発プラットフォームとRPAサービスプラットフォームとの間の対話を示す。
【0016】
図7】本発明の実施形態による、アプリケーション開発プラットフォームを使用したRPAアプリケーションの開発プロセスを示すフローチャートである。
【0017】
図8】本発明の実施形態による、RPAアプリケーションの実行プロセスを示すフローチャートである。
【0018】
図9A】本発明の実施形態による、RPAアプリケーションを作成するための設計時間環境および動作時間環境を示す複数のユーザーインターフェース(UI)をまとめて示す。
図9B】本発明の実施形態による、RPAアプリケーションを作成するための設計時間環境および動作時間環境を示す複数のユーザーインターフェース(UI)をまとめて示す。
図9C】本発明の実施形態による、RPAアプリケーションを作成するための設計時間環境および動作時間環境を示す複数のユーザーインターフェース(UI)をまとめて示す。
図9D】本発明の実施形態による、RPAアプリケーションを作成するための設計時間環境および動作時間環境を示す複数のユーザーインターフェース(UI)をまとめて示す。
図9E】本発明の実施形態による、RPAアプリケーションを作成するための設計時間環境および動作時間環境を示す複数のユーザーインターフェース(UI)をまとめて示す。
【0019】
図10】本発明の実施形態による、RPAが有効なアプリケーションの開発プロセスを示すフローチャートである。
【0020】
図11】本発明の実施形態による、RPAが有効なアプリケーションを実行するためのプロセスを示すフローチャートである。
【0021】
図12】本発明の実施形態による、RPAプロセスを実行するためのアテンディッドまたはアンアテンディッドRPAロボットを検索し、RPAプロセスを実行するためのプロセスを説明するフローチャートである。
【発明を実施するための形態】
【0022】
別段の記載がない限り、類似の参照文字は、添付の図面全体で一貫して対応する特徴を示す。
【0023】
(実施形態の詳細な説明)
いくつかの実施形態は、RPAが有効なアプリケーションの開発のために構成された開発アプリケーションを使用したRPAのためのアプリケーション統合に関連する。いくつかの実施形態では、開発アプリケーションは、ローコード開発アプリケーションである。特定の実施形態では、開発アプリケーションは、RPAが有効なアプリケーションのインスタンスと同じコンピューティングシステム上でローカルに実行するアテンディッドロボット、リモートコンピューティングシステム上で実行するアンアテンディッドロボット、またはその両方とのアプリケーション統合のために使用され、RPAが有効なアプリケーションを生成し得る。いくつかの実施形態では、RPAが有効なアプリケーションのインスタンスは、まず、プロセスを実行するためのローカルRPAロボットを見つけようとし、見つからない場合は、プロセスを実行するためのリモートRPAロボットを見つけようとする。特定の実施形態では、開発者アプリケーションはウェブベースである。RPAが有効なアプリケーションの1もしくは複数のユーザーインターフェース(UI)要素は、1または複数のそれぞれのRPAプロセスにリンクされ、それぞれのRPAロボット(複数可)に関連する機能を実行させ得る。
【0024】
本明細書で使用されるように、「ローコード」とは、ユーザー側で手動でプログラミングを行うことなく、開発タスクの大部分または完全に完了し得ることを意味する。また、本明細書で使用されるように、「RPAと統合されている」、「RPAが有効である」、または「RPAアプリケーション」とは、アプリケーションまたはそのインスタンスが、その実行中に1または複数のUI要素またはトリガを介して1または複数のRPAロボットを初期化したり、呼び出したり、またはさもなくば対話したりすることを意味する。いくつかの実施形態では、RPAロボットと対話するソフトウェアアプリケーションを開発するためのローコード開発アプリケーションは、実質的なプログラミング知識を持たない個人がRPAロボットを開発することができるように、大部分または完全にドラッグアンドドロップで行われ得る。これにより、例えばビジネスアナリストは、様々なビジネスロジックを実装したRPAロボットを作製することができるようになり得る。実際、任意の従業員は、いくつかの実施形態では、彼または彼女自身のRPAロボットを作製することができ得る。このように、アプリケーション(例えば、RPAロボットまたは別のソフトウェアアプリケーション)は、ローコード開発アプリケーションを使用して開発され、その後、いくつかの実施形態ではRPAロボットと対話するためにコンピューティングシステム上で実行され得る。
【0025】
いくつかの実施形態では、開発アプリケーションは、RPAロボットのための発見機能を有してもよい。開発アプリケーションは、まず、タスクを実行するためにローカルアテンディッドロボットが存在するかどうかを確認してもよい。タスクのためにローカルで利用可能なロボットがない場合、開発アプリケーションは、次いでタスクを完了するためにリモートのアンアテンディッドロボットを確認し得る。
【0026】
いくつかの実施形態では、開発アプリケーションを使用して開発されたアプリケーションは、プロセス間通信(IPC)プロトコルを介して対話し得るローカルアテンディッドロボットと通信する。IPC プロトコルは、ネットワーク、パイプ、コンポーネントオブジェクトモデル(COM)、リモートプロシージャコール(RPC)、ソケットなどを介した通信を容易にし得る。IPC プロトコルは、サポートされている場合、Windows(登録商標)またはその他の適切なオペレーティングシステムで使用され得る。ロボットを呼び出すか、またはさもなくばロボットと対話するアプリケーションは、IPCプロトコルを使用してロボットプロセスに通信(例えば、コマンド)を送信してもよい。ロボットは、同様にIPCプロトコルを介してアプリケーションにステータス通知(例えば、ロボットが起動中であること、実行中であること、一時停止中であることなどを示す)を送り返すことができる。
【0027】
いくつかの実施形態では、全く新しいプロセスを作成することなく特定の機能を提供するアプリケーションと統合されたロボットのワークフローにあり得る特定のアクティビティ。例えば、ユーザーがそのタスクのために新たなロボットを開発することなく、エラー処理を提供したり、追加情報を収集したりするアクティビティを提供してもよい。実行時に双方向通信(例えば、IPCを介して)を使用して、そのプロセスが実行されている間、ロボットとの間でデータを送受信し得る。このように、ロボットは、そのプロセスが実行されると、中間的な結果を提供し得る。例えば、ロボットが10台のレガシーシステムからデータを収集した場合、各レガシーシステムのデータ収集が終了した後、ロボットはデータ収集結果をアプリケーションに提供し得る。特定の実施形態では、インラインワークフローは、ウェブ上でいくつかのRPAアクティビティを実行するために使用され得る。
【0028】
いくつかの実施形態では、ユーザーは、ロボットが有人で動作するか無人で動作するかを定義してもよい。これは、RPAロボットプロセスを起動するためのルールを設定することで実現され得る。ロボットは、ボタンクリック、ページロードなどのユーザーアクションにより起動し得、ロボットは、任意の論理的な理由(例えば、イベントの発生によるもの、値の変更によるもの、特定の情報の受信によるものなど)により起動し得る。特定の実施形態では、ユーザーは、アプリケーションが最初に適切なローカルアテンディッドロボットを探し、見つからなければ、次いでタスクを完了するためにリモートのアンアテンディッドロボット(例えば、RPAサービスプラットフォームを介して)を探す「インテリジェント」オプションを使用するようにアプリケーションを指定し得る。
【0029】
いくつかの実施形態では、開発アプリケーションのためのビルドサーバーは存在しない。その代わり、ユーザーが開発アプリケーションを使用して関連するロジックを実装する際に、バックグラウンドでアプリケーション定義が作成され得る。その後、RPAが有効なアプリケーションのアプリケーション定義は、実行時にアプリケーションを実行するであろうコンピューティングシステムにダウンロードされ、アプリケーション定義、RPAが有効なアプリケーションのレンダリング方法などは、実行時に宣言的な方法で制御されてもよい。いくつかの実施形態では、JavaScriptのクラスがこのスクリプトに使用されてもよい。ロボットプロセスへの参照は、RPAが有効なアプリケーションに格納されていてもよいが、いくつかの実施形態ではRPAプロセス自体には格納されていない。
【0030】
実施形態は、ロボティックプロセスオートメーション(RPA)に採用されてもよい。図1は、本発明の実施形態による、RPAシステム100を示すアーキテクチャ図である。RPAシステム100は、開発者がワークフローを設計して実装することを可能にするデザイナ110を含む。デザイナ110は、アプリケーション統合のためのソリューションを提供するとともに、サードパーティアプリケーション、管理情報技術(IT)タスク、およびビジネスITプロセスを自動化する。デザイナ110は、ビジネスプロセスのグラフィック表現である自動化プロジェクトの開発を容易にし得る。簡単に言えば、デザイナ110は、ワークフローおよびロボットの開発およびデプロイメントを容易にする。
【0031】
自動化プロジェクトは、本明細書で「アクティビティ」と定義されるワークフローで開発されたカスタムセットのステップ間の実行順序および関係の制御を開発者に与えることにより、ルールベースのプロセスの自動化を可能にする。デザイナ110の実施形態の商業的な一例は、UiPath Studio(商標)である。各アクティビティは、ボタンをクリックする、ファイルを読む、ログパネルに書き込むなどのアクションを含み得る。いくつかの実施形態では、ワークフローは入れ子になっているか、または埋め込まれ得る。
【0032】
ワークフローのタイプには、シーケンス、フローチャート、(FSM)、および/またはグローバル例外ハンドラなどを含み得るが、これらに限定されない。シーケンスは、ワークフローを乱雑にすることなく、あるアクティビティから別のアクティビティへのフローを可能にする、線形プロセスに特に適し得る。フローチャートは、特により複雑なビジネスロジックに適し得、複数の分岐ロジックオペレータを介して、より多様な方法で意思決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)またはアクティビティによりトリガされる有限の数の状態をそれらの実行中に使用し得る。グローバル例外ハンドラは、実行エラーに遭遇したときのワークフローの動作を決定したり、プロセスをデバッグしたりするのに特に適し得る。
【0033】
ワークフローがデザイナ110内で開発されると、ビジネスプロセスの実行は、コンダクタ120によって調整され、デザイナ110内で開発されたワークフローを実行する1または複数のロボット130を調整する。コンダクタ120の実施形態の商業的な一例は、UiPath Orchestrator(商標)である。コンダクタ120は、環境におけるリソースの生成、監視、およびデプロイメントの管理を容易にする。コンダクタ120は、サードパーティのソリューションおよびアプリケーションとの統合ポイント、または統合ポイントの1つとして動作し得る。
【0034】
コンダクタ120は、全てのロボット130を管理し得、ロボット130を集中ポイントから接続して実行する。管理され得るロボット130のタイプには、アテンディッドロボット132、アンアテンディッドロボット134、開発ロボット(アンアテンディッドロボット134と同様であるが、開発およびテストの目的で使用される)、および非生産ロボット(アテンディッドロボット132と同様であるが、開発およびテストの目的で使用される)が含まれるが、これらに限定されない。アテンディッドロボット132は、ユーザーイベントによってトリガされてもよいし、自動的に発生するようにスケジュールされてもよく、同じコンピューティングシステム上で人と並んで動作し得る。アテンディッドロボット132は、集中プロセスデプロイメントおよびロギング媒体のためのコンダクタ120とともに使用され得る。アテンディッドロボット132は、人のユーザーが様々なタスクを達成するのを支援してもよく、ユーザーイベントによってトリガされてもよい。いくつかの実施形態では、プロセスは、このタイプのロボット上でコンダクタ120から開始することができず、および/またはそれらはロックされた画面の下で実行することができない。特定の実施形態では、アテンディッドロボット132は、ロボットトレイからまたはコマンドプロンプトからのみ起動され得る。アテンディッドロボット132は、いくつかの実施形態では、人の監督下で動作することが好ましい。
【0035】
アンアテンディッドロボット134は、仮想環境または物理マシン上で無人で動作し、多くのプロセスを自動化することができる。アンアテンディッドロボット134は、リモート実行、監視、スケジューリング、および作業キューのサポートの提供を担当し得る。全てのロボットタイプのためのデバッグは、いくつかの実施形態では、デザイナ110から実行され得る。アテンディッドロボットおよびアンアテンディッドロボットの両方は、メインフレーム、ウェブアプリケーション、VM、エンタープライズアプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって生成されたもの)、およびコンピューティングシステムアプリケーション(例えば、デスクトップおよびラップトップアプリケーション、モバイル装置アプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むが、これらに限定されない様々なシステムおよびアプリケーションを自動化し得る。
【0036】
コンダクタ120は、プロビジョニング、デプロイメント、バージョニング、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含むがこれらに限定されない様々な能力を有し得る。プロビジョニングは、ロボット130とコンダクタ120(例えば、ウェブアプリケーション)との間の接続を作成し、維持することを含み得る。デプロイメントは、実行のために割り当てられたロボット130へのパッケージバージョンの正しい配信を保証することを含み得る。バージョニングは、いくつかの実施形態では、いくつかのプロセスまたは構成の固有のインスタンスの管理を含んでもよい。構成は、ロボット環境およびプロセス構成のメンテナンスおよび配信を含み得る。キューイングは、キューおよびキュー項目の管理を提供することを含み得る。監視は、ロボットの識別データを追跡し、ユーザーの権限を維持することを含み得る。ロギングは、データベース(例えば、SQLデータベース)および/または別のストレージメカニズム(例えば、大規模なデータセットを格納し、迅速にクエリを実行する能力を提供するElasticSearch(登録商標)へのログの保存およびインデックス作成を含み得る。コンダクタ120は、サードパーティのソリューションおよび/またはアプリケーションのための通信の集中点として動作することにより、相互接続性を提供し得る。
【0037】
ロボット130は、デザイナ110で構築されたワークフローを実行する実行エージェントである。ロボット(複数可)130のいくつかの実施形態の1つの商業的な例は、UiPath Robots(商標)である。いくつかの実施形態では、ロボット130は、デフォルトで、Microsoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。その結果、そのようなロボット130は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開くことができ、Windows(登録商標)サービスの権利を持ち得る。
【0038】
いくつかの実施形態では、ロボット130は、ユーザーモードで設置され得る。このようなロボット130については、所定のロボット130が設置されているユーザーと同じ権利を有することを意味する。この特色はまた、各マシンを最大限に全活用することを保証する高密度(HD)ロボットにも利用可能であり得る。いくつかの実施形態では、いずれかのタイプのロボット130は、HD環境で構成され得る。
【0039】
いくつかの実施形態におけるロボット130は、複数のコンポーネントに分割され、それぞれが特定の自動化タスクに特化されている。いくつかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と実行ホスト(すなわち、ロボット130が実行されるコンピューティングシステム)との間のプロキシとして動作する。これらのサービスは、ロボット130の資格情報を任されて管理する。コンソールアプリケーションは、ローカルシステム下のSCMによって起動される。
【0040】
いくつかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と実行ホストとの間のプロキシとして動作する。ユーザーモードロボットサービスは、ロボット130の資格情報を任されて管理し得る。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションが自動的に起動され得る。
【0041】
エグゼキュータは、Windows(登録商標)セッションの下で与えられたジョブを実行し得る(つまり、ワークフローを実行し得る)。エグゼキュータは、モニタ毎のドットパーインチ(DPI)設定を意識し得る。エージェントは、システムトレイウィンドウに利用可能なジョブを表示するWindows(登録商標) Presentation Foundation(WPF)アプリケーションであり得る。エージェントはサービスのクライアントとなり得る。エージェントは、ジョブの開始または停止、設定の変更を依頼し得る。コマンドラインはサービスのクライアントである。コマンドラインは、ジョブの開始を要求し、その出力を待つことができるコンソールアプリケーションである。
【0042】
上で説明したように、ロボット130のコンポーネントが分割されていることは、開発者、サポートユーザー、およびコンピューティングシステムが、各コンポーネントが何を実行しているかをより容易に実行し、識別し、および追跡するのに役立つ。この方法では、エグゼキュータとサービスに異なるファイアウォールルールを設定するなど、コンポーネントごとに特別な動作を構成し得る。エグゼキュータは常に、いくつかの実施形態では、モニタごとのDPI設定を認識し得る。その結果、ワークフローは、ワークフローが作成されたコンピューティングシステムの構成に関係なく、いずれかのDPIで実行し得る。また、いくつかの実施形態では、デザイナ110からのプロジェクトは、ブラウザのズームレベルに依存しないようにし得る。DPIを認識していないまたは意図的に認識していないとマークされているアプリケーションの場合、いくつかの実施形態ではDPIを無効にし得る。
【0043】
図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は、ロボットコンポーネントであり得る。
【0044】
いくつかの実施形態では、ロボットは、マシン名とユーザー名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理し得る。同時に実行される複数の対話型セッションをサポートするコンピューティングシステム(Windows(登録商標)Server 2012など)では、複数のロボットが同時に実行され得、それぞれが固有のユーザー名を使用して別々のWindows(登録商標)セッションで実行され得る。これは、上記のHDロボットと呼ばれる。
【0045】
エージェント214はまた、ロボットの状態を送信し(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)、実行されるパッケージの必要なバージョンをダウンロードすることにも責任を負う。エージェント214とコンダクタ230との間の通信は、いくつかの実施形態では、常にエージェント214によって開始される。通知シナリオでは、エージェント214は、後にコンダクタ230によってロボットにコマンド(例えば、開始、停止など)を送信するために使用されるWebSocketチャネルを開いてもよい。
【0046】
サーバー側には、プレゼンテーション層(ウェブアプリケーション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からのウェブページと対話する。例えば、ユーザーは、ロボットグループを作成し、ロボットへのパッケージの割り当てを行い、ロボット毎および/またはプロセス毎のログを解析し、ロボットを起動しおよび停止し得る。
【0047】
ウェブアプリケーション232に加えて、コンダクタ230は、OData REST APIエンドポイント234を公開するサービス層も含む。しかし、本発明の範囲を逸脱することなく、他のエンドポイントが含まれていてもよい。REST APIは、ウェブアプリケーション232とエージェント214の両方により消費される。エージェント214は、本実施形態では、クライアントコンピュータ上の1または複数のロボットのスーパーバイザである。
【0048】
本実施形態のREST APIは、構成、ロギング、監視、およびキューイング機能をカバーする。構成エンドポイントは、いくつかの実施形態では、アプリケーションのユーザー、権限、ロボット、アセット、リリース、および環境を定義し、構成するために使用されてもよい。ロギングRESTエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、およびその他の環境固有の情報など、様々な情報をログに記録するために使用され得る。デプロイメントRESTエンドポイントは、コンダクタ230においてジョブ開始コマンドが使用された場合に実行されるべきパッケージのバージョンを問い合わせるためにロボットにより使用されてもよい。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キューおよびキューアイテムの管理を担ってもよい。
【0049】
RESTエンドポイントの監視は、ウェブアプリケーション232およびエージェント214を監視してもよい。通知および監視API236は、エージェント214の登録、エージェント214への構成設定の配信、およびサーバーとエージェント214との間の通知の送受信に使用されるRESTエンドポイントであってもよい。通知および監視API236は、いくつかの実施形態では、WebSocket通信を使用してもよい。
【0050】
永続層は、本実施形態では、一対のサーバー-データベースサーバー240(例えば、SQLサーバー)およびインデクササーバー250-を含む。本実施形態におけるデータベースサーバー240は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を格納する。この情報は、いくつかの実施形態では、ウェブアプリケーション232を介して管理される。データベースサーバー240は、キューおよびキューアイテムを管理してもよい。いくつかの実施形態では、データベースサーバー240は、ロボットにより記録されたメッセージを(インデクササーバー250に加えて、またはインデクササーバー250に代えて)格納してもよい。
【0051】
いくつかの実施形態では任意であるが、インデクササーバー250は、ロボットにより記録された情報を保存し、インデックスを作成する。特定の実施形態では、インデクササーバー250は、構成設定を介して無効化されてもよい。いくつかの実施形態では、インデクササーバー250は、オープンソースプロジェクトの全文検索エンジンであるElasticSearch(登録商標)を使用する。ロボットにより記録されたメッセージ(例えば、ログメッセージまたはライン書き込みのようなアクティビティを使用して)は、ロギングRESTエンドポイント(複数可)を介してインデクササーバー250に送信されてもよく、そこで将来の利用のためにそれらはインデックス化される。
【0052】
図3は、本発明の実施形態による、デザイナ310、アクティビティ320、330、およびドライバ340の間の関係300を示すアーキテクチャ図である。以上のように、開発者は、デザイナ310を用いて、ロボットにより実行されるワークフローを開発する。ワークフローは、ユーザー定義のアクティビティ320およびUI自動化アクティビティ330を含んでもよい。いくつかの実施形態では、画像中の非テキストの視覚的コンポーネントを識別することができ、これは、本明細書ではコンピュータビジョン(CV)と呼ばれる。このようなコンポーネントに関連するいくつかのCVアクティビティは、クリック、タイプ、テキストを取得、ホバー、要素の有無を検出、スコープの更新、ハイライトなどを含むが、これらに限定されない。いくつかの実施形態では、クリックは、例えば、CV、光学的文字認識(OCR)、ファジーテキストマッチング、およびマルチアンカーを使用して要素を識別し、それをクリックする。タイプは、上記および要素内のタイプを用いて要素を識別してもよい。テキストの取得は、特定のテキストの場所を特定し、OCRを使用してそれをスキャンし得る。ホバーは、要素を識別し、その上にホバーし得る。要素の有無の検出は、上述した技術を用いて、画面上に要素の有無を検出するかどうかを確認し得る。いくつかの実施形態では、デザイナ310に実装され得る数百または数千でさえのアクティビティが存在してもよい。しかし、本発明の範囲を逸脱することなく、いずれかの数および/またはアクティビティのタイプを利用することができる。
【0053】
UI自動化アクティビティ330は、低レベルのコード(例えば、CVアクティビティ)で記述され、UI層を介したアプリケーションとの対話を促進する特別な低レベルのアクティビティのサブセットである。特定の実施形態では、UI自動化アクティビティ300は、例えば、ウィンドウメッセージなどを介したユーザー入力をシミュレートしてもよい。UI自動化アクティビティ330は、ロボットが所望のソフトウェアと対話することを可能にするドライバ340を介して、これらの対話を促進する。例えば、ドライバ340は、OSドライバ342、ブラウザドライバ344、VMドライバ346、エンタープライズアプリケーションドライバ348などを含んでもよい。
【0054】
ドライバ340は、フックを探したり、キーを監視したりするなど、低レベルでOSと対話してもよい。それらは、Chrome(登録商標)、IE(登録商標)、Citrix(登録商標)、SAP(登録商標)などとの統合を促進してもよい。例えば、「クリック」アクティビティは、ドライバ340を介して、これらの異なるアプリケーションにおいて同じ役割を果たす。
【0055】
図4は、本発明の実施形態による、RPAシステム400を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム400は、図1および/または図2のRPAシステム100および/または200であってもよいし、それを含んでもよい。RPAシステム400は、ロボットを実行する複数のクライアントコンピューティングシステム410を含む。コンピューティングシステム410は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム420と通信することができる。コンダクタコンピューティングシステム420は、順番に、データベースサーバー430および任意のインデクササーバー440と通信することができる。
【0056】
図1および図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、いずれかの適切なクライアントおよび/またはサーバーソフトウェアを使用することができることに留意すべきである。例えば、コンダクタは、クライアントコンピューティングシステム上で、非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバーサイドアプリケーションを実行してもよい。
【0057】
図5は、本発明の実施形態による、RPAが有効なアプリケーションのインスタンスを提供および/または実行するように構成されたコンピューティングシステム500を示すアーキテクチャ図である。いくつかの実施形態では、コンピューティングシステム500は、本明細書に描かれたおよび/または記載された1または複数のコンピューティングシステムであってもよい。コンピューティングシステム500は、情報を通信するためのバス505または他の通信機構と、情報を処理するためのバス505に結合されたプロセッサ(複数可)510とを含む。プロセッサ(複数可)510は、中央処理ユニット(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらのいずれかの組み合わせを含む、いずれかのタイプの一般的または特定用途向けプロセッサであり得る。プロセッサ(複数可)510はまた、複数の処理コアを有してもよく、コアの少なくとも一部は、特定の機能を実行するように構成され得る。いくつかの実施形態では、複数並列処理が使用されてもよい。特定の実施形態では、少なくとも1つのプロセッサ(複数可)510は、生物学的ニューロンを模倣する処理要素を含むニューロモーフィック回路であり得る。いくつかの実施形態では、ニューロモーフィック回路は、フォンノイマンコンピューティングアーキテクチャの典型的なコンポーネントを必要としない場合がある。
【0058】
コンピューティングシステム500は、プロセッサ(複数可)510によって実行される情報および命令を格納するためのメモリ515をさらに含む。メモリ515は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気ディスクもしくは光ディスクなどの静的記憶装置、または他のタイプの非一時的なコンピュータ読み取り可能な媒体、あるいはそれらのいずれかの組み合わせで構成され得る。非一時的なコンピュータ読み取り可能な媒体は、プロセッサ(複数可)510によりアクセス可能ないずれかの利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体または両方などを含み得る。また、媒体は、取り外し可能なもの、取り外し不可能なもの、または両方であってもよい。
【0059】
さらに、コンピューティングシステム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または複数のアンテナを含み得る。
【0060】
プロセッサ(複数可)510は、バス505を介して、プラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、電界放出ディスプレイ(FED)、有機発光ダイオード(OLED)ディスプレイ、フレキシブルOLEDディスプレイ、フレキシブル基板ディスプレイ、プロジェクションディスプレイ、4Kディスプレイ、高精細ディスプレイ、Retina(登録商標)ディスプレイ、IPS(In-Plane Switching)ディスプレイ、またはユーザーに情報を表示するためのいずれかの他の適切なディスプレイなどのディスプレイ525にさらに結合されている。ディスプレイ525は、抵抗方式、静電容量方式、表面弾性波(SAW)静電容量方式、赤外線方式、光学イメージング方式、分散信号方式、音響パルス認識方式、フラストレート全内部反射方式などを用いて、タッチ(ハプティック)ディスプレイ、3次元(3D)タッチディスプレイ、マルチ入力タッチディスプレイ、マルチタッチディスプレイなどとして構成されていてもよい。本発明の範囲を逸脱することなく、いずれかの好適な表示装置およびハプティックI/Oを使用することができる。
【0061】
コンピュータマウス、タッチパッドなどのようなキーボード530およびカーソル制御装置535は、ユーザーがコンピューティングシステム500とインターフェースすることを可能にするために、バス505にさらに結合されている。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しない場合があり、ユーザーは、ディスプレイ525および/またはタッチパッド(図示せず)のみを介してデバイスと対話することができる。入力デバイスの種類および組み合わせは、設計の選択の問題として使用され得る。特定の実施形態では、物理的な入力装置および/またはディスプレイは存在しない。例えば、ユーザーは、コンピューティングシステム500と通信している別のコンピューティングシステムを介してリモートでコンピューティングシステム500と対話してもよいし、コンピューティングシステム500は自律的に動作してもよい。
【0062】
メモリ515は、プロセッサ(複数可)510によって実行されたときに機能を提供するソフトウェアモジュールを格納する。モジュールは、コンピューティングシステム500のためのオペレーティングシステム540を含む。モジュールはさらに、本明細書に記載されたプロセスの全部もしくは一部またはその派生物を実行するように構成されたRPA統合モジュール545を含む。コンピューティングシステム500は、付加的な機能を含む1または複数の付加的な機能モジュール550を含み得る。
【0063】
当業者であれば、「システム」は、本発明の範囲から逸脱することなく、サーバー、組み込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、または他のいずれかの適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを理解するであろう。上述した機能を「システム」によって実行されるものとして提示することは、何ら本発明の範囲を限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図するものである。実際、本明細書に開示された方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と整合性のあるローカライズされた形態および分散された形態で実装されてもよい。
【0064】
本明細書で説明するシステム特色のいくつかは、実装の独立性をより強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタムの非常に大規模な集積(VLSI)回路またはゲートアレイ、ロジックチップ、トランジスタ、または他の個別部品のような既製の半導体を含むハードウェア回路として実装され得る。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジック装置、グラフィックス処理ユニットなどのプログラマブルハードウェア装置に実装され得る。
【0065】
モジュールはまた、様々なタイプのプロセッサによって実行されるためのソフトウェアに少なくとも部分的に実装され得る。例えば、実行可能コードの識別された単位は、例えば、オブジェクト、プロシージャ、または関数として編成されていてもよいコンピュータ命令の1または複数の物理的または論理的なブロックを含み得る。それにもかかわらず、実行可能な識別されたモジュールは、物理的に一緒に配置されている必要はなく、論理的に結合されたときにモジュールを含み、モジュールのために述べられた目的を達成するために、異なる場所に格納された別々の命令を含んでいてもよい。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュ装置、RAM、テープのようなコンピュータ読み取り可能な媒体、および/または本発明の範囲から逸脱することなくデータを格納するために使用される他のいずれかの非一時的なコンピュータ読み取り可能な媒体に格納されていてもよい。
【0066】
実際、実行可能コードのモジュールは、単一の命令であってもよいし、多数の命令であってもよいし、さらには、複数の異なるコードセグメント、異なるプログラム間、および複数のメモリ装置間に分散されていてもよい。同様に、操作データは、モジュール内で識別され、ここで示されてもよく、いずれかの適切なタイプのデータ構造体内でいずれかの適切な形態で具現化され、組織化され得る。操作データは、単一のデータセットとして収集されてもよいし、または異なる記憶装置にわたり異なる場所に分散されていてもよく、少なくとも部分的には、単にシステムまたはネットワーク上の電子信号として存在していてもよい。
【0067】
図6Aは、本発明の実施形態による、RPAシステム600と統合されたローコードアプリケーション開発プラットフォーム602を示すアーキテクチャ図である。しかしながら、いくつかの実施形態では、RPAシステム600は存在しなくてもよく、RPAが有効なアプリケーションインスタンス612は、ローカルロボット(例えば、アテンディッドロボット640a)とのみ対話してもよい。RPAシステム600は、RPAサービスプラットフォーム600aとアンアテンディッドロボット640aとを含む。アテンディッドロボット640bは、ユーザーデバイス610(すなわち、コンピューティングシステム)上に配置され、アンアテンディッドロボット640aは、RPAサービスプラットフォーム600aに操作的に結合されている。いくつかの実施形態では、アンアテンディッドロボット640aおよびアテンディッドロボット640bのうちの1つまたは両方からのロボット(複数可)は、ユーザーデバイス610上のRPAが有効なアプリケーションインスタンス612によって呼び出されてもよい。特定の実施形態では、アプリケーション開発プラットフォーム602のサブセットまたは全ての要素は、ユーザーデバイス610上に配置され、および/またはユーザーデバイス610によって引き起こされるその実行が可能である。いくつかの実施形態では、デザインポータル604、オブジェクトリポジトリ606、およびビルドサーバー608は、RPAが有効なアプリケーションがユーザーデバイス610に展開される前に、開発コンピューティングシステム(図示せず)によって使用される。
【0068】
RPAシステム600は、クラウドベースのインフラストラクチャ、オンプレミスのインフラストラクチャ、またはそれらの組み合わせとして実装されてもよい。RPAサービスプラットフォーム600aは、サービスとして利用可能な1または複数のRPAプロセスを含んでもよい。いくつかの実施形態では、RPAサービスプラットフォーム600aのアーキテクチャおよび機能は、本発明の範囲から逸脱することなく、コンダクタ(例えば、図1のコンダクタ120)、アクションセンター(例えば、UiPath Action Center(商標))、アイテムを保持するコンテナ(例えば、UiPath Queues(商標))、または任意の他の適切なRPAサービスプラットフォームによって実現されてもよいか、または実現されてもよい。
【0069】
アプリケーション開発プラットフォーム602(例えば、ローコードアプリケーション開発プラットフォーム)は、ユーザーがプログラミング言語の知識をほとんどまたは全く持たずに、および/またはコードを分離して使用してアプリケーションを構築することを可能にするアプリケーション開発環境であってもよい。図6Aに示すように、アプリケーション開発プラットフォーム602は、デザインポータル604、オブジェクトリポジトリ606、およびビルドサーバー608を含む。オブジェクトリポジトリ606は、UIコンポーネント606a、画面レイアウト606b、およびウィジェット、テンプレート、テーブル、関数、デザインなどの他の機能要素606cを含む。オブジェクトリポジトリ606は、アプリケーションの開発中に使用され、いくつかの実施形態では、画面、UIコンポーネント、およびレポートを構築するために必要なオブジェクトのセットを定義して格納する。一旦、オブジェクトリポジトリ606が埋め尽くされると、いくつかの実施形態では、オブジェクトリポジトリ606から必要なオブジェクトをコピーすることによって、新しいアプリケーションコンポーネントを開発することができる。オブジェクトを一度作成することによって節約された開発時間に加えて、オブジェクトリポジトリ606は、いくつかの実施形態では、継承を使用することによって、アプリケーションオブジェクトを容易に更新するために使用され得る。オブジェクトがオブジェクトリポジトリ606からコピーされるとき、コピー、すなわち子は、いくつかの実施形態では、元のオブジェクト(すなわち、その親)のプロパティ定義を保持してもよい。リポジトリ内で親オブジェクトのプロパティが変更された場合、子が継承しているプロパティも自動的に更新される。オブジェクトリポジトリ606は、アプリケーションおよびそのデータ要素のルックアンドフィール(look and feel)に関する一貫性および制御を提供し得る。
【0070】
デザインポータル604は、RPAが有効なアプリケーションの設計、開発、およびデプロイメントのための協調的な環境を提供してもよい。デザインポータル604は、いくつかの実施形態では、ドラッグアンドドロップ機能または他の類似の機能を使用してアプリケーションを設計するために、開発者によって使用されてもよい。デザインポータル604は、アプリケーションの異なる機能を構築するためのワークスペース環境を提供してもよく、RPAサービスプラットフォーム600aおよび1または複数のユーザーコンピューティングシステム(例えば、ユーザーデバイス610)と接続するための1または複数の機能を含んでもよい。
【0071】
ビルドサーバー608は、分散開発プロジェクトを構築するための集中化され、安定した、かつ信頼性の高い環境であり得る。しかし、いくつかの実施形態では、ビルドサーバーは必要なく、アプリケーションはワンクリックデプロイメントを使用して展開されてもよい。ビルドサーバー608は、問題にフラグを立て、開発者にコンフリクトが存在するか、または依存関係が不足していることを通知するように構成されていてもよい。ビルドサーバー608は、エンドユーザーの環境を模倣するようにさらに構成されてもよい。このようにして、ビルドサーバー608は、個々の開発者のローカル構成が、開発されたアプリケーションが作成環境とは異なる動作をそれらのハードウェア上で行う原因となっている領域を強調し得る。ビルドサーバー608はまた、いくつかの実施形態では、開発者のローカルマシン上のリソースを解放することにより、開発プロセスを高速化してもよい。
【0072】
いくつかの実施形態では、開発者は、RPAが有効なアプリケーション(本明細書では「RPAアプリケーション」とも呼ばれる)を開発するために、アプリケーション開発プラットフォーム602のデザインポータル604にアクセスする。RPAが有効なアプリケーションは、RPAプロセスと統合されたコンピューティングシステム用のソフトウェアアプリケーション(例えば、デスクトップアプリケーション、ウェブアプリケーション、スマートフォンアプリケーション、タブレットアプリケーション、別のアプリケーションのサブコンポーネントなど)であってもよい。アプリケーション開発プラットフォーム602は、いくつかの実施形態では、ウェブベースのアプリケーション開発プラットフォームであってもよいし、またはユーザーデバイス610にインストールされるアプリケーション開発プラットフォームであってもよい。特定の実施形態では、開発者は、新規画面の追加、RPAサービスプラットフォーム600aとの接続、機能の取得など、ドラッグアンドドロップ機能およびデザインポータル604に存在する複数の機能コンポーネントを使用して、オブジェクトリポジトリ606からのUIコンポーネント606a、画面レイアウト606b、および他の機能コンポーネント606cを使用したアプリケーションの視覚的なプレゼンテーションを設計してもよい。さらに、開発者は、例えば、RPAサービスプラットフォーム600aがウェブベースのアプリケーションである場合、ウェブサーバーを介して、またはRPAサービスプラットフォーム600aが開発者コンピューティングシステム上のローカルアプリケーションである場合、オペレーティングシステムを介して、アプリケーションとRPAサービスプラットフォーム600aとの間の接続を要求してもよい。なお、アプリケーションは、テナント名、ユーザー名、およびパスワードを用いた認証後にRPAサービスプラットフォーム600aに接続してもよいし(または、アプリケーションがクラウド上にあり、コンダクタがオンプレミス上にあるハイブリッドでもよい)、アプリケーションとRPAサービスプラットフォーム600aとの接続は、RPAサービスプラットフォーム600aへの既存の登録等に基づいて自動的に確立されてもよい。
【0073】
RPAサービスプラットフォーム600aとの接続に成功すると、RPAサービスプラットフォーム600aに関連付けられた異なるプロセスおよびロボット(例えば、アテンディッドロボット640a)がデザインポータル604に表示され、アプリケーションの1または複数のUI要素が、RPAサービスプラットフォーム600aおよび/またはローカルアテンディッドロボット640bに関連付けられた1または複数のRPAプロセスおよびアンアテンディッドロボット640aとリンクされてもよい。プロセスは、1または複数のRPAワークフローを含んでもよい。選択されたRPAプロセスは、いくつかの実施形態では、処理されたものをロボットとリンクさせる間に、開発者によって「アテンディッド」、「アンアテンディッド」、または「インテリジェント」として指定されてもよい。
【0074】
この段階では、RPAが有効なアプリケーションは、RPAサービスプラットフォーム600aに関連付けられたRPAプロセスと統合される。RPAが有効なアプリケーションが1または複数のRPAプロセスとリンクされると、RPAが有効なアプリケーションは、ビルドサーバー608(1つが使用されている場合-上記のように、いくつかの実施形態では、ワンクリックデプロイメントが使用されてもよい)に送られ、RPAが有効なアプリケーションの異なるインスタンスの集約を実行し(例えば、複数の開発者がアプリケーションの異なる機能に取り組んでおり、それによってアプリケーションの異なるインスタンスが作成されるというシナリオがあるかもしれない)、RPAが有効なアプリケーションを編集して、それが正しく動作しているかどうかをテストする。エラーが見つかった場合は、エラーレポートが生成され、開発者と共有され得る。ビルドサーバー608はまた、アプリケーションモデルを管理およびバージョン管理するための中央リポジトリ上のRPAが有効なアプリケーション内のアーティファクト(例えば、モデル、スタイルシート、カスタムJavascriptクラスなど)からデプロイメントパッケージを作成してもよく、ここでは、アプリケーションアーティファクトはバージョン管理され、それぞれのプロジェクトフォルダに格納される。
【0075】
いくつかの実施形態では、一旦、RPAが有効なアプリケーションが1または複数のRPAプロセスとリンクされると、ビルドサーバー608の上記機能の少なくともいくつかはスキップされてもよく、そのように、ビルドサーバー608は、いくつかの開発シナリオのために任意であってもよい。次に、RPAが有効なアプリケーション(例えば、アプリケーションインスタンス612)は、1または複数のユーザーデバイス610に展開される。1または複数のプロセスへの参照(プロセスIDなど)は、アプリケーションインスタンス612および/またはアプリケーション開発プラットフォーム602において、JSON(Javascript Object Notation)オブジェクトとして格納されてもよい。
【0076】
図6Bは、本発明の実施形態による、アプリケーション設計時間と実行時の間のローコードアプリケーション開発プラットフォーム602とRPAサービスプラットフォーム600aとの間の対話を示す。図6Bにおいて、アプリケーション開発プラットフォーム602(例えば、アプリケーションインスタンス612)を用いて開発されたRPAアプリケーションは、設計時間構成622aと実行時間構成622bとを有する。くつかの実施形態では、開発者コンピューティングシステム(設計ポータル604を介して)は、アプリケーション設計時間622aの間にRPAサービスプラットフォーム600aと対話してもよく、ユーザーコンピューティングシステム610(RPAが有効なアプリケーションインスタンス612を介して)は、実行時間622bにRPAサービスプラットフォーム600aと対話してもよい。アプリケーションの設計時間とアプリケーションの実行時間との間に、異なるステップが関与し得る。アプリケーション開発プラットフォーム602は、アプリケーション開発プラットフォーム602を使用して作成された各アプリケーションインスタンスのためのアプリケーションインスタンス識別子(ID)を作成し得る。
【0077】
設計時間622aの間、アプリケーション開発プラットフォーム602は、RPAサービスプラットフォーム600aと、初期化、プロセス選択、およびウェブフック登録を624で実行する。初期化は、いくつかの実施形態では、RPAアプリケーションをRPAサービスプラットフォーム600aに接続するためのRPAサービスプラットフォーム600aの統一リソースロケータ(URL)を介してRPAサービスプラットフォーム600aに接続要求を送信し、認証のためのテナント名、ユーザー名、およびパスワードを提供することによって実行され得る。あるいは、RPAアプリケーションは、RPAサービスプラットフォーム600aへのユーザーデバイス610の既に存在する登録に基づいて自動的に接続されてもよい。ユーザーデバイス610が既にRPAサービスプラットフォーム600aに登録されている場合、RPAサービスプラットフォーム600aは、接続要求が登録されたユーザーデバイスから来ていることを識別し、更なる認証なしに要求を速やかに受け入れることができる。
【0078】
接続を確立すると、RPAサービスプラットフォーム600aに関連付けられたRPAプロセス、ロボット、および機械のリストが、設計ポータル604上にレンダリングされてもよい。表示されたRPAプロセスのリストから1または複数のRPAプロセスが選択され得、選択されたRPAプロセスは、RPAアプリケーションの1または複数のUI要素とリンクされ得る。RPAプロセスは、タスクもしくはプロセスを完了するためのRPAワークフロー、またはRPAサービスプラットフォーム600aから実行中のRPAプロセスのキューに利用可能なプロセスを追加するためのRPAワークフローを含んでもよい。開発者は、設計時に選択されたRPAプロセスにロボットタイプ(例えば、アテンディッド、アンアテンディッド、またはインテリジェント)を割り当ててもよく、選択されたRPAプロセスは、ジョブを開始したり、またはRPAサービスプラットフォーム600aからのキューに利用可能なプロセスを追加したりするなど、異なる機能のためにロボットにリンクされてもよい。
【0079】
固有プロセスIDは、RPAサービスプラットフォーム600aに関連付けられた選択されたRPAプロセスごとに生成されてもよい。アプリケーション開発プラットフォーム602は、固有プロセスIDを使用して、選択されたRPAプロセスごとにウェブフックをRPAサービスプラットフォーム600aに登録する。いくつかの実施形態では、アプリケーション開発プラットフォーム602は、RPAサービスプラットフォーム600aとの接続の確立中に使用されたURLに対応するRPAサービスプラットフォーム600aへのコールバックURLを使用して、固有プロセスIDを登録してもよい。選択されたRPAプロセスの入力および出力は、アプリケーションの1または複数のUI要素にリンクされてもよい。選択されたRPAプロセスの入力および出力の1または複数のUI要素へのリンクは、いくつかの実施形態では、デザインポータル604におけるアプリケーション開発に関連付けられたキャンバスコントロールを使用して行われてもよい。選択されたRPAプロセスの出力は、リンクされたUI要素を介して実行時に選択されたRPAプロセスの成功または失敗のいずれかを提供するように構成されていてもよい。障害が発生した場合、出力は、いくつかの実施形態では、障害の理由および問題を修正するための提案とともに、プロセスの障害を示す情報を表示し得る。リンクされたRPAプロセスは、アプリケーション内にJSONオブジェクトとして格納され得る。RPAアプリケーションが開発され、シミュレーションされると、RPAアプリケーションは、いくつかの実施形態では、ドックされた.exeファイルまたはウェブベースのアプリケーションとして、ユーザーデバイス610上の626で展開される。特定の実施形態では、RPAアプリケーションは、その製品版へのURLを介してアクセスし得る。
【0080】
いくつかの実施形態では、ユーザーデバイス610上のRPAアプリケーションの実行時間622bの間に、アプリケーションインスタンス(例えば、アプリケーションインスタンス612)は、ユーザーデバイス610上でローカルに実行されている1または複数のアテンディッドロボット(例えば、アテンディッドロボット640b)、リモートで実行されており、かつRPAサービスプラットフォーム600aを介してアクセス可能なアンアテンディッドロボット、またはその両方と対話することができるユーザーデバイス610上にレンダリングされる。特定の実施形態では、ユーザーがアプリケーションインスタンス612を実行するか、またはさもなくばアプリケーションインスタンス612が実行を引き起こすと、格納されたJSONオブジェクトがJavascriptに変換され、Javascriptは、アプリケーションへの入力(例えば、UI要素をクリックする、画面をロードする、など)によってトリガされ、RPAサービスプラットフォーム600aへの呼び出しが行われる。アプリケーションインスタンス612の1または複数のUI要素は、リンクされたRPAプロセスを開始したり、実行中にリンクされたRPAプロセスのステータスを取得したりするなど、1または複数の機能(互換的に「ジョブ」と本明細書では呼ばれる)に関連付けられている。したがって、UI要素がトリガされるか、または別のRPAトリガが発生すると、それぞれのジョブが初期化され得る。初期化されたジョブごとにジョブIDが生成され得る。ジョブを初期化するためのプロセス開始要求が、628でRPAサービスプラットフォーム600aになされる。要求は、アプリケーションインスタンスID、固有プロセスID、およびジョブIDを含んでもよい。
【0081】
RPAサービスプラットフォーム600aは、登録されたウェブフックで提供された固有プロセスIDに基づいて初期化されたRPAプロセスを識別し、初期化されたRPAプロセスを実行するためにロボットを割り当ててもよい。割り当てられたロボットは、特定のルールに基づいて特別に選択されてもよいし、動的に選択されてもよい。RPAプロセスが完了すると、RPAサービスプラットフォーム600aは、アプリケーションインスタンスID、固有プロセスID、およびジョブIDとともに、630でプロセス出力をアプリケーション開発プラットフォーム602に送信する。代替的に、いくつかの実施形態では、RPAサービスプラットフォーム600aは、RPAプロセスのステータス更新などの中間結果を、アプリケーション開発プラットフォーム602(例えば、設計時間のための開発者コンピューティングシステムまたは実行時間のためのユーザーデバイス610)に、アプリケーションインスタンスID、固有プロセスID、およびジョブIDとともに送信してもよい。プロセスの開始時、プロセスの終了時、またはその間のどこでも、そのような中間結果および潜在的な他の任意の所望の通信は、ローカルに実行されるロボットのためのIPCを介して発生してもよい。いくつかの実施形態のこのIPC能力は、デフォルトで提供されてもよいし、オプションでユーザーが選択した機能として利用可能であってもよい。IPCは、いくつかの実施形態では双方向性であってもよい。
【0082】
特定の実施形態では、RPAサービスプラットフォーム600aは、アプリケーションインスタンスID、固有プロセスID、およびジョブIDに基づいて、実行時にアプリケーションインスタンス612に直接出力を送信してもよい。アプリケーション開発プラットフォーム602は、アプリケーションインスタンスIDに基づいて、プロセス開始要求が行われたアプリケーションインスタンス612を識別し、正しいアプリケーションインスタンス632に出力を送信してもよい。アプリケーションインスタンス612は、出力を受信すると、受信した出力を634でそれぞれのUI要素に結合する。出力は、アプリケーションインスタンスを介してユーザーに表示されてもよい。
【0083】
図7は、本発明の実施形態による、アプリケーション開発プラットフォームを使用したRPAアプリケーションの開発プロセス700を示すフローチャートである。図7は、図6Aおよび図6Bの説明と関連して記載される。
【0084】
ステップ702において、アプリケーション開発プラットフォーム(例えば、アプリケーション開発プラットフォーム602)のユーザーによって、RPAアプリケーションを作成するためのワークスペースが選択される。RPAアプリケーションは、例えば、ウェブアプリケーション、サイドバーアプリケーション、デスクトップアプリケーション、ウィジェット、全画面アプリケーション、埋め込みアプリケーション、RPAロボッ、または本発明の範囲を逸脱することなく、任意の所望の目的に適した任意の他のRPAが組み込まれたアプリケーションであってもよい。アプリケーション開発プラットフォーム602は、いくつかの実施形態では、1または複数のデザインタブを含んでもよい。1または複数のデザインタブは、ラベル、テーブル、リスト、ボタンなどの1または複数のデザイン機能を含むことができるコンポーネント/デザインパレットタブを含んでもよい。1または複数のデザインタブは、異なるタイプの画面レイアウトの集合を含んでもよいビュータブ(例えば、ツリービュータブ)を含んでもよい。例えば、図9Aの画面レイアウト908を参照のこと。ワークスペースを選択するために、アプリケーション開発プラットフォーム602は、画面レイアウトの集合から画面レイアウトの選択を受信してもよい。RPAアプリケーションの開発のために、それぞれの画面レイアウトを画面上にレンダリングしてもよい。画面レイアウトは、1または複数のユーザーインターフェースの1または複数のUI要素(例えば、UIコンポーネント606a)が配置され得るビジュアルモデルであってもよい。いくつかの実施形態では、アプリケーション開発プラットフォーム602は、RPAアプリケーション開発のプロセスを開始する間に、RPAアプリケーションのアプリケーションインスタンスIDを生成してもよい。アプリケーションインスタンスIDは、作成された各RPAアプリケーションを固有に認識するために使用され得る。あるいは、いくつかの実施形態では、アプリケーションインスタンスIDは、RPAアプリケーションの開発が完了すると、RPAアプリケーションに与えられてもよい。
【0085】
ステップ704では、提供されている場合には、アプリケーション開発プラットフォーム602のドラッグアンドドロップ機能、ポイントアンドクリック機能、ユーザー指定の数式および式、またはそれらの組み合わせなどを使用して、コンポーネントタブから1または複数の設計機能をドラッグしてレイアウト上にドロップするために、RPAアプリケーションの選択された画面レイアウトを有する1または複数のUI要素が埋め込まれる。1または複数の設計機能は、RPAアプリケーションのための1または複数のユーザーインターフェースを構築するために使用され得る。レイアウト上に1または複数のデザイン機能をドロップすると、1または複数のユーザーインターフェースの1または複数のUI要素がRPAアプリケーションのレイアウト上に埋め込まれ得る。例えば、クリック可能なボタンなどの1または複数のデザイン機能は、コンポーネントタブからドラッグしてレイアウト上にドロップすることで、RPAアプリケーションのレイアウト上にボタンインターフェースを作成し得る。このように、アプリケーション開発プラットフォーム602は、ユーザーがコーディングの知識をほとんどまたは全く持たずにRPAアプリケーションを作成することを可能にする。
【0086】
ステップ706において、RPAアプリケーションを作成した後、アプリケーション開発プラットフォーム602を介して、RPAアプリケーションとRPAサービスプラットフォーム600aとの間に接続が確立される。接続を確立するために、ユーザーは、アプリケーション開発プラットフォーム602において、RPAサービスプラットフォーム600aのアドレス(例えば、URLアドレス)を入力し、ユーザー資格情報を入力してもよい。RPAサービスプラットフォーム600aのアドレスは、アプリケーション開発プラットフォーム602によってメモリに格納され得る。したがって、RPAサービスプラットフォーム600aのアドレスは、メモリから取得され得る。いくつかの実施形態では、RPAサービスアドレスは、プラットフォーム上で現在認証されたユーザーに基づいて検出されてもよい(例えば、ユーザーは、彼または彼女のクラウドアカウント上で利用可能なコンダクタサービスから選択してもよい)。
【0087】
ユーザー資格情報は、テナント名、ユーザー名、およびパスワードなどのユーザー提供の資格情報を使用して、RPAサービスプラットフォーム600aへの接続を確立する前に認証され得る。アプリケーション開発プラットフォーム602は、ユーザー提供の資格情報と、ユーザーの予め格納された資格情報とを比較することによって、資格情報の妥当性を決定してもよい。アプリケーション開発プラットフォーム602は、ユーザーがRPAサービスプラットフォーム600aへの接続を確立することを許可されているかどうかを確認するために、ユーザーの資格情報を認証してもよい。例えば、ユーザー資格情報の認証に失敗した場合、RPAサービスプラットフォーム600aへの接続は、アプリケーション開発プラットフォーム602によって拒否されてもよい。このように、アプリケーション開発プラットフォーム602は、不正なユーザーがRPAサービスプラットフォーム600aを使用することを防止し得る。いくつかの実施形態では、接続は、シングルサインオン(SSO)または他の認証メカニズムを使用して確立されてもよく、この場合、RPAサービスプラットフォーム600aに登録されているユーザーデバイスは、テナント名、ユーザー名、およびパスワードなどのさらなる詳細を提供することなく、接続要求を受信したときに自動的に接続され得る。
【0088】
いくつかの実施形態では、RPAアプリケーションおよびRPAサービスプラットフォーム600aの間の接続は、RPAサービスプラットフォーム600aの入力されたURLとユーザー資格情報の認証の成功とに基づいて確立される。いくつかの実施形態では、アプリケーション開発プラットフォーム602およびRPAサービスプラットフォーム600aの間のアプリケーションレベルの接続が作成される。
【0089】
アプリケーション開発プラットフォーム602およびRPAサービスプラットフォーム600aの間の接続は、RPAアプリケーションによって取得されてもよいRPAサービスプラットフォーム600aのRPA機能の全てまたはサブセットへのアクセスを提供し得る。例えば、コードアプリケーション開発プラットフォーム602は、RPAアプリケーションによって使用するために、所望のRPA機能に関連付けられた1または複数のRPAプロセスをRPAサービスプラットフォーム600aから取得してもよい。
【0090】
ステップ708では、RPAサービスプラットフォーム600aで利用可能な1もしくは複数のRPAプロセスのリスト、ローカルでRPAアプリケーションのインスタンスを実行するであろうユーザーマシンで利用可能な1もしくは複数のRPAプロセスのリスト、またはその両方がアプリケーション開発プラットフォーム602上に表示される。図9DのRPAプロセスリスト914を参照のこと。例えば、アプリケーション開発プラットフォーム602は、RPAサービスプラットフォーム600aとの間で確立された接続に基づいて、RPAサービスプラットフォーム600aから取得されたRPAプロセスのリストを表示するように構成され得る。これらのプロセスは、RPAサービスプラットフォーム600aを介してアクセス可能なアンアテンディッドロボットに関連付けられてもよく、いくつかの実施形態では、RPAアプリケーションが展開されるローカルマシン(複数可)上で利用可能なアテンディッドロボットを含んでもよい。特定の実施形態では、アテンディッドロボットプロセスは、ローカルマシン(複数可)への接続(複数可)を介して提供される。アプリケーション開発プラットフォーム602はまた、1または複数のRPAプロセスのリストの少なくとも1つのRPAプロセスに関連付けられた1または複数のパラメータを表示するように構成され得る。
【0091】
ステップ710において、アプリケーション開発プラットフォーム602は、UI要素または別のトリガ(例えば、RPAサービスプラットフォーム600aを介して利用可能なもの、ユーザーデバイス610上で利用可能なもの、またはその両方)との対話を介して呼び出されるRPAプロセスの表示されたリストから、少なくとも1つのRPAプロセスの選択を受信する。ステップ712では、例えば、少なくとも1つの選択されたRPAプロセスが、ドラッグアンドドロップ機能または他のリンク機能を使用して、RPAアプリケーションと(例えば、1または複数のユーザーインターフェースの少なくとも1つのUI要素と、変数の変更と、トリガイベントまたはステータスの変更などと、)統合される。
【0092】
アプリケーション開発プラットフォーム602は、少なくとも1つのRPAプロセスの選択および割り当てごとに固有プロセスIDを生成してもよい。いくつかの実施形態では、ユーザーは、表示されたRPAプロセスのリストから少なくとも1つのRPAプロセスを選択し得る。ユーザーはまた、特定の実施形態では、少なくとも1つのRPAプロセスに関連付けられた1まはた複数のパラメータを選択し得る。RPAサービスプラットフォーム600aは、いくつかの実施形態では、選択されたRPAプロセスのそれぞれにアンアテンディッドロボットを割り当ててもよい。ロボットは、ルールのセットに基づいて、特別に割り当てられてもよいし、動的に割り当てられてもよい。ロボット(複数可)にリンクされた選択されたRPAプロセスのそれぞれは、RPAアプリケーションにJSONオブジェクトとして格納され得る。いくつかの実施形態では、1または複数のUI要素は、それぞれの1または複数のRPAプロセスに対してアプリケーションプログラミングインターフェース(API)呼び出しを行うように構成され得る。
【0093】
ステップ714において、アプリケーション開発プラットフォーム602は、アンアテンディッドロボットが使用される場合、アンアテンディッドロボット(複数可)によって実行される各選択されたRPAプロセスについて、RPAサービスプラットフォーム600aに通知を送信する。いくつかの実施形態では、少なくとも1つのRPAプロセスへのウェブフックのチェックが実行されてもよい。ウェブフックが存在する場合、RPAプロセスは既にRPAサービスプラットフォーム600aに登録されている。ウェブフックが見つからない場合、選択されたRPAプロセスおよび割り当てられたロボットのリストを含む、新しいウェブフックが作成され、RPAサービスプラットフォーム600aに格納され得る。通知は、RPAサービスプラットフォーム600aと共有される各RPAプロセスのために生成された固有のプロセスIDを含み得る。したがって、RPAサービスプラットフォーム600aは、選択されたRPAプロセスおよび割り当てられたロボットのそれぞれについて更新され得る。通知は、いくつかの実施形態では、RPAサービスプラットフォーム600aのアドレス(例えば、コールバックURL)に基づいて、RPAサービスプラットフォーム600aに送信され得る。
【0094】
RPAプロセス(複数可)と統合された各UI要素は、いくつかの実施形態では、割り当てられたロボット(複数可)に割り当てられたRPAプロセス(複数可)に関連付けられたタスクを開始するためのトリガポイントであり得る。UI要素のためのJavaScriptは、入力に基づいてトリガされるRPAプロセスにリンクされ得、RPAアプリケーションからRPAサービスプラットフォーム600aへの呼び出しが行われ、RPAサービスプラットフォーム600aからアンアテンディッドロボットのための標準APIを使用して割り当てられたロボットへの呼び出しが行われ、そのUI要素に関連付けられたRPAプロセスが実行される。アテンディッドロボットがRPAプロセスと同じコンピューティングシステム上にローカルに存在する実施形態では、例えば、呼び出しは、IPCを介してRPAサービスプラットフォーム600aにではなく、直接ロボットに行われてもよい。RPAプロセスの出力は、ユーザーデバイス610に関連付けられたディスプレイに表示され得る。
【0095】
ステップ716で、開発されたRPAアプリケーションは、マシン(例えば、ユーザーデバイス610)に展開され、そのマシン上でローカルに実行されているおよび/またはリモートで実行されている関連する1または複数のプロセスを実行し、制御し、または呼び出す。なお、RPAアプリケーションは、他のアプリケーションの動作を中断することなく、ユーザーデバイス610上で他のアプリケーションと並行して表示されるように構成され得る。非限定的な例では、RPAアプリケーションは、ユーザーデバイス610のディスプレイ上またはユーザーデバイス610に関連付けられたサイドバーアプリケーションとしてレンダリングされたウェブアプリケーションであり得る。サイドバーアプリケーションは、アクセスを容易にするために、ユーザーデバイスの画面上にドックされた.exeファイルとして提供され得る。ユーザーは、すでに実行中のアプリケーションで進行中の作業を一時停止することなく、RPAアプリケーションによってローカルに実行されているアテンディッドロボットトを制御し得る。いくつかの実施形態では、遠隔で走行するアンアテンディッドロボットが制御されてもよい。特定の実施形態では、ユーザーは、ユーザーデバイス610上でローカルに実行されている異なるアテンディッドロボットにアクセスするために、複数のウィンドウを介してナビゲートする必要がない場合がある。その代わり、ユーザーはRPAアプリケーションを介してローカルで実行されている全てのアテンディッドロボットに簡単にアクセスして制御し得る。
【0096】
図8は、本発明の実施形態による、RPAアプリケーションの実行プロセスを示すフローチャートである。図8は、図6Aおよび図6Bの説明と関連して記載される。
【0097】
ステップ802において、RPAアプリケーションのインスタンス(例えば、インスタンス612)がユーザーデバイス610上で実行される。RPAロボットがユーザーデバイス610にローカルであるアテンディッドシナリオでは、選択されたRPAアプリケーションを実行した後、RPAアプリケーションの1または複数のUI要素または他の何らかのトリガを介して入力が受信され得る。特定の実施形態では、条件が満たされたときに生成されるトリガ(例えば、プロセスが完了したとき、パラメータが変更または特定の値になったとき、画面の読み込み、コントロールの変更、ボタンのクリックなどのようなイベント)など、RPAプロセスへのイベントベースのトリガがRPAアプリケーションから受信され得る。ユーザーがRPAアプリケーションを実行すると、いくつかの実施形態では、1または複数のRPAプロセスに関連付けられたJSONオブジェクトがJavaScript出力に変換されてもよい。
【0098】
ステップ804において、1または複数のRPAプロセスが開始される。1または複数のRPAプロセスは、UI要素との対話、イベントベースのトリガなどに基づいて開始され得る。アテンディッドロボットの場合、RPAアプリケーションは、アテンディッドRPAロボット(複数可)のRPAプロセス(複数可)をローカルに開始し得る。アンアテンディッドロボットの場合、RPAアプリケーションは、RPAサービスプラットフォーム600aを介してRPAプロセス(複数可)を開始してもよいし、イベントに基づいて1または複数の関連するRPAプロセスのステータスを取得してもよい。アンアテンディッドロボットの場合、開始時に、入力を受信したまたはイベントに基づいて、UI要素に関連付けられた少なくとも1つのプロセスを実行するために要求がRPAサービスプラットフォーム600aに送信される。入力がJavaScriptをトリガすると、RPAアプリケーションからRPAサービスプラットフォーム600aへの呼び出しが行われてもよく、RPAサービスプラットフォーム600aからは、それぞれの1または複数のRPAプロセスを実行するためのそれぞれのアンアテンディッドロボットが呼び出されてもよい。いくつかの実施形態では、アプリケーション開発プラットフォーム602は、RPAプロセスを開始するためにRPAサービスプラットフォーム600aになされた各要求に対してジョブIDを生成し得る。生成されたジョブIDは、さらなる参照のために、アプリケーション開発プラットフォーム602によって、それぞれのアプリケーションインスタンスIDとともに格納され得る。RPAサービスプラットフォーム600aに送信される要求は、RPAプロセスの開始要求に関連するジョブID、RPAアプリケーションインスタンス612に関連するアプリケーションインスタンスID、開始されたRPAプロセスに関連する固有プロセスID、およびRPAプロセスに関連する他の情報(例えば、ユーザーシステム識別子、ユーザー資格情報など)を含んでもよい。RPAサービスプラットフォーム600aは、登録されたウェブフックを参照して、固有プロセスIDおよびジョブIDに基づいて、少なくとも1つのプロセスにアンアテンディッドロボットを割り当ててもよい。
【0099】
ステップ806において、アンアテンディッドロボットの場合、アプリケーション開発プラットフォーム602によって、少なくとも1つのRPAプロセスの完了を示す通知がRPAサービスプラットフォーム600aから取得される。したがって、アプリケーション開発プラットフォーム602は、少なくとも1つのRPAプロセスの状態に関して、リアルタイムまたはほぼリアルタイムで通知されてもよい。
【0100】
ステップ808において、アプリケーション開発プラットフォーム602は、少なくとも1つのRPAプロセスによって生成されたRPAサービスプラットフォーム600aからの出力を受信する。生成された出力は、少なくとも1つのRPAプロセスの結果を示すメッセージ、少なくとも1つのRPAプロセスのステータスなどを含み得る。例えば、出力は、成功、失敗、エラー、プロセスを実行した後の結果、開始されたRPAプロセスの完了時に別のRPAプロセスが実行されたことの表示などを含んでもよい。いくつかの実施形態では、この出力は、RPAアプリケーションインスタンス612に直接ルーティングされてもよい。
【0101】
ステップ810において、アテンディッドまたはアンアテンディッドロボット実行のための出力は、それぞれ、IPCまたはローコードアプリケーション開発プラットフォーム602を介して、RPAプロセス(複数可)を開始したアプリケーションインスタンス(例えば、アプリケーションインスタンス612)にルーティングされる。アンアテンディッドロボット実行の場合は、これは、アプリケーションインスタンスID、固有ID、およびジョブIDに基づいて実行され得る。固有ID、アプリケーションインスタンスID、およびジョブID、またはIPCを介して受信されたもしくはアプリケーションインスタンス612のためにローカルに格納されたそれぞれの情報は、出力を表示すべき1または複数のUI要素にさらにルーティングするために使用され得る。アプリケーション開発プラットフォーム602は、いくつかの実施形態では、出力をRPAアプリケーションの1または複数のUI要素に結合してもよい。
【0102】
ステップ812において、ロボットの実行結果に基づいてUI要素が修正される場合、出力は、RPAアプリケーションインスタンスの1または複数のUI要素を介してレンダリングされる。
【0103】
図9A~9Eは、本発明の実施形態による、RPAサービスプラットフォームと統合されたRPAアプリケーションのための設計時間環境および実行時環境を示す複数のユーザーインターフェース(UI)をまとめて示す。いくつかの実施形態では、アプリケーション開発プラットフォーム602は、RPAアプリケーションを作成するために使用され得る。ローコードアプリケーション開発プラットフォームには、RPAアプリケーションを作成するための各種デザインツールおよびドラッグアンドドロップ機能が含まれ得る。図9Aにおいて、アプリケーション開発プラットフォームは、設計ツールセクション902とRPAアプリケーションを設計するためのワークスペースを含む設計セクション904とを含む。設計ツールセクション902は、ツリービュータブ906とコンポーネントタブ910とを含む。ツリービュータブ906は、異なるタイプの画面レイアウト908の集合など、RPAアプリケーションを設計するための様々なオプションを含んでもよい。画面レイアウト908aのような少なくとも1つの画面レイアウトの選択を受けると、選択された画面レイアウトは、RPAアプリケーションのワークスペースのデザインを作成するために使用される。また、画面レイアウトは、展開されたシステムでRPAアプリケーションがアクセスされたときに、RPAモデルの視覚的なプレゼンテーションを表すものであってもよい。例えば、画面レイアウト908aのような画面レイアウトを選択すると、RPAアプリケーションは、例えば、サイドバーアプリケーションとしてユーザーデバイスの左側にレンダリングされてもよい。しかし、本発明の範囲を逸脱することなく、どのようなアプリケーションのタイプおよび位置であっても実装され得る。設計セクション904は、開発者が、ユーザーデバイス(例えば、ユーザーデバイス610)上でレンダリングされるように、RPAアプリケーションの視覚的外観をプレビューすることを可能にしてもよく、また、開発者は、アプリケーションに異なる機能性を提供するために、ワークスペース内に機能的要素を埋め込んでもよい。設計セクション904は、選択された画面レイアウトに応じて、ワークスペース領域の視覚的表現を変更してもよい。
【0104】
コンポーネントタブ910は、図9Bに示すように、ラベル、表、リスト、ボタンなどの1または複数のデザイン機能を含んでもよい。設計機能は、RPAアプリケーションのための1または複数のユーザーインターフェースを構築するために使用され得る。例えば、label関数は、ラベルに関連付けられた関数に名前を提供する、RPAアプリケーションでテキストラベルを追加するために使用され得る。例えば、顧客のプロファイル関連データを返す機能には、「顧客データ」というラベルが提供され得る。テーブル機能は、RPAアプリケーションでテーブルフィールドを作成するために使用され得る。リスト機能は、RPAアプリケーションでデータのリストが入力または出力されるように、一連のテキストボックスを追加するために使用され得る。いくつかの実施形態では、リスト機能は、ラベル機能に特異的に関連付けられてもよい。例えば、請求履歴、プラン更新などの機能のリストは、ラベルの顧客データに特異的に関連付けられていてもよい。ボタン機能は、RPAアプリケーションにボタンを追加するために使用されてもよい。各設計機能は、RPAアプリケーションに追加された時点でRPA機能に関連付けられ得る。ユーザーは、ローコードアプリケーション開発プラットフォームのドラッグアンドドロップ機能を利用して、設計関数をRPAアプリケーションに追加してもよい。例えば、ユーザーは、デザインツールセクション902からデザイン機能をドラッグして、RPAアプリケーションのワークスペースにデザイン機能をドロップしてもよい。同様に、RPAアプリケーションは、1または複数の設計機能を用いて構築されてもよい。このように、ローコードアプリケーション開発プラットフォームは、ユーザーがコーディングの知識をほとんどまたは全く持たずにRPAアプリケーションを構築することを可能にしてもよい。
【0105】
さらに、1または複数の設計関数を用いて構築された1または複数のユーザーインターフェースは、1または複数のRPA機能に関連付けられていてもよい。ローコードアプリケーション開発プラットフォームは、RPAサービスプラットフォーム600aなどのRPAサービスプラットフォームに接続して、RPAサービスプラットフォームに関連付けられたアンアテンディッドロボットのための1または複数のRPA機能にアクセスしてもよい。追加的にまたは代替的に、ローコードアプリケーション開発プラットフォームは、ユーザーデバイス上でアテンディッドロボットのアテンディッドロボット機能を提供してもよい。RPAサービスプラットフォームは、RPA機能に関連付けられた1または複数のRPAプロセスを含んでもよい。
【0106】
図9Cに示すように、アイコン「+」は、RPAサービスプラットフォームとの接続プロセスを開始するために使用される。開発者が「+」アイコンをクリックすると、ウィンドウ916は、RPAサービスプラットフォームのURL、ローコードアプリケーション開発プラットフォームのテナント名、およびユーザーパスワードなどの入力フィールドを含む設計セクション904にレンダリングされる。入力フィールドに詳細を入力すると、ローコードアプリケーション開発プラットフォームはRPAサービスプラットフォームに接続される。オーケストレータに接続するプロセスは、いくつかの実施形態では、1回限りの認証プロセスであり得る。
【0107】
いくつかの実施形態では、ローコードアプリケーション開発プラットフォームがすでにRPAサービスプラットフォームに接続されている場合、「+」アイコンをクリックすると、「既存のRPAサービスプラットフォームを継続する」または「新しいRPAサービスプラットフォーム接続を追加する」というオプションが与えられ得る。「既存のRPA サービスプラットフォームを継続する」というオプションを選択すると、認証ステップなしで、それぞれのRPAサービスプラットフォームに関連付けられた利用可能なRPAプロセスのリストを提供し得、一方で、「新しいRPAサービスプラットフォーム接続を追加する」というオプションを選択すると、RPAサービスプラットフォームのURL、ローコードアプリケーション開発プラットフォームのテナント名、および1回限りの認証プロセスのためのユーザーパスワードなどの接続情報を提供するようにユーザーに促し得る。特定の実施形態では、ローコードアプリケーション開発プラットフォームがすでにRPAサービスプラットフォームに接続されている場合、「+」アイコンをクリックすると、RPAサービスプラットフォームに関連付けられた利用可能なRPAプロセスが表示され得る。RPAサービスプラットフォームは、RPA機能に関連付けられた1または複数のRPAプロセスを実行するために、アンアテンディッドロボットをトリガする機能を有し得る。
【0108】
RPAサービスプラットフォームに接続すると、ローコードアプリケーション開発プラットフォームは、図9Dに示すように、RPAプロセス918のリストを表示してもよい。ユーザーは、表示されたRPAプロセス914のリストから少なくとも1つのRPAプロセスを選択し得る。選択されたRPAプロセスは、UI要素912および914などのRPAアプリケーションの1または複数のユーザーインターフェースの1または複数のUI要素に関連付けられてもよい。ユーザーは、ローコードアプリケーション開発プラットフォームのドラッグアンドドロップ機能を使用して、RPAプロセス918のリストから少なくとも1つのRPAプロセスを1または複数のUI要素に関連付け得る。このように、RPAアプリケーションは、RPA機能に関連付けられていてもよく、さらに、ローカルでRPAワークフローを処理できるようになっていてもよい。
【0109】
RPAアプリケーションは、ユーザーデバイス610などのユーザーデバイス上でレンダリングされてもよい。RPAアプリケーションは、同じユーザーデバイス上でレンダリングされた1または複数のアプリケーションと同時に機能し得る。例えば、RPAアプリケーション920は、図9Eに示すように、メインウィンドウ922で同時にレンダリングされた他のアプリケーションと同時に機能する。ユーザーは、RPAが有効なUI要素を使用して、それに関連付けられたRPAプロセスを起動し得る。
【0110】
いくつかの実施形態では、ユーザーは、1または複数のRPAが有効なUI要素に入力を提供してもよい。これは、図8のプロセス800と同様の方法で行われてもよい。RPAロボット(複数可)の実行からの出力は、図9Eに示すように、ポップアップウィンドウ924を介してユーザーデバイス上にレンダリングされ得る。
【0111】
図10は、本発明の実施形態による、RPAが有効なアプリケーションの開発プロセス1000を示すフローチャートである。1002では、アプリケーション開発プラットフォームのドラッグアンドドロップ機能を使用して、RPAアプリケーションのユーザーインターフェースに関連付けられた1または複数のUI要素が作成される。1004では、RPAアプリケーションは、任意に、RPAサービスプラットフォーム(例えば、RPAサービスプラットフォーム600a)に接続される。これは、アンアテンディッドRPAロボットのためのRPAプロセスを得るために行われ得る。1006では、RPAアプリケーションにおいてRPAを有効にするためのUI要素および/または他のトリガは、アテンディッド(ローカル)および/またはアンアテンディッド(リモート)RPAロボットのための1または複数のそれぞれのRPAプロセスとリンクされる。1008では、RPAアプリケーションのインスタンスがユーザーデバイス上にレンダリングされる。
【0112】
図11は、本発明の実施形態による、RPAが有効なアプリケーションを実行するためのプロセス1100を示すフローチャートである。いくつかの実施形態では、図10のプロセス1000は、RPAが有効なアプリケーションを作成するために、図11のプロセス1100の前に実行されてもよい。1102では、RPAアプリケーションは、タスクを実行するためのRPAロボットの開始のためのトリガを受信する。トリガは、ユーザーがRPAアプリケーションのRPAが有効なUI要素と対話したこと、イベントが発生したこと、変数が特定の値に設定されたことなどが原因であり得る。1104では、RPAアプリケーションは、アンアテンディッドロボット用のRPAサービスプラットフォームにまたはIPCを介してローカルで実行中のアテンディッドロボットに、プロセス開始要求を送信する。プロセス開始要求は、いくつかの実施形態では、ユーザーの対話または入力を受信したRPAが有効なUI要素と統合されたプロセスを実行するための要求を含み得る。1106では、アンアテンディッドRPAロボット実行のためのプロセス開始要求にジョブIDが割り当てられてもよい。1108では、アテンディッドRPAロボットについては、RPAロボットによりプロセスの実行から生成された出力は、IPCを介してロボットから受信され、ファイルに書き込まれ、データベースから取得されるなどして、またはアンアテンディッドRPAロボットについては、RPAサービスプラットフォームから受信される。いくつかの実施形態では、アンアテンディッドロボットは、出力をRPAが有効なアプリケーションのインスタンスに直接送信してもよい。1110では、RPAロボットの実行からの出力は、RPAアプリケーションに表示される。
【0113】
図12は、本発明の実施形態による、RPAプロセスを実行するためのアテンディッドまたはアンアテンディッドRPAロボットを検索し、RPAプロセスを実行するためのプロセス1200を説明するフローチャートである。いくつかの実施形態では、図10のプロセス1000は、RPAが有効なアプリケーションを作成するために、図12のプロセス1200の前に実行されてもよい。いくつかの実施形態では、プロセス1200は、RPAが有効なアプリケーションのためのアプリケーション開発プラットフォームにおいて選択されたインテリジェントロボット選択オプションのインテリジェントロボット選択を実装するために使用され得る。プロセスは、1202では、RPAロボットの開始または対話のためのトリガを受信することから始まる。トリガは、ユーザーがRPAアプリケーションのRPAが有効なUI要素と対話すること、イベントが発生すること(例えば、RPAが有効なアプリケーションまたは他のアプリケーション内のイベント、RPAアプリケーションが実行されているコンピューティングシステム、またはリモートコンピューティングシステム)、変数が特定の値に設定されるかもしくは特定の値に変更されること、または本発明の範囲から逸脱することなく他の適切なトリガによるものであり得る。
【0114】
次に、RPAが有効なアプリケーションは、1204でのプロセスのためにアテンディッドロボットをローカルに検索する。1206でローカルのアテンディッドロボットが見つかった場合、RPAが有効なアプリケーションは1208でアテンディッドロボットを実行するまたはその実行を引き起こす。RPAが有効なアプリケーションとアテンディッドロボットとの間の通信は、いくつかの実施形態では、IPCを介して行われてもよい。
【0115】
RPAプロセスに適したアテンディッドロボットが1206で見つからなかった場合、RPAが有効なアプリケーションは、1210でRPAプロセス用のアンアテンディッドロボットのためのRPAサービスプラットフォームに問い合わせを行う。適切なアンアテンディッドロボットが1212で見つかった場合、RPAが有効なアプリケーションは、RPAサービスプラットフォームを介してアンアテンディッドロボットの実行を引き起こし、1214でRPAサービスプラットフォームと通信する(例えば、TCP/IP、HTMLを用いて、イントラネットまたはLANを介したインターネット接続を介して)。いくつかの実施形態では、RPAが有効なアプリケーションが、アテンディッドまたはアンアテンディッドロボット実行中および/またはアテンディッドまたはアンアテンディッドロボット実行後に情報を表示する場合、RPAが有効なアプリケーションの特定のグラフィカル要素は、1216でこの情報を表示するように更新されてもよい。しかし、1212で適切なアンアテンディッドロボットが見つからなかった場合、RPAが有効なアプリケーションは1218で例外を投げ、プロセスを終了する。
【0116】
図7、8および10-12で実行されるプロセスステップは、本発明の実施形態に従って、図7、8および10-12で説明したプロセス(複数可)の少なくとも一部を実行するようにプロセッサ(複数可)への命令をエンコードするコンピュータプログラムによって実行されてもよい。コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体に具現化されていてもよい。コンピュータ読み取り可能な媒体は、ハードディスクドライブ、フラッシュ装置、RAM、テープ、および/またはデータを格納するために使用される他のそのような媒体または媒体の組み合わせであってもよいが、これらに限定されるものではない。コンピュータプログラムは、図7、8および10-12に記載されたプロセスステップの全部または一部を実装するために、コンピューティングシステム(例えば、図5のコンピューティングシステム500のプロセッサ(複数可)510)のプロセッサ(複数可)を制御するためのコード化された命令を含んでもよく、これはまた、コンピュータ読み取り可能な媒体に格納されてもよい。
【0117】
コンピュータプログラムは、ハードウェア、ソフトウェア、またはハイブリッド実装で実装され得る。コンピュータプログラムは、互いに操作可能な通信を行うモジュールで構成され得、情報または命令をディスプレイに送るように設計されている。コンピュータプログラムは、汎用コンピュータ、ASIC、またはいずれかの他の好適な装置で動作するように構成され得る。
【0118】
本発明の様々な実施形態のコンポーネントは、本明細書に一般的に記載され、図示されているように、様々な異なる構成で配置され、設計されてもよいことが、容易に理解されるであろう。したがって、添付の図に表されるような本発明の実施形態の詳細な説明は、特許請求されるような本発明の範囲を限定することを意図するものではなく、本発明の選択された実施形態を代表するものにすぎない。
【0119】
本明細書を通して記載された本発明の特色、構造、または特徴は、1または複数の実施形態では、いずれかの好適な方法で組み合わせられ得る。例えば、本明細書全体を通して「特定の実施形態」、「いくつかの実施形態」、または類似の言語を参照することは、実施形態に関連して記載された特定の特色、構造、または特徴が、本発明の少なくとも1つの実施形態に含まれていることを意味する。したがって、本明細書全体を通して「特定の実施形態では」、「いくつかの実施形態では」、「他の実施形態では」、または類似の言語の出現は、必ずしも全ての実施形態の同じグループを指すものではなく、記載された特色、構造、または特徴は、1または複数の実施形態ではいずれかの好適な方法で組み合わせられ得る。さらに、本明細書において、「a」および「an」という用語は、量の制限を示すものではなく、むしろ、参照される項目の少なくとも1つの存在を示すものである。
【0120】
本明細書全体を通して特色、利点、または類似の言語への参照は、本発明で実現され得る特色および利点の全てが、本発明のいずれかの単一の実施形態にあるべきであること、または本発明のいずれかの実施形態にあることを意味するものではないことに留意すべきである。むしろ、特色および利点に言及する言語は、実施形態に関連して記載された特定の特色、利点、または特徴が、本発明の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体での特色および利点の議論、ならびに類似の言語は、同じ実施形態を参照することができるが、必ずしもその必要性はない。
【0121】
さらに、本発明の記載された特色、利点、および特徴は、1または複数の実施形態では、いずれかの好適な方法で組み合わせることができる。関連する技術の当業者は、本発明が、1または複数の特定の実施形態の特定の特徴または利点なしに実施され得ることを認識するであろう。他の例では、追加の特徴および利点は、本発明の全ての実施形態には存在しないかもしれない特定の実施形態では認識され得る。
【0122】
以下の説明では、説明の目的のために、本開示の完全な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、本開示は、これらの具体的な詳細がなくても実施され得ることは、当業者には明らかであろう。他の実施例では、装置および方法は、本開示の不明瞭化を避けるために、ブロック図の形式でのみ示されている。
【0123】
本分野における通常の技術を有する者は、上述したような本発明を、異なる順序でのステップを用いて、および/または開示されているものとは異なる構成のハードウェア要素を用いて実施することができることを容易に理解するであろう。したがって、本発明は、これらの好ましい実施形態に基づいて説明されてきたが、本発明の精神および範囲内にとどまりながら、特定の変更、変形、および代替的な構成が明らかになることは、当業者には明らかであろう。したがって、本発明の範囲を決定するためには、添付の特許請求の範囲を参照すべきである。

図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9A
図9B
図9C
図9D
図9E
図10
図11
図12
【国際調査報告】