(57)【要約】      （修正有）【課題】システム内で利用可能な処理リソース内の作業項目の分散を最適化するためのシステムを提供する。【解決手段】システム３００は、自動化プロセスを実行するための命令、一又は複数の作業待ち行列及び各作業待ち行列と自動化プロセスの一つとの間の関連付けを保存するように構成されたデータストア１０１と、データストアに保存された命令によって定義される一又は複数の自動化プロセスを実行するように構成された一又は複数の仮想マシン１０３と、一又は複数の作業待ち行列を一又は複数の仮想マシンに割り当てるように構成されたアプリケーションサーバ１０２とを備える。各仮想マシンは、アプリケーションサーバによって作業待ち行列が割り当てられると、割り当てられた作業待ち行列に関連付けられた自動化プロセスを実行するための命令をデータストアから読み出し、データストアから検索された命令に従って自動化プロセスを実行する。【選択図】図３
2018133084.tif 000002
【特許請求の範囲】
【請求項１】
自動化プロセスを実行するためのシステムであって、
自動化プロセスを実行するための命令、一又は複数の作業待ち行列、及び各作業待ち行列と前記自動化プロセスの一つとの間の関連付けを保存するように構成されたデータストアと、
前記データストアに保存された命令によって定義される一又は複数の自動化プロセスを実行するように構成された一又は複数の仮想マシンと、
前記一又は複数の作業待ち行列を前記一又は複数の仮想マシンに割り当てるように構成されたアプリケーションサーバとを備え、
前記各仮想マシンは、前記アプリケーションサーバによって作業待ち行列が割り当てられると、
前記割り当てられた作業待ち行列に関連付けられた自動化プロセスを実行するための命令を前記データストアから読み出し、
前記データストアから検索された命令に従って前記自動化プロセスを実行するシステム。
【請求項２】
請求項１において、前記各作業待ち行列は、一又は複数の作業項目を含み、前記各仮想マシンは、前記データストアに保存されている命令に従って、前記割り当てられた作業待ち行列の作業項目を処理することによって前記一又は複数の自動化プロセスを実行するように構成されているシステム。
【請求項３】
請求項２において、前記各作業項目は、一又は複数の情報データオブジェクトを含むシステム。
【請求項４】
請求項１乃至３のいずれかにおいて、前記各作業待ち行列は、作業項目の論理グループであるシステム。
【請求項５】
請求項１乃至４のいずれかにおいて、前記データストアに保存された命令は、前記各作業項目に対して前記自動化プロセスを実行するためのワークフローを定義するシステム。
【請求項６】
請求項１乃至５のいずれかにおいて、前記データストアは、前記一又は複数の仮想マシンと、前記一又は複数の作業待ち行列との間のリンクを定義するリンクデータを保存するように構成されているシステム。
【請求項７】
請求項１乃至６のいずれかにおいて、前記各仮想マシンは、一又は複数の他の仮想マシンと通信するように構成されているシステム。
【請求項８】
請求項７において、前記仮想マシンは、一又は複数の他の仮想マシンと直接的に通信するように構成されているシステム。
【請求項９】
請求項７において、前記仮想マシンは、前記アプリケーションサーバ又は前記データストアのうちの一つにメッセージを送信することによって通信するように構成され、前記アプリケーションサーバ又は前記データストアは、受信した前記メッセージをメッセージリポジトリ内に保存するように構成され、前記各仮想マシンは、前記メッセージリポジトリ内のメッセージについて、前記アプリケーションサーバ又は前記データストアをポーリングするように構成されているシステム。
【請求項１０】
請求項７において、前記仮想マシンは、前記アプリケーションサーバ又は前記データストアのうちの一つにメッセージを送信することによって通信するように構成され、前記アプリケーションサーバ又は前記データストアは、受信した前記メッセージを一又は複数の仮想マシンに送信するように構成されているシステム。
【請求項１１】
請求項１乃至１０のいずれかにおいて、前記アプリケーションサーバは、単一の作業待ち行列を複数の仮想マシンに割り当てるように構成されているシステム。
【請求項１２】
請求項１０において、前記データストアは、仮想マシンが所与のデータオブジェクトにアクセスする際、前記所与のデータオブジェクトをロックすることによって、複数の仮想マシンによる前記データストア内の所与のデータオブジェクトへの同時アクセスを防止するように構成されているシステム。
【請求項１３】
請求項１２において、前記所与のデータオブジェクトに対する前記ロックは、フェイルオーバイベントを通して持続するシステム。
【請求項１４】
請求項１３において、前記データストアは、前記複数の仮想マシンのうちのいずれの仮想マシンも前記データオブジェクトを処理することができないことを確認することにより、前記ロックをクリアするように構成されているシステム。
【請求項１５】
請求項１乃至１４のいずれかにおいて、前記アプリケーションサーバは、前記作業項目を処理する前に、前記作業項目を処理するために必要な時間の長さを計算するように構成されているシステム。
【請求項１６】
請求項１５において、前記アプリケーションサーバは、局所化された環境又は性能問題、ネットワーク接続性、及びターゲット仮想マシンの応答性に基づいて、前記時間の長さを計算するように構成されているシステム。
【請求項１７】
請求項１５又は１６において、前記アプリケーションサーバは、前記計算された、前記作業項目を処理するために必要な時間の長さ及び前記作業待ち行列が割り当てられている前記仮想マシンの数に基づいて、作業待ち行列を処理するための推定時間を提供するように構成されているシステム。
【請求項１８】
請求項１５乃至１７のいずれかにおいて、前記アプリケーションサーバは、前記仮想マシンによる作業待ち行列の処理の進行を監視するように構成されているシステム。
【請求項１９】
請求項１８において、前記アプリケーションサーバは、メッセージングプロトコルを使用して前記一又は複数の仮想マシンと通信するように構成され、前記各仮想マシンは、プロセス実行中に状態情報をアプリケーションサーバに応答するように構成されているシステム。
【請求項２０】
請求項１５乃至１９のいずれかにおいて、前記アプリケーションサーバは、追加の仮想マシンに作業待ち行列を割り当てること及び／又はパフォーマンス及びスループットを向上させることに関する推奨を提供するように構成されているシステム。
【請求項２１】
請求項１乃至２０のいずれかにおいて、前記アプリケーションサーバは、各仮想マシンで利用可能なリソースに基づいて、各仮想マシンに作業待ち行列を割り当てるように構成されているシステム。
【請求項２２】
請求項１乃至２１のいずれかにおいて、前記アプリケーションサーバは、前記自動化プロセスの実行を解析して、各仮想マシンの速度、成功率、及び／又は応答性に基づいて、最適分散モデルを特定するように構成されているシステム。
【請求項２３】
請求項２２において、前記アプリケーションサーバは、前記特定された最適分散モデルに基づいて、仮想マシンに作業待ち行列を割り当てるように構成されているシステム。
【請求項２４】
請求項２２又は２３において、前記アプリケーションサーバは、前記最適分散モデルに基づいて、少なくとも一つの仮想マシンに現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成されているシステム。
【請求項２５】
請求項２２において、前記アプリケーションサーバは、機械学習アルゴリズムを使用して自動化プロセスの実行を解析し、仮想マシンへの作業待ち行列の分散を向上させるように構成されているシステム。
【請求項２６】
請求項２において、前記アプリケーションサーバは、前記作業項目及び／又は作業待ち行列の属性に基づいて、仮想マシンに作業待ち行列を割り当てるように構成されているシステム。
【請求項２７】
請求項２６において、前記一又は複数の作業項目の少なくとも一つは、前記作業項目が処理されるまでに前記作業待ち行列の一部となり得る最大時間長を定義する最大待ち行列時間属性を有するシステム。
【請求項２８】
請求項２６又は２７において、前記一又は複数の作業待ち行列の少なくとも一つは、前記作業待ち行列の一部となり得る作業項目の最大数を定義する最大待ち行列長属性を有するシステム。
【請求項２９】
請求項２６乃至２８のいずれかにおいて、前記一又は複数の作業待ち行列の少なくとも一つは、前記作業待ち行列内の全ての作業項目を処理する最大時間を定義する待ち行列完了時間属性を有するシステム。
【請求項３０】
請求項２６乃至２９のいずれかにおいて、前記アプリケーションサーバは、前記作業項目及び／又は作業待ち行列の属性に基づいて、前記一又は複数の仮想マシンのうちの少なくとも一つに、前記現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成されているシステム。
【請求項３１】
請求項１乃至３０のいずれかにおいて、前記システムの現在の状態及び／又は構成に関する情報を出力するように構成された出力デバイスを更に備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセスを自動化するためのシステム及び方法に関する。具体的には、本発明は、一又は複数の仮想ワーカ全体に亘る自動化プロセス（automated processes）の実行を管理するためのシステム及び方法に関する。
【背景技術】
【０００２】
予期された変更又は予期されない変更によって、事業の運営を変更する必要が生じることが多くある。例えば、新製品の発売によって、既存のシステムを統合する必要が生じ、新しい規制によって、プロセス工程の記録が要求され、企業買収によって、２つの製品ライン及びプロセスを併合することが必要になることもある。これらの問題は、従来の事業システムの計画及び展開（planning and rollout）でも対応できるが、これらの計画サイクル（planning cycles）は、大規模なプロジェクト用に設計されており、日常的な運営変更をサポートするものではない。この結果、変更のために元のシステムの機能を置き換え、必要な新しい機能を提供する新しいシステムを開発する必要があり、変更を確実に実施するまでに広範囲な試験及び品質保証が必要であるため、変更は、莫大なコストがかかり、実現までに数年もかかることもある。これらのシステムは、コンピュータプログラミング及び／又はアプリケーション開発に必要な専門技能を有する技術者が設計し、構成する必要がある。組織内では、必要な技能を有する人材が、仮にいたとしても、不足していることが多いため、開発プロセスには時間がかかり、このようなシステムが実現されても、元のシステムのユーザが新しいシステムに慣れるまでには長い時間がかかるため、このようなプロセスは、非効率で不正確なものとなる場合が多い。
【０００３】
事務管理部門のビジネスプロセスには、複数の独立した互換性のないソフトウェアアプリケーションが含まれることが多いため、この問題が発生する。これらのソフトウェアアプリケーションの幾つかは、別のソフトウェアアプリケーションがインタラクトできる所定のインタフェースを提供することによってアプリケーションの内部又は外部に情報を転送するためのＡＰＩを有するが、全てのソフトウェアアプリケーションがこのような機能を有するわけではない。例えば、これらの事務管理部門のビジネスプロセスで使用される多くのソフトウェアアプリケーションは、他のソフトウェアアプリケーションが容易にアクセスするめに必要な機能を備えるように設計されていない旧式のアプリケーションである。この他、非常に特殊な用途のために作成された社内用カスタムソフトウェアソリューションでは、他のアプリケーションとインタラクトするためのインタフェースを提供する必要性は、予見されていなかった。従来の手法では、運用スタッフがこれらのソフトウェアアプリケーション間のギャップを埋めることによってこのような問題が克服されている。運用スタッフの使用は、要求されるキャパシティを提供するために多数の運用スタッフを雇用する必要があるため、高価なソリューションである。運用スタッフは、一日のうちの一部しか働けず、キーボード及びマウス又は他の任意のインタフェースを使用して情報及び／又はコマンドを入力できる速度によって制限され、画面及び／又は他の出力から情報を読み取ることができる速度によって制限されるため、これらの互換性のないソフトウェアアプリケーション又はシステム間のギャップを人間によって埋めるプロセスは、通常、時間がかかる。更に、コンピュータとは異なり、人間は、データ及び／又はコマンドをシステムに入力したり、他のコンピュータから情報を読み込んだりする際に間違いを起こしやすい。また、このような運用スタッフを使用する場合、プロセス、システム、及びデータに悪意のある干渉が発生する可能性もある。
【０００４】
例えば、電気通信事業者が、既存のソフトウェアアプリケーションと互換性がない新しいシステムの使用を必要とする新しい携帯電話機を発売することがある。この不足は、通常、運用スタッフによって補われるが、このような新しく発売される製品の需要を予測することは不可能なことが多く、ソフトウェアシステムを使用するために訓練されたスタッフが不足したり過剰になったりすることがある。したがって、需要に関する詳細な事前知識を必要とせず、需要に対応するための迅速なスケーリングが可能なソリューションによって、このような互換性のないソフトウェアシステム間のギャップを埋めることが望ましい。
【０００５】
このようなシステムでは、慎重に取り扱われるべき大量の個人情報が取り扱われることも多い。したがって、人間が一方のシステムから他方のシステムに単に情報をコピーする際に生じる可能性があるエラーの数を減らし、この情報を一貫した手法で取り扱うことが望まれるとともに、絶対に必要な場合以外はアクセスできないプライベートで安全な手法で情報を処理することが望まれる。
【０００６】
既存のソフトウェアアプリケーションが、新しいプロセスを実装するために必要な機能を欠いている場合に運用スタッフが必要になるこれらの問題は、ビジネスの事務管理部門に固有のものではない。例えば、病院及び／又は医院の受付窓口は、予約した患者が多く訪れるために忙しい状況であることが多い。受付担当者は、予約して来院した患者から詳細情報を聞き取り、患者の予約をチェックするソフトウェアアプリケーションにこれらの情報を入力するといったルーチン作業を行うために多くの時間を費やす。このプロセスは、時間がかかり、患者の詳細情報を聞き間違えて不正確になることがあり、他の職務を実行する時間を受付担当者から奪う。
【０００７】
病院及び／又は医院の受付には、患者が自ら詳細情報をシステムに入力できるセルフサービスチェックイン用設置型情報端末（self-service check-in kiosks）を設置することが望ましく、これによって、情報の誤りが最小限に抑えられ、受付担当者は、他の作業に従事でき、患者の待ち時間が短縮される。しかしながら、受付担当者が使用するソフトウェアアプリケーションは、より高度な機能を有する可能性が高いので、患者を不必要に混乱させ、或いはアプリケーションは、管理上の制御及び／又は情報へのアクセス権を有する場合があり、セルフサービスチェックイン用設置型情報端末を使用する患者にこれらを提供することは不適切であるため、受付担当者に提供されるインタフェースと同じインタフェースを患者に提供することは適切でない可能性がある。これらのシステムを実装するために必要な機能を提供する新しいソフトウェアアプリケーション及びシステムが開発されたときに、既存の受付アプリケーションが、セルフサービス用設置型情報端末上で実行されて特定の機能及び／又は機能にアクセスする新しいアプリケーションのための機能を提供しない限り、事務管理部門のビジネスプロセスの変更に関連する長い計画サイクル、費用、非効率性、不正確さの問題と同様の問題が生じる。このため、このようなプロジェクトが選択されないことも多い。他にも同様の多くの例があることは、明らかである。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
既存のソリューションは、旧式ソフトウェアとインタラクトすることによってこれらのプロセスを自動化するように構成された仮想マシンを仮想作業者（virtual workers）として使用することを含む。このようなシステムは、ＰＣＴ出願公開番号ＷＯ２０１５／００１３６０Ａ１に記載されている。しかしながら、これらのシステムでは、仮想作業者間で作業項目をどのように分散させるべきかをユーザが決定する必要があり、このような事項をこのように決定することは、非効率である場合が多い。したがって、仮想作業者間の作業項目の分散を最適化するための適切なシステム及び方法が必要とされている。
【課題を解決するための手段】
【０００９】
本発明は、自動化プロセスを実行するためのシステムに関する。システムは、自動化プロセスを実行するための命令、一又は複数の作業待ち行列、及び各作業待ち行列と自動化プロセスの一つとの間の関連付けを保存するように構成されたデータストアと、データストアに保存された命令によって定義される一又は複数の自動化プロセスを実行するように構成された一又は複数の仮想マシンと、一又は複数の作業待ち行列を一又は複数の仮想マシンに割り当てるように構成されたアプリケーションサーバとを備える。各仮想マシンは、アプリケーションサーバによって作業待ち行列が割り当てられると、割り当てられた作業待ち行列に関連付けられた自動化プロセスを実行するための命令をデータストアから読み出し、データストアから検索された命令に従って自動化プロセスを実行する。
【００１０】
各作業待ち行列は、通常、一又は複数の作業項目を含み、各仮想マシンは、データストアに保存されている命令に従って、割り当てられた作業待ち行列の作業項目を処理することによって一又は複数の自動化プロセスを実行するように構成されている。各作業項目は、一又は複数の情報データオブジェクトを含んでいてもよく、各作業待ち行列は、通常、作業項目の論理グループである。
データストアに保存された命令は、各作業項目に対して自動化プロセスを実行するためのワークフローを定義してもよい。
【００１１】
好ましくは、データストアは、一又は複数の仮想マシンと、一又は複数の作業待ち行列との間のリンクを定義するリンクデータを保存する。
【００１２】
各仮想マシンは、一又は複数の他の仮想マシンと通信するように構成してもよい。仮想マシンは、一又は複数の他の仮想マシンと直接的に通信するように構成してもよい。これに代えて、仮想マシンは、アプリケーションサーバ又はデータストアのうちの一つにメッセージを送信することによって通信するように構成してもよく、アプリケーションサーバ又はデータストアは、受信したメッセージをメッセージリポジトリ内に保存するように構成してもよく、各仮想マシンは、メッセージリポジトリ内のメッセージについて、アプリケーションサーバ又はデータストアをポーリングするように構成してもよい。更にこれに代えて、仮想マシンは、アプリケーションサーバ又はデータストアのうちの一つにメッセージを送信することによって通信するように構成してもよく、アプリケーションサーバ又はデータストアは、受信したメッセージを一又は複数の仮想マシンに送信するように構成してもよい。
【００１３】
アプリケーションサーバは、単一の作業待ち行列を複数の仮想マシンに割り当てるように構成してもよい。したがって、データストアは、仮想マシンが所与のデータオブジェクトにアクセスする際、所与のデータオブジェクトをロックすることによって、複数の仮想マシンによるデータストア内の所与のデータオブジェクトへの同時アクセスを防止するように構成してもよい。好ましくは、所与のデータオブジェクトに対するロックは、フェイルオーバイベントを通して持続し、データストアは、複数の仮想マシンのうちのいずれの仮想マシンもデータオブジェクトを処理することができないことを確認することにより、ロックをクリアするように構成してもよい。
【００１４】
アプリケーションサーバは、作業項目を処理する前に、作業項目を処理するために必要な時間の長さを計算するように構成してもよく、これは、局所化された環境又は性能問題、ネットワーク接続性、及びターゲット仮想マシンの応答性に基づいて行ってもよい。アプリケーションサーバは、計算された、作業項目を処理するために必要な時間の長さ及び作業待ち行列が割り当てられている仮想マシンの数に基づいて、作業待ち行列を処理するための推定時間を提供するように構成してもよい。
【００１５】
アプリケーションサーバは、仮想マシンによる作業待ち行列の処理の進行を監視するように構成してもよい。アプリケーションサーバは、メッセージングプロトコルを使用して一又は複数の仮想マシンと通信するように構成してもよく、各仮想マシンは、プロセス実行中に状態情報をアプリケーションサーバに応答するように構成してもよい。
【００１６】
アプリケーションサーバは、追加の仮想マシンに作業待ち行列を割り当てること及び／又はパフォーマンス及びスループットを向上させることに関する推奨を提供するように構成してもよい。
好ましくは、アプリケーションサーバは、各仮想マシンで利用可能なリソースに基づいて、各仮想マシンに作業待ち行列を割り当てるように構成されている。
【００１７】
アプリケーションサーバは、自動化プロセスの実行を解析して、各仮想マシンの速度、成功率、及び／又は応答性に基づいて、最適分散モデルを特定し、特定された最適分散モデルに基づいて、仮想マシンに作業待ち行列を割り当てるように構成してもよい。アプリケーションサーバは、最適分散モデルに基づいて、少なくとも一つの仮想マシンに現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成してもよい。
【００１８】
アプリケーションサーバは、機械学習アルゴリズムを使用して自動化プロセスの実行を解析し、仮想マシンへの作業待ち行列の分散を向上させるように構成してもよい。
【００１９】
アプリケーションサーバは、作業項目及び／又は作業待ち行列の属性に基づいて、仮想マシンに作業待ち行列を割り当てるように構成してもよい。一又は複数の作業項目の少なくとも一つは、作業項目が処理されるまでに作業待ち行列の一部となり得る最大時間長を定義する最大待ち行列時間属性を有していてもよい。一又は複数の作業待ち行列の少なくとも一つは、作業待ち行列の一部となり得る作業項目の最大数を定義する最大待ち行列長属性を有していてもよい。一又は複数の作業待ち行列の少なくとも一つは、作業待ち行列内の全ての作業項目を処理する最大時間を定義する待ち行列完了時間属性を有していてもよい。
【００２０】
アプリケーションサーバは、作業項目及び／又は作業待ち行列の属性に基づいて、一又は複数の仮想マシンのうちの少なくとも一つに、現在の作業待ち行列の処理を停止し、新しい作業待ち行列の処理を開始するように命令するように構成してもよい。
システムの現在の状態及び／又は構成に関する情報を出力するように構成された出力デバイスを更に備えていてもよい。
【図面の簡単な説明】
【００２１】
【図１】本発明に基づくシステムの実現例の概略図である。
【図２】本発明に基づく例示的な作業待ち行列及び作業項目を示す図である。
【図３】本発明に基づくシステムの論理図である。
【発明を実施するための形態】
【００２２】
ここに開示するシステム及び方法は、効率的に処理を実行するために、ソフトウェアアプリケーションとインタラクトでき、及び相互にインタラクトできるデジタル作業者（digital workforce）として仮想マシンを使用することによってプロセスを自動化するシステムのコンテキストで動作する。このようなシステムは、国際公開公報第２０１５／００１３６０Ａ１号に開示されており、この開示は、参照により本明細書に援用される。
【００２３】
図１は、本発明に基づく代表的なシステム１００を示している。システム１００は、データストア１０１と、アプリケーションサーバ１０２と、一又は複数の仮想マシン１０３とを含む。データストア１０１は、自動化プロセスに関連するデータ、例えば、処理すべき作業項目及び自動化プロセスを定義する命令を保存する。アプリケーションサーバ１０２は、仮想マシン１０３とデータストア１０１との間の通信を仲介し、仮想マシン１０３の作成、削除、動作を管理する。仮想マシン１０３は、アプリケーションサーバ１０２から受信した命令に従って、自動化された処理を実行するように構成されている。
【００２４】
仮想マシン１０３は、一又は複数のリソースグループ１０４ａ〜ｃに組織化してもよい。リソースグループ１０４ａ〜ｃは、一又は複数のハードウェアデバイス、例えば、サーバに亘ってインプリメントされた仮想マシンの論理グループであってもよく、仮想マシンを動作させる所与のプロセス又は作業待ち行列（work queue）が利用できる計算能力、したがって、自動化プロセスを実行するために利用可能な計算能力を表す。特定の自動化プロセスは、単一のリソースグループへのアクセスを有していてもよく、複数のリソースグループを利用できるようにしてもよい。データストア１０１及びアプリケーションサーバ１０２は、通常、専用サーバ等の専用ハードウェアリソース上に設けられるが、同じ物理的なハードウェア上でデータストア１０１、アプリケーションサーバ１０２及び仮想マシン１０３を動作させることも可能である。
【００２５】
仮想マシン１０３は、標準的なエンドユーザオペレーティングシステム、好ましくは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）の持続的仮想化インスタンス（persistent virtualised instances）であるが、ｍａｃＯＳ（登録商標）又はＬｉｎｕｘ（登録商標）ディストリビューション等、適切ないかなるオペレーティングシステムを使用してもよい。仮想マシン１０３は、適切なセキュリティクリアランス又は認証なしでは、物理的又は遠隔的にアクセスすることができない一又は複数のセキュアサーバ上に存在することが好ましい。仮想マシンが存在するサーバ又はリソースは、ＶＭｗａｒｅ  ＥＳＸ（登録商標）等のタイプ１ハイパーバイザ（Type 1 hypervisors）を実行することが好ましいが、仮想マシンの作成及び実行を可能にするハードウェア及びソフトウェアの構成は、適切ないかなるものであってもよいことは明らかである。仮想マシン１０３は、通常、グラフィカル出力を表示するモニタ又は同様の出力デバイスに接続されていないという意味でヘッドレスである。複数の仮想マシン１０３を実行することにより、複数の自動化プロセスを同時に実行してもよく、これにより、生産性を向上させ、又は複数の外部ユーザに同時にサービスを提供することができる。
【００２６】
仮想マシン１０３によって実行される自動化プロセスは、通常、例えば、スクリーンスクレイピング等の手法を使用するユーザインタフェースを介して、或いは利用可能なＡＰＩ又はアクセシビリティインタフェース（accessibility interfaces）を使用して、旧式ソフトウェアアプリケーションとインタラクトすることを含む。自動化プロセスを定義するワークフローは、通常は、独立したコンピュータ端末上で、ユーザによって設計され、アプリケーションサーバ１０２又はデータストア１０１に格納及び保存される。
【００２７】
図１に示す実施形態では、データストア１０１は、アプリケーションサーバ１０２と双方向通信しており、アプリケーションサーバ１０２は、仮想マシン１０３と双方向通信している。このように、アプリケーションサーバは、仮想マシン１０３とデータストア１０１との接続を管理する中間デバイスとして機能する。アプリケーションサーバ１０２は、例えば、Ｗｉｎｄｏｗｓ認証及び／又はＳＱＬ認証等のデータストアセキュリティ証明書（data store security credentials）を保持し、データストア１０１の安全な接続プロキシとして振る舞い、すなわち、全ての仮想マシン１０３は、アプリケーションサーバ１０２と通信し、アプリケーションサーバ１０２は、仮想マシン１０３に代わってデータストア１０１と安全に通信する。この構成により、アプリケーションサーバ１０２は、データストア１０１に保存されているデータにアクセスし、及びこれらのデータを変更するための正しい認証を有するデータストアセキュリティ証明書を保存する必要があるシステム１００内の唯一のエンティティとなる。データストアサーバのセキュリティ証明書は、システム２００内の一つの場所にのみ保存されるので、各仮想マシン１０３にセキュリティ証明書を保存する場合に比べて安全性が向上し、また、複数ユーザ複数パスワードシステム（multiple user multiple password systems）よりも優れた安全性が提供される。これに代えて、ここに開示するシステム及び方法は、仮想マシン１０３とデータストア１０１との間の直接通信、又はアプリケーションサーバ１０２以外の手段を介した間接的な通信を含んでもよいことはもちろんである。更に、システム１００は、複数のアプリケーションサーバ１０２を含むことができる。例えば、システム１００は、一又は複数のリソースグループ１０４ａ〜ｃのための専用アプリケーションサーバを含むことができる。
【００２８】
データストア１０１は、好ましくはＳＱＬデータストアである。データストア１０１は、一又は複数のＳＱＬデータストアを保持し、これらのＳＱＬデータストアは、自動化プロセス、ユーザ証明書、監査情報、プロセスログ、並びに自動化プロセスのためのワークフロー構成及びスケジューリング情報に関連するプロセス及びオブジェクトのリポジトリを保持する。一つのデータストア１０１に複数のＳＱＬスキームを存在させることができ、これにより、異なる仮想マシン１０３が、データストア１０１のデータストア内に保存されている異なる情報セットを参照して異なる自動化プロセスを実行することが可能になる。
【００２９】
データストア１０１は、仮想マシンがアクセスしたときにデータオブジェクトをロックすることによって、仮想マシン１０３によるデータストア内の所与のデータオブジェクトへの同時アクセスを防止するように構成することができる。また、仮想マシン１０３がデータストア１０１内のデータオブジェクトにアクセスすると、仮想マシン１０３がロックの要求を送信するようにしてもよい。これに代えて、データオブジェクトがデータオブジェクトによってアクセスされたときに、データストア１０１がデータオブジェクトを自動的にロックするようにしてもよい。データストア１０１に存在するレコードロックは、例えば、停電等のフェイルオーバイベントの全期間に亘って維持される。データストア１０１は、複数の仮想マシン１０３のいずれの仮想マシンも、ロックを再要求しなければデータストア内のデータを処理できないことを確認することによって、レコードロックをクリアする。仮想マシン１０３は、データオブジェクトに対するロックが不要になったことを示す通知をデータストア１０１に送信することができ、データストア１０１は、この後データオブジェクトからロックを除去し、他の仮想マシン１０３がこれに再度アクセスできるようにする。
【００３０】
システム１００は、作業待ち行列を利用することによって仮想マシン１０３に亘る自動化プロセスの実行を最適化する。既存のシステムでは、仮想マシン１０３は、処理すべき作業項目について、作業待ち行列をポーリングする。本発明のシステムでは、作業待ち行列は、アプリケーションサーバ１０２によって仮想マシン１０３に割り当てられ、仮想マシン１０３は、目標パラメータ及び待ち行列構成情報を使用して、どのように目標を達成するかを決定する。以下、図２を参照して、これをより詳細に説明する。
【００３１】
図２は、処理のために仮想マシン１０３に提供される一又は複数の作業項目２０２ａ〜ｃの順序付きリストである代表的な作業待ち行列２０１を示している。各作業項目２０２ａ〜２０２ｃは、作業項目の一意の識別子、ケースＩＤ、及び他のコンテキスト情報等の一又は複数の情報データオブジェクトを含む。各作業項目２０２ａ〜２０２ｃの特定のタイプの情報データオブジェクトは、コンテキスト及び関連する自動化プロセスに依存する。例えば、携帯電話ネットワークで使用するためにＳＩＭカードを起動するプロセスでは、作業項目２０２ａ〜ｃは、顧客名、電話番号、ＩＣＣＩＤ、ＩＭＳＩ、及び認証キーを含むことができる。
【００３２】
作業待ち行列は、通常、データストア１０１に保存されるが、作業待ち行列２０１は、アプリケーションサーバ１０２と通信する任意の適切な場所に保存してもよいことは明らかである。各作業項目２０２ａ〜２０２ｃが保持する情報データオブジェクトは、データストア１０１に平文で保存してもよく、或いは、作業待ち行列２０１は、情報データオブジェクトを待ち行列に保存する際に情報データオブジェクトを自動的に暗号化し、待ち行列からこれらを読み出す際に自動的に復号するように構成してもよい。
【００３３】
作業待ち行列２０１には、作業項目２０２ａ〜ｃを手動で供給してもよく、フィーダプロセス２０５を介して供給してもよい。フィーダプロセス２０５は、電子メール２０６又はスプレッドシート２０７等の任意の適切なソースからデータを取得し、作業項目２０２ａを適切なフォーマットで出力し、作業項目２０２ａを作業待ち行列２０１に追加する。作業待ち行列２０１は、ファーストインファーストアウト（first-in first-out：ＦＩＦＯ）方式で動作することができ、作業項目２０２ｃは、処理のために仮想マシン２０８に分散される。
【００３４】
作業項目２０２ａ〜ｃは、自動化プロセスの一部として使用される情報データオブジェクトに加えて、自動化プロセスを管理するために使用されるメタデータを有することができる（図３を参照して後により詳細に説明する）。例えば、作業項目２０２ａ〜ｃは、作業項目２０２ａ〜ｃが処理前に作業待ち行列２０１の一部となり得る最大時間長を定義する最大待ち行列時間属性を有することができる。作業待ち行列２０１自体は、作業待ち行列２０１の一部となり得る作業項目２０２ａ〜ｃの最大数を定義する最大待ち行列長属性を有することができる。
【００３５】
以下、本発明のシステムが作業待ち行列を処理する方法について、図３を参照してより詳細に説明する。システム３００は、通常、データストア１０１上に配置され、作業項目３０２を含む作業待ち行列３０１を含む。また、システム３００は、アプリケーションサーバ１０２上に配置され、アプリケーションサーバ１０２によって実行されるアクティブ待ち行列コントローラ（active queue controller）３０３を含む。アクティブ待ち行列コントローラ３０３は、作業待ち行列３０１に関連付けられている。アクティブ待ち行列コントローラ３０３は、例えば、リソースグループ３０６において、リソース３０８上に仮想マシン３０７を作成し及びこれを削除し、リソース３０８及び仮想マシン３０７を関連する作業待ち行列３０１に割り当てることによって、リソース３０８を管理する。また、アクティブ待ち行列コントローラ３０３は、リソース３０８及び仮想マシン３０７を監視し、作業待ち行列３０１に関する統計的情報（statistics）をデータストア１０１に問い合わせる。
【００３６】
作業待ち行列３０１は、アクティブ待ち行列コントローラ３０３がリソースグループ３０６のリソースをどのように管理するかを決定する追加のパラメータ３０４に関連付けてもよい。図３に示す例では、「目標リソース数（TARGET RESOURCES）」パラメータ３０４は、アクティブ待ち行列コントローラが作業待ち行列３０１を割り当てるべきリソース３０８の目標数を定義する。システムのユーザは、このパラメータ３０４を変更して、待ち行列のために動作するリソースを追加又は削除でき、すなわち、例えば、プロセスの速度を高めること又は時間に敏感でないプロセスのリソースをより効率的に使用することを目的として、リソース３０８上に仮想マシン３０７を作成し又はこれを除去できる。
【００３７】
アクティブ待ち行列コントローラ３０３は、システムのユーザにフィードバック３０５を提供できる。例えば、「アクティブリソース（ACTIVE RESOURCES）」は、現在作業待ち行列３０１を処理している仮想マシン３０７の数を示す。「利用可能リソース（AVAILABLE RESOURCES）」は、更なる仮想マシンを実行するために利用可能なリソース３０８の数を示す。「残り時間（TIME REMAINING）」は、作業待ち行列３０１内の全ての作業項目３０２を処理するために合計残り時間の推定値を示す。単一の作業項目を処理するのに必要な予測時間は、局所化された環境及び／又はパフォーマンスの問題、ネットワーク接続、ターゲット仮想マシンの応答性に基づいて算出できる。合計推定残り時間は、待ち行列３０１内の作業項目３０２の平均作業時間を求め、作業待ち行列３０１に残っている作業項目３０２の数を乗算することによって算出できる。「完了時刻（COMPLETION TIME）」は、作業待ち行列３０１が完了する予定の時刻、すなわち、現在の時刻に「残り時間」を足した時刻を示す。これらに加えて又はこれらに代えて、作業待ち行列３０１の状態及び進行に関する他の情報を提供してもよく、例えば、作業待ち行列３０１が実行中であるか停止中であるか、経過時間、完了した作業項目３０２の数、保留中の作業項目３０２の数、及び／又は作業待ち行列３０１内のケースの総数等の情報を提供してもよい。
【００３８】
また、アクティブ待ち行列コントローラ３０３は、リソースグループ３０６内の仮想マシンを作成及び削除する役割も担う。実行すべき所与の自動化プロセスについて、アクティブ待ち行列コントローラ３０３は、リソースグループ３０６内の利用可能なリソース３０８を見つけ出し、必要なリソース３０８上に仮想マシンを作成する。
【００３９】
例えば、新しい「目標リソース数」を達成するために、新しい仮想マシンを作成しなければならないとアクティブ待ち行列コントローラ３０３が判定した場合、アクティブ待ち行列コントローラ３０３は、この待ち行列３０１に割り当てられているリソースグループ３０６内で、利用可能なリソース３０８上に新しい仮想マシンを作成及び開始する。アクティブ待ち行列コントローラ３０３は、最もビジーではない（least busy）リソース３０８上に仮想マシンを最初に作成し、例えば、グループ３０６が４つの利用可能なリソース３０８を有し、これらのうちの２つがすでに実行中の仮想マシンを有する場合、アクティブ待ち行列コントローラ３０３は、仮想マシンを実行していないリソースの一つに仮想マシンを作成する。仮想マシンが何らかの理由で作成又は開始されなかった場合、他のリソースで再試行される。
【００４０】
アクティブ待ち行列コントローラ３０３が現在作業待ち行列３０１を処理している仮想マシンを削除する必要がある場合、アクティブ待ち行列コントローラ３０３は、仮想マシン３０７に停止要求を送信でき、これにより、仮想マシン３０７は、現在の作業項目の処理を終了すると、作業待ち行列内の項目の処理を中止する。
【００４１】
仮想マシン３０７は、アプリケーションサーバ１０２を介して、データストア１０１に保存されている作業待ち行列３０１から作業項目３０２を取り出す。仮想マシン３０７が各作業項目３０２の処理を終了すると、仮想マシン３０７は、作業待ち行列３０１が完了するまで、又はアクティブ待ち行列コントローラ３０３が仮想マシン３０７に作業待ち行列３０１の処理を停止するよう命令するまで、アプリケーションサーバ１０２を介して、データストア１０１に保存されている作業待ち行列３０１から新しい作業項目３０２を読み出す。一つの待ち行列３０１の処理を停止するように命令すると、仮想マシン３０７には、別の作業待ち行列の処理を開始するように命令することができ、これにより、仮想マシン３０７自体が、アプリケーションサーバ１０２を介してデータストア１０１と通信することによって、新しい作業待ち行列から作業項目を読み出す。
【００４２】
実行中のリソース３０８及び仮想マシン３０７は、他のリソース３０８及び仮想マシン３０７と通信するように構成されている。仮想マシン３０７は、これらの間でダイレクトメッセージを送受信することにより、互いに直接的に通信することができる。これに代えて、仮想マシン及びリソースは、アプリケーションサーバ１０２を介して互いにメッセージを送受信してもよい。アプリケーションサーバ１０２は、受信したメッセージを適切な宛先仮想マシン３０７に単にリダイレクトしてもよく、これに代えて、アプリケーションサーバ１０２は、受信したメッセージを、仮想マシン３０７によってポーリングできるリポジトリに保存してもよい。
【００４３】
仮想マシン間の通信は、特に、２つのシナリオで有益である。第一に、仮想マシン３０７の一つを管理コンソールとして機能させることができ、これにより、制御端末がリソース３０８の状態及び利用可能性又はこの他の情報を表示できる。システムのユーザは、制御端末にアクセスして、作業待ち行列のリソースへの割り当てを手動で制御でき、後に詳細に説明するように、アクティブ待ち行列コントローラ３０３によって提供される推奨を受け入れることができ、及び／又は仮想マシン３０７、リソース３０８及び作業待ち行列３０１の現在の状態を見ることができる。
【００４４】
第二に、上述のようにアプリケーションサーバ１０２がリソースグループを直接的に管理することに代えて、仮想マシン３０７の一つがリソースグループ３０６の「ヘッド」として機能でき、リソースグループ内の他の仮想マシン３０７及びリソース３０８と通信し、どの仮想マシン３０７及びリソース３０８が処理に利用可能であるかを判定し、リソースグループの他のメンバに命令を発し、アプリケーションサーバ１０２から受信した処理を開始及び停止できる。
【００４５】
アクティブ待ち行列コントローラ３０３は、自動化プロセスの進行を監視するために、作業項目３０２の処理中に、仮想マシン３０７と非同期的に、又は他の方式で通信するように構成されている。したがって、ユーザに提供されるフィードバック（統計的情報）３０５に加えて、アクティブ待ち行列コントローラ３０３は、作業待ち行列３０１を追加のリソースに割り当てる、すなわち、リソース３０８上に新しい仮想マシン３０７を作成することに関する推奨及びこの他のパフォーマンスの向上に関する推奨をユーザに提供できる。
【００４６】
これらの推奨を提供するために、アクティブ待ち行列コントローラ３０３は、仮想マシン３０７のリソースＩＤと、実行されたプロセスのＩＤと、実行日時と、プロセスの実行に要した時間とを保存する完了作業項目を使用して、インフラストラクチャ内の仮想マシン３０７上で完了時間及び性能メトリックを解析することができる。異なる仮想マシン３０７は、基礎となるハードウェアの能力、他の仮想マシンを含むマシンにインストールされているアプリケーション、及びこれらのアプリケーションとマシン自体のそれぞれのアプリケーションサーバからの距離のために、実行速度が異なることがある。アクティブ待ち行列コントローラ３０３は、このデータを使用して、所与のプロセスについて、実行すべき作業待ち行列処理の日時及び全体の構成、並びにどのリソース３０８又は仮想マシン３０７が最適な時間に作業を実行するのに最も適しているかを計算する。
【００４７】
仮想マシン３０７及びリソース３０８の監視の一部として、アクティブ待ち行列コントローラ３０３は、自動化プロセスの実行を解析し、各仮想マシン３０７及びリソース３０８の速度、成功率及び／又は応答性に基づいて、最適分散モデルを特定する。
【００４８】
各作業待ち行列３０１は、作業項目３０２がどのように処理されたかについての高レベルのビューを提供する履歴データを維持する。また、作業される各作業項目３０２は、作業項目を処理するために行われ、ケース毎に異なる場合があるプロセスステップを詳述する、処理の包括的なログ（comprehensive log）をデータストア１０１内に維持する。アクティブ待ち行列コントローラ３０３は、機械学習技術を使用して、上述したようにアクティブ待ち行列コントローラ３０３によって収集された、作業待ち行列３０１の構成及びリソース情報を取得し、この作業項目３０２のデータと詳細なログファイルとを組み合わせて、作業待ち行列データとログステージとを関連付けるモデルを構築し、どのような種類の作業項目を処理するために、どれほどの特定の時間がかかるかを判定できる。例えば、口座保有者が３人である当座預金口座（current account）に関連する作業項目の処理には、口座保有者が１人である普通預金口座（savings account）の２倍の時間がかかることがある。システムは、現在の最適分散モデルに基づいて作業待ち行列を処理しながら、システムによって生成される新しいデータに基づいて、最適分散モデルを反復的に修正し、これにより、モデルによって提供される推奨を向上させる。この情報は、プロセス及びリソース情報に加えて、データストア１０１内に蓄積されたデータの深さを用いて、完了時間に反映されるデータ及びプロセスのパターンを学習することによって、経時的にしか収集することができない。この後、この解析の結果を使用して、利用可能なリソース３０８と仮想マシン３０７に亘って、作業待ち行列３０１内の作業項目３０２を分散させる最も効果的な手法を記述する最適分散モデルを生成できる。
【００４９】
そして、アクティブ待ち行列コントローラ３０３は、作業項目３０２をどのように分散させるかに関する一又は複数の推奨をユーザに提供でき、或いは、最適分散モデルに基づいて、最適なリソース３０８に作業待ち行列３０１及び作業項目３０２を自動的に割り当てることができる。アクティブ待ち行列コントローラは、作業項目３０２を個々の仮想マシン３０７に分散させる際、個々の作業項目３０２の最大待ち行列時間及び作業待ち行列３０１の最大待ち行列長属性を考慮に入れることができる。
【００５０】
この説明は、単なる例示にすぎないことは明らかであり、特許請求の範囲に定義された本発明の範囲から逸脱することなく、ここに記述した実施形態に変更及び修正を加えることができる。
【図１】
2018133084.tif 000003
【図２】
2018133084.tif 000004
【図３】
2018133084.tif 000005
【外国語明細書】
2018133084000001.pdf