(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-05
(45)【発行日】2023-04-13
(54)【発明の名称】ロボティックプロセスオートメーション設計のためのコンテキストベースの勧告
(51)【国際特許分類】
G06F 8/20 20180101AFI20230406BHJP
G06N 20/00 20190101ALI20230406BHJP
【FI】
G06F8/20
G06N20/00
(21)【出願番号】P 2021542234
(86)(22)【出願日】2019-09-26
(86)【国際出願番号】 CA2019051373
(87)【国際公開番号】W WO2020061697
(87)【国際公開日】2020-04-02
【審査請求日】2021-05-26
(32)【優先日】2018-09-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522314511
【氏名又は名称】サービスナウ・カナダ・インコーポレイテッド
【氏名又は名称原語表記】SERVICENOW CANADA INC.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】コテ,マリー-クロード
(72)【発明者】
【氏名】ノーデル-マルコビッチ,アレクセイ
(72)【発明者】
【氏名】トドシック,アンドレイ
【審査官】多賀 実
(56)【参考文献】
【文献】国際公開第2017/208135(WO,A1)
【文献】特開2010-049397(JP,A)
【文献】米国特許出願公開第2014/0026113(US,A1)
【文献】米国特許出願公開第2014/0173555(US,A1)
【文献】欧州特許出願公開第03206170(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00- 8/77
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセスアクションをソフトウェアプロセスの設計に追加するための方法であって、前記方法は、
(a)
コンテキスト認識モジュールを使用し、前記ソフトウェアプロセスにおける現在の状態を認識するステップと、
(b)
機械学習対応勧告モジュールを使用し、前記現在の状態に基づいて、前記ソフトウェアプロセスの設計者に、前記少なくとも1つのプロセスアクションの勧告を行なうステップと、
(c)前記設計者から前記勧告に対する応答を受信するステップと、
(d)
設計モジュールを使用し、前記応答が前記少なくとも1つのプロセスアクションの受け入れである場合、前記少なくとも1つのプロセスアクションを前記設計に追加するステップとを含
む、
方法。
【請求項2】
前記現在の状態は、外部ソフトウェアアプリケーションに関連する、請求項1に記載の方法。
【請求項3】
複数のプロセスアクションをさらに含み、前記複数のプロセスアクションのすべてが同時にユーザに勧められる、請求項1に記載の方法。
【請求項4】
複数のプロセスアクションをさらに含み、前記複数のプロセスアクションの各々が順次、ユーザに勧められる、請求項1に記載の方法。
【請求項5】
前記少なくとも1つのプロセスアクションは、複数のサブアクションを含む、請求項1に記載の方法。
【請求項6】
前記現在の状態は、前記ソフトウェアプロセスにおける現在のアクションに関連する、請求項1に記載の方法。
【請求項7】
ステップ(b)における前記勧告はさらに、前記ソフトウェアプロセスにおける少なくとも1つの以前のアクションに基づいている、請求項1に記載の方法。
【請求項8】
前記少なくとも1つのプロセスアクションは、
- データ操作アクション、
- システム間の相互作用に関連するアクション、
- 通信関連アクション、および、
- ストレージ関連アクション、
のうちの少なくとも1つである、請求項1に記載の方法。
【請求項9】
(e)前記現在の状態、前記少なくとも1つのプロセスアクション、および前記応答に関連するデータを収集するステップと、
(f)将来の勧告を改良するために、前記データを用いた機械学習を使用するステップとをさらに含む、請求項1に記載の方法。
【請求項10】
少なくとも1つのプロセスアクションをソフトウェアプロセスの設計に追加するためのシステムであって、前記システムは、
- 前記ソフトウェアプロセスの現在の状態を認識するためのコンテキスト認識モジュールと、
- 機械学習対応勧告モジュールとを含み、前記機械学習対応勧告モジュールは、
- 前記現在の状態の評価を行ない、
- 前記評価に基づいて、勧めるべき前記少なくとも1つのプロセスアクションを判定し、
- 前記ソフトウェアプロセスの設計者に、前記少なくとも1つのプロセスアクションの勧告を行ない、
- 前記設計者から前記勧告に対する応答を受信するためのものであり、前記システムはさらに、
- 前記応答が前記プロセスアクションの受け入れである場合、前記少なくとも1つのプロセスアクションを前記設計に追加するための設計モジュールを含む、システム。
【請求項11】
前記現在の状態は、外部ソフトウェアアプリケーションに関連する、請求項10に記載のシステム。
【請求項12】
複数のプロセスアクションをさらに含み、前記複数のプロセスアクションのすべてが同時にユーザに勧められる、請求項10に記載のシステム。
【請求項13】
複数のプロセスアクションをさらに含み、前記複数のプロセスアクションの各々が順次、ユーザに勧められる、請求項10に記載のシステム。
【請求項14】
前記少なくとも1つのプロセスアクションは、複数のプロセスアクションを含む、請求項10に記載のシステム。
【請求項15】
前記現在の状態は、前記ソフトウェアプロセスにおける現在のアクションに関連する、請求項10に記載のシステム。
【請求項16】
前記ソフトウェアプロセスにおける以前のアクションに関連する情報を格納するための履歴モジュールをさらに含み、前記勧告モジュールは、勧めるべき前記少なくとも1つのプロセスアクションを判定する際に前記情報を使用する、請求項10に記載のシステム。
【請求項17】
前記履歴モジュールはさらに、他のソフトウェアプロセスに関連する他の情報を格納し、前記他の情報も、勧めるべき前記少なくとも1つのプロセスアクションを判定する際に前記勧告モジュールによって使用される、請求項16に記載のシステム。
【請求項18】
前記少なくとも1つのプロセスアクションは、
- データ操作アクション、
- システム間の相互作用に関連するアクション、
- 通信関連アクション、および、
- ストレージ関連アクション、
のうちの少なくとも1つである、請求項10に記載のシステム。
【請求項19】
前記履歴モジュールはさらに、前記現在の状態、前記少なくとも1つのプロセスアクション、および前記応答に関連するデータを格納し、前記勧告モジュールは、将来の勧告を改良するために前記データを使用する、請求項16に記載のシステム。
【請求項20】
実行されると、少なくとも1つのプロセスアクションをソフトウェアプロセスの設計に追加するための方法を実施するコンピュータ読取可能およびコンピュータ実行可能命令が符号化された、非一時的コンピュータ読取可能媒体であって、前記方法は、
(a)前記ソフトウェアプロセスにおける現在の状態を認識するステップと、
(b)前記現在の状態に基づいて、前記ソフトウェアプロセスの設計者に、前記少なくとも1つのプロセスアクションの勧告を行なうステップと、
(c)前記設計者から前記勧告に対する応答を受信するステップと、
(d)前記応答が前記少なくとも1つのプロセスアクションの受け入れである場合、前記少なくとも1つのプロセスアクションを前記設計に追加するステップとを含み、
ステップ(b)で前記勧告を行なう際に、機械学習手法が使用される、非一時的コンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボティックプロセスオートメーションに関する。より具体的には、本発明は、ロボティックプロセスオートメーションの設計の単純化に関する。
【背景技術】
【0002】
背景
定型業務タスクを自動化するためのロボティックプロセスオートメーション、すなわち「RPA(Robotic Process Automation)」の使用は、急速により普及しつつある。ソフトウェア「ロボット」(1つのプロセスのために構成されたソフトウェアモジュール)は、データを操作し、電子メール応答を生成し、多くの他のタスクを行なうことができる。これらのタスクの多く、たとえば、大量のデータをあるシステムから別のシステムにコピーアンドペーストすることは、人間にとってうんざりするものであり、多くの場合、エラーが起こりがちである。RPAロボット(「ボット(bot)」または「ロボティックエージェント」としても公知)を使用することは、人間のオペレータおよび監督者が自分たちの努力をより重大なタスクに集中させることを可能にする。
【0003】
しかしながら、ソフトウェアロボットは依然として、人間によって設計される。これらを設計することは、難しく、時間のかかるタスクであり得る。なぜなら、設計者は、オートメーションに含まれるべきプロセスステップのシーケンスを正確に特定するよう要求されるためである。とりわけ、自動ロボティックエージェントを設計する場合、人間の設計者は、ステップの最も効率的なシーケンスを判定することを目指す。しかしながら、この最も効率的なシーケンスは必ずしも、伝統的な方法であるとは限らないかもしれない。また、現在の設計方法は極度に粒度が細かい。たとえば、「データKをシステムYにコピーする」と言うようにRPAワークフロー経路を設計するのではなく、人間はしばしば、「システムXを開く;システムXでKを探す;見つかった場合、Kをデバイスストレージにコピーする;システムYを開く;システムYにおけるデータK用のフィールドを判定する;KをデバイスストレージからシステムYにおけるそのフィールドにコピーする」と設計しなければならない。見て分かるように、単純な反復プロセスを自動化することでさえ、間違いの確率が高い、細かくてうんざりする作業であり得る。
【0004】
このため、RPAボットまたはロボティックエージェントの設計に関連するタスクを単純化するシステムおよび方法が明らかに必要である。好ましくは、これらのシステムおよび方法は、コンテキストベースの設計勧告を設計者に提供できるであろう。
【発明の概要】
【発明が解決しようとする課題】
【0005】
概要
本発明は、プロセスアクションをロボティックソフトウェアプロセスの設計に追加するためのシステムおよび方法を提供する。コンテキスト認識モジュールが、設計中のプロセスの現在の状態を認識し、その現在の状態に関する情報を勧告モジュールに渡す。勧告モジュールは、現在の状態を評価し、その現在の状態に応答して、勧めるべき少なくとも1つの好適なプロセスアクションを識別する。勧告モジュールは次に、少なくとも1つのプロセスアクションを人間の設計者に勧める。設計者が勧告を受け入れる場合、設計モジュールがプロセスアクションをプロセス設計に追加する。勧告モジュールはまた、好適なプロセスアクションを識別する際に、プロセスおよび他のプロセスにおける以前のアクションについての情報を使用してもよい。コンテキスト認識モジュールおよび勧告モジュールは各々、少なくとも1つの機械学習モジュールを含んでいてもよく、それは、ニューラルネットワークに基づいていてもいなくてもよい。
【0006】
第1の局面では、本発明は、少なくとも1つのプロセスアクションをソフトウェアプロセスの設計に追加するための方法であって、方法は、
(a)前記ソフトウェアプロセスにおける現在の状態を認識するステップと、
(b)前記現在の状態に基づいて、前記ソフトウェアプロセスの設計者に、前記少なくとも1つのプロセスアクションの勧告を行なうステップと、
(c)前記設計者から前記勧告に対する応答を受信するステップと、
(d)前記応答が前記少なくとも1つのプロセスアクションの受け入れである場合、前記少なくとも1つのプロセスアクションを前記設計に追加するステップとを含み、
ステップ(b)で前記勧告を行なう際に、機械学習手法が使用される、方法を提供する。
【0007】
第2の局面では、本発明は、少なくとも1つのプロセスアクションをソフトウェアプロセスの設計に追加するためのシステムであって、システムは、
- 前記ソフトウェアプロセスの現在の状態を認識するためのコンテキスト認識モジュールと、
- 勧告モジュールとを含み、勧告モジュールは、
- 前記現在の状態の評価を行ない、
- 前記評価に基づいて、勧めるべき前記少なくとも1つのプロセスアクションを判定し、
- 前記ソフトウェアプロセスの設計者に、前記少なくとも1つのプロセスアクションの勧告を行ない、
- 前記設計者から前記勧告に対する応答を受信するためのものであり、前記システムはさらに、
- 前記応答が前記プロセスアクションの受け入れである場合、前記少なくとも1つのプロセスアクションを前記設計に追加するための設計モジュールを含む、システムを提供する。
【0008】
第3の局面では、本発明は、実行されると、少なくとも1つのプロセスアクションをソフトウェアプロセスの設計に追加するための方法を実施するコンピュータ読取可能およびコンピュータ実行可能命令が符号化された、非一時的コンピュータ読取可能媒体であって、方法は、
(a)前記ソフトウェアプロセスにおける現在の状態を認識するステップと、
(b)前記現在の状態に基づいて、前記ソフトウェアプロセスの設計者に、前記少なくとも1つのプロセスアクションの勧告を行なうステップと、
(c)前記設計者から前記勧告に対する応答を受信するステップと、
(d)前記応答が前記少なくとも1つのプロセスアクションの受け入れである場合、前記少なくとも1つのプロセスアクションを前記設計に追加するステップとを含み、
ステップ(b)で前記勧告を行なう際に、機械学習手法が使用される、非一時的コンピュータ読取可能媒体を提供する。
【0009】
図面の簡単な説明
以下に、本発明を、以下の図を参照して説明する。図中、同じ参照番号は、同じ要素を示す。
【図面の簡単な説明】
【0010】
【
図1】この発明のある局面に従ったシステムのブロック図である。
【
図2】
図1のシステムの別の実施形態のブロック図である。
【
図3】この発明のある局面に従った方法を詳述するフローチャートである。
【発明を実施するための形態】
【0011】
詳細な説明
本発明は、ロボティックプロセスオートメーションの設計に追加されるべきプロセスアクションを勧める。勧告はコンテキストに即したものであり、設計中のプロセスの現在の状態に依存する。すなわち、あるプロセスの初めに勧められるアクションは必ずしも、そのプロセスの終わり近くに勧められるアクションと同じとは限らないであろう(もちろん、いくつかのアクションは絶えず勧められ得る。たとえば、「保存する」というアクションは一貫して提案され得る)。しかしながら、一般に、勧められるアクションは、各プロセスおよび各完了したプロセスステップによって変わるであろう。
【0012】
一例として、設計者は、電子メールを開き、電子メールの添付ファイルにおける文書を開き、文書のいくつかのフィールドをスプレッドシートにコピーし、文書を閉じ、第2の文書を保存するプロセスオートメーションロボットを作りたい場合がある。このプロセスオートメーションロボットの設計中、本発明は、(「電子メールを開く」ステップの後に)電子メールに添付ファイルがあることを認識し、プロセスにおける次のステップが「添付された文書を開いて保存する」であるべきであることを自動的に提案できるであろう。次に、本発明は、ユーザがデータをそこから選択する関連フィールドのリストを提案できるであろう。(以下により詳細に説明されるような)好ましい一実現化例では、本発明は、これらの勧告を行なう際に機械学習手法を使用する。具体的には、この場合、システムは、これらのフィールドを提案するであろう。なぜなら、添付ファイルを有する電子メールの受信の後に、他の場所にコピーされるべき内容の抽出が続くことが多いということを、システムにおける機械学習モジュールが履歴プロセスデータを使用して「学習した」ためである。
【0013】
ここで
図1を参照して、ブロック図は、この発明のある局面に従ったシステムを示す。システム10では、コンテキスト認識モジュール20が、設計中のプロセスの現在の状態を認識し、その現在の状態の詳細を勧告モジュール30に送信する。勧告モジュール30は次に、プロセスの現在の状態を評価する。その評価に基づいて、勧告モジュール30は次に、(もしあれば)どのプロセスアクションが提示されるべきかを判定し、当該プロセスアクションを設計者に勧める。設計者は、勧告を受け入れることによって、または勧告を拒否することによって、勧告に応答する。設計者が勧告を受け入れる場合、設計モジュール40が、勧められたプロセスアクションをプロセス設計に追加する。一方、設計者が勧められたプロセスアクションを拒否する場合、勧告モジュール30は、異なるプロセスアクションを勧めてもよく、または、新しい状態情報を待ってもよい。以下により詳細に下に説明されるように、システムは、現在の状態に関連する情報および勧められたあらゆるプロセスアクションに関連する情報だけでなく、それらのアクションが設計者によって受け入れられたかまたは拒否されたかに関連する情報も収集し、格納してもよい。このデータは、勧告モジュール30によって生成された勧告を絶えず改良するために使用されてもよい。
【0014】
一例として、あるプロセスは、電子メールアプリケーションを開くことを伴い得る。プロセスの「現在の状態」はその場合、「その電子メールアプリケーションは今開いている」となるであろう。コンテキスト認識モジュール20はその状態を識別し、状態に関連する情報を勧告モジュール30に渡すであろう。勧告モジュール30は状態を評価し、勧めるべき可能なプロセスアクションを判定するであろう。そのような1つのプロセスアクションは、「新しい電子メールウィンドウを開ける」であり得る。別のプロセスアクションは、「特定の電子メールテンプレートを開く」であり得る。別のプロセスアクションは、特定の送信人からのすべての電子メールに「高優先順位」としてフラグを立てる」であり得る。以下に説明されるように、これらのアクションは、現在の状態の情報または追加情報のみに基づいて判定されてもよい。勧告モジュール30は次に、勧められたプロセスアクションを設計者に提示するであろう。設計者が勧告を受け入れる場合、関連付けられたプロセスアクションが、プロセスの設計に追加されるであろう。
【0015】
なお、「プロセスの設計」は、多くのやり方で(たとえば、RPA設計環境において設計者が構築するフローチャートとして)表わされてもよい。しかしながら、典型的には、どんな表面的な表現が使用されても、各プロセスは、設計者がより多くのステップを追加するにつれて拡大するソフトウェアファイルに対応するであろう。各プロセスアクションも同様に、ソフトウェアコードの区分に対応するであろう。設計者が勧告を受け入れる場合、ソフトウェアコードの関連付けられた区分が、プロセスのソフトウェアファイルに適切な場所で追加されるであろう。
【0016】
明らかであるはずであるように、複数のプロセスアクションが、プロセスの任意の所与の状態のために勧められてもよい。すなわち、複数の異なるプロセスアクションが、プロセスにおける特定の点を適度に追従してもよい。勧告は、同時にまたは順次提示されてもよい。すなわち、いくつかの実現化例では、設計者は、プロセスの同じ特定の状態を各々追従し得る、勧められる複数のプロセスアクションの同時リストから選ぶことを許可されてもよい。他の実現化例では、単一の特定の状態に関連する複数の勧告が、相次いで提示されてもよい。これらの勧告は、設計者が1つのアクションを選択するまで、または、設計者が提示されたアクションのすべてを拒否するまで、提示されるであろう。フラストレーションを最小限にするために、「すべてを拒否する」というオプションを早い時期に設計者に提示することが好ましいかもしれない。これは、勧告が設計者のデバイスの通常動作に干渉するように構成された場合に特に好ましいであろう。また、そのような場合には、プロセスアクションを、現在のプロセスに対するそれらの適性の順にランク付けすることが好ましいであろう。いったんランク付けされると、勧告は、「最もお勧めの」アクションが最初に提示され、「2番目にお勧めの」アクションが次に提示されるなどのように、設計者に提示され得る。
【0017】
勧告モジュール30が、どのプロセスアクションを勧めるべきかを判定することができない、または、プロセスアクションが勧められるべきであると判定することができないシナリオもあるかもしれない。そのようなシナリオでは、勧告モジュール30は、新しい現在の状態が受信されるまで待つように構成され得る。それに代えて、勧告モジュール30は、デフォルトアクションのリストを提示し得る。そのようなデフォルトアクションは、「保存する」または「新しいウィンドウを開く」などの所与のコンテキストの予測可能なアクションを含み得る。
【0018】
プロセスアクションは、「ストレージから現在の値を削除する」といった、スタンドアロンの単純なアクションであってもよい。しかしながら、それに代えて、プロセスアクションは複雑であってもよい。単一のプロセスアクションが、多くのより小さいプロセスアクションを含んでいてもよい。たとえば、上に概説された多段階コピーシーケンス(「システムXを開く」など)ではなく、本発明は、ユーザが「KをシステムYにコピーする」を選択することを勧め得る。この単一の「より高いレベルの」プロセスアクションは、典型的に必要とされる多段階プロセスよりも、人間のユーザにとってより分かりやすく、また、人的エラーの影響を受けにくい。
【0019】
加えて、単一の勧告が、複数の「より高いレベルの」プロセスアクションを含んでいてもよい。たとえば、プロセスにおけるどこかの点で、勧告モジュール30は、あるファイルが「保存される」ことを勧めるかもしれない。その勧告がいったん受け入れられると、次の勧告は「ファイルを閉じる」であるかもしれない。次の勧告は「新しいファイルを開く」であるかもしれない。他のシナリオでは、これらのプロセスアクションはすべて、一度に勧められてもよい。すなわち、設計者には、「ファイルを保存する-ファイルを閉じる-新しいファイルを開く」という勧告が提示されるであろう。
【0020】
当業者には明らかであるように、RPA設計者は、GUIベースの環境またはテキストベースの環境を含むもののそれらに限定されないあらゆる種類の設計環境を使用してもよい。いくつかの実現化例では、さらに、設計者は、自分または他者が自動化されるべきプロセスを行なっていることを「記録」してもよい。そのような実現化例では、RPAプロセスの設計は、どの特定の環境でも起こらないであろう。このため、本発明はその勧告を、所与の環境にとって好適な任意の形式で提示するように構成され得る。たとえば、GUIベースの設計環境では、勧められるプロセスアクションは、ドロップダウンメニューに、またはドラッグアンドドロップアイコンとして出現してもよい。一方、テキストベースの設計環境では、勧められるプロセスアクションは、半分タイプされた単語を「完成される」「影付き文字」として出現してもよい(もちろん、ここでも実現化例に依存して、テキストベースの環境もドロップダウンを使用してもよく、逆もまた同様である)。別の例として、勧められるプロセスアクションは、設計者のディスプレイデバイス上に「ポップアップ」または通知として出現してもよい。
【0021】
勧告モジュール30によって勧められるプロセスアクションは、あらゆる種類の好適なアクションであってもよい。それらは、コピー、ペースト、削除などのデータ操作アクション;あるアプリケーションから別のアプリケーションにデータを移動させるなどの、システム間の相互作用に関連するアクション;電子メールを送信すること、または「チャットボット」タイプのプロセスのために個別の応答を配信することなどの通信関連アクション;および、ファイルを保存するなどのストレージ関連アクションを含んでいてもよいが、それらに限定されない。
【0022】
いくつかの実現化例では、コンテキスト認識モジュール20および勧告モジュール30は、ルールベースのモジュールを含む。しかしながら、これらのモジュールが受信する可能性があるデータ量、および、それらがそのデータを受信し得る多くの異なるシナリオに起因して、各状況をカバーするルールを開発することは難しいかもしれない。このため、これらのモジュールが各々、ニューラルネットワークに基づいていてもいなくてもよい、訓練された機械学習サブモジュールを含むことが好ましい。コンテキスト認識モジュール20の場合、機械学習サブモジュールは、システム情報に基づいて多くの可能なプロセス状態を識別するように訓練され得る。
【0023】
勧告モジュール30の場合、機械学習サブモジュールは、現在のプロセス状態を評価し、それに応答して好適なプロセスアクションを識別するように訓練され得る。実現化例に依存して、さらに、設計中のプロセスに依存して、勧告モジュール30は、複数のニューラルネットワークを含んでいてもよい。たとえば、あるニューラルネットワークは、コンテキスト情報を単一の数値表現に符号化することを担ってもよく、一方、別の機械学習サブモジュールは、その表現を使用して、符号化されたコンテキストに基づいてアクションを勧めてもよい。関連するニューラルネットワークアプリケーションの一例は、言語ベースの(通信関連)アクションを識別するために、周知の自然言語処理手法を使用することであろう。勧告モジュール30は、任意の所与のプロセス状態に対する所与のアクションの適性を評価するためのニューラルネットワークを含んでいてもよい(適性はまた、「勧告強度」、または、設計者が勧告アクションを受け入れる確率と呼ばれてもよい)。いったん訓練されると、機械学習ベースの勧告モジュール30は、現在の状態の符号化、すなわち、標準表現フォーマットで符号化され、言語ベースの情報または視覚情報であり得る、プロセス状態に関連するコンテキスト情報を、入力として受信するであろう。機械学習ベースの勧告モジュール30は次に、潜在的プロセスアクションのリストと、各アクションが設計者によって受け入れられる確率とを判定してもよい。しかしながら、当業者には明らかであるように、コンテキスト認識モジュール20および勧告モジュール30は、ルールベースの要素とニューラルネットワークベースの要素とのあらゆる組合せを含んでいてもよい。
【0024】
図2は、
図1におけるシステムの別の実施形態を示すブロック図である。
図2に示すシステムは、
図1におけるシステムに非常に類似しており、コンテキスト認識モジュール20が、プロセスの現在の状態についての情報を勧告モジュール30に送信する。勧告モジュール30は、好適なプロセスアクションを識別し、それらのプロセスアクションを設計者に勧める。設計者が勧告を受け入れる場合、設計モジュール40が、そのプロセスアクションをソフトウェアプロセスの全体的設計に追加する。しかしながら、この実施形態では、勧告モジュール30は、履歴モジュール50からも情報を受信する。
【0025】
履歴モジュール50は、現在設計中のプロセスに関連する情報を格納する。加えて、履歴モジュール50は、現在の設計者によって以前に設計されたプロセスおよび/または他者によって設計されたプロセスに関連する情報を格納してもよい。勧告モジュール30は、所与のプロセス状態に対する好適な応答を判定する際に、そのような情報を使用することができる。履歴モジュール50はまた、プロセスの各状態に関連するコンテキスト情報だけでなく、その状態に応答して勧められたプロセスアクションに関連する情報、および、設計者によって受け入れられた勧められたプロセスアクションに関連する情報も格納してもよい。同様に、履歴モジュール50は、勧められたどのプロセスアクションが設計者によって受け入れられなかったかに関連するデータを格納してもよい。この情報は次に、機械学習ベースの勧告モジュール30のための訓練の次の段階で使用され得る。これに代えて、主としてルールベースのモジュールが使用される場合、この情報は、後で新しいルールを確立する際に使用されてもよい。このため、この情報は、将来の勧告を改良し、それらの将来の勧告が設計者によって受け入れられる可能性を高めるために使用され得る。一例として、履歴モジュール50からの情報を使用して、勧告モジュール30は、「現在の状態X」において行なわれた最も一般的なアクションが「アクションA」であると判定するかもしれない。勧告モジュール30はその場合、アクションAが設計者に勧められるべきであると判定してもよい。別の例として、勧告モジュール30は主として履歴モジュール50からの情報に依存してもよく、たとえば、「現在の状態X」は目立たないかまたは平凡なものであってもよい。たとえば、現在の状態は、ソフトウェアアプリケーションがアクティブではない、プロセスにおける切替点を反映していてもよい。そのような点では、勧告モジュール30は、多数の可能なプロセスアクションを識別することができるものの、それらを見分ける方法をあまり有さないであろう。そのような場合、プロセスにおける以前のアクションが指針を提供するかもしれない。すなわち、勧告モジュール30は、次のステップを勧めるために、現在のプロセスにおける以前のアクションについての履歴モジュール50からの情報を使用してもよい。同様に、他の同様のプロセスに関連する情報が、どのプロセスアクションが勧められるべきを判定するために勧告モジュール30によって使用されてもよい。
【0026】
図3は、本発明のある局面に従った方法を詳述するフローチャートである。ステップ100で、プロセス設計が、いくつかの新しい現在の状態に達する。これは、メッセージを受信すること、アプリケーションを開くこと、または、任意の他のイベントまたは変更を含んでいてもよい。ステップ110で、新しい現在の状態が認識される。次にステップ120で、現在の状態に応答する少なくとも1つの好適なプロセスアクションが識別される。次にステップ130で、この少なくとも1つのプロセスアクションが設計者に勧められる。
【0027】
決定140で、方法は、設計者が勧告を受け入れたかまたは拒否したかを判定する。設計者が勧告を受け入れた場合、ステップ150で、少なくとも1つのプロセスアクションはプロセス設計に追加される。この点で、方法は終了してもよく、または、新しい現在の状態について繰り返してもよい(すなわち、方法は終了するかまたはステップ100に戻ってもよい)。
【0028】
一方、設計者が勧告を拒否した場合、決定160は、プロセスの現在の状態のために任意の他のプロセスアクションが勧められ得るかどうか尋ねる。他のプロセスアクションが勧められ得る場合、方法はステップ130に戻り、それらの他のプロセスアクションが設計者に勧められる。しかしながら、他のプロセスアクションを勧めることができない場合、方法は、設計が新しい現在の状態に達するのを待つ(すなわち、ステップ100に戻る)。明らかであるように、設計が決定160からその新しい現在の状態に達するために、設計者は助けなしで設計を続けたであろう。なぜなら、その状態のために勧告がそれ以上行なわれないためである。
【0029】
本発明のさまざまな局面は、ソフトウェアシステム全体におけるソフトウェアモジュールとして実現されてもよいということが明らかであるはずである。そのため、本発明は、実行されると予め定義された関数を用いてさまざまなソフトウェアモジュールを実現するコンピュータ実行可能命令の形をとってもよい。
【0030】
加えて、特に指定のない限り、ここでの「画像」へのいかなる言及も、画素を含むデジタル画像を指すということが明らかであるはずである。同様に、「音声ファイル」へのいかなる言及も、特に指定のない限り、デジタル音声ファイルを指す。「ビデオ」、「ビデオファイル」、「データオブジェクト」、「データファイル」、および他のすべてのそのような用語は、特に指定のない限り、デジタルファイルおよび/またはデータオブジェクトを意味すると解釈されるべきである。
【0031】
この発明の実施形態は、方法ステップの態様でプログラムされたデータプロセッサまたは同様のデバイスによって実行されてもよく、または、これらのステップを実行するための手段が設けられた電子システムによって実行されてもよい。同様に、電子メモリは、コンピュータディスケット、CD-ROM、ランダムアクセスメモリ(Random Access Memory:RAM)、読出専用メモリ(Read Only Memory:ROM)、または当該技術において公知の同様のコンピュータソフトウェア記憶媒体などを意味し、そのような方法ステップを実行するようにプログラムされてもよい。また、これらの方法ステップを表わす電子信号が、通信ネットワークを介して伝送されてもよい。
【0032】
この発明の実施形態は、任意の従来のコンピュータプログラミング言語で実現されてもよい。たとえば、好ましい実施形態は、手続き型プログラミング言語(たとえば「C」または「Go」)、もしくはオブジェクト指向言語(たとえば「C++」、「java(登録商標)」、「PHP」、「PYTHON」、または「C#」)で実現されてもよい。この発明の代替的な実施形態は、予めプログラムされたハードウェア要素、他の関連する構成要素として、または、ハードウェア構成要素とソフトウェア構成要素との組合せとして実現されれてもよい。
【0033】
実施形態は、コンピュータシステムでの使用のためのコンピュータプログラム製品として実現され得る。そのような実現化例は、一連のコンピュータ命令を含んでいてもよく、当該コンピュータ命令は、コンピュータ読取可能媒体(たとえばディスケット、CD-ROM、ROM、または固定ディスク)などの有形的媒体上に固定されるか、もしくは、モデムまたは他のインターフェイスデバイス、たとえば、媒体を通してネットワークに接続された通信アダプタを介して、コンピュータシステムに伝送可能である。媒体は、有形的媒体(たとえば光学または電気通信線)であるか、もしくは、無線手法で実現された媒体(たとえばマイクロ波、赤外線または他の伝送手法)であってもよい。一連のコンピュータ命令は、ここに前述された機能性のすべてまたは一部を具現化する。当業者であれば、そのようなコンピュータ命令が、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するための多くのプログラミング言語で書かれ得るということを理解するはずである。さらに、そのような命令は、半導体、磁気、光学または他のメモリデバイスなどの任意のメモリデバイスに格納されてもよく、光学、赤外線、マイクロ波または他の伝送技術などの任意の通信技術を使用して伝送されてもよい。そのようなコンピュータプログラム製品は、印刷されたドキュメントまたは電子ドキュメントを伴うリムーバブル媒体(たとえば市販ソフトウェア)として配布されてもよく、コンピュータシステムに(たとえばシステムROMまたは固定ディスク上に)予め搭載されてもよく、または、サーバからネットワーク(たとえばインターネットまたはワールドワイドウェブ)を通して配布されてもよい、ということが予期される。もちろん、この発明のいくつかの実施形態は、ソフトウェア(たとえばコンピュータプログラム製品)とハードウェアとの組合せとして実現されてもよい。この発明のさらに他の実施形態は、完全にハードウェア、または完全にソフトウェア(たとえばコンピュータプログラム製品)として実現されてもよい。
【0034】
この発明を理解する人間はここで、上述のものの代替的構造および実施形態または変形に想到し得る。それらはすべて、請求項で定義されるようなこの発明の範囲内に入るよう意図される。