(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-31
(54)【発明の名称】ロボティックプロセスオートメーションのためのロボットのスケジューリング
(51)【国際特許分類】
G06F 9/50 20060101AFI20220124BHJP
G06Q 10/06 20120101ALI20220124BHJP
【FI】
G06F9/50 120A
G06Q10/06
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021505309
(86)(22)【出願日】2020-09-03
(85)【翻訳文提出日】2021-03-19
(86)【国際出願番号】 US2020049281
(87)【国際公開番号】W WO2021101616
(87)【国際公開日】2021-05-27
(32)【優先日】2019-11-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】90 Park Avenue,20th Floor,New York,NY 10016,United States of America
(74)【代理人】
【識別番号】100180781
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】バノウラ,ダニエル
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA07
(57)【要約】
クラウドでロボティックプロセスオートメーション(RPA)ワークフローを実行するためのシステムおよび方法が提供される。ユーザーグループに関連付けられたユーザーに対して、RPAワークフローを実行するためにスケジュールされたジョブを遂行するように指示が受信される。ジョブに関連付けられ、かつユーザーグループと同じアクセス権を持つロボットグループからロボットが識別される。ロボットをコンピューティングデバイスに割り当て、RPAワークフローを実行するためのジョブを遂行する。
【特許請求の範囲】
【請求項1】
ロボティックプロセスオートメーション(RPA)ワークフローを実行するためのコンピュータ実装方法であって、
アクセス権に関連付けられたユーザーグループに属するユーザーに対して、前記ユーザーのためにRPAワークフローを実行するためにスケジュールされたジョブを遂行するよう指示を受信し、
前記ユーザーグループと同じアクセス権に関連付けられたロボットグループからロボットを識別し、
前記RPAワークフローを実行するための前記ジョブを遂行するために、コンピューティングデバイスに前記ロボットを割り当てることを含む、コンピュータ実装方法。
【請求項2】
前記ロボットを動作させるために前記コンピューティングデバイスを起動し、
前記ロボットが前記ジョブを完了した後、前記コンピューティングデバイスをシャットダウンすることをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
ロボットグループからロボットを識別することは、
前記ジョブに関連付けられた前記ロボットグループから前記ロボットを識別することを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記ジョブに関連付けられた前記ロボットグループから前記ロボットを識別することは、
前記ジョブのジョブ識別(ID)を含む要求を送信し、
前記ジョブIDに関連付けられた前記ロボットグループから前記ロボットのロボットIDを受信することを含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記ユーザーグループに関連付けられたユーザーグループディレクトリと、前記ロボットグループに関連付けられた対応するロボットグループディレクトリとを含むアクセス権管理システムを維持することをさらに含み、前記ユーザーグループディレクトリは、前記ユーザーグループに関連付けられた前記アクセス権に前記ユーザーグループを関連付け、前記ロボットグループディレクトリは、前記ユーザーグループと同じアクセス権に前記ロボットグループを関連付ける、請求項1に記載のコンピュータ実装方法。
【請求項6】
ユーザーのためにRPAワークフローを実行するためにスケジュールされたジョブを遂行するように指示を受信することは、
トリガイベントに応答して、前記ユーザーのために前記RPAワークフローを実行するためにスケジュールされた前記ジョブを遂行する前記指示を受信することを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
以下により、前記RPAワークフローを実行するためにスケジュールされた前記ジョブをスケジューリングすることをさらに含む、請求項1に記載のコンピュータ実装方法。
前記ユーザーのための前記RPAワークフローを実行するための要求を受信し、
前記ユーザーグループに対応する前記ロボットグループを識別し、そして
前記ロボットグループの前記ロボットにより前記RPAワークフローを実行するための前記ジョブをスケジューリングする。
【請求項8】
ロボティックプロセスオートメーション(RPA)ワークフローを実行するためのシステムであって、
コンピュータプログラム命令を格納するメモリと、
前記コンピュータプログラム命令を遂行するように構成された少なくとも1つのプロセッサと、を含み、前記コンピュータプログラム命令は、前記少なくとも1つのプロセッサが、以下を含む動作を実行するように構成される、システム。
アクセス権に関連付けられたユーザーグループに属するユーザーに対して、RPAワークフローを実行するためにスケジュールされたジョブを遂行するよう指示を受信し、
前記ユーザーグループと同じアクセス権に関連付けられたロボットグループからロボットを識別し、
前記RPAワークフローを実行するための前記ジョブを遂行するために、コンピューティングデバイスに前記ロボットを割り当てる。
【請求項9】
前記動作は、
前記ロボットを動作させるために前記コンピューティングデバイスを起動し、
前記ロボットが前記ジョブを完了した後、前記コンピューティングデバイスをシャットダウンすることをさらに含む、請求項8に記載のシステム。
【請求項10】
ロボットグループからロボットを識別することは、
前記ジョブに関連付けられた前記ロボットグループから前記ロボットを識別することを含む、請求項8に記載のシステム。
【請求項11】
前記ジョブに関連付けられた前記ロボットグループから前記ロボットを識別することは、
前記ジョブのジョブ識別(ID)を含む要求を送信し、
前記ジョブIDに関連付けられた前記ロボットグループから前記ロボットのロボットIDを受信することを含む、請求項10に記載のシステム。
【請求項12】
前記動作は、
前記ユーザーグループに関連付けられたユーザーグループディレクトリと、前記ロボットグループに関連付けられた対応するロボットグループディレクトリとを含むアクセス権管理システムを維持することをさらに含み、前記ユーザーグループディレクトリは、前記ユーザーグループに関連付けられた前記アクセス権に前記ユーザーグループを関連付け、前記ロボットグループディレクトリは、前記ユーザーグループと同じアクセス権に前記ロボットグループを関連付ける、請求項8に記載のシステム。
【請求項13】
ユーザーのためにRPAワークフローを実行するためにスケジュールされたジョブを遂行するように指示を受信することは、
トリガイベントに応答して、前記ユーザーのために前記RPAワークフローを実行するためにスケジュールされた前記ジョブを遂行するように前記指示を受信することを含む、請求項8に記載のシステム。
【請求項14】
前記動作は、以下により、前記RPAワークフローを実行するためにスケジュールされた前記ジョブをスケジューリングすることをさらに含む、請求項8に記載のシステム。
前記ユーザーのための前記RPAワークフローを実行するための要求を受信し、
前記ユーザーグループに対応する前記ロボットグループを識別し、そして
前記ロボットグループの前記ロボットにより前記RPAワークフローを実行するための前記ジョブをスケジューリングする。
【請求項15】
ロボティックプロセスオートメーション(RPA)ワークフローを実行するための非一時的なコンピュータ読み取り可能な媒体上に格納されたコンピュータプログラムであって、前記プログラムは、少なくとも1つのプロセッサが、以下を含む動作を実行するように構成される、コンピュータプログラム。
アクセス権に関連付けられたユーザーグループに属するユーザーに対して、RPAワークフローを実行するためにスケジュールされたジョブを遂行するよう指示を受信し、
前記ユーザーグループと同じアクセス権に関連付けられたロボットグループからロボットを識別し、
前記RPAワークフローを実行するための前記ジョブを遂行するために、コンピューティングデバイスに前記ロボットを割り当てる。
【請求項16】
前記動作は、
前記ロボットを動作させるために前記コンピューティングデバイスを起動し、
前記ロボットが前記ジョブを完了した後、前記コンピューティングデバイスをシャットダウンすることをさらに含む、請求項15に記載のコンピュータプログラム。
【請求項17】
ロボットグループからロボットを識別することは、
前記ジョブに関連付けられた前記ロボットグループから前記ロボットを識別することを含む、請求項15に記載のコンピュータプログラム。
【請求項18】
前記ジョブに関連付けられた前記ロボットグループから前記ロボットを識別することは、
前記ジョブのジョブ識別(ID)を含む要求を送信し、
前記ジョブIDに関連付けられた前記ロボットグループから前記ロボットのロボットIDを受信することを含む、請求項17に記載のコンピュータプログラム。
【請求項19】
前記動作は、
前記ユーザーグループに関連付けられたユーザーグループディレクトリと、前記ロボットグループに関連付けられた対応するロボットグループディレクトリとを含むアクセス権管理システムを維持することをさらに含み、前記ユーザーグループディレクトリは、前記ユーザーグループに関連付けられた前記アクセス権に前記ユーザーグループを関連付け、前記ロボットグループディレクトリは、前記ユーザーグループと同じアクセス権に前記ロボットグループを関連付ける、請求項15に記載のコンピュータプログラム。
【請求項20】
ユーザーのためにRPAワークフローを実行するためにスケジュールされたジョブを遂行するように指示を受信することは、
トリガイベントに応答して、前記ユーザーのために前記RPAワークフローを実行するためにスケジュールされた前記ジョブを遂行するように前記指示を受信することを含む、請求項15に記載のコンピュータプログラム。
【請求項21】
前記動作は、以下により、前記RPAワークフローを実行するためにスケジュールされた前記ジョブをスケジューリングすることをさらに含む、請求項15に記載のコンピュータプログラム。
前記ユーザーのための前記RPAワークフローを実行するための要求を受信し、
前記ユーザーグループに対応する前記ロボットグループを識別し、そして
前記ロボットグループの前記ロボットにより前記RPAワークフローを実行するための前記ジョブをスケジューリングする。
【請求項22】
ロボティックプロセスオートメーション(RPA)ワークフローを実行するためのジョブをスケジューリングするコンピュータ実装方法であって、
アクセス権に関連付けられたユーザーグループに属するユーザーに対して、RPAワークフローを実行する要求を受信し、
前記ユーザーグループに対応する、前記ユーザーグループと同じアクセス権に関連付けられたロボットグループを識別し、
前記ロボットグループのロボット上で前記RPAワークフローを実行するためのジョブをスケジューリングすることを含む、コンピュータ実装方法。
【請求項23】
前記ユーザーグループに関連付けられたユーザーグループディレクトリと、前記ロボットグループに関連付けられた対応するロボットグループディレクトリとを含むアクセス権管理システムを維持することをさらに含み、前記ユーザーグループディレクトリは、前記ユーザーグループに関連付けられた前記アクセス権に前記ユーザーグループを関連付け、前記ロボットグループディレクトリは、前記ユーザーグループと同じアクセス権に前記ロボットグループを関連付ける、請求項22に記載のコンピュータ実装方法。
【請求項24】
前記ユーザーグループに対応するロボットグループを識別することは、
前記ユーザーのユーザー識別(ID)を含む要求を前記アクセス権管理システムに送信し、
前記アクセス権管理システムから前記ユーザーIDに対応する前記ロボットグループのロボットグループIDを受信すること、を含む、請求項23に記載のコンピュータ実装方法。
【請求項25】
以下により、前記RPAワークフローを実行するための前記ジョブを遂行するように前記ロボットを割り当てることをさらに含む、請求項22に記載のコンピュータ実装方法。
前記ユーザーのために前記RPAワークフローを実行するためにスケジュールされた前記ジョブを遂行するように指示を受信し、
前記ロボットグループから前記ロボットを識別し、そして
前記RPAワークフローを実行するための前記ジョブを遂行するために、コンピューティングデバイスに前記ロボットを割り当てる。
【請求項26】
ロボティックプロセスオートメーション(RPA)ワークフローを実行するためのジョブをスケジューリングするシステムであって、
コンピュータプログラム命令を格納するメモリと、
前記コンピュータプログラム命令を遂行するように構成された少なくとも1つのプロセッサと、を含み、前記コンピュータプログラム命令は、前記少なくとも1つのプロセッサが、以下を含む動作を実行するように構成される、システム。
アクセス権に関連付けられたユーザーグループに属するユーザーに対して、RPAワークフローを実行する要求を受信し、
前記ユーザーグループに対応する、前記ユーザーグループと同じアクセス権に関連付けられたロボットグループを識別し、
前記ロボットグループのロボット上で前記RPAワークフローを実行するためのジョブをスケジューリングすることを含む、システム。
【請求項27】
前記動作は、
前記ユーザーグループに関連付けられたユーザーグループディレクトリと、前記ロボットグループに関連付けられた対応するロボットグループディレクトリとを含むアクセス権管理システムを維持することをさらに含み、前記ユーザーグループディレクトリは、前記ユーザーグループに関連付けられた前記アクセス権に前記ユーザーグループを関連付け、前記ロボットグループディレクトリは、前記ユーザーグループと同じアクセス権に前記ロボットグループを関連付ける、請求項26に記載のシステム。
【請求項28】
前記ユーザーグループに対応するロボットグループを識別することは、
前記ユーザーのユーザー識別(ID)を含む要求を前記アクセス権管理システムに送信し、
前記アクセス権管理システムから前記ユーザーIDに対応する前記ロボットグループのロボットグループIDを受信すること、を含む、請求項27に記載のシステム。
【請求項29】
前記動作は、以下により、前記RPAワークフローを実行するための前記ジョブを遂行するように前記ロボットを割り当てることをさらに含む、請求項26に記載のシステム。
前記ユーザーのために前記RPAワークフローを実行するためにスケジュールされた前記ジョブを遂行するように指示を受信し、
前記ロボットグループから前記ロボットを識別し、そして
前記RPAワークフローを実行するための前記ジョブを遂行するために、コンピューティングデバイスに前記ロボットを割り当てる。
【請求項30】
ロボティックプロセスオートメーション(RPA)ワークフローを実行するためのジョブをスケジューリングするための非一時的なコンピュータ読み取り可能な媒体上に格納されたコンピュータプログラムであって、前記プログラムは、少なくとも1つのプロセッサが、以下を含む動作を実行するように構成される、コンピュータプログラム。
アクセス権に関連付けられたユーザーグループに属するユーザーに対して、RPAワークフローを実行する要求を受信し、
前記ユーザーグループに対応する、前記ユーザーグループと同じアクセス権に関連付けられたロボットグループを識別し、
前記ロボットグループのロボット上で前記RPAワークフローを実行するためのジョブをスケジューリングする。
【請求項31】
前記動作は、
前記ユーザーグループに関連付けられたユーザーグループディレクトリと、前記ロボットグループに関連付けられた対応するロボットグループディレクトリとを含むアクセス権管理システムを維持することをさらに含み、前記ユーザーグループディレクトリは、前記ユーザーグループに関連付けられた前記アクセス権に前記ユーザーグループを関連付け、前記ロボットグループディレクトリは、前記ユーザーグループと同じアクセス権に前記ロボットグループを関連付ける、請求項30に記載のコンピュータプログラム。
【請求項32】
前記ユーザーグループに対応するロボットグループを識別することは、
前記ユーザーのユーザー識別(ID)を含む要求を前記アクセス権管理システムに送信し、
前記アクセス権管理システムから前記ユーザーIDに対応する前記ロボットグループのロボットグループIDを受信すること、を含む、請求項31に記載のコンピュータプログラム。
【請求項33】
前記動作は、以下により、前記RPAワークフローを実行するための前記ジョブを遂行するように前記ロボットを割り当てることをさらに含む、請求項30に記載のコンピュータプログラム。
前記ユーザーのために前記RPAワークフローを実行するためにスケジュールされた前記ジョブを遂行するように指示を受信し、
前記ロボットグループから前記ロボットを識別し、そして
前記RPAワークフローを実行するための前記ジョブを遂行するために、コンピューティングデバイスに前記ロボットを割り当てる。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本出願は、2019年11月20日に出願された米国特許出願第16/689,193号の優先権を主張し、その開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本発明は概して、ロボティックプロセスオートメーションに関するものであり、より詳細には、ロボティックプロセスオートメーションのためのロボットのスケジューリングに関するものである。
【背景技術】
【0003】
ロボティックプロセスオートメーション(RPA)は、ソフトウェアロボットを使ってワークフローおよびプロセスを自動化するプロセスオートメーションの一形態である。RPAは、反復的な作業および/または労働集約的な作業を自動化することで、コスト削減および生産性の向上を実現するために、組織内に実装され得る。
【0004】
一般的に、RPAは組織内に複数のロボットをプロビジョニング(提供)して実装される。ロボットは、組織内の異なるチームが様々な処理を行うために利用される。しかし、同じロボットを複数のチームで利用すると、あるチームのデータが他のチームのデータにアクセスされてしまう可能性があり、プライバシーの問題が生じる可能性がある。このようなプライバシーの問題に対処するために、従来は、組織内の各チームに専用のロボットを提供していた。しかし、この従来のアプローチでは、処理を行っていなくても、これらのロボットがオン状態である必要がある。このような従来のアプローチでは、ロボット1台あたりのライセンスコスト、必要な電力、および計算資源の形態の資源を無駄にしてしまうことになる。
【0005】
(実施形態の簡単な概要)
1または複数の実施形態により、ロボティックプロセスオートメーション(RPA)を実行するためのシステムおよび方法が提供される。ユーザーグループに関連付けられたユーザーに対して、RPAワークフローを実行するためにスケジュールされたジョブを遂行するように指示が受信される。ジョブに関連付けられ、かつユーザーグループと同じアクセス権を持つロボットグループからロボットが識別される。ロボットをコンピューティングデバイスに割り当て、RPAワークフローを実行するためのジョブを遂行する。
【0006】
一実施形態では、コンピューティングデバイスは、ジョブを遂行するためにロボットを遂行するために起こされ、ロボットがジョブを完了した後にシャットダウンされる。
【0007】
一実施形態では、ロボットは、ジョブに関連付けられたロボットグループから識別される。ロボットは、ジョブのジョブ識別(ID)を含む要求を送信し、ジョブIDに関連付けられたロボットグループからロボットのロボットIDを受信することによって識別され得る。
【0008】
一実施形態では、アクセス権管理システムは、ユーザーグループに関連付けられたユーザーグループディレクトリと、ロボットグループに関連付けられた対応するロボットグループディレクトリと、を含む。ユーザーグループディレクトリは、ユーザーグループに関連付けられたアクセス権にユーザーグループを関連付け、ロボットグループディレクトリは、ユーザーグループと同じアクセス権にロボットグループを関連付ける。
【0009】
一実施形態では、ユーザーのためのRPAワークフローを実行するためのジョブを遂行する指示は、トリガイベントに応答して受信される。
【0010】
一実施形態では、ジョブは、ユーザーのためのRPAワークフローを実行するための要求を受信し、ユーザーグループに対応するものとしてロボットグループを識別し、そしてロボットグループのロボットによりRPAワークフローを実行するためのジョブをスケジューリングすることによってスケジュールされる。
【0011】
1または複数実施形態により、ロボットプロセスオートメーション(RPA)ワークフローを実行するためのジョブをスケジューリングするためのシステムおよび方法が提供される。ユーザーグループに関連付けられたユーザーのためのRPAワークフローを実行するための要求が受信される。ユーザーグループに対応し、ユーザーグループと同じアクセス権に関連するロボットグループが識別される。ロボットグループのロボットに対してRPAワークフローを実行するためのジョブがスケジュールされる。
【0012】
一実施形態では、ロボットは、ユーザーのユーザー識別(ID)を含む要求を送信し、ユーザーIDに対応するロボットグループのロボットグループIDを受信することによって識別される。
【0013】
一実施形態では、ロボットは、ユーザーのためにRPAワークフローを実行するためにスケジュールされたジョブを遂行するように指示を受信し、ロボットグループからロボットを識別し、RPAワークフローを実行するためのジョブを遂行するために、コンピューティングデバイスにロボットを割り当てることによって、RPAワークフローを実行するためのジョブを遂行するように割り当てられる。
【0014】
(実施形態の詳細な説明)
本発明のこれらおよび他の利点は、以下の詳細な説明および添付の図面を参照することにより、当業者に明らかとなるであろう。
【図面の簡単な説明】
【0015】
【
図1】本発明の実施形態による、ロボティックプロセスオートメーションシステムを示すアーキテクチャ図である。
【0016】
【
図2】本発明の実施形態による、展開したロボティックプロセスオートメーションシステムの一例を示すアーキテクチャ図である。
【0017】
【
図3】本発明の実施形態による、ロボティックプロセスオートメーションシステムの簡略化されたデプロイメントの一例を示すアーキテクチャ図である。
【0018】
【
図4】本発明の実施形態による、組織にRPAを実装するための高レベルのフレームワークを示す。
【0019】
【
図5】本発明の実施形態による、1または複数のプロセスまたはワークフローを実行するためのロボットを割り当てるための高レベルのシステムアーキテクチャを示す。
【0020】
【
図6】本発明の実施形態による、ジョブをスケジューリングする方法のフローチャートである。
【0021】
【
図7】本発明の実施形態による、ジョブをスケジューリングするためのシステムアーキテクチャを示す。
【0022】
【
図8】本発明の実施形態による、ジョブを実行するための方法のフローチャートである。
【0023】
【
図9】本発明の実施形態による、ジョブを実行するためのシステムアーキテクチャを示す。
【0024】
【
図10】本発明の実施形態による、コンピューティングシステムのブロック図である。
【発明を実施するための形態】
【0025】
(詳細な説明)
ロボティックプロセスオートメーション(RPA)は、ワークフローおよびプロセスを自動化するために使用される。
図1は、1または複数の実施形態によるRPAシステム100のアーキテクチャ図である。
図1に示すように、RPAシステム100は、開発者がワークフローを使用して自動化プロセスを設計できるようにするためのデザイナ102を含む。より具体的には、デザイナ102は、ワークフローおよびワークフロー内のアクティビティを実行するためのロボットの開発およびデプロイメントを容易にする。デザイナ102は、アプリケーション統合のためのソリューションを提供するとともに、サードパーティアプリケーション、管理情報技術(IT)タスク、およびコンタクトセンター運営のビジネスプロセスを自動化する。デザイナ102の実施形態の商業的な一例は、UiPath Studio(商標)である。
【0026】
ルールベースのプロセスの自動化を設計する際に、開発者は、本明細書で「アクティビティ」と定義されるワークフローで開発されたカスタムセットのステップ間の実行順序およびその関係を制御する。各アクティビティは、ボタンをクリックする、ファイルを読む、ログパネルに書き込むなどのアクションを含み得る。いくつかの実施形態では、ワークフローは入れ子になっているか、または埋め込まれ得る。
【0027】
ワークフローのいくつかのタイプには、シーケンス、フローチャート、有限状態機械(FSM)、および/またはグローバル例外ハンドラなどを含み得るが、これらに限定されない。シーケンスは、ワークフローを乱雑にすることなく、あるアクティビティから別のアクティビティへのフローを可能にする、線形プロセスに特に適し得る。フローチャートは、特により複雑なビジネスロジックに適し得、複数の分岐ロジックオペレータを介して、より多様な方法で意思決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)またはアクティビティによりトリガされる有限の数の状態をそれらの実行中に使用し得る。グローバル例外ハンドラは、実行エラーに遭遇したときのワークフローの動作を決定したり、プロセスをデバッグしたりするのに特に適し得る。
【0028】
ワークフローがデザイナ102内で開発されると、ビジネスプロセスの遂行は、コンダクタ104により調整され、デザイナ102内で開発されたワークフローを遂行する1または複数のロボット106を調整する。コンダクタ104の実施形態の商業的な一例は、UiPath Orchestrator(商標)である。コンダクタ220は、RPA環境におけるリソースの生成、監視、およびデプロイメントの管理を容易にする。一例では、コンダクタ104は、ウェブアプリケーションである。コンダクタ104はまた、サードパーティのソリューションおよびアプリケーションとの統合ポイントとして機能し得る。
【0029】
コンダクタ104は、ロボット106を集中ポイントから接続して実行することにより、全てのロボット106を管理し得る。コンダクタ104は、プロビジョニング、デプロイメント、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含むがこれらに限定されない様々な能力を有し得る。プロビジョニングは、ロボット106とコンダクタ104(例えば、ウェブアプリケーション)との間の接続を作成し、維持することを含み得る。デプロイメントは、実行のために割り当てられたロボット106へのパッケージバージョンの正しい配信を保証することを含み得る。構成は、ロボット環境およびプロセス構成の維持および配信を含み得る。キューイングは、キューおよびキュー項目の管理を提供することを含み得る。監視は、ロボットの識別データを追跡し、ユーザーの権限を維持することを含み得る。ロギングは、データベース(例えば、SQLデータベース)および/または別のストレージメカニズム(例えば、大規模なデータセットを格納し、迅速にクエリを実行する能力を提供するElasticSearch(登録商標)へのログの保存およびインデックス作成を含み得る。コンダクタ104は、サードパーティのソリューションおよび/またはアプリケーションのための通信の集中点として動作することにより、相互接続性を提供し得る。
【0030】
ロボット106は、デザイナ102で構築されたワークフローを実行する実行エージェントである。ロボット106のいくつかの実施形態の1つの商業的な例は、UiPath Robots(商標)である。ロボット106のタイプは、アテンディッドロボット108およびアンアテンディッドロボット110を含んでもよいが、これらに限定されない。アテンディッドロボット108は、ユーザーまたはユーザーイベントによりトリガされ、同じコンピューティングシステム上で人のユーザーと並んで動作する。アテンディッドロボット108は、人のユーザーが様々なタスクを達成するのを支援してもよく、人のユーザーおよび/またはユーザーイベントにより直接トリガされてもよい。アテンディッドロボットの場合、コンダクタ104は、集中プロセスデプロイメントおよびロギング媒体を提供してもよい。特定の実施形態では、アテンディッドロボット108は、ウェブアプリケーションの「ロボットトレイ」からまたはコマンドプロンプトからのみ起動され得る。アンアテンディッドロボット110は、仮想環境内で無人モードで動作し、多くのプロセスを自動化するために使用することができ、例えば、大量のプロセス、後工程などに使用され得る。アンアテンディッドロボット110は、リモート実行、監視、スケジューリング、および作業キューのサポートの提供を担当し得る。アテンディッドロボットおよびアンアテンディッドロボットの両方は、メインフレーム、ウェブアプリケーション、VM、エンタープライズアプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって生成されたもの)、およびコンピューティングシステムアプリケーション(例えば、デスクトップおよびラップトップアプリケーション、モバイル装置アプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むが、これらに限定されない様々なシステムおよびアプリケーションを自動化し得る。
【0031】
いくつかの実施形態では、ロボット106は、デフォルトで、Microsoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。その結果、そのようなロボット106は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開くことができ、Windows(登録商標)サービスの権利を持ち得る。いくつかの実施形態では、ロボット106は、所定のロボット106が設置されているユーザーと同じ権利を有するユーザーモードで設置され得る。
【0032】
いくつかの実施形態におけるロボット106は、複数のコンポーネントに分割され、それぞれが特定のタスクに特化されている。いくつかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ104と遂行ホスト(すなわち、ロボット106が遂行されるコンピューティングシステム)との間のプロキシとして動作する。これらのサービスは、ロボット106の資格情報を任されて管理する。コンソールアプリケーションは、ローカルシステム下のSCMにより起動される。いくつかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ104と実行ホストとの間のプロキシとして動作する。ユーザーモードロボットサービスは、ロボット106の資格情報を任されて管理し得る。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションが自動的に起動され得る。エグゼキュータは、Windows(登録商標)セッションの下で与えられたジョブを遂行し得(例えば、それらがワークフローを遂行し得る)、それらは、モニタ毎のドットパーインチ(DPI)設定を認識し得る。エージェントは、システムトレイウィンドウに利用可能なジョブを表示するWindows(登録商標) Presentation Foundation(WPF)アプリケーションであり得る。エージェントはサービスのクライアントとなり得る。エージェントは、ジョブの開始または停止、設定の変更を依頼し得る。コマンドラインは、サービスのクライアントであり、ジョブの開始を要求してそれらの出力を待つことができるコンソールアプリケーションである。ロボットコンポーネントを分割することで、開発者、サポートユーザーを支援し、コンピューティングシステムをより簡単に実行し、各ロボットコンポーネントが何を実行しているかを特定し、追跡できるようにし得る。例えば、エグゼキュータとサービスのために異なるファイアウォールルールを設定するなど、ロボットコンポーネントごとに特別な動作を設定し得る。さらなる例として、いくつかの実施形態では、エグゼキュータはモニタごとのDPI設定を認識していてもよく、その結果、ワークフローは、作製されたコンピューティングシステムの構成に関係なく、任意のDPIで遂行され得る。
【0033】
図2は、1または複数の実施形態によるRPAシステム200を示す。RPAシステム200は、
図1のRPAシステム100であってもよいし、その一部であってもよい。「クライアント側」、「サーバー側」、またはその両方が、本発明の範囲から逸脱することなく、いずれかの所望の数のコンピューティングシステムを含むことができることに留意すべきである。
【0034】
本実施形態のクライアント側に示すように、コンピューティングシステム202は、1または複数のエグゼキュータ204、エージェント206、およびデザイナ208を含む。他の実施形態では、デザイナ208は、同じコンピューティングシステム202上で実行されていなくてもよい。エグゼキュータ204(これは、上述したようなロボットコンポーネントであってもよい)がプロセスを実行し、いくつかの実施形態では、複数のビジネスプロセスが同時に実行されてもよい。この例では、エージェント206(例えば、Windows(登録商標)サービス)は、エグゼキュータ204を管理するための単一の接続ポイントである。
【0035】
いくつかの実施形態では、ロボットは、マシン名とユーザー名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理し得る。同時に実行される(例えば、高密度(HD)環境など)複数の対話型セッションをサポートするコンピューティングシステム(Windows(登録商標)Server 2012など)では、複数のロボットが同時に実行され得、それぞれが一意のユーザー名を使用して別々のWindows(登録商標)セッションで実行され得る。
【0036】
エージェント206はまた、ロボットの状態を送信し(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)、遂行されるパッケージの必要なバージョンをダウンロードすることにも責任を負う。エージェント206とコンダクタ212との間の通信は、いくつかの実施形態では、エージェント206により開始される。通知シナリオの例では、エージェント206は、後にコンダクタ212によりロボットにコマンド(例えば、開始、停止など)を送信するために使用されるWebSocketチャネルを開いてもよい。
【0037】
本実施形態のサーバー側に示すように、プレゼンテーション層は、ウェブアプリケーション214と、Open Data Protocol(OData)Representative State Transfe(REST)アプリケーションプログラミングインターフェース(API)エンドポイント216と、通知および監視API218と、を含む。サーバー側のサービス層は、API実装/ビジネスロジック220を含む。サーバー側の永続層は、データベースサーバー222とインデクササーバー224とを含む。コンダクタ212は、ウェブアプリケーション214、OData REST APIエンドポイント216、通知および監視API218、ならびにAPI実装/ビジネスロジック220を含む。
【0038】
様々な実施形態では、ユーザーがコンダクタ212のインターフェース(例えば、ブラウザ210を介して)で実行するほとんどのアクションは、様々なAPIを呼び出すことにより実行される。このような動作は、ロボット上でのジョブの起動、キュー内のデータの追加/削除、無人で実行するジョブのスケジューリングなどを含み得るが、これらに限定されない。ウェブアプリケーション214は、サーバープラットフォームのビジュアル層である。この実施形態では、ウェブアプリケーション214は、ハイパーテキストマークアップ言語(HTML)およびジャバスクリプト(JS)を使用する。しかし、本発明の範囲を逸脱することなく、いずれかの所望のマークアップ言語、スクリプト言語、または他のいずれかのフォーマットを使用し得る。ユーザーは、コンダクタ212を制御するための様々な動作を実行するために、本実施形態ではブラウザ210を介してウェブアプリケーション214からのウェブページと対話する。例えば、ユーザーは、ロボットグループを作成し、ロボットへのパッケージの割り当てを行い、ロボット毎および/またはプロセス毎のログを解析し、ロボットを起動しおよび停止などし得る。
【0039】
ウェブアプリケーション214に加えて、コンダクタ212は、OData REST APIエンドポイント216を公開するサービス層も含む(または、本発明の範囲を逸脱することなく他のエンドポイントが実装されてもよい)。REST APIは、ウェブアプリケーション214とエージェント206の両方により消費される。エージェント206は、この例示的な構成では、クライアントコンピュータ上の1または複数のロボットのスーパーバイザである。
【0040】
本実施形態のREST APIは、構成、ロギング、監視、およびキューイング機能をカバーする。構成RESTエンドポイントは、いくつかの実施形態では、アプリケーションのユーザー、権限、ロボット、アセット、リリース、および環境を定義し、構成するために使用されてもよい。ロギングRESTエンドポイントは、例えば、エラー、ロボットにより送信された明示的なメッセージ、およびその他の環境固有の情報など、様々な情報をログに記録するのに有用であり得る。デプロイメントRESTエンドポイントは、コンダクタ212においてジョブ開始コマンドが使用された場合に遂行されるべきパッケージのバージョンを問い合わせるためにロボットにより使用されてもよい。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キューおよびキューアイテムの管理を担ってもよい。RESTエンドポイントの監視は、ウェブアプリケーション214およびエージェント206を監視する。通知および監視API218は、エージェント206の登録、エージェント206への構成設定の配信、およびサーバーとエージェント206との間の通知の送受信に使用されるRESTエンドポイントであってもよい。通知および監視API218は、いくつかの実施形態では、WebSocket通信を使用してもよい。
【0041】
サーバー側の永続層は、本例示的な実施形態では、一対のサーバー-データベースサーバー222(例えば、SQLサーバー)およびインデクササーバー224-を含む。本実施形態におけるデータベースサーバー222は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を格納する。この情報は、いくつかの実施形態では、ウェブアプリケーション214を介して管理される。データベースサーバー222はまた、キューおよびキューアイテムを管理してもよい。いくつかの実施形態では、データベースサーバー222は、ロボットにより記録されたメッセージを(インデクササーバー224に加えて、またはインデクササーバー250に代えて)格納してもよい。いくつかの実施形態では任意であるが、インデクササーバー224は、ロボットにより記録された情報を保存し、インデックスを作成する。特定の実施形態では、インデクササーバー224は、構成設定を介して無効化されてもよい。いくつかの実施形態では、インデクササーバー224は、オープンソースプロジェクトの全文検索エンジンであるElasticSearch(登録商標)を使用する。ロボットにより記録されたメッセージ(例えば、ログメッセージまたはライン書き込みのようなアクティビティを使用して)は、ロギングRESTエンドポイント(複数可)を介してインデクササーバー224に送信されてもよく、そこで将来の利用のためにそれらはインデックス化される。
【0042】
図3は、1または複数の実施形態によるRPAシステム300の簡略化されたデプロイメントの一例を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム300は、
図1および
図2のそれぞれのRPAシステム100および/もしくは200であり得、または
図1および
図2のそれぞれのRPAシステム100および/もしくは200を含み得る。RPAシステム300は、ロボットを実行する複数のクライアントコンピューティングシステム302を含む。コンピューティングシステム302は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム304と通信することができる。コンダクタコンピューティングシステム304は、順番に、データベースサーバー306および任意のインデクササーバー308と通信する。
図2および
図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、いずれかの適切なクライアント/サーバーソフトウェアを使用することができることに留意すべきである。例えば、コンダクタは、クライアントコンピューティングシステム上で、非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバーサイドアプリケーションを実行してもよい。
【0043】
一実施形態では、RPAシステム300は、例えば、企業、機関、協会などの組織内で、または組織のために実装され得る。組織は、多数のグループ(またはサブグループ)を含んでもよい。例えば、組織は、財務および会計(F&A)グループを含み得、F&Aグループの下に買掛金(AP)グループがあり得る。機密情報および機密情報を保護するために、ユーザーが所属するグループに応じて、様々なファイル、フォルダ、サービスなどへのアクセスを許可したりまたは制限したりするアクセス権が定義されることがよくある。したがって、ユーザーの所属するグループに応じてユーザーのアクセス権を定義するために、例えばアクティブディレクトリ(AD)または軽量ディレクトリアクセスプロトコル(LDAP)などのアクセス権管理システムが実装され得る。
【0044】
図4は、1または複数の実施形態による、組織にRPAを実装するための高レベルフレームワーク400を示す。フレームワーク400は、組織の1または複数のユーザーおよびロボットに対するファイル、フォルダ、サービスなどへのアクセス権を管理するためのアクティブディレクトリ402(または任意の他の適切なアクセス権管理システム)を含む。
【0045】
アクティブディレクトリ402は、ユーザーコミュニティネームスペース内のユーザー(例えば、従業員)のためのアクセス権と、プロダクションネームスペース内のロボットのためのアクセス権を管理する。
図4に示すように、アクティブディレクトリ402は、ユーザーコミュニティネームスペース内のF&Aユーザーグループディレクトリ404の下に、F&Aユーザーグループディレクトリ404とAPユーザーグループディレクトリ406とを維持する。アクティブディレクトリ402は、グループごとにアクセス権を定義する。したがって、組織のAPグループに属するユーザーは、アクティブディレクトリ402のAPユーザーグループディレクトリ406に関連付けられ、かつAPユーザーグループディレクトリ406に関連付けられたアクセス権が割り当てられる。アクティブディレクトリ402は、各ユーザーのプロファイルを維持する。ユーザープロファイルは、ユーザーID、関連付けられたグループ、および他の任意の適切な情報を含み得る。新しいユーザーが組織のAPグループに参加する(例えば、採用される)とき、その新しいユーザーは、新しいユーザーをAPユーザーグループディレクトリ406に関連付ける新しいユーザー用のプロファイルを作成してアクティブディレクトリ402のAPユーザーグループディレクトリ406に追加され、それによってAPユーザーグループディレクトリ406に関連付けられた新しいユーザーのアクセス権が割り当てられる。
【0046】
時には、ユーザーは、1または複数のワークフローを自動的に実行するためにロボットを展開したい場合がある。ロボットが1または複数のワークフローを自動的に実行するために、ロボットはユーザーと同じアクセス権を必要とする場合がある。したがって、アクティブディレクトリ402は、ユーザーコミュニティネームスペース内のユーザーグループディレクトリに対応する、プロダクションネームスペース内のロボットグループディレクトリを維持する。各ロボットグループディレクトリには、対応するユーザーグループディレクトリと同じアクセス権が割り当てられる。
図4に示すように、アクティブディレクトリ402は、F&Aロボットグループディレクトリ408(以下、R-F&Aと表記する)408の下に、R-F&Aロボットグループディレクトリ408とAPロボットグループディレクトリ410(以下、R-APと表記する)を維持する。R-F&Aグループディレクトリ408は、F&Aユーザーグループディレクトリ404と同じアクセス権を有し、R-APグループディレクトリ410は、APユーザーグループディレクトリ406と同じアクセス権を有する。アクティブディレクトリ402は、各ロボットのプロファイルを維持する。ロボットプロファイルは、ロボットID、関連するグループ、および他の適当な情報を含み得る。
【0047】
ロボットチームR-AP412は、APロボットグループに関連付けられ、APユーザーグループに関連付けられたユーザーからのプロセスを遂行するように割り当てられたロボットのチームを表す。ロボットチームR-AP412は、ロボットプール414およびジョブキュー418を含む。ロボットプール414は、アクティブディレクトリ402のR-APロボットグループディレクトリ410に関連付けられたアンアテンディッドロボット416-Aおよび416-Bを含む。ジョブキュー418は、APユーザーグループディレクトリ406に関連付けられたユーザーのためのワークフローを表す。
図4に示すように、ジョブキュー418は、ロボットプール414内のロボットによって完了される、APユーザーグループディレクトリ406に関連付けられたAP従業員1のためのワークフロー420-Aおよび420-B、APユーザーグループディレクトリ406に関連付けられたAP従業員2のためのワークフロー420-C、およびAPユーザーグループディレクトリ406に関連付けられたAP従業員3のためのワークフロー420-Dおよび420-Eを含む。APグループディレクトリ406に関連付けられたユーザーが1または複数のワークフローを自動的に実行することを望むとき、対応するロボットグループ(すなわち、R-APロボットグループディレクトリ410)に関連付けられ、したがってユーザーと同じアクセス権を有するロボット(すなわち、アンアテンディッドロボット416-Aまたは416-B)が割り当てられる。
【0048】
図5は、1または複数の実施形態による、1または複数のワークフローを実行するための高レベルのシステムアーキテクチャ500を示す。システムアーキテクチャ500は、スケジューラ502、仮想デスクトップイメージ(VDI)ファクトリー504、およびオーケストレータ506を含む。一実施形態では、オーケストレータ506は、
図1のコンダクタ104、
図2のコンダクタ212、または
図3のコンダクタ304であり得る。
【0049】
スケジューラ502は、ワークフローがロボットによって遂行されるときにスケジュールを立てる。システムアーキテクチャ500に示すように、スケジューラ502は、ロボットグループ1 508-A、ロボットグループ2 508-B、...ロボットグループN 508-Nをスケジュールする。ロボットグループ1 508-Aは、アンアテンディッドロボットUR-1 510-Aによって実行されるようにスケジュールされたユーザーグループ1 514-Aのワークフロー512-Aを表す。ロボットグループ2 508-Bは、アンアテンディッドロボットUR-2 510-Bによって実行されるようにスケジュールされたユーザーグループ2 514-Bのワークフロー512-Bを表す。ロボットグループN 508-Nは、アンアテンディッドロボットUR-N 510-Nによって実行されるようにスケジュールされたユーザーグループN 514-N のワークフロー512-Nを表し、ここで、Nは任意の正の整数である。
【0050】
VDIファクトリー504は、ワークフロー512-A、512-B、...512-Nをそれぞれ実行するためのロボット510-A、510-B、...510-Nの実行を管理するための仮想デスクトップである。VDIファクトリー504は、スケジューラ502から、例えばワークフロー512-Aのワークフロー1-1が実行のためにトリガされたことを示すメッセージを受信する。VDIファクトリー504は、ワークフロー1-1を遂行するために割り当てられたロボット510-Aを識別するためにメッセージをオーケストレータ506に送信し、オーケストレータ506は、ロボット510-Aに関連付けられたロボットIDをVDIファクトリー504に返信する。VDIファクトリー504は、ロボット510-Aをイニシエート(例えば、開始、起動、電源投入、サインイン、またはその他の方法でロボット510-Aをアクティブにして準備ができた状態にする)し、ロボット510-Aは、ワークフロー1-1を実行する。
【0051】
ロボット510-Aがワークフロー1-1を完了すると、VDIファクトリー504は、ロボット510-Aをシャットダウンする。一実施形態では、VDIファクトリー504は、予め設定されたアイドル状態の期間の後にロボット510-Aをシャットダウンするための予め設定されたルールに基づいて、ロボット510-Aを自動的にシャットダウンする。別の実施形態では、オーケストレータ506は、ロボット510-Aがワークフロー1-1を完了したという通知をVDIファクトリー504に送信し、これに応答して、VDIファクトリー504はロボット510-Aをシャットダウンする。
【0052】
システムアーキテクチャ500は、組織が多数のロボットを利用することができる一方で、所定の時間に同時に実行しているロボットの数が減少し、それにより、ロボットのライセンスおよびインフラストラクチャ(例えば、電力、メモリ、コンピュータ処理、帯域幅など)に起因するコストを最小限に抑えることができるという点で有利である。
【0053】
システムアーキテクチャ500は、本発明の実施形態の高レベルの概要を提供するが、動作において、本発明の実施形態は、デプロイメント自動化段階とスケジュールおよび実行自動化段階の2つの段階で実装され得る。デプロイメント自動化段階は、
図6および
図7に関連して以下に説明する。スケジュールおよび実行自動化段階は、
図8および9に関連して以下に説明する。
【0054】
図6は、1または複数の実施形態により、RPAワークフローを実行するためのジョブをスケジューリングするための方法600を示す。
図6は、
図7のシステムアーキテクチャ700を参照して説明される。システムアーキテクチャ700は、デプロイメントユーティリティ702、アクティブディレクトリ704、スケジューリングシステム706、およびオーケストレータ708を含む。一実施形態では、スケジューリングシステム706は、
図5のスケジューラ502であってもよく、オーケストレータ708は、
図1のコンダクタ104、
図2のコンダクタ212、
図3のコンダクタ304、または
図5のオーケストレータ506であってもよく、アクティブディレクトリ704は、
図2のアクティブディレクトリ402であってもよい。方法600のステップは、任意の適切なコンピューティングデバイスによって実行され得る。一実施形態では、方法600のステップは、
図7のデプロイメントユーティリティ702によって実行される。
【0055】
図6のステップ602では、ユーザーのためのRPAワークフローを実行するための要求が受信される。RPAワークフローを実行するための要求は、デプロイメントユーティリティ702によって受信されたデプロイメント自動化要求714としてシステムアーキテクチャ700に示される。デプロイメントユーティリティ702は、スケジューリングシステム706へのジョブのデプロイメントおよびスケジューリングを管理するための任意の適切なコンピューティングデバイスであり得る。一実施形態では、デプロイメントユーティリティ702は、コンピューティングデバイス上で実行する、ロボット、スクリプト、アプリケーションナビゲータ、エンタープライズコネクト、オーケストレーションシステムなどである。デプロイメント自動化要求714は、XAML/パッケージ710およびユーザープロファイル712を含む。XAML/パッケージ710は、ユーザーのために実行されるワークフローを表し、ユーザープロファイル712は、ユーザーのユーザーIDを含むユーザーのプロファイルである。一実施形態では、ワークフローのXAML/パッケージ710は、
図1のデザイナ102または
図2のデザイナ208を使用して(例えば、ユーザーによって)作成され得る。
【0056】
一実施形態では、ユーザーは、アクセス権に関連付けられたユーザーグループに属する。アクセス権は、アクティブディレクトリ704または任意の他の適切なアクセス権管理システム(例えば、LDAP)で管理および維持され得る。
【0057】
ステップ604では、ユーザーグループに対応するロボットグループが特定される。システムアーキテクチャ700は、ロボットグループID機能716を示す。ロボットグループID機能716は、デプロイメントユーティリティ702からアクティブディレクトリ704へのユーザーのユーザーIDに対応するロボットグループIDの要求と、アクティブディレクトリ704からデプロイメントユーティリティ702に送信されたユーザーのユーザーIDに対応するロボットグループIDを識別する応答と、を表す。要求には、ユーザーのユーザーIDが含まれる。ユーザーIDに対応するロボットグループが存在しない場合、アクティブディレクトリ704は、ユーザーIDに対応する新しいロボットグループを作成し、新しいロボットグループのロボットグループIDでデプロイメントユーティリティ702に応答する。一実施形態では、識別されたロボットグループは、アクティブディレクトリ704内のその対応するユーザーグループと同じアクセス権に関連付けられる。
【0058】
ステップ606では、RPAワークフローを実行するためのロボットグループに関連付けられたジョブが作成される。システムアーキテクチャ700は、ジョブ機能718を示す。ジョブ機能718は、デプロイメントユーティリティ702からオーケストレータ708へ識別されたロボットグループによってXAML/パッケージ710で表されるワークフローを実行するためのジョブを作成する要求と、オーケストレータ708からデプロイメントユーティリティ702へジョブIDおよびジョブ名を識別する応答と、を表す。要求は、XAML/パッケージ710および識別されたロボットグループIDを含む。要求を受け取ると、オーケストレータ708は、ワークフローを実行するためのジョブを作成し、ジョブにジョブ名とジョブIDを割り当て、識別されたロボットグループIDにジョブを関連付ける。
【0059】
ステップ608では、RPAワークフローを実行するためのジョブが、ロボットグループのロボット上でスケジュールされる。システムアーキテクチャ700は、スケジューリング機能720を示す。スケジューリング機能720は、デプロイメントユーティリティ702からスケジューリングシステム706へロボットグループのロボットのジョブをスケジュールする要求を表す。要求は、ユーザーID、ロボットグループID、ジョブ名、およびジョブIDを含む。スケジューリングシステム706は、ユーザーが受信した入力に基づいて、ジョブをスケジュールする。ユーザーは、ユーザーID、ロボットグループID、ジョブ名、およびジョブIDを持つアカウントを作成してもよい(作成されていない場合)。アカウントにログインすると、ユーザーは、ジョブをスケジュールし得る。ジョブは、ユーザーがジョブを実行するための将来の日時を定義することによってスケジュールされてもよいし、またはオンデマンドオプションがある場合には、即時実行をイニシエートするようにスケジュールされてもよい(例えば、「今すぐ実行」ボタンをクリックすることによって)。スケジューリングシステム706は、任意の適切なスケジューリングシステム、例えば、ノードレッド(node red)、BMC、iControlなどであり得る。
【0060】
図8は、1または複数の実施形態による、RPAワークフローを実行するための方法800を示す。
図8は、
図9のシステムアーキテクチャ900を参照して説明される。システムアーキテクチャ900は、スケジューリングシステム902、実行ユーティリティ904、コンピュータ906、およびオーケストレータ908を含む。一実施形態では、スケジューリングシステム902は、
図5のスケジューラ502または
図7のスケジューリングシステム706であってもよく、オーケストレータ908は、
図1のコンダクタ104、
図2のコンダクタ212、
図3のコンダクタ304、
図5のオーケストレータ506、または
図7のオーケストレータ708であってもよい。いくつかの実施形態では、実行ユーティリティ904は、VDI因子(例えば、
図5のVDIファクトリー504)と同じデバイスまたは別個のデバイス上で実行され得る。方法800のステップは、任意の適切なコンピューティングデバイスによって実行され得る。
【0061】
ステップ802では、ユーザーのためのRPAワークフローを実行するためのジョブを遂行するように指示が受信される。一実施形態では、ジョブは、ユーザーから受信した入力に基づいて、スケジューリングシステム902において以前に(例えば、将来の日時または即時実行のために)スケジュールされ得る。例えば、ユーザーは、スケジューリングシステム902にログインし、ユーザーのジョブを表示し、ジョブのスケジュールを設定してもよい。一実施形態では、ジョブは、例えば、
図6の方法600のステップに従って、デプロイメント自動化段階の間にスケジューリングシステム902で以前にスケジュールされ得る。ワークフローは、例えば、
図1のデザイナ102または
図2のデザイナ208を使用して(例えば、ユーザーによって)作成されたXAML/パッケージの形態であり得る。一実施形態では、ユーザーは、アクセス権管理システム(例えば、
図4のアクティブディレクトリ402または
図7のアクティブディレクトリ704)のアクセス権に関連付けられたユーザーグループに属する。
【0062】
ユーザーのためのRPAワークフローを実行するためのジョブを遂行するための指示は、スケジューリングシステム902から実行ユーティリティ904に送信されるシステムアーキテクチャ900におけるスケジュールトリガ指示912であり得る。一実施形態では、スケジュールトリガ指示912は、トリガイベントに応答して実行ユーティリティ904に送信される。トリガイベントは、時間(例えば、特定の時間または経過時間)、別のジョブの完了、ユーザーによる手動トリガ、または任意の他の適切なトリガイベントに基づくものであってもよい。スケジュールトリガ指示912は、トリガされたジョブのジョブIDを含む。実行ユーティリティ904は、ジョブのパフォーマンスを管理するための任意の適切なコンピューティングデバイス、例えば、ロボット、スクリプト、アプリケーション、オーケストレーションシステム、ナビゲータ、エンタープライズコネクト、サードパーティシステムなどであり得る。
【0063】
ステップ804では、ジョブに関連付けられたロボットグループからロボットが識別される。システムアーキテクチャ900は、ロボットID機能914を示す。ロボットID機能914は、実行ユーティリティ904からオーケストレータ908へジョブを実行するためのロボットの識別子の要求と、オーケストレータ908から実行ユーティリティ904へロボットを識別する応答と、を表す。具体的には、実行ユーティリティ904は、ジョブのジョブIDを含む要求を送信する。オーケストレータ908は、ジョブIDに関連付けられたロボットグループを識別し、識別されたロボットグループ内のロボットのロボットIDで実行ユーティリティ904に応答する。識別されたロボットグループが1超のロボットを含む場合、識別されたロボットグループ内の次に利用可能なロボットのロボットIDが提供される。一実施形態では、識別されたロボットグループは、アクセス権管理システムにおけるユーザーグループと同じアクセス権に関連付けられる。一実施形態では、ロボットがロボットグループに関連付けられていない場合、オーケストレータ908は、ジョブIDに基づいてジョブを実行するために必要なアクセス権を決定し、決定されたアクセス権に関連付けられたユーザーグループにロボットを動的に関連付ける。この実施形態では、ロボットがジョブを完了すると、ロボットは、他のロボットグループに関連付けられた他のジョブに再割り当てされ得る。
【0064】
ステップ806では、ロボットを実行するためのコンピューティングデバイス(例えば、コンピュータ906)が起動される。実行ユーティリティ904は、コンピュータ906を起動するための起動命令916をコンピュータ906に送信する。コンピュータ906は、識別されたロボットIDに関連付けられたロボットを実行するための任意の適切なコンピューティングデバイスであり得る。一実施形態では、コンピュータ906は、クラウドベースまたは仮想化されたデスクトップ環境である。
【0065】
ステップ808では、ロボットは、コンピューティングデバイス上でRPAワークフローを実行するためのジョブを遂行するために割り当てられる。実行ユーティリティ904は、起動したコンピュータ906を実行状態に設定するために、実行ジョブ命令918をオーケストレータ908に送信する。コンピュータ906は、ジョブを遂行するロボットを遂行する。
【0066】
ステップ810では、ジョブが完了した後、コンピューティングデバイスがシャットダウンされる。実行ユーティリティ904は、コンピュータ906をシャットダウンするためのシャットダウン命令920をコンピュータ906に送信する。コンピュータ906をシャットダウンすることは、コンピュータ906の電源を切ること、スリープすること、中断すること、ハイバネーションする(hibernating)ことなどを含んでもよい。一実施形態では、シャットダウン命令920は、オーケストレータ908から実行ユーティリティ904へのオーケストレータウェブフック呼び出し通知に応答して、コンピュータ906に送信され、ジョブが完了したことを実行ユーティリティ904に通知する。別の実施形態では、シャットダウン命令920は、ロボットまたはコンピュータ906がアイドル状態である所定の期間の後にコンピュータ906に送信される。別の実施形態では、コンピュータ906は、アイドル状態である所定の期間の後に自身をシャットダウンする。別の実施形態では、コンピュータ906のシャットダウンは、ロボットまたは他のロボットが他のジョブを完了することを可能にするために(例えば、所定の期間)遅れてもよい。
【0067】
有利には、ジョブを完了するためにロボットを実行するコンピュータ906を起動し、ジョブが完了したらコンピュータ906をシャットダウンすることにより、所定の時間に同時に実行するロボットの数を完全に減少させ、それによりコストを最小化することができる。スケジューリングシステム902は、グループ内での競合を避けるために、ジョブをスケジュールしてキューに入れることを可能にする。本発明の実施形態は、最小限の作業コストで無制限の規模を有し得る。
【0068】
図10は、本発明の実施形態による、
図6および8を参照して説明した方法を遂行するように構成されたコンピューティングシステム1000を例示するブロック図である。いくつかの実施形態では、コンピューティングシステム1000は、本明細書に描かれたおよび/または記載された1または複数のコンピューティングシステムであってもよい。コンピューティングシステム1000は、情報を通信するためのバス1002または他の通信機構と、情報を処理するためのバス1002に結合されたプロセッサ(複数可)1004とを含む。プロセッサ(複数可)1004は、中央処理ユニット(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらのいずれかの組み合わせを含む、いずれかのタイプの一般的または特定用途向けプロセッサであり得る。プロセッサ(複数可)1004はまた、複数の処理コアを有してもよく、コアの少なくとも一部は、特定の機能を実行するように構成され得る。いくつかの実施形態では、複数並列処理が使用されてもよい。
【0069】
コンピューティングシステム1000は、プロセッサ(複数可)1004によって遂行される情報および命令を格納するためのメモリ1006をさらに含む。メモリ1006は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気ディスクもしくは光ディスクなどの静的記憶装置、または他のタイプの非一時的なコンピュータ読み取り可能な媒体、あるいはそれらのいずれかの組み合わせで構成され得る。非一時的なコンピュータ読み取り可能な媒体は、プロセッサ(複数可)1004によりアクセス可能ないずれかの利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体または両方などを含み得る。また、媒体は、取り外し可能なもの、取り外し不可能なもの、または両方であってもよい。
【0070】
さらに、コンピューティングシステム1000は、現在存在するまたは将来実装される通信規格および/またはプロトコルによる、無線および/または有線接続を介して通信ネットワークへのアクセスを提供するために、トランシーバなどの通信装置1008を含む。
【0071】
プロセッサ(複数可)1004は、バス1002を介して、ユーザーに情報を表示するのに適したディスプレイ1010にさらに結合されている。ディスプレイ1010はまた、タッチディスプレイおよび/または任意の適切な触覚I/Oデバイスとして構成されてもよい。
【0072】
コンピュータマウス、タッチパッドなどのようなキーボード1012およびカーソル制御装置1014は、ユーザーがコンピューティングシステムとインターフェースすることを可能にするために、バス1002にさらに結合されている。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しない場合があり、ユーザーは、ディスプレイ1010および/またはタッチパッド(図示せず)のみを介してデバイスと対話することができる。任意の入力デバイスの種類および組み合わせは、設計の選択の問題として使用され得る。特定の実施形態では、物理的な入力装置および/またはディスプレイは存在しない。例えば、ユーザーは、コンピューティングシステム1000と通信している別のコンピューティングシステムを介してリモートでコンピューティングシステム1000と対話してもよいし、コンピューティングシステム500は自律的に動作してもよい。
【0073】
メモリ1006は、プロセッサ(複数可)1004により遂行されたときに機能を提供するソフトウェアモジュールを格納する。モジュールは、コンピューティングシステム1000のためのオペレーティングシステム1016と、本明細書に記載されるプロセスの全部もしくは一部、またはその派生物を実行するように構成された1もしくは複数の追加機能モジュール1018とを含む。
【0074】
当業者であれば、「システム」は、本発明の範囲から逸脱することなく、サーバー、組み込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、または他のいずれかの適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを理解するであろう。上述した機能を「システム」により実行されるものとして提示することは、何ら本発明の範囲を限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図するものである。実際、本明細書に開示された方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と整合性のあるローカライズされた形態および分散された形態で実装されてもよい。
【0075】
本明細書で説明するシステム特色のいくつかは、実装の独立性をより強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタムの非常に大規模な集積(VLSI)回路またはゲートアレイ、ロジックチップ、トランジスタ、または他の個別部品のような既製の半導体を含むハードウェア回路として実装され得る。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジック装置、グラフィックス処理ユニットなどのプログラマブルハードウェア装置に実装され得る。モジュールはまた、様々なタイプのプロセッサにより実行されるためのソフトウェアに少なくとも部分的に実装され得る。例えば、実行可能コードの識別された単位は、例えば、オブジェクト、プロシージャ、または関数として編成されていてもよいコンピュータ命令の1または複数の物理的または論理的なブロックを含み得る。それにもかかわらず、実行可能な識別されたモジュールは、物理的に一緒に配置されている必要はなく、論理的に結合されたときにモジュールを含み、モジュールのために述べられた目的を達成するために、異なる場所に格納された別々の命令を含んでいてもよい。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュ装置、RAM、テープのようなコンピュータ読み取り可能な媒体、および/または本発明の範囲から逸脱することなくデータを格納するために使用される他のいずれかの非一時的なコンピュータ読み取り可能な媒体に格納されていてもよい。実際、実行可能コードのモジュールは、単一の命令であってもよいし、多数の命令であってもよいし、さらには、複数の異なるコードセグメント、異なるプログラム間、および複数のメモリ装置間に分散されていてもよい。同様に、操作データは、モジュール内で識別され、ここで示されてもよく、いずれかの適切なタイプのデータ構造体内でいずれかの適切な形態で具現化され、組織化され得る。操作データは、単一のデータセットとして収集されてもよいし、または異なる記憶装置にわたり異なる場所に分散されていてもよく、少なくとも部分的には、単にシステムまたはネットワーク上の電子信号として存在していてもよい。
【0076】
前述は、単に開示の原則を例示しているに過ぎない。したがって、本明細書に明示的に記載または示されていないが、本開示の原理を具現化し、その精神および範囲内に含まれる様々なアレンジを、当業者が考案することができることが理解されるであろう。さらに、本明細書に引用された全ての実施例および条件文言は、主として、本開示の原理および本発明者が技術の発展に貢献した概念を理解するための読者を助けるための教育的な目的のみを意図しており、そのような具体的に引用された実施例および条件に限定されないものとして解釈されるべきである。さらに、本開示の原理、態様、および実施形態、ならびにそれらの具体的な実施例を引用する本明細書の全ての記述は、それらの構造的および機能的等価物を包含することを意図する。さらに、このような等価物には、現在知られている等価物だけでなく、将来開発される等価物も含まれることが意図される。
【国際調査報告】