(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-08
(45)【発行日】2025-04-16
(54)【発明の名称】RPAワークフローのプロセスグラフ用のフィルタのインスタンス化
(51)【国際特許分類】
G06F 8/34 20180101AFI20250409BHJP
【FI】
G06F8/34
(21)【出願番号】P 2021572635
(86)(22)【出願日】2020-10-16
(86)【国際出願番号】 US2020055865
(87)【国際公開番号】W WO2022066189
(87)【国際公開日】2022-03-31
【審査請求日】2023-10-12
(32)【優先日】2020-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520262319
【氏名又は名称】ユーアイパス,インコーポレイテッド
【氏名又は名称原語表記】UiPath,Inc.
【住所又は居所原語表記】1 Vanderbilt Avenue, 60th Floor, New York, NY 10017, United States of America
(74)【代理人】
【識別番号】100180781
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】ブリーゲン,ローランド
【審査官】今川 悟
(56)【参考文献】
【文献】特開2010-020577(JP,A)
【文献】特開2020-068019(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/34
(57)【特許請求の範囲】
【請求項1】
ワークフローの
実行の1つまたは複数のインスタンスを表すプロセスグラフ
の状態に関連付けられたコンテキストデータを記憶するステップ
であって、
前記プロセスグラフが、前のフィルタによって以前にフィルタリングされていたステップと、
前記プロセスグラフ
に基づいてフィルタをインスタンス化するステップと、
前記プロセスグラフを修正するために、前記前のフィルタの修正形態を受信するステップと、
前記インスタンス化されたフィルタを使用してインスタンス化の直前の時間の前記プロセスグラフに関連付けられた前記記憶されたコンテキストデータに基づいて、前記前のフィルタの前記修正形態の前記受信の後の時間に前記プロセスグラフをフィルタリングするステップと、
前記フィルタリングされたプロセスグラフを出力するステップと
を含む、コンピュータ実装方法。
【請求項2】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前のアプリケーションの状態を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前の状態にある前記プロセスグラフの複製を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前の時間の前記プロセスグラフの実行記録を含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記ワークフローがRPA(ロボティックプロセスオートメーション)ワークフローである、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記フィルタがループ深度フィルタを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記フィルタがアクティビティフィルタを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
コンピュータ命令を記憶するメモリと、
前記コンピュータ命令を実行するように構成された少なくとも1つのプロセッサと
を備える、装置であって、前記コンピュータ命令が、
ワークフローのプロセスグラフに関連付けられたコンテキストデータを記憶する動作
であって、前記コンテキストデータが、フィルタのインスタンス化より前のアプリケーションの状態を含む動作と、
前記記憶されたコンテキストデータに基づいて、前記プロセスグラフをフィルタリングするように
前記フィルタをインスタンス化する動作と、
前記フィルタリングされたプロセスグラフを出力する動作と
を前記少なくとも1つのプロセッサに実行させるように構成される、
装置。
【請求項9】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前の状態にある前記プロセスグラフの複製を
さらに含む、請求項
8に記載の装置。
【請求項10】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前の時間の前記プロセスグラフの実行記録を
さらに含む、請求項
8に記載の装置。
【請求項11】
前記プロセスグラフが、前のフィルタによって以前にフィルタリングされており、前記インスタンス化されたフィルタが、前記以前にフィルタリングされたプロセスグラフに基づいて定義される、請求項
8に記載の装置。
【請求項12】
前記動作が
、以前にフィルタリングされたプロセスグラフを修正するために、前記前のフィルタの修正形態を受信することをさらに含み、前記記憶されたコンテキストデータに基づいて前記プロセスグラフをフィルタリングするようにフィルタをインスタンス化することが、
前記インスタンス化の直前の時間の前記プロセスグラフに関連付けられた前記記憶されたコンテキストデータに基づいて、前記前のフィルタの前記修正形態の前記受信の後の時間に前記プロセスグラフをフィルタリングすること
を含む、請求項
8に記載の装置。
【請求項13】
コンピュータプログラム命令を格納する非一時的コンピュータ可読媒
体であって、前記コンピュータプログラム
命令が
少なくとも1つのプロセッサによって実行されたとき、
ワークフローのプロセスグラフに関連付けられたコンテキストデータを記憶することと、
前記記憶されたコンテキストデータに基づいて、前記プロセスグラフをフィルタリングするようにフィルタをインスタンス化すること
であって、前記コンテキストデータが、前記フィルタの前記インスタンス化より前の状態の前記プロセスグラフの複製を含むことと、
前記フィルタリングされたプロセスグラフを出力することと、
を含む動作を
前記少なくとも1つのプロセッサに実行させ
る、
非一時的コンピュータ可読媒体。
【請求項14】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前のアプリケーションの状態を
さらに含む、請求項
13に記載の
非一時的コンピュータ可読媒体。
【請求項15】
前記コンテキストデータが、前記フィルタの前記インスタンス化より前の時間の前記プロセスグラフの実行記録を
さらに含む、請求項
13に記載の
非一時的コンピュータ可読媒体。
【請求項16】
前記ワークフローがRPA(ロボティックプロセスオートメーション)ワークフローである、請求項
13に記載の
非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2020年9月24日に出願された米国実用特許出願第17/031,138号の優先権を主張し、その開示はその全体が参照により本明細書に組み込まれる。
【0002】
本発明は、一般に、ロボティックプロセスオートメーション(RPA)のためのプロセスマイニングに関し、より詳細には、RPAプロセスマイニングのためのRPAワークフローのプロセスグラフ用のフィルタのインスタンス化に関する。
【背景技術】
【0003】
ロボティックプロセスオートメーション(RPA)は、ソフトウェアロボットを使用してワークフローを自動化するプロセス自動化の一形態である。RPAは、反復的および/または労働集約的なタスクを自動化して、コストを削減し効率を高めるために実装され得る。RPAプロセスマイニングでは、効率を改善し、RPAワークフローのより良い理解を得るために、RPAロボットによるRPAワークフローの実行が分析されて、傾向、パターン、および他の分析尺度を識別する。そのようなRPAワークフローの実行は、通常、プロセスグラフとして表される。RPAワークフローの実行を分析するために、そのようなプロセスグラフに様々なフィルタが適用されてもよい。
【0004】
時には、プロセスグラフを分析するためにプロセスグラフに複数のフィルタが適用されてもよい。1つのシナリオでは、最初に第1のフィルタがプロセスグラフに適用される。その後、第1のフィルタに従って以前にフィルタリングされた、フィルタリングされたプロセスグラフに第2のフィルタが適用される。これにより、第2のフィルタは、第1のフィルタによるフィルタリングの結果に基づいてプロセスグラフをフィルタリングするように定義されることになる。しかしながら、次いで第1のフィルタが修正されたか、またはそうでなければ除去された場合、第2のフィルタによって提供されるフィルタリングは、最初に意図されたものとは異なる可能性がある。従来の手法はこの問題に対処していない。
【発明の概要】
【0005】
1つまたは複数の実施形態によれば、プロセスグラフ用のフィルタをインスタンス化するためのシステムおよび方法が提供される。ワークフローのプロセスグラフが受信される。プロセスグラフに関連付けられたコンテキストデータが記憶される。記憶されたコンテキストデータに基づいてプロセスグラフをフィルタリングするように、フィルタがインスタンス化される。フィルタリングされたプロセスグラフが出力される。
【0006】
一実施形態では、コンテキストデータは、フィルタのインスタンス化より前のアプリケーションの状態を含む。別の実施形態では、コンテキストデータは、フィルタのインスタンス化より前の状態におけるプロセスグラフの複製を含む。別の実施形態では、コンテキストデータは、フィルタのインスタンス化より前の時間のプロセスグラフの実行記録を含む。
【0007】
一実施形態では、プロセスグラフは、前のフィルタによって以前にフィルタリングされており、インスタンス化されたフィルタは、以前にフィルタリングされたプロセスグラフに基づいて定義される。
【0008】
以前にフィルタリングされたプロセスグラフを修正するために、前のフィルタの修正形態が受信されてもよい。プロセスグラフは、インスタンス化の直前の時間のプロセスグラフに関連付けられた記憶されたコンテキストデータに基づいて、前のフィルタの修正形態を受信した後の時間にフィルタリングされてもよい。
【0009】
1つまたは複数の実施形態では、フィルタには、ループ深度フィルタまたはアクティビティフィルタが含まれる。一実施形態では、ワークフローは、RPA(ロボティックプロセスオートメーション)ワークフローである。
【0010】
本発明のこれらおよび他の利点は、以下の発明を実施するための形態および添付の図面を参照することによって当業者には明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態による、ロボティックプロセスオートメーション(RPA)システムを示すアーキテクチャ図である。
【0012】
【
図2】本発明の一実施形態による、配備されたRPAシステムの一例を示すアーキテクチャ図である。
【0013】
【
図3】本発明の一実施形態による、RPAシステムの簡略化されたデプロイメント例を示すアーキテクチャ図である。
【0014】
【0015】
【
図5】本発明の一実施形態による、プロセスグラフをフィルタリングするようにフィルタをインスタンス化するための方法を示す図である。
【0016】
【
図6】本発明の一実施形態に従って分析されてもよい、
図4に示されたワークフローに関連付けられた例示的なプロセスグラフを示す図である。
【0017】
【
図7】本発明の一実施形態による、ループ深度フィルタに従ってフィルタリングされた、例示的なフィルタリングされたプロセスグラフを示す図である。
【0018】
【
図8】本発明の一実施形態による、アクティビティフィルタに従ってフィルタリングされた、例示的なフィルタリングされたプロセスグラフを示す図である。
【0019】
【
図9】本発明の一実施形態による、コンピューティングシステムのブロック図である。
【発明を実施するための形態】
【0020】
ロボティックプロセスオートメーション(RPA)は、ワークフローおよびプロセスを自動化するために使用される。
図1は、1つまたは複数の実施形態による、RPAシステム100のアーキテクチャ図である。
図1に示されたように、RPAシステム100は、開発者が自動化プロセスを設計することを可能にするデザイナ102を含む。より具体的には、デザイナ102は、プロセス内でアクティビティを実行するためのRPAプロセスおよびロボットの開発およびデプロイメントを容易にする。デザイナ102は、アプリケーション統合のためのソリューション、ならびにサードパーティアプリケーション、管理情報技術(IT)タスク、およびコンタクトセンタ運用のためのビジネスプロセスの自動化を実現することができる。デザイナ102の一実施形態の1つの商用例は、UiPath Studio(登録商標)である。
【0021】
ルールベースプロセスの自動化を設計する際に、開発者は、本明細書で「アクティビティ」として定義される、プロセス内で開発されたステップのカスタムセットの間の実行順序および関係を制御する。各アクティビティは、ボタンのクリック、ファイルの読取り、ログパネルへの書込みなどの動作を含んでもよい。いくつかの実施形態では、プロセスは、ネストされるか、または組み込まれてもよい。
【0022】
いくつかのタイプのプロセスには、限定はしないが、シーケンス、フローチャート、有限状態機械(FSM)、および/またはグローバル例外ハンドラが含まれてもよい。シーケンスは、線形プロセスに特に適している場合があり、プロセスを雑然とさせることなく1つのアクティビティから別のアクティビティへの流れを可能にする。フローチャートは、より複雑なビジネスロジックに特に適している場合があり、複数の分岐論理演算子を介してより多様な方式で決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適している場合がある。FSMは、条件(すなわち、遷移)またはアクティビティによってトリガされる有限数の状態を、それらの実行時に使用することができる。グローバル例外ハンドラは、実行エラーに遭遇したときのワークフローの挙動を判定すること、およびプロセスをデバッグすることに特に適している場合がある。
【0023】
デザイナ102においてプロセスが開発されると、ビジネスプロセスの実行はコンダクタ104によって編成され、コンダクタ104は、デザイナ102において開発されたプロセスを実行する1つまたは複数のロボット106を編成する。コンダクタ104の一実施形態の1つの商用例は、UiPath Orchestrator(登録商標)である。コンダクタ220は、RPA環境内のリソースの作成、監視、およびデプロイメントの管理を容易にする。一例では、コンダクタ104はウェブアプリケーションである。コンダクタ104はまた、サードパーティのソリューションおよびアプリケーションとの統合ポイントとして機能することができる。
【0024】
コンダクタ104は、集中ポイントからロボット106を接続し実行することにより、RPAロボット106のフリートを管理することができる。コンダクタ104は、限定はしないが、プロビジョニング、デプロイメント、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含む様々な能力を有することができる。プロビジョニングは、ロボット106とコンダクタ104(例えば、ウェブアプリケーション)との間の接続の作成および維持を含んでもよい。デプロイメントは、実行のために割り当てられたロボット106へのパッケージバージョンの正しい配信を保証することを含んでもよい。構成は、ロボット環境およびプロセス構成の維持および配信を含んでもよい。キューイングは、キューおよびキュー項目の管理を提供することを含んでもよい。監視は、ロボット識別データを追跡し、ユーザ権限を維持することを含んでもよい。ロギングは、データベース(例えば、SQLデータベース)および/または別の記憶機構(例えば、大規模なデータセットを記憶し、迅速に照会する能力を提供するElasticSearch(登録商標))へのログの記憶およびインデックス付けを含んでもよい。コンダクタ104は、サードパーティのソリューションおよび/またはアプリケーションのための通信の集中ポイントとして作用することによって相互接続性を提供することができる。
【0025】
ロボット106は、デザイナ102内に構築されたプロセスを実行する実行エージェントである。ロボット106のいくつかの実施形態の1つの商用例は、UiPath Robots(登録商標)である。ロボット106のタイプには、限定はしないが、アテンディッドロボット108およびアンアテンディッドロボット110が含まれてもよい。アテンディッドロボット108は、ユーザまたはユーザイベントによってトリガされ、同じコンピューティングシステム上で人間のユーザと協力して動作する。アテンディッドロボット108は、人間のユーザが様々なタスクを遂行するのを助けることができ、人間のユーザおよび/またはユーザイベントによって直接トリガされてもよい。アテンディッドロボットの場合、コンダクタ104は、集中プロセスデプロイメントおよびロギング媒体を提供することができる。特定の実施形態では、アテンディッドロボット108は、「ロボットトレイ」またはウェブアプリケーション内のコマンドプロンプトからのみ起動することができる。アンアテンディッドロボット110は、仮想環境内で無人モードで動作し、多くのプロセス、例えば、大量のバックエンドプロセスなどを自動化するために使用することができる。アンアテンディッドロボット110は、リモート実行、監視、スケジューリング、および作業待ち行列のサポートの提供に関与することができる。アテンディッドロボットとアンアテンディッドロボットの両方は、限定はしないが、メインフレーム、ウェブアプリケーション、VM、企業アプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって製造された企業アプリケーション)、ならびにコンピューティングシステムアプリケーション(例えば、デスクトップアプリケーションおよびラップトップアプリケーション、モバイルデバイスアプリケーション、ウェアラブルコンピュータアプリケーションなど)を含む様々なシステムおよびアプリケーションを自動化することができる。
【0026】
いくつかの実施形態では、ロボット106は、デフォルトでMicrosoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。結果として、そのようなロボット106は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開き、Windows(登録商標)サービスの権利を有することができる。いくつかの実施形態では、ロボット106は、所与のロボット106がインストールされているユーザと同じ権利を有するユーザモードでインストールすることができる。
【0027】
いくつかの実施形態におけるロボット106は、各々が特定のタスク専用であるいくつかのコンポーネントに分割される。いくつかの実施形態におけるロボットコンポーネントには、限定はしないが、SCM管理ロボットサービス、ユーザモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインが含まれる。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ104と実行ホスト(すなわち、ロボット106が実行されるコンピューティングシステム)との間のプロキシとして機能する。これらのサービスは、ロボット106の資格情報で信頼され、資格情報を管理する。コンソールアプリケーションは、ローカルシステムの下でSCMによって起動される。いくつかの実施形態におけるユーザモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ104と実行ホストとの間のプロキシとして機能する。ユーザモードロボットサービスは、ロボット106の資格情報で信頼され、資格情報を管理することができる。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションは自動的に起動されてもよい。エグゼキュータは、Windows(登録商標)セッションの下で所与のジョブを実行することができ(例えば、それらはワークフローを実行することができる)、モニタごとのドット/インチ(DPI)設定を認識することができる。エージェントは、システムトレイウィンドウ内で利用可能なジョブを表示するWindows(登録商標)Presentation Foundation(WPF)アプリケーションであってもよい。エージェントは、サービスのクライアントであってもよい。エージェントは、ジョブの開始または停止および設定の変更を要求することができる。コマンドラインはサービスのクライアントであり、ジョブを開始するように要求することができ、それらの出力を待つコンソールアプリケーションである。ロボットコンポーネントを分割することは、開発者を助け、ユーザをサポートし、各ロボットコンポーネントが実行しているものをコンピューティングシステムがより容易に実行、識別、および追跡することを可能にすることができる。例えば、エグゼキュータおよびサービスに対して異なるファイアウォールルールを設定することなどの、特別な挙動がロボットコンポーネントごとに構成されてもよい。さらなる例として、エグゼキュータは、いくつかの実施形態ではモニタごとのDPI設定を認識することができ、その結果、ワークフローは、それらが作成されたコンピューティングシステムの構成にかかわらず、任意のDPIで実行されてもよい。
【0028】
図2は、1つまたは複数の実施形態による、RPAシステム200を示す。RPAシステム200は、
図1のRPAシステム100であってもよく、その一部であってもよい。「クライアント側」、「サーバ側」、またはその両方は、本発明の範囲から逸脱することなく、任意の所望の数のコンピューティングシステムを含んでもよいことに留意されたい。
【0029】
この実施形態においてクライアント側に示されたように、コンピューティングシステム202は、1つまたは複数のエグゼキュータ204、エージェント206、およびデザイナ208を含む。他の実施形態では、デザイナ208は、同じコンピューティングシステム202上で実行されていなくてもよい。(上述されたロボットコンポーネントであってもよい)エグゼキュータ204はプロセスを実行し、いくつかの実施形態では、複数のビジネスプロセスが同時に実行されてもよい。この例では、エージェント206(例えば、Windows(登録商標)サービス)は、エグゼキュータ204を管理するための単一の接続ポイントである。
【0030】
いくつかの実施形態では、ロボットは、機械名とユーザ名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理することができる。同時に実行される複数のインタラクティブなセッションをサポートするコンピューティングシステム(例えば、Windows(登録商標)Server 2012)上で、複数のロボットは、各々が固有のユーザ名を使用して別々のWindows(登録商標)セッション内で同時に(例えば、高密度(HD)環境で)実行されていてもよい。
【0031】
エージェント206はまた、ロボットのステータスを送信する(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)こと、および実行されるパッケージの必要なバージョンをダウンロードすることに関与する。エージェント206とコンダクタ212との間の通信は、いくつかの実施形態では、エージェント206によって開始される。通知シナリオの例では、エージェント206は、ロボットにコマンド(例えば、開始、停止など)を送信するためにコンダクタ212によって後で使用されるWebSocketチャネルを開くことができる。
【0032】
この実施形態においてサーバ側に示されたように、プレゼンテーション層は、ウェブアプリケーション214と、オープンデータプロトコル(OData)代表状態転送(REST)アプリケーションプログラミングインターフェース(API)エンドポイント216と、通知監視API218とを備える。サーバ側のサービス層は、API実装/ビジネスロジック220を含む。サーバ側の永続層は、データベースサーバ222およびインデクササーバ224を含む。コンダクタ212は、ウェブアプリケーション214と、OData REST APIエンドポイント216と、通知監視API218と、API実装/ビジネスロジック220とを含む。
【0033】
様々な実施形態では、(例えば、ブラウザ210を介して)コンダクタ212のインターフェースにおいてユーザが実行するほとんどの動作は、様々なAPIを呼び出すことによって実行される。そのような動作には、限定はしないが、ロボット上のジョブの開始、キュー内のデータの追加/削除、無人で実行するジョブのスケジューリングなどが含まれてもよい。ウェブアプリケーション214は、サーバプラットフォームのビジュアル層である。この実施形態では、ウェブアプリケーション214は、ハイパーテキストマークアップ言語(HTML)およびJavaScript(JS)を使用する。しかしながら、本発明の範囲から逸脱することなく、任意の所望のマークアップ言語、スクリプト言語、または任意の他のフォーマットが使用されてもよい。ユーザは、様々な動作を実行してコンダクタ212を制御するために、この実施形態ではブラウザ210を介してウェブアプリケーション214からのウェブページと対話する。例えば、ユーザは、ロボットグループを作成し、ロボットにパッケージを割り当て、ロボットごとおよび/またはプロセスごとにログを分析し、ロボットを開始および停止することなどができる。
【0034】
ウェブアプリケーション214に加えて、コンダクタ212はまた、OData REST APIエンドポイント216を露呈するサービス層を含む(または、本発明の範囲から逸脱することなく他のエンドポイントが実装されてもよい)。REST APIは、ウェブアプリケーション214とエージェント206の両方によって消費される。エージェント206は、この例示的な構成ではクライアントコンピュータ上の1つまたは複数のロボットの監督者である。
【0035】
この実施形態におけるREST APIは、構成、ロギング、監視、およびキューイングの機能をカバーする。構成RESTエンドポイントは、いくつかの実施形態では、アプリケーションユーザ、権限、ロボット、アセット、リリース、および環境を定義および構成するために使用されてもよい。ロギングRESTエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、および他の環境固有の情報などの異なる情報をロギングするために有用であってもよい。デプロイメントRESTエンドポイントは、開始ジョブコマンドがコンダクタ212内で使用される場合に実行されるべきパッケージバージョンを問い合わせるために、ロボットによって使用されてもよい。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションの状態の設定などの、キューおよびキュー項目の管理に関与することができる。監視RESTエンドポイントは、ウェブアプリケーション214およびエージェント206を監視する。通知監視API218は、エージェント206の登録、エージェント206への構成設定の配信、ならびにサーバおよびエージェント206からの通知の送信/受信に使用されるRESTエンドポイントであってもよい。通知監視API218はまた、いくつかの実施形態では、WebSocket通信を使用することができる。
【0036】
サーバ側の永続層は、この例示的な実施形態におけるサーバのペア、すなわち、データベースサーバ222(例えば、SQLサーバ)およびインデクササーバ224を含む。この実施形態におけるデータベースサーバ222は、ロボット、ロボットグループ、関連プロセス、ユーザ、役割、スケジュールなどの構成を記憶する。この情報は、いくつかの実施形態では、ウェブアプリケーション214を介して管理される。データベースサーバ222はまた、キューおよびキュー項目を管理することができる。いくつかの実施形態では、データベースサーバ222は、(インデクササーバ224に加えて、またはその代わりに)ロボットによって記録されたメッセージを記憶することができる。インデクササーバ224は、いくつかの実施形態では任意選択であり、ロボットによって記録された情報を記憶し、インデックス付けする。特定の実施形態では、インデクササーバ224は、構成設定を介して無効にされてもよい。いくつかの実施形態では、インデクササーバ224は、オープンソースプロジェクトのフルテキスト検索エンジンであるElasticSearch(登録商標)を使用する。(例えば、メッセージのログまたは行書込みのようなアクティビティを使用して)ロボットによって記録されたメッセージは、ロギングRESTエンドポイントを介してインデクササーバ224に送信されてもよく、そこで、それらは将来の利用のためにインデックス付けされる。
【0037】
図3は、1つまたは複数の実施形態による、RPAシステム300の簡略化されたデプロイメント例を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム300は、それぞれ、
図1および
図2のRPAシステム100および/または200であってもよく、それらを含んでもよい。RPAシステム300は、ロボットを実行する複数のクライアントコンピューティングシステム302を含む。コンピューティングシステム302は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム304と通信することができる。次に、コンダクタコンピューティングシステム304は、データベースサーバ306および任意選択のインデクササーバ308と通信する。
図2および
図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、任意の適切なクライアント/サーバソフトウェアが使用されてもよいことに留意されたい。例えば、コンダクタは、クライアントコンピューティングシステム上の非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバ側アプリケーションを実行することができる。
【0038】
図4は、例示的なワークフロー400を示す。ワークフロー400は、1つまたは複数のRPAロボットによって自動的に実行されるRPAワークフローであってもよい。RPAロボットは、
図1のRPAシステム100、
図2のRPAシステム200、および/または
図3のRPAシステム300によって実装されてもよい。ワークフロー400は、ワークフローとしてモデル化することができる任意の適切なプロセスであってもよく、RPAワークフローに限定されないことを理解されたい。
【0039】
ワークフロー400は、請求書を自動的に処理し支払うための複数のアクティビティ402~430を含む。
図4に示されたように、ワークフロー400は、各アクティビティ402~430がノードとして表され、アクティビティ402~430間の各遷移がノードをリンクするエッジとして表される有向グラフとしてモデル化される。アクティビティ402~430間の遷移は、送信元アクティビティから宛先アクティビティへのワークフロー400の実行を表す。ワークフロー400は、開始402と終了414との間の様々な経路を通って実行される。
【0040】
プロセスマイニングでは、効率を改善し、ワークフロー400のより良い理解を得るために、ワークフロー400の実行が分析されて、傾向、パターン、および他の分析尺度を識別することができる。ワークフロー400の実行は、プロセスグラフとして表されてもよい。ユーザがワークフロー400の実行を分析することを可能にするために、プロセスグラフに様々なフィルタが適用されてもよい。本明細書に記載された実施形態によれば、ワークフロー400のプロセスグラフに関連付けられたコンテキストデータが記憶され、記憶されたコンテキストデータに基づいてプロセスグラフをフィルタリングするためのフィルタがインスタンス化される。有利なことに、プロセスグラフに関連付けられたコンテキストデータは、例えば、プロセスグラフに以前に適用された前のフィルタの修正または除去に起因してプロセスグラフが後で変化した場合でも失われない。
【0041】
図5は、1つまたは複数の実施形態による、プロセスグラフをフィルタリングするようにフィルタをインスタンス化するための方法500を示す。方法500は、例えば、
図9のコンピュータ900などの1つまたは複数の適切なコンピューティングデバイスによって実行されてもよい。
【0042】
ステップ502において、ワークフローのプロセスグラフが受信される。プロセスグラフは、ワークフローの実行の1つまたは複数のインスタンスを表すグラフである。一例では、ワークフローは
図4のワークフロー400である。一実施形態では、ワークフローは、1つまたは複数のRPAロボットによって自動的に実行されるRPAワークフローである。しかしながら、ワークフローは、任意の適切なワークフローであってもよく、RPAワークフローに限定されないことを理解されたい。プロセスグラフは、コンピュータシステムのストレージもしくはメモリ(例えば、
図9のメモリ906)から以前に記憶されたプロセスグラフをロードすることにより、またはリモートコンピュータシステムから送信されたプロセスグラフを受信することによって受信されてもよい。
【0043】
プロセスグラフは、任意の適切な形態であってもよい。例えば、プロセスグラフは、BPMN(ビジネスプロセスモデルおよび表記法)、ペトリネット、プロセスツリー、または任意の他の適切な表記法もしくは任意の他の適切なフォーマットに基づいてモデル化されてもよい。
図6は、1つまたは複数の実施形態による、
図4のワークフロー400のプロセスグラフ600を例示的に示す。プロセスグラフ600は、ワークフロー400の実行の複数のインスタンスを表す。ワークフロー400の実行の各インスタンスは、特定の事例に関連付けられ、事例識別子によって識別されてもよい。
【0044】
プロセスグラフは、ワークフローに関連付けられた実行データに基づいて生成されてもよい。一実施形態では、ワークフローに関連付けられた実行データは、ワークフローの実行のイベントログを含む。イベントログは、ワークフローの実行のイベントを記録するログである。イベントログ内の各イベントは、特定のタイムスタンプおよび特定の事例識別子を有する特定のアクティビティの実行を定義する。実行データは、ワークフローの実行を表す任意のデータを含んでもよく、イベントログに限定されないことを理解されたい。
【0045】
ステップ504において、プロセスグラフに関連付けられたコンテキストデータが記憶される。コンテキストデータは、プロセスグラフの現在の状態(すなわち、ステップ506においてプロセスグラフをフィルタリングするようにフィルタをインスタンス化する前および直前のプロセスグラフの状態)に関連付けられた任意のデータを含んでもよい。コンテキストデータは、例えば、
図9のメモリ906などのメモリまたはストレージに記憶される。
【0046】
一実施形態では、複製オンデマンド手法において、プロセスグラフに関連付けられたコンテキストデータは、1つまたは複数のプロセスダッシュボードアプリケーションのセットの現在の状態、またはプロセスダッシュボードアプリケーションのセットに関するデータ(すなわち、ステップ506においてプロセスグラフをフィルタリングするようにフィルタをインスタンス化する前および直前の状態)を含む。プロセスダッシュボードアプリケーションは、ワークフローのプロセス分析のためのアプリケーションである。この実施形態では、プロセスダッシュボードアプリケーションの現在の状態は複製されて現在の状態でフィルタをインスタンス化するが、その後のユーザインタラクションのために複製された現在の状態を変更することができる。一般に、現在の状態は、すべてのフィルタおよび入力データの結合された状態によって決定される。
【0047】
一実施形態では、プロセス複製手法において、プロセスグラフに関連付けられたコンテキストデータは、現在の状態(すなわち、ステップ506においてプロセスグラフをフィルタリングするようにフィルタをインスタンス化する前および直前の状態)におけるプロセスグラフの複製または復元を含む。プロセスグラフは、ユーザが1つのディスプレイに描写されたプロセスグラフ上のフィルタを、他のディスプレイに描写された他のプロセスグラフに影響を与えることなく、インスタンス化、除去、または修正することができるように、別々に表示されてもよい。
【0048】
一実施形態では、キャッシュ層を使用する再フィルタリング手法では、フィルタのインスタンス化に関連付けられたコンテキストは、プロセスグラフの現在の実行記録(すなわち、ステップ506においてプロセスグラフをフィルタリングするようにフィルタをインスタンス化する前および直前のプロセスグラフの実行記録)を含む。実行記録はキャッシュ層に記憶され、実行記録に基づいてプロセスグラフをフィルタリングするために、その後で再計算することなく実行記録が迅速に取り出されることが可能になる。
【0049】
ステップ506において、記憶されたコンテキストデータに基づいてプロセスグラフをフィルタリングするように、フィルタがインスタンス化される。フィルタのインスタンス化は、プロセスグラフがどのようにフィルタリングされるかについてのパラメータを定義することによるフィルタの作成、およびプロセスグラフをフィルタリングするための作成されたフィルタの適用を指す。インスタンス化されたフィルタは、ストレージまたはメモリ(例えば、
図9のメモリ906)から記憶されたコンテキストデータを取り出し、取り出されたコンテキストデータにインスタンス化されたフィルタを適用することにより、記憶されたコンテキストデータに基づいてプロセスグラフをフィルタリングする。フィルタは、ユーザ入力に応答してインスタンス化されてもよい。フィルタは、プロセスグラフをフィルタリングするのに適した任意のフィルタであってもよい。例示的なフィルタには、ループ深度フィルタおよびアクティビティフィルタが含まれる。
【0050】
アクティビティのループ深度は、アクティビティがプロセスグラフ内でそれ自体をループするかまたは繰り返す回数を指す。例えば、
図6のプロセスグラフ600では、ループ挙動604は、アクティビティ「請求書の確認を検索」に関連付けられたノード602にループバックするエッジとして表され、アクティビティを274回繰り返すことを表す。ループ深度フィルタは、プロセスグラフ内のノードをフィルタリングして、ユーザ定義されたループ深度しきい値を満たさないノードを識別する。
【0051】
図7は、1つまたは複数の実施形態による、ループ深度フィルタに従ってフィルタリングされた、例示的なフィルタリングされたプロセスグラフ700を示す。
図7に示されたフィルタリングされたプロセスグラフ700は、ループ深度フィルタでフィルタリングされた
図6のプロセスグラフ600である。ループ深度フィルタは、ユーザ選択インターフェース702に基づいて、2のループ深度しきい値を有するように定義される。したがって、
図6のプロセスグラフ600は、ループ深度しきい値を満たさない事例(すなわち、2回以上アクティビティを実行する事例)を識別するためにフィルタリングされる。
図7に示されたように、ループ深度フィルタはプロセスグラフ600に適用されて、(
図6の)ノード602をノード704および706に拡張し、ノード704は、「請求書の最終確認」アクティビティの実行の最初のインスタンスに関連付けられた事例に対応し、ノード706は、「請求書の最終確認」アクティビティの実行の繰り返しインスタンスに関連付けられた事例(すなわち、2回以上「請求書の最終確認」アクティビティを繰り返す事例)に対応する。
【0052】
ステップ508において、フィルタリングされたプロセスグラフが出力される。フィルタリングされたプロセスグラフは、例えば、フィルタリングされたプロセスグラフをコンピュータシステムのディスプレイデバイス(例えば、
図9のディスプレイ910)に表示することにより、またはフィルタリングされたプロセスグラフをコンピュータシステムのメモリもしくはストレージ(例えば、
図9のメモリ906)に記憶することによって出力されてもよい。
【0053】
一実施形態では、方法500のステップは、プロセスグラフ上に任意の数のフィルタを適用するために任意の回数反復的に繰り返されてもよい。例えば、
図8は、1つまたは複数の実施形態による、アクティビティフィルタに従ってフィルタリングされた、例示的なフィルタリングされたプロセスグラフ800を示す。フィルタリングされたプロセスグラフ800は、アクティビティフィルタでさらにフィルタリングされた
図7のプロセスグラフ700である。プロセスグラフ700は、
図7に関して上述されたように、2のループ深度しきい値を有する前のループ深度フィルタで以前にフィルタリングされている。方法500によれば、プロセスグラフ700は、受信され(ステップ502)、プロセスグラフ700に関連付けられたコンテキストデータが記憶され(ステップ504)、記憶されたコンテキストデータに基づいてプロセスグラフをフィルタリングするようにアクティビティフィルタがインスタンス化されて(ステップ506)、フィルタリングされたプロセスグラフ800を生成し、フィルタリングされたプロセスグラフ800が出力される。アクティビティフィルタは、以前にフィルタリングされたプロセスグラフ700に基づいて定義される。具体的には、アクティビティフィルタは、アクティビティ「請求書の最終確認(2+)」用のノードを含むすべての事例を識別するように定義される。
【0054】
一実施形態では、以前にフィルタリングされたプロセスグラフを修正するために、前のフィルタの修正形態が受信されてもよい。例えば、フィルタリングされたプロセスグラフ800では、ループ深度フィルタを除去するために、またはループ深度フィルタのパラメータを修正してループ深度しきい値を変更するために、前のループ深度フィルタの修正形態が受信されてもよい。前のループ深度フィルタのそのような修正形態は、アクティビティ「請求書の最終確認(2+)」用のノードがもはや存在しないことになるはずである。しかしながら、本明細書に記載された実施形態によれば、アクティビティ「請求書の最終確認(2+)」用のノードを含むすべての事例を識別するように定義されたアクティビティフィルタは、インスタンス化の直前の時間の記憶されたコンテキストデータに基づいてプロセスグラフをフィルタリングして、したがって、アクティビティ「請求書の最終確認(2+)」用のノードが前のループ深度フィルタの修正形態によりもはや存在しない場合でも、フィルタリングされたプロセスグラフ800を生成する。
【0055】
図9は、本発明の一実施形態による、
図5に示された方法を含む本明細書に記載された方法、ワークフロー、およびプロセスを実行するように構成されたコンピューティングシステム900を示すブロック図である。いくつかの実施形態では、コンピューティングシステム900は、本明細書に描写および/または記載されたコンピューティングシステムのうちの1つまたは複数であってもよい。コンピューティングシステム900は、情報を通信するためのバス902または他の通信機構と、情報を処理するためにバス902に結合されたプロセッサ904とを含む。プロセッサ904は、中央処理装置(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらの任意の組み合わせを含む、任意のタイプの汎用プロセッサまたは専用プロセッサであってもよい。プロセッサ904はまた、複数の処理コアを有してもよく、コアのうちの少なくともいくつかは、固有の機能を実行するように構成されてもよい。いくつかの実施形態では、マルチ並列処理が使用されてもよい。
【0056】
コンピューティングシステム900は、プロセッサ904によって実行されるべき情報および命令を記憶するためのメモリ906をさらに含む。メモリ906は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気ディスクもしくは光ディスクなどの静的記憶装置、または任意の他のタイプの非一時的コンピュータ可読媒体もしくはそれらの組み合わせの任意の組み合わせから構成することができる。非一時的コンピュータ可読媒体は、プロセッサ904によってアクセスされ得る任意の利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体、またはその両方を含んでもよい。媒体はまた、リムーバブル、非リムーバブル、またはその両方であってもよい。
【0057】
さらに、コンピューティングシステム900は、任意の現在存在するか、または将来実現される通信規格および/またはプロトコルに従って、ワイヤレス接続および/または有線接続を介して通信ネットワークへのアクセスを提供するために、トランシーバなどの通信デバイス908を含む。
【0058】
プロセッサ904は、バス902を介して、ユーザに情報を表示するのに適したディスプレイ910にさらに結合される。ディスプレイ910はまた、タッチディスプレイおよび/または任意の適切な触覚I/Oデバイスとして構成されてもよい。
【0059】
キーボード912、およびコンピュータマウス、タッチパッドなどのカーソル制御デバイス914は、ユーザがコンピューティングシステムとインターフェースすることを可能にするためにバス902にさらに結合される。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しなくてもよく、ユーザは、ディスプレイ910および/またはタッチパッド(図示せず)のみを介してデバイスと対話することができる。入力デバイスの任意のタイプおよび組み合わせが、設計上の選択事項として使用されてもよい。特定の実施形態では、物理的な入力デバイスおよび/またはディスプレイは存在しない。例えば、ユーザは、それと通信している別のコンピューティングシステムを介してコンピューティングシステム900とリモートで対話することができるか、またはコンピューティングシステム900は自律的に動作することができる。
【0060】
メモリ906は、プロセッサ904によって実行されるときに機能を提供するソフトウェアモジュールを記憶する。モジュールは、コンピューティングシステム900のためのオペレーティングシステム916と、本明細書に記載されたプロセスまたはその派生物の全部または一部を実行するように構成された1つまたは複数の追加の機能モジュール918とを含む。
【0061】
当業者なら、「システム」が、本発明の範囲から逸脱することなく、サーバ、組込みコンピューティングシステム、パーソナルコンピュータ、コンソール、携帯情報端末(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、もしくは任意の他の適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを諒解されよう。上述された機能を「システム」によって実行されるものと提示することは、決して本発明の範囲を限定するものではなく、本発明の多くの実施形態の一例を提供するものである。実際、本明細書に開示された方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と一致する局所化された形態および分散された形態で実装されてもよい。
【0062】
本明細書に記載されたシステムの特徴のうちのいくつかは、それらの実装の独立性をより詳細に強調するために、モジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタムの超大規模集積(VLSI)回路もしくはゲートアレイ、ロジックチップ、トランジスタ、または他のディスクリートコンポーネントなどの既製の半導体を備えるハードウェア回路として実装されてもよい。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックスプロセッシングユニットなどのプログラマブルハードウェアデバイスに実装されてもよい。モジュールはまた、様々なタイプのプロセッサによって実行するためのソフトウェアに少なくとも部分的に実装されてもよい。遂行可能コードの識別されたユニットは、例えば、オブジェクト、手順、または機能として編成されてもよいコンピュータ命令の1つまたは複数の物理ブロックまたは論理ブロックを含んでもよい。それにもかかわらず、識別されたモジュールの遂行可能ファイルは、物理的に一緒に配置される必要はないが、論理的に一緒に結合されたときにモジュールを備え、モジュールのための記載された目的を達成する異なる場所に記憶された異なる命令を含んでもよい。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュデバイス、RAM、テープ、および/または本発明の範囲から逸脱することなくデータを記憶するために使用される任意の他のそのような非一時的コンピュータ可読媒体であってもよいコンピュータ可読媒体に記憶されてもよい。実際、遂行可能コードのモジュールは、単一の命令、または多くの命令であり得、いくつかの異なるコードセグメントにわたって、異なるプログラムの間で、かついくつかのメモリデバイスにわたって分散さえされてもよい。同様に、動作データは、本明細書ではモジュール内で識別および図示されてもよく、任意の適切な形態で具現化され、任意の適切なタイプのデータ構造内で編成されてもよい。動作データは、単一のデータセットとして収集されてもよく、異なるストレージデバイスを含む異なる場所にわたって分散されてもよく、少なくとも部分的に、システムまたはネットワーク上の単に電子信号として存在してもよい。
【0063】
上記は、本開示の原理を例示しているにすぎない。したがって、当業者は、本明細書に明示的に記載または図示されていないが、本開示の原理を具現化し、その趣旨および範囲内に含まれる様々な構成を考案することができることが理解されよう。さらに、本明細書に列挙されたすべての例および条件付き言語は、主に、読者が本開示の原理および本技術を促進するために本発明者によって寄与された概念を理解するのを助ける教育目的のためのものにすぎず、そのような具体的に列挙された例および条件に限定されないと解釈されるべきである。その上、本開示の原理、態様、および実施形態、ならびにその具体例を列挙する本明細書のすべての記述は、その構造的および機能的の両方の均等物を包含するものである。さらに、そのような均等物は、現在知られている均等物ならびに将来開発される均等物の両方を含むことが意図される。