(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-18
(45)【発行日】2022-10-26
(54)【発明の名称】自動化プロセスの処理の分散を最適化するシステム
(51)【国際特許分類】
G06F 9/455 20060101AFI20221019BHJP
G06F 9/50 20060101ALI20221019BHJP
G06F 9/52 20060101ALI20221019BHJP
【FI】
G06F9/455 150
G06F9/50 120A
G06F9/50 150B
G06F9/52 120B
【外国語出願】
(21)【出願番号】P 2018022903
(22)【出願日】2018-02-13
【審査請求日】2021-02-10
(32)【優先日】2017-02-15
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2017-03-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】516005083
【氏名又は名称】ブルー プリズム リミテッド
(74)【代理人】
【識別番号】110002572
【氏名又は名称】弁理士法人平木国際特許事務所
(72)【発明者】
【氏名】デヴィッド モス
(72)【発明者】
【氏名】スチュアート ウッド
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2016-527620(JP,A)
【文献】特開2007-265193(JP,A)
【文献】特開2004-326754(JP,A)
【文献】米国特許第9292466(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 9/50
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
自動化プロセスを実行するためのシステムであって、
自動化プロセスを
コンピュータに実行
させるための命令
、
一又は複数の作業待ち行列、及
び
各作業待ち行列と前記自動化プロセスの一つとの間の関連付け、を保存するように構成されたデータストアと、
前記データストアに保存された
前記命令に
従って一又は複数の自動化プロセスを実行するように構成された一又は複数の仮想マシンと、
前記一又は複数の作業待ち行列を前記一又は複数の仮想マシンに割り当てるように構成されたアプリケーションサーバとを備え、
前記各仮想マシンは、前記アプリケーションサーバによって作業待ち行列が割り当てられると、
前記割り当てられた作業待ち行列に関連付けられた
前記自動化プロセスを実行するための
前記命令を前記データストアから読み出し、
前記データストアから
読み出された
前記命令に従って前記自動化プロセスを実行するシステム。
【請求項2】
請求項1において、前記各作業待ち行列は、一又は複数の作業項目を含み、前記各仮想マシンは、前記データストアに保存されている命令に従って、前記割り当てられた作業待ち行列の作業項目を処理することによって前記一又は複数の自動化プロセスを実行するように構成されているシステム。
【請求項3】
請求項2において、
各前記作業項目は、一又は複数の情報データオブジェクトを含むシステム。
【請求項4】
請求項1乃至3のいずれかにおいて、前記各作業待ち行列は、作業項目の論理グループであるシステム。
【請求項5】
請求項
2乃至4のいずれかにおいて、前記データストアに保存された命令は、
各前記作業項目に対して前記自動化プロセスを実行するためのワークフローを定義するシステム。
【請求項6】
請求項1乃至5のいずれかにおいて、前記データストアは、前記一又は複数の仮想マシンと、前記一又は複数の作業待ち行列との間のリンクを定義するリンクデータを保存するように構成されているシステム。
【請求項7】
請求項1乃至6のいずれかにおいて、前記各仮想マシンは、一又は複数の他の仮想マシンと通信するように構成されているシステム。
【請求項8】
請求項7において、前記仮想マシンは、一又は複数の他の仮想マシンと直接的に通信するように構成されているシステム。
【請求項9】
請求項7において、前記仮想マシンは、前記アプリケーションサーバ又は前記データストアのうちの一つにメッセージを送信することによって通信するように構成され、前記アプリケーションサーバ又は前記データストアは、受信した前記メッセージをメッセージリポジトリ内に保存するように構成され、前記各仮想マシンは、前記メッセージリポジトリ内のメッセージについて、前記アプリケーションサーバ又は前記データストアをポーリングするように構成されているシステム。
【請求項10】
請求項7において、前記仮想マシンは、前記アプリケーションサーバ又は前記データストアのうちの一つにメッセージを送信することによって通信するように構成され、前記アプリケーションサーバ又は前記データストアは、受信した前記メッセージを一又は複数の仮想マシンに送信するように構成されているシステム。
【請求項11】
請求項1乃至10のいずれかにおいて、前記アプリケーションサーバは、単一の作業待ち行列を複数の仮想マシンに割り当てるように構成されているシステム。
【請求項12】
請求項10において、前記データストアは、仮想マシンが所与のデータオブジェクトにアクセスする際、前記所与のデータオブジェクトをロックすることによって、複数の仮想マシンによる前記データストア内の所与のデータオブジェクトへの同時アクセスを防止するように構成されているシステム。
【請求項13】
請求項12において、前記所与のデータオブジェクトに対する前記ロックは、フェイルオーバイベントを通して持続するシステム。
【請求項14】
請求項13において、前記データストアは、前記複数の仮想マシンのうちのいずれの仮想マシンも前記データオブジェクトを処理することができないことを確認することにより、前記ロックをクリアするように構成されているシステム。
【請求項15】
請求項
2乃至
4のいずれかにおいて、前記アプリケーションサーバは、前記作業項目を処理する前に、前記作業項目を処理するために必要な時間の長さを計算するように構成されているシステム。
【請求項16】
請求項15において、前記アプリケーションサーバは、局所化された環境又は性能問題、ネットワーク接続性、及びターゲット仮想マシンの応答性に基づいて、前記時間の長さを計算するように構成されているシステム。
【請求項17】
請求項15又は16において、前記アプリケーションサーバは、前記計算された、前記作業項目を処理するために必要な時間の長さ及び前記作業待ち行列が割り当てられている前記仮想マシンの数に基づいて、作業待ち行列を処理するための推定時間を提供するように構成されているシステム。
【請求項18】
請求項15乃至17のいずれかにおいて、前記アプリケーションサーバは、前記仮想マシンによる作業待ち行列の処理の進行を監視するように構成されているシステム。
【請求項19】
請求項18において、前記アプリケーションサーバは、メッセージングプロトコルを使用して前記一又は複数の仮想マシンと通信するように構成され、前記各仮想マシンは、プロセス実行中に状態情報をアプリケーションサーバに応答するように構成されているシステム。
【請求項20】
請求項15乃至19のいずれかにおいて、前記アプリケーションサーバは、追加の仮想マシンに作業待ち行列を割り当てること及び/又はパフォーマンス及びスループットを向上させることに関する推奨を提供するように構成されているシステム。
【請求項21】
請求項1乃至20のいずれかにおいて、前記アプリケーションサーバは、各仮想マシンで利用可能なリソースに基づいて、各仮想マシンに作業待ち行列を割り当てるように構成されているシステム。
【請求項22】
請求項1乃至21のいずれかにおいて、前記アプリケーションサーバは、前記自動化プロセスの実行を解析して、各仮想マシンの速度、成功率、及び/又は応答性に基づいて、
前記作業待ち行列内の作業項目を分散させる最適分散モデルを特定するように構成されているシステム。
【請求項23】
請求項22において、前記アプリケーションサーバは、前記特定された最適分散モデルに基づいて、仮想マシンに作業待ち行列を割り当てるように構成されているシステム。
【請求項24】
請求項22又は23において、前記アプリケーションサーバは、前記最適分散モデルに基づいて、少なくとも一つの仮想マシンに現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成されているシステム。
【請求項25】
請求項2において、前記アプリケーションサーバは、前記作業項目及び/又は作業待ち行列の属性に基づいて、仮想マシンに作業待ち行列を割り当てるように構成されているシステム。
【請求項26】
請求項2
5において、前記一又は複数の作業項目の少なくとも一つは、前記作業項目が処理されるまでに前記作業待ち行列の一部となり得る最大時間長を定義する最大待ち行列時間属性を有するシステム。
【請求項27】
請求項2
5又は2
6において、前記一又は複数の作業待ち行列の少なくとも一つは、前記作業待ち行列の一部となり得る作業項目の最大数を定義する最大待ち行列長属性を有するシステム。
【請求項28】
請求項2
5乃至2
7のいずれかにおいて、前記一又は複数の作業待ち行列の少なくとも一つは、前記作業待ち行列内の全ての作業項目を処理する最大時間を定義する待ち行列完了時間属性を有するシステム。
【請求項29】
請求項2
5乃至2
8のいずれかにおいて、前記アプリケーションサーバは、前記作業項目及び/又は作業待ち行列の属性に基づいて、前記一又は複数の仮想マシンのうちの少なくとも一つに、
前記複数の作業待ち行列のうちの現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成されているシステム。
【請求項30】
請求項1乃至
29のいずれかにおいて、前記システムの現在の状態及び/又は構成に関する情報を出力するように構成された出力デバイスを更に備えるシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセスを自動化するためのシステム及び方法に関する。具体的には、本発明は、一又は複数の仮想ワーカ全体に亘る自動化プロセス(automated processes)の実行を管理するためのシステム及び方法に関する。
【背景技術】
【0002】
予期された変更又は予期されない変更によって、事業の運営を変更する必要が生じることが多くある。例えば、新製品の発売によって、既存のシステムを統合する必要が生じ、新しい規制によって、プロセス工程の記録が要求され、企業買収によって、2つの製品ライン及びプロセスを併合することが必要になることもある。これらの問題は、従来の事業システムの計画及び展開(planning and rollout)でも対応できるが、これらの計画サイクル(planning cycles)は、大規模なプロジェクト用に設計されており、日常的な運営変更をサポートするものではない。この結果、変更のために元のシステムの機能を置き換え、必要な新しい機能を提供する新しいシステムを開発する必要があり、変更を確実に実施するまでに広範囲な試験及び品質保証が必要であるため、変更は、莫大なコストがかかり、実現までに数年もかかることもある。これらのシステムは、コンピュータプログラミング及び/又はアプリケーション開発に必要な専門技能を有する技術者が設計し、構成する必要がある。組織内では、必要な技能を有する人材が、仮にいたとしても、不足していることが多いため、開発プロセスには時間がかかり、このようなシステムが実現されても、元のシステムのユーザが新しいシステムに慣れるまでには長い時間がかかるため、このようなプロセスは、非効率で不正確なものとなる場合が多い。
【0003】
事務管理部門のビジネスプロセスには、複数の独立した互換性のないソフトウェアアプリケーションが含まれることが多いため、この問題が発生する。これらのソフトウェアアプリケーションの幾つかは、別のソフトウェアアプリケーションがインタラクトできる所定のインタフェースを提供することによってアプリケーションの内部又は外部に情報を転送するためのAPIを有するが、全てのソフトウェアアプリケーションがこのような機能を有するわけではない。例えば、これらの事務管理部門のビジネスプロセスで使用される多くのソフトウェアアプリケーションは、他のソフトウェアアプリケーションが容易にアクセスするめに必要な機能を備えるように設計されていない旧式のアプリケーションである。この他、非常に特殊な用途のために作成された社内用カスタムソフトウェアソリューションでは、他のアプリケーションとインタラクトするためのインタフェースを提供する必要性は、予見されていなかった。従来の手法では、運用スタッフがこれらのソフトウェアアプリケーション間のギャップを埋めることによってこのような問題が克服されている。運用スタッフの使用は、要求されるキャパシティを提供するために多数の運用スタッフを雇用する必要があるため、高価なソリューションである。運用スタッフは、一日のうちの一部しか働けず、キーボード及びマウス又は他の任意のインタフェースを使用して情報及び/又はコマンドを入力できる速度によって制限され、画面及び/又は他の出力から情報を読み取ることができる速度によって制限されるため、これらの互換性のないソフトウェアアプリケーション又はシステム間のギャップを人間によって埋めるプロセスは、通常、時間がかかる。更に、コンピュータとは異なり、人間は、データ及び/又はコマンドをシステムに入力したり、他のコンピュータから情報を読み込んだりする際に間違いを起こしやすい。また、このような運用スタッフを使用する場合、プロセス、システム、及びデータに悪意のある干渉が発生する可能性もある。
【0004】
例えば、電気通信事業者が、既存のソフトウェアアプリケーションと互換性がない新しいシステムの使用を必要とする新しい携帯電話機を発売することがある。この不足は、通常、運用スタッフによって補われるが、このような新しく発売される製品の需要を予測することは不可能なことが多く、ソフトウェアシステムを使用するために訓練されたスタッフが不足したり過剰になったりすることがある。したがって、需要に関する詳細な事前知識を必要とせず、需要に対応するための迅速なスケーリングが可能なソリューションによって、このような互換性のないソフトウェアシステム間のギャップを埋めることが望ましい。
【0005】
このようなシステムでは、慎重に取り扱われるべき大量の個人情報が取り扱われることも多い。したがって、人間が一方のシステムから他方のシステムに単に情報をコピーする際に生じる可能性があるエラーの数を減らし、この情報を一貫した手法で取り扱うことが望まれるとともに、絶対に必要な場合以外はアクセスできないプライベートで安全な手法で情報を処理することが望まれる。
【0006】
既存のソフトウェアアプリケーションが、新しいプロセスを実装するために必要な機能を欠いている場合に運用スタッフが必要になるこれらの問題は、ビジネスの事務管理部門に固有のものではない。例えば、病院及び/又は医院の受付窓口は、予約した患者が多く訪れるために忙しい状況であることが多い。受付担当者は、予約して来院した患者から詳細情報を聞き取り、患者の予約をチェックするソフトウェアアプリケーションにこれらの情報を入力するといったルーチン作業を行うために多くの時間を費やす。このプロセスは、時間がかかり、患者の詳細情報を聞き間違えて不正確になることがあり、他の職務を実行する時間を受付担当者から奪う。
【0007】
病院及び/又は医院の受付には、患者が自ら詳細情報をシステムに入力できるセルフサービスチェックイン用設置型情報端末(self-service check-in kiosks)を設置することが望ましく、これによって、情報の誤りが最小限に抑えられ、受付担当者は、他の作業に従事でき、患者の待ち時間が短縮される。しかしながら、受付担当者が使用するソフトウェアアプリケーションは、より高度な機能を有する可能性が高いので、患者を不必要に混乱させ、或いはアプリケーションは、管理上の制御及び/又は情報へのアクセス権を有する場合があり、セルフサービスチェックイン用設置型情報端末を使用する患者にこれらを提供することは不適切であるため、受付担当者に提供されるインタフェースと同じインタフェースを患者に提供することは適切でない可能性がある。これらのシステムを実装するために必要な機能を提供する新しいソフトウェアアプリケーション及びシステムが開発されたときに、既存の受付アプリケーションが、セルフサービス用設置型情報端末上で実行されて特定の機能及び/又は機能にアクセスする新しいアプリケーションのための機能を提供しない限り、事務管理部門のビジネスプロセスの変更に関連する長い計画サイクル、費用、非効率性、不正確さの問題と同様の問題が生じる。このため、このようなプロジェクトが選択されないことも多い。他にも同様の多くの例があることは、明らかである。
【発明の概要】
【発明が解決しようとする課題】
【0008】
既存のソリューションは、旧式ソフトウェアとインタラクトすることによってこれらのプロセスを自動化するように構成された仮想マシンを仮想作業者(virtual workers)として使用することを含む。このようなシステムは、PCT出願公開番号WO2015/001360A1に記載されている。しかしながら、これらのシステムでは、仮想作業者間で作業項目をどのように分散させるべきかをユーザが決定する必要があり、このような事項をこのように決定することは、非効率である場合が多い。したがって、仮想作業者間の作業項目の分散を最適化するための適切なシステム及び方法が必要とされている。
【課題を解決するための手段】
【0009】
本発明は、自動化プロセスを実行するためのシステムに関する。システムは、自動化プロセスを実行するための命令、一又は複数の作業待ち行列、及び各作業待ち行列と自動化プロセスの一つとの間の関連付けを保存するように構成されたデータストアと、データストアに保存された命令によって定義される一又は複数の自動化プロセスを実行するように構成された一又は複数の仮想マシンと、一又は複数の作業待ち行列を一又は複数の仮想マシンに割り当てるように構成されたアプリケーションサーバとを備える。各仮想マシンは、アプリケーションサーバによって作業待ち行列が割り当てられると、割り当てられた作業待ち行列に関連付けられた自動化プロセスを実行するための命令をデータストアから読み出し、データストアから検索された命令に従って自動化プロセスを実行する。
【0010】
各作業待ち行列は、通常、一又は複数の作業項目を含み、各仮想マシンは、データストアに保存されている命令に従って、割り当てられた作業待ち行列の作業項目を処理することによって一又は複数の自動化プロセスを実行するように構成されている。各作業項目は、一又は複数の情報データオブジェクトを含んでいてもよく、各作業待ち行列は、通常、作業項目の論理グループである。
データストアに保存された命令は、各作業項目に対して自動化プロセスを実行するためのワークフローを定義してもよい。
【0011】
好ましくは、データストアは、一又は複数の仮想マシンと、一又は複数の作業待ち行列との間のリンクを定義するリンクデータを保存する。
【0012】
各仮想マシンは、一又は複数の他の仮想マシンと通信するように構成してもよい。仮想マシンは、一又は複数の他の仮想マシンと直接的に通信するように構成してもよい。これに代えて、仮想マシンは、アプリケーションサーバ又はデータストアのうちの一つにメッセージを送信することによって通信するように構成してもよく、アプリケーションサーバ又はデータストアは、受信したメッセージをメッセージリポジトリ内に保存するように構成してもよく、各仮想マシンは、メッセージリポジトリ内のメッセージについて、アプリケーションサーバ又はデータストアをポーリングするように構成してもよい。更にこれに代えて、仮想マシンは、アプリケーションサーバ又はデータストアのうちの一つにメッセージを送信することによって通信するように構成してもよく、アプリケーションサーバ又はデータストアは、受信したメッセージを一又は複数の仮想マシンに送信するように構成してもよい。
【0013】
アプリケーションサーバは、単一の作業待ち行列を複数の仮想マシンに割り当てるように構成してもよい。したがって、データストアは、仮想マシンが所与のデータオブジェクトにアクセスする際、所与のデータオブジェクトをロックすることによって、複数の仮想マシンによるデータストア内の所与のデータオブジェクトへの同時アクセスを防止するように構成してもよい。好ましくは、所与のデータオブジェクトに対するロックは、フェイルオーバイベントを通して持続し、データストアは、複数の仮想マシンのうちのいずれの仮想マシンもデータオブジェクトを処理することができないことを確認することにより、ロックをクリアするように構成してもよい。
【0014】
アプリケーションサーバは、作業項目を処理する前に、作業項目を処理するために必要な時間の長さを計算するように構成してもよく、これは、局所化された環境又は性能問題、ネットワーク接続性、及びターゲット仮想マシンの応答性に基づいて行ってもよい。アプリケーションサーバは、計算された、作業項目を処理するために必要な時間の長さ及び作業待ち行列が割り当てられている仮想マシンの数に基づいて、作業待ち行列を処理するための推定時間を提供するように構成してもよい。
【0015】
アプリケーションサーバは、仮想マシンによる作業待ち行列の処理の進行を監視するように構成してもよい。アプリケーションサーバは、メッセージングプロトコルを使用して一又は複数の仮想マシンと通信するように構成してもよく、各仮想マシンは、プロセス実行中に状態情報をアプリケーションサーバに応答するように構成してもよい。
【0016】
アプリケーションサーバは、追加の仮想マシンに作業待ち行列を割り当てること及び/又はパフォーマンス及びスループットを向上させることに関する推奨を提供するように構成してもよい。
好ましくは、アプリケーションサーバは、各仮想マシンで利用可能なリソースに基づいて、各仮想マシンに作業待ち行列を割り当てるように構成されている。
【0017】
アプリケーションサーバは、自動化プロセスの実行を解析して、各仮想マシンの速度、成功率、及び/又は応答性に基づいて、最適分散モデルを特定し、特定された最適分散モデルに基づいて、仮想マシンに作業待ち行列を割り当てるように構成してもよい。アプリケーションサーバは、最適分散モデルに基づいて、少なくとも一つの仮想マシンに現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成してもよい。
【0018】
アプリケーションサーバは、機械学習アルゴリズムを使用して自動化プロセスの実行を解析し、仮想マシンへの作業待ち行列の分散を向上させるように構成してもよい。
【0019】
アプリケーションサーバは、作業項目及び/又は作業待ち行列の属性に基づいて、仮想マシンに作業待ち行列を割り当てるように構成してもよい。一又は複数の作業項目の少なくとも一つは、作業項目が処理されるまでに作業待ち行列の一部となり得る最大時間長を定義する最大待ち行列時間属性を有していてもよい。一又は複数の作業待ち行列の少なくとも一つは、作業待ち行列の一部となり得る作業項目の最大数を定義する最大待ち行列長属性を有していてもよい。一又は複数の作業待ち行列の少なくとも一つは、作業待ち行列内の全ての作業項目を処理する最大時間を定義する待ち行列完了時間属性を有していてもよい。
【0020】
アプリケーションサーバは、作業項目及び/又は作業待ち行列の属性に基づいて、一又は複数の仮想マシンのうちの少なくとも一つに、現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成してもよい。
システムの現在の状態及び/又は構成に関する情報を出力するように構成された出力デバイスを更に備えていてもよい。
【図面の簡単な説明】
【0021】
【
図1】本発明に基づくシステムの実現例の概略図である。
【
図2】本発明に基づく例示的な作業待ち行列及び作業項目を示す図である。
【発明を実施するための形態】
【0022】
ここに開示するシステム及び方法は、効率的に処理を実行するために、ソフトウェアアプリケーションとインタラクトでき、及び相互にインタラクトできるデジタル作業者(digital workforce)として仮想マシンを使用することによってプロセスを自動化するシステムのコンテキストで動作する。このようなシステムは、国際公開公報第2015/001360A1号に開示されており、この開示は、参照により本明細書に援用される。
【0023】
図1は、本発明に基づく代表的なシステム100を示している。システム100は、データストア101と、アプリケーションサーバ102と、一又は複数の仮想マシン103とを含む。データストア101は、自動化プロセスに関連するデータ、例えば、処理すべき作業項目及び自動化プロセスを定義する命令を保存する。アプリケーションサーバ102は、仮想マシン103とデータストア101との間の通信を仲介し、仮想マシン103の作成、削除、動作を管理する。仮想マシン103は、アプリケーションサーバ102から受信した命令に従って、自動化された処理を実行するように構成されている。
【0024】
仮想マシン103は、一又は複数のリソースグループ104a~cに組織化してもよい。リソースグループ104a~cは、一又は複数のハードウェアデバイス、例えば、サーバに亘ってインプリメントされた仮想マシンの論理グループであってもよく、仮想マシンを動作させる所与のプロセス又は作業待ち行列(work queue)が利用できる計算能力、したがって、自動化プロセスを実行するために利用可能な計算能力を表す。特定の自動化プロセスは、単一のリソースグループへのアクセスを有していてもよく、複数のリソースグループを利用できるようにしてもよい。データストア101及びアプリケーションサーバ102は、通常、専用サーバ等の専用ハードウェアリソース上に設けられるが、同じ物理的なハードウェア上でデータストア101、アプリケーションサーバ102及び仮想マシン103を動作させることも可能である。
【0025】
仮想マシン103は、標準的なエンドユーザオペレーティングシステム、好ましくは、Microsoft Windows(登録商標)の持続的仮想化インスタンス(persistent virtualised instances)であるが、macOS(登録商標)又はLinux(登録商標)ディストリビューション等、適切ないかなるオペレーティングシステムを使用してもよい。仮想マシン103は、適切なセキュリティクリアランス又は認証なしでは、物理的又は遠隔的にアクセスすることができない一又は複数のセキュアサーバ上に存在することが好ましい。仮想マシンが存在するサーバ又はリソースは、VMware ESX(登録商標)等のタイプ1ハイパーバイザ(Type 1 hypervisors)を実行することが好ましいが、仮想マシンの作成及び実行を可能にするハードウェア及びソフトウェアの構成は、適切ないかなるものであってもよいことは明らかである。仮想マシン103は、通常、グラフィカル出力を表示するモニタ又は同様の出力デバイスに接続されていないという意味でヘッドレスである。複数の仮想マシン103を実行することにより、複数の自動化プロセスを同時に実行してもよく、これにより、生産性を向上させ、又は複数の外部ユーザに同時にサービスを提供することができる。
【0026】
仮想マシン103によって実行される自動化プロセスは、通常、例えば、スクリーンスクレイピング等の手法を使用するユーザインタフェースを介して、或いは利用可能なAPI又はアクセシビリティインタフェース(accessibility interfaces)を使用して、旧式ソフトウェアアプリケーションとインタラクトすることを含む。自動化プロセスを定義するワークフローは、通常は、独立したコンピュータ端末上で、ユーザによって設計され、アプリケーションサーバ102又はデータストア101に格納及び保存される。
【0027】
図1に示す実施形態では、データストア101は、アプリケーションサーバ102と双方向通信しており、アプリケーションサーバ102は、仮想マシン103と双方向通信している。このように、アプリケーションサーバは、仮想マシン103とデータストア101との接続を管理する中間デバイスとして機能する。アプリケーションサーバ102は、例えば、Windows認証及び/又はSQL認証等のデータストアセキュリティ証明書(data store security credentials)を保持し、データストア101の安全な接続プロキシとして振る舞い、すなわち、全ての仮想マシン103は、アプリケーションサーバ102と通信し、アプリケーションサーバ102は、仮想マシン103に代わってデータストア101と安全に通信する。この構成により、アプリケーションサーバ102は、データストア101に保存されているデータにアクセスし、及びこれらのデータを変更するための正しい認証を有するデータストアセキュリティ証明書を保存する必要があるシステム100内の唯一のエンティティとなる。データストアサーバのセキュリティ証明書は、システム200内の一つの場所にのみ保存されるので、各仮想マシン103にセキュリティ証明書を保存する場合に比べて安全性が向上し、また、複数ユーザ複数パスワードシステム(multiple user multiple password systems)よりも優れた安全性が提供される。これに代えて、ここに開示するシステム及び方法は、仮想マシン103とデータストア101との間の直接通信、又はアプリケーションサーバ102以外の手段を介した間接的な通信を含んでもよいことはもちろんである。更に、システム100は、複数のアプリケーションサーバ102を含むことができる。例えば、システム100は、一又は複数のリソースグループ104a~cのための専用アプリケーションサーバを含むことができる。
【0028】
データストア101は、好ましくはSQLデータストアである。データストア101は、一又は複数のSQLデータストアを保持し、これらのSQLデータストアは、自動化プロセス、ユーザ証明書、監査情報、プロセスログ、並びに自動化プロセスのためのワークフロー構成及びスケジューリング情報に関連するプロセス及びオブジェクトのリポジトリを保持する。一つのデータストア101に複数のSQLスキームを存在させることができ、これにより、異なる仮想マシン103が、データストア101のデータストア内に保存されている異なる情報セットを参照して異なる自動化プロセスを実行することが可能になる。
【0029】
データストア101は、仮想マシンがアクセスしたときにデータオブジェクトをロックすることによって、仮想マシン103によるデータストア内の所与のデータオブジェクトへの同時アクセスを防止するように構成することができる。また、仮想マシン103がデータストア101内のデータオブジェクトにアクセスすると、仮想マシン103がロックの要求を送信するようにしてもよい。これに代えて、データオブジェクトがデータオブジェクトによってアクセスされたときに、データストア101がデータオブジェクトを自動的にロックするようにしてもよい。データストア101に存在するレコードロックは、例えば、停電等のフェイルオーバイベントの全期間に亘って維持される。データストア101は、複数の仮想マシン103のいずれの仮想マシンも、ロックを再要求しなければデータストア内のデータを処理できないことを確認することによって、レコードロックをクリアする。仮想マシン103は、データオブジェクトに対するロックが不要になったことを示す通知をデータストア101に送信することができ、データストア101は、この後データオブジェクトからロックを除去し、他の仮想マシン103がこれに再度アクセスできるようにする。
【0030】
システム100は、作業待ち行列を利用することによって仮想マシン103に亘る自動化プロセスの実行を最適化する。既存のシステムでは、仮想マシン103は、処理すべき作業項目について、作業待ち行列をポーリングする。本発明のシステムでは、作業待ち行列は、アプリケーションサーバ102によって仮想マシン103に割り当てられ、仮想マシン103は、目標パラメータ及び待ち行列構成情報を使用して、どのように目標を達成するかを決定する。以下、
図2を参照して、これをより詳細に説明する。
【0031】
図2は、処理のために仮想マシン103に提供される一又は複数の作業項目202a~cの順序付きリストである代表的な作業待ち行列201を示している。各作業項目202a~202cは、作業項目の一意の識別子、ケースID、及び他のコンテキスト情報等の一又は複数の情報データオブジェクトを含む。各作業項目202a~202cの特定のタイプの情報データオブジェクトは、コンテキスト及び関連する自動化プロセスに依存する。例えば、携帯電話ネットワークで使用するためにSIMカードを起動するプロセスでは、作業項目202a~cは、顧客名、電話番号、ICCID、IMSI、及び認証キーを含むことができる。
【0032】
作業待ち行列は、通常、データストア101に保存されるが、作業待ち行列201は、アプリケーションサーバ102と通信する任意の適切な場所に保存してもよいことは明らかである。各作業項目202a~202cが保持する情報データオブジェクトは、データストア101に平文で保存してもよく、或いは、作業待ち行列201は、情報データオブジェクトを待ち行列に保存する際に情報データオブジェクトを自動的に暗号化し、待ち行列からこれらを読み出す際に自動的に復号するように構成してもよい。
【0033】
作業待ち行列201には、作業項目202a~cを手動で供給してもよく、フィーダプロセス205を介して供給してもよい。フィーダプロセス205は、電子メール206又はスプレッドシート207等の任意の適切なソースからデータを取得し、作業項目202aを適切なフォーマットで出力し、作業項目202aを作業待ち行列201に追加する。作業待ち行列201は、ファーストインファーストアウト(first-in first-out:FIFO)方式で動作することができ、作業項目202cは、処理のために仮想マシン208に分散される。
【0034】
作業項目202a~cは、自動化プロセスの一部として使用される情報データオブジェクトに加えて、自動化プロセスを管理するために使用されるメタデータを有することができる(
図3を参照して後により詳細に説明する)。例えば、作業項目202a~cは、作業項目202a~cが処理前に作業待ち行列201の一部となり得る最大時間長を定義する最大待ち行列時間属性を有することができる。作業待ち行列201自体は、作業待ち行列201の一部となり得る作業項目202a~cの最大数を定義する最大待ち行列長属性を有することができる。
【0035】
以下、本発明のシステムが作業待ち行列を処理する方法について、
図3を参照してより詳細に説明する。システム300は、通常、データストア101上に配置され、作業項目302を含む作業待ち行列301を含む。また、システム300は、アプリケーションサーバ102上に配置され、アプリケーションサーバ102によって実行されるアクティブ待ち行列コントローラ(active queue controller)303を含む。アクティブ待ち行列コントローラ303は、作業待ち行列301に関連付けられている。アクティブ待ち行列コントローラ303は、例えば、リソースグループ306において、リソース308上に仮想マシン307を作成し及びこれを削除し、リソース308及び仮想マシン307を関連する作業待ち行列301に割り当てることによって、リソース308を管理する。また、アクティブ待ち行列コントローラ303は、リソース308及び仮想マシン307を監視し、作業待ち行列301に関する統計的情報(statistics)をデータストア101に問い合わせる。
【0036】
作業待ち行列301は、アクティブ待ち行列コントローラ303がリソースグループ306のリソースをどのように管理するかを決定する追加のパラメータ304に関連付けてもよい。
図3に示す例では、「目標リソース数(TARGET RESOURCES)」パラメータ304は、アクティブ待ち行列コントローラが作業待ち行列301を割り当てるべきリソース308の目標数を定義する。システムのユーザは、このパラメータ304を変更して、待ち行列のために動作するリソースを追加又は削除でき、すなわち、例えば、プロセスの速度を高めること又は時間に敏感でないプロセスのリソースをより効率的に使用することを目的として、リソース308上に仮想マシン307を作成し又はこれを除去できる。
【0037】
アクティブ待ち行列コントローラ303は、システムのユーザにフィードバック305を提供できる。例えば、「アクティブリソース(ACTIVE RESOURCES)」は、現在作業待ち行列301を処理している仮想マシン307の数を示す。「利用可能リソース(AVAILABLE RESOURCES)」は、更なる仮想マシンを実行するために利用可能なリソース308の数を示す。「残り時間(TIME REMAINING)」は、作業待ち行列301内の全ての作業項目302を処理するために合計残り時間の推定値を示す。単一の作業項目を処理するのに必要な予測時間は、局所化された環境及び/又はパフォーマンスの問題、ネットワーク接続、ターゲット仮想マシンの応答性に基づいて算出できる。合計推定残り時間は、待ち行列301内の作業項目302の平均作業時間を求め、作業待ち行列301に残っている作業項目302の数を乗算することによって算出できる。「完了時刻(COMPLETION TIME)」は、作業待ち行列301が完了する予定の時刻、すなわち、現在の時刻に「残り時間」を足した時刻を示す。これらに加えて又はこれらに代えて、作業待ち行列301の状態及び進行に関する他の情報を提供してもよく、例えば、作業待ち行列301が実行中であるか停止中であるか、経過時間、完了した作業項目302の数、保留中の作業項目302の数、及び/又は作業待ち行列301内のケースの総数等の情報を提供してもよい。
【0038】
また、アクティブ待ち行列コントローラ303は、リソースグループ306内の仮想マシンを作成及び削除する役割も担う。実行すべき所与の自動化プロセスについて、アクティブ待ち行列コントローラ303は、リソースグループ306内の利用可能なリソース308を見つけ出し、必要なリソース308上に仮想マシンを作成する。
【0039】
例えば、新しい「目標リソース数」を達成するために、新しい仮想マシンを作成しなければならないとアクティブ待ち行列コントローラ303が判定した場合、アクティブ待ち行列コントローラ303は、この待ち行列301に割り当てられているリソースグループ306内で、利用可能なリソース308上に新しい仮想マシンを作成及び開始する。アクティブ待ち行列コントローラ303は、最もビジーではない(least busy)リソース308上に仮想マシンを最初に作成し、例えば、グループ306が4つの利用可能なリソース308を有し、これらのうちの2つがすでに実行中の仮想マシンを有する場合、アクティブ待ち行列コントローラ303は、仮想マシンを実行していないリソースの一つに仮想マシンを作成する。仮想マシンが何らかの理由で作成又は開始されなかった場合、他のリソースで再試行される。
【0040】
アクティブ待ち行列コントローラ303が現在作業待ち行列301を処理している仮想マシンを削除する必要がある場合、アクティブ待ち行列コントローラ303は、仮想マシン307に停止要求を送信でき、これにより、仮想マシン307は、現在の作業項目の処理を終了すると、作業待ち行列内の項目の処理を中止する。
【0041】
仮想マシン307は、アプリケーションサーバ102を介して、データストア101に保存されている作業待ち行列301から作業項目302を取り出す。仮想マシン307が各作業項目302の処理を終了すると、仮想マシン307は、作業待ち行列301が完了するまで、又はアクティブ待ち行列コントローラ303が仮想マシン307に作業待ち行列301の処理を停止するよう命令するまで、アプリケーションサーバ102を介して、データストア101に保存されている作業待ち行列301から新しい作業項目302を読み出す。一つの待ち行列301の処理を停止するように命令すると、仮想マシン307には、別の作業待ち行列の処理を開始するように命令することができ、これにより、仮想マシン307自体が、アプリケーションサーバ102を介してデータストア101と通信することによって、新しい作業待ち行列から作業項目を読み出す。
【0042】
実行中のリソース308及び仮想マシン307は、他のリソース308及び仮想マシン307と通信するように構成されている。仮想マシン307は、これらの間でダイレクトメッセージを送受信することにより、互いに直接的に通信することができる。これに代えて、仮想マシン及びリソースは、アプリケーションサーバ102を介して互いにメッセージを送受信してもよい。アプリケーションサーバ102は、受信したメッセージを適切な宛先仮想マシン307に単にリダイレクトしてもよく、これに代えて、アプリケーションサーバ102は、受信したメッセージを、仮想マシン307によってポーリングできるリポジトリに保存してもよい。
【0043】
仮想マシン間の通信は、特に、2つのシナリオで有益である。第一に、仮想マシン307の一つを管理コンソールとして機能させることができ、これにより、制御端末がリソース308の状態及び利用可能性又はこの他の情報を表示できる。システムのユーザは、制御端末にアクセスして、作業待ち行列のリソースへの割り当てを手動で制御でき、後に詳細に説明するように、アクティブ待ち行列コントローラ303によって提供される推奨を受け入れることができ、及び/又は仮想マシン307、リソース308及び作業待ち行列301の現在の状態を見ることができる。
【0044】
第二に、上述のようにアプリケーションサーバ102がリソースグループを直接的に管理することに代えて、仮想マシン307の一つがリソースグループ306の「ヘッド」として機能でき、リソースグループ内の他の仮想マシン307及びリソース308と通信し、どの仮想マシン307及びリソース308が処理に利用可能であるかを判定し、リソースグループの他のメンバに命令を発し、アプリケーションサーバ102から受信した処理を開始及び停止できる。
【0045】
アクティブ待ち行列コントローラ303は、自動化プロセスの進行を監視するために、作業項目302の処理中に、仮想マシン307と非同期的に、又は他の方式で通信するように構成されている。したがって、ユーザに提供されるフィードバック(統計的情報)305に加えて、アクティブ待ち行列コントローラ303は、作業待ち行列301を追加のリソースに割り当てる、すなわち、リソース308上に新しい仮想マシン307を作成することに関する推奨及びこの他のパフォーマンスの向上に関する推奨をユーザに提供できる。
【0046】
これらの推奨を提供するために、アクティブ待ち行列コントローラ303は、仮想マシン307のリソースIDと、実行されたプロセスのIDと、実行日時と、プロセスの実行に要した時間とを保存する完了作業項目を使用して、インフラストラクチャ内の仮想マシン307上で完了時間及び性能メトリックを解析することができる。異なる仮想マシン307は、基礎となるハードウェアの能力、他の仮想マシンを含むマシンにインストールされているアプリケーション、及びこれらのアプリケーションとマシン自体のそれぞれのアプリケーションサーバからの距離のために、実行速度が異なることがある。アクティブ待ち行列コントローラ303は、このデータを使用して、所与のプロセスについて、実行すべき作業待ち行列処理の日時及び全体の構成、並びにどのリソース308又は仮想マシン307が最適な時間に作業を実行するのに最も適しているかを計算する。
【0047】
仮想マシン307及びリソース308の監視の一部として、アクティブ待ち行列コントローラ303は、自動化プロセスの実行を解析し、各仮想マシン307及びリソース308の速度、成功率及び/又は応答性に基づいて、最適分散モデルを特定する。
【0048】
各作業待ち行列301は、作業項目302がどのように処理されたかについての高レベルのビューを提供する履歴データを維持する。また、作業される各作業項目302は、作業項目を処理するために行われ、ケース毎に異なる場合があるプロセスステップを詳述する、処理の包括的なログ(comprehensive log)をデータストア101内に維持する。アクティブ待ち行列コントローラ303は、機械学習技術を使用して、上述したようにアクティブ待ち行列コントローラ303によって収集された、作業待ち行列301の構成及びリソース情報を取得し、この作業項目302のデータと詳細なログファイルとを組み合わせて、作業待ち行列データとログステージとを関連付けるモデルを構築し、どのような種類の作業項目を処理するために、どれほどの特定の時間がかかるかを判定できる。例えば、口座保有者が3人である当座預金口座(current account)に関連する作業項目の処理には、口座保有者が1人である普通預金口座(savings account)の2倍の時間がかかることがある。システムは、現在の最適分散モデルに基づいて作業待ち行列を処理しながら、システムによって生成される新しいデータに基づいて、最適分散モデルを反復的に修正し、これにより、モデルによって提供される推奨を向上させる。この情報は、プロセス及びリソース情報に加えて、データストア101内に蓄積されたデータの深さを用いて、完了時間に反映されるデータ及びプロセスのパターンを学習することによって、経時的にしか収集することができない。この後、この解析の結果を使用して、利用可能なリソース308と仮想マシン307に亘って、作業待ち行列301内の作業項目302を分散させる最も効果的な手法を記述する最適分散モデルを生成できる。
【0049】
そして、アクティブ待ち行列コントローラ303は、作業項目302をどのように分散させるかに関する一又は複数の推奨をユーザに提供でき、或いは、最適分散モデルに基づいて、最適なリソース308に作業待ち行列301及び作業項目302を自動的に割り当てることができる。アクティブ待ち行列コントローラは、作業項目302を個々の仮想マシン307に分散させる際、個々の作業項目302の最大待ち行列時間及び作業待ち行列301の最大待ち行列長属性を考慮に入れることができる。
【0050】
この説明は、単なる例示にすぎないことは明らかであり、特許請求の範囲に定義された本発明の範囲から逸脱することなく、ここに記述した実施形態に変更及び修正を加えることができる。