(57)【要約】  本発明の実施例は、ユーザ作業を監視するためのシステムおよび方法を含む。いくつかの実施例においては、フロントエンドコンポーネントは、アプリケーションとの対話時にユーザが何を行っていたかまたはユーザが何を行おうとしていたかを判断または推論する際にアドミニストレータなどにとって有用であり得るデータを集める。フロントエンドコンポーネントは、このデータのうち少なくともいくらかをバックエンドコンポーネントに伝達する。いくつかの実施例においては、ユーザ作業監視の間接費を減じるために、ユーザ作業に関するデータの通信が、要求および応答などの典型的な伝送でピギーバックされる。
2014510969.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ対話の監視を容易にするための方法であって、
バックエンドシステムに対して要求を送信させるユーザ開始イベントに関する意味情報をクライアントシステムにおいて取込むステップと、
少なくとも１つの特別なパラメータを用いて、ユーザ開始イベントについての意味情報のうち少なくともいくらかをクライアントシステムからバックエンドシステムに渡すステップと、
意味情報のうち少なくともいくらかを、要求の処理時にバックエンドシステムによって実行される１つ以上の動作とリンクさせるための識別子をクライアントシステムにおいて受取るステップとを含む、方法。
【請求項２】
ユーザ開始イベントに関する意味情報は、ユーザ開始イベントのクライアント開始時間、ユーザ開始イベントのクライアント終了時間、イベント情報および部分ターゲットのうち少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
イベント情報は、イベントタイプ、コンポーネントタイプ、コンポーネントクライアント識別子、コンポーネントディスプレイ名、領域名および領域ビュー識別子のうち少なくとも１つを含む、請求項２に記載の方法。
【請求項４】
少なくとも１つの特別なパラメータを用いて、ユーザ開始イベントについての意味情報のうち少なくともいくらかをクライアントシステムからバックエンドシステムに渡すステップは、さらに、
バックエンドシステムに対する要求に少なくとも１つの特別なパラメータを含めるステップを含む、請求項１に記載の方法。
【請求項５】
要求は、ユーザ開始イベントに応答して生成される要求である、請求項４に記載の方法。
【請求項６】
要求は、後続のユーザ開始イベントによって生成される要求である、請求項４に記載の方法。
【請求項７】
バックエンドシステムに対する要求に少なくとも１つの特別なパラメータを含めるステップは、さらに、
ユーザ開始イベントに関する意味情報が現在のウェブページで記憶されていると判断したことに応答して、少なくとも１つの特別なパラメータについての、現在のウェブページで記憶されている意味情報のうち少なくともいくらかを用いるステップと、
ユーザ開始イベントに関する意味情報が現在のウェブページで記憶されていないと判断したことに応答して、少なくとも１つの特別なパラメータについての、二次記憶装置に記憶された意味情報のうち少なくともいくらかを用いるステップとを含む、請求項６に記載の方法。
【請求項８】
バックエンドシステムに対して要求を送信させるユーザ開始イベントに関する意味情報をクライアントシステムにおいて取込むステップはさらに、
意味情報のうち少なくともいくらかを二次記憶装置に記憶するステップをさらに含む、請求項１に記載の方法。
【請求項９】
結果としてクライアントシステムから少なくとも１つの二次要求が送信されることとなるユーザ開始イベントに応答して、要求が二次要求であることを示すインジケータを少なくとも１つの二次要求に含めるステップをさらに含む、請求項１に記載の方法。
【請求項１０】
命令の１つ以上のシーケンスを記憶する少なくとも１つの一時的でないコンピュータ読取可能媒体を含むコンピュータプログラムプロダクトであって、１つ以上のプロセッサによって命令のうち１つ以上のシーケンスを実行することで、前記１つ以上のプロセッサに請求項１の方法を実行させる、コンピュータプログラムプロダクト。
【請求項１１】
ユーザ対話の監視を容易にするための方法であって、
クライアントシステムにおいて開始される少なくとも１つのイベントについての要求およびユーザ作業関連データをバックエンドシステムにおいて受取るステップを含み、前記ユーザ作業関連データは、少なくとも１つの容易に識別可能なパラメータを用いてバックエンドシステムに伝達され、前記方法はさらに、
処理されている要求に応答して、処理された要求についての応答に少なくとも１つの容易に識別可能なパラメータを含めるステップを含み、前記少なくとも１つの容易に識別可能なパラメータは、要求の処理時にバックエンドシステムによって実行される１つ以上の動作を、要求を開始したクライアント開始イベントと関連付けるための少なくとも一意的な識別子を含む、方法。
【請求項１２】
クライアントシステムにおいて開始された少なくとも１つのイベントについてのユーザ作業関連データは、
要求に連付けられたユーザ作業関連データと、
以前の要求に関連付けられたユーザ作業関連データとのうち少なくとも１つを含む、請求項１１に記載の方法。
【請求項１３】
以前の要求に関連付けられたユーザ作業関連データは、以前の要求のクライアント開始時間、以前の要求の完了のクライアント終了時間、および、以前の要求を処理する際にバックエンドシステムによって実行される１つ以上の動作を関連付けるための一意的な識別子のうち少なくとも１つを含む、請求項１２に記載の方法。
【請求項１４】
ユーザ作業関連データは、要求のクライアント開始時間、部分ターゲット、イベントタイプ、コンポーネントタイプ、コンポーネントクライアント識別子、コンポーネントディスプレイ名、領域名および領域ビュー識別子のうち少なくとも１つを含む、請求項１２に記載の方法。
【請求項１５】
クライアント開始イベントはユーザ開始動作に対する二次要求であり、少なくとも１つの容易に識別可能なパラメータはさらに、応答が二次要求に対する二次応答であることの表示を含む、請求項１１に記載の方法。
【請求項１６】
命令の１つ以上のシーケンスを記憶する少なくとも１つの一時的でないコンピュータ読取可能媒体を含むコンピュータプログラムプロダクトであって、１つ以上のプロセッサによって命令の１つ以上のシーケンスを実行することで、前記１つ以上のプロセッサに請求項１１の方法を実行させる、コンピュータプログラムプロダクト。
【請求項１７】
命令の１つ以上のシーケンスを記憶する少なくとも１つの一時的でないコンピュータ読取可能媒体を含むコンピュータプログラムプロダクトであって、１つ以上のプロセッサによって命令の１つ以上のシーケンスを実行することで、前記１つ以上のプロセッサに、
クライアントシステムによって取込まれたデータを含むユーザ開始動作に関するデータを識別する１つ以上のユーザ作業監視パラメータのために、クライアントシステムとバックエンドシステムとの間のネットワークトラフィック対話を監視するステップと、
ユーザ開始動作に関するデータを含むユーザ作業監視パラメータを含むネットワークトラフィック対話に応答して、ネットワークトラフィック対話をパースして、ユーザ開始動作に関するデータを抽出するステップと、
抽出されたデータを用いて、ユーザ開始動作に関するユーザの動作を判断または推論するステップとを含むステップを実行させる、コンピュータプログラムプロダクト。
【請求項１８】
ユーザ開始動作に関するデータは、クライアント開始時間、クライアント終了時間、部分ターゲット、イベントタイプ、コンポーネントタイプ、コンポーネントクライアント識別子、コンポーネントディスプレイ名、領域名、および領域ビュー識別子のうち少なくとも１つを含む、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項１９】
ユーザ開始動作に関するデータを識別する１つ以上のユーザ作業監視パラメータは、要求および応答のうち少なくとも１つに含まれる、請求項１８に記載のコンピュータプログラムプロダクト。
【請求項２０】
ユーザ開始動作に関するデータのうち少なくともいくらかを要求の処理時にバックエンドシステムによって実行される１つ以上の動作とリンクさせる識別子を、抽出されたデータから受取るステップをさらに含む、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２１】
命令の１つ以上のシーケンスを記憶する少なくとも１つの一時的でないコンピュータ読取可能媒体を含むコンピュータプログラムプロダクトであって、１つ以上のプロセッサによって命令の１つ以上のシーケンスを実行することで、前記１つ以上のプロセッサに、
バックエンドシステムに対して要求を送信させるユーザ開始イベントに関する意味情報をクライアントシステムにおいて取込むステップと、
少なくとも１つの特別なパラメータを用いて、ユーザ開始イベントについての意味情報のうち少なくともいくらかをクライアントシステムからバックエンドシステムに渡すステップと、
要求の処理時にバックエンドシステムによって実行される１つ以上の動作と意味情報のうち少なくともいくらかをリンクさせるための識別子をクライアントシステムにおいて受取るステップとを実行させる、コンピュータプログラムプロダクト。
【請求項２２】
命令の１つ以上のシーケンスを記憶する少なくとも１つの一時的でないコンピュータ読取可能媒体を含むコンピュータプログラムプロダクトであって、１つ以上のプロセッサによって命令の１つ以上のシーケンスを実行することで前記１つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
クライアントシステムにおいて開始された少なくとも１つのイベントについての要求およびユーザ作業関連データをバックエンドシステムにおいて受取るステップを含み、前記ユーザ作業関連データは、少なくとも１つの容易に識別可能なパラメータを用いてバックエンドシステムに伝達され、前記以下のステップはさらに、
処理されている要求に応答して、少なくとも１つの容易に識別可能なパラメータを処理された要求についての応答に含めるステップを含み、前記少なくとも１つの容易に識別可能なパラメータは、要求の処理時にバックエンドシステムによって実行される１つ以上の動作を、要求を開始したクライアント開始イベントに関連付けるための少なくとも一意的な識別子を含む、コンピュータプログラムプロダクト。
【請求項２３】
１つ以上のマイクロプロセッサ上で動作し、ユーザ対話の監視を容易にするためのシステムであって、
バックエンドシステムに対して要求を送信させるユーザ開始イベントに関する意味情報をクライアントシステムにおいて取込むためのクライアントモジュールを含み、
前記クライアントモジュールは、少なくとも１つの特別なパラメータを用いて、ユーザ開始イベントについての意味情報のうち少なくともいくらかをクライアントシステムからバックエンドシステムに渡すためのものであり、
前記クライアントモジュールは、意味情報のうち少なくともいくらかを、要求の処理時にバックエンドシステムによって実行される１つ以上の動作とリンクさせるための識別子をクライアントシステムにおいて受取るためのものである、システム。
【請求項２４】
１つ以上のマイクロプロセッサ上で動作し、ユーザ対話の監視を容易にするためのシステムであって、
クライアントシステムにおいて開始された少なくとも１つのイベントについての要求およびユーザ作業関連データを受取るためのバックエンドシステムを含み、前記ユーザ作業関連データは、少なくとも１つの容易に識別可能なパラメータを用いてバックエンドシステムに伝達され、
前記バックエンドシステムは、処理されている要求に応答して、少なくとも１つの容易に識別可能なパラメータを、処理された要求についての応答に含めるためのものであり、前記少なくとも１つの容易に識別可能なパラメータは、要求の処理時にバックエンドシステムによって実行される１つ以上の動作を、要求を開始したクライアント開始イベントに関連付けるための少なくとも一意的な識別子を含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
Ａ．技術分野
本発明は概してコンピュータアプリケーションに関し、より特定的には、コンピュータアプリケーションとのユーザの対話を監視することに関する。
【背景技術】
【０００２】
Ｂ．発明の背景
ソフトウェアアプリケーションを含む如何なるプロダクトを開発およびメンテナンスする場合にも、プロダクトとのエンドユーザの対話を監視することが必要となるはずである。ユーザの作業を監視することができれば、ユーザが如何にアプリケーションと対話するのかを開発者および管理者が識別し易くなり、かつ改善すべき区域が識別し易くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ユーザの対話を監視しようとするこれまでの試みは極端に制限されていた。ユーザに直接問合せすることはいくらか有効であり得るが、このような方法には魅力が欠けている。まず、調査に対する応答または問題の通知をユーザに行わせることが困難である。第二に、ユーザは、彼らが行っている動作には細心の注意を払わない可能性がある。第三に、企業が、ユーザに、ユーザ作業情報を自発的に提出させることができたとしても、ユーザは有益な情報を有していない可能性がある。現代社会においてはコンピュータが遍在しているが、これは、技術的能力を持たない多くの人がコンピュータを使用することを意味している。これらの素人ユーザは、自分たちのコンピュータと対話することについてなんの識見も有していない可能性があるだろう。従来、これらのエンドユーザは、アプリケーションとの対話を評価または監視するための基準をたった２つしか有していない。これらの基準とは、すなわち、アプリケーションとの対話が完了するのにどれくらいかかるのか、および、その利用可能性である。第四に、ユーザが１回の対話と見なしているものが、ユーザから遮蔽可能ないくつかのオペレーションを含む可能性がある。このため、ユーザが自発的に進んで自身の作業情報を追跡および提出し、何らかの有意義な情報を提供できるほど技術的に熟練していたとしても、対話についての厳密な問題は、ユーザには認識できない可能性がある。最後に、このような方法では遅れが生じ、リアルタイムで行うことができない。
【０００４】
ユーザの作業を監視しようとする他の試みには、ユーザの対話時にデータを観察することが含まれる。たとえば、ユーザが彼または彼女のブラウザを誘導させるウェブサイト、またはより特定的にはユニフォーム・リソース・ロケータ（ＵＲＬ：Uniform Resource Locator）は、情報を抽出するためにある程度まで調べることができる。但し、このような方法では、せいぜい、通り一遍の情報に対して、実際のユーザの意図についてのわずかな見通しが与えられるに過ぎない。
【０００５】
したがって、アプリケーションと対話する際にユーザが行おうとしていたことについての有意義な情報を提供しようとするこれまでの試みは非常に制限されていたかまたは効果のないものであった。
【０００６】
図面の簡単な説明
本発明の実施例を参照し、その例を添付の図面において例示し得る。これらの図は、限定ではなく例示を意図したものである。本発明は概してこれらの実施例の文脈において説明されているが、それが本発明の範囲をこれらの特定の実施例に限定するよう意図されたものではないことが理解されるはずである。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施例に従ったユーザ作業監視についてのシステムの例を示す図である。
【図２】本発明の実施例に従った１セットのネストされたタスクフローを示す図である。
【図３】本発明の実施例に従ったユーザ作業監視についての方法を示す図である。
【図４】本発明の実施例に従った部分ページ要求についてのユーザ作業監視のための方法を示す図である。
【図５】本発明の実施例に従った、記憶されたユーザ作業監視データを得るための方法を示す図である。
【図６】本発明の実施例に従った二次要求を含むユーザ作業監視のための方法を示す図である。
【図７】本発明の実施例に従ったクライアント側の転送を含むユーザ作業監視のための方法を示す図である。
【図８】本発明の実施例に従ったコンピューティングシステムの例を示すブロック図である。
【発明を実施するための形態】
【０００８】
好ましい実施例の詳細な説明
以下の記載においては、説明を目的として、本発明についての理解をもたらすために具体的な詳細が述べられる。しかしながら、本発明がこれらの詳細なしでも実施可能であることが当業者にとって明らかになるだろう。さらに、当業者であれば、以下に記載される本発明の実施例が、ソフトウェア、ハードウェアもしくはファームウェアまたはそれらの組合せを含むさまざまな方法で実現され得ることを認識するだろう。したがって、この明細書中において説明される図は、本発明の特定の実施例を例示するものであり、本発明を不明瞭にしないよう意図されたものである。
【０００９】
ブロック図に示されるコンポーネントまたはモジュールは、本発明の具体的な実施例を例示するものであり、本発明を不明瞭にしないよう意図されたものである。この説明全体にわたって、コンポーネントが、副次的単位を含み得る別個の機能単位として記載され得ることも理解されるだろう。但し、当業者であれば、さまざまなコンポーネントまたはそれらの部分が別個のコンポーネントに分割され得るか、または、単一のシステムもしくはコンポーネント内への一体化を含め、共に一体化され得ることを認識するだろう。この明細書中に記載される機能または動作がコンポーネントまたはモジュールとして実現され得ることに留意されたい。
【００１０】
さらに、図中のコンポーネント間の接続は、直接接続に限定されるよう意図されたものではない。むしろ、これらのコンポーネント間のデータは中間コンポーネントによって修正、再フォーマットまたは変更されてもよい。また、使用され得る接続を追加するかまたは減らしてもよい。「結合された（coupled）」または「通信可能に結合された（communicatively coupled）」とは、直接接続、１つ以上の中間装置を介した間接接続および無線接続を含むものと理解されることにも留意されたい。
【００１１】
明細書において「一実施例（one embodiment）」、「好ましい実施例（preferred embodiment）」、「ある実施例（an embodiment）」または「いくつかの実施例（embodiments）」と言及する場合、実施例に関連付けて記載される特定の特色、構造、特徴または機能が、本発明の少なくとも１つの実施例に含まれており、２つ以上の実施例に含まれ得ることを意味している。明細書中のさまざまな箇所に「一実施例においては（in one embodiment）」、「ある実施例においては（in an embodiment）」、「いくつかの実施例においては（in embodiments）」という語句があるが、これらは必ずしもすべてが同じ実施例を指すわけではない。
【００１２】
明細書中のさまざまな箇所において特定の用語が用いられている場合、これは例示のためであって、限定として解釈されるべきではない。「サービス（service）」または「機能（function）」という用語の使用は、単一の機能を記載することに限定されず、この用語を使用する場合、１グループの関連する機能または機能性を指す可能性もある。同様に、「リソース（resource）」という用語の使用は、単一のリソースを記載することに限定されず、この用語は、コンピューティング環境内に分散され得るかまたは集められ得る１セットのリソースを指すのに用いられてもよい。
【００１３】
この明細書中に提示される本発明の実施例を、ウェブアプリケーションの例を用いて説明することとする。これらの例は限定ではなく例示によって与えられる。当業者であれば、他のアプリケーションに対する本発明の一般的な適用可能性も認識するだろう。
【００１４】
Ａ．包括的なシステムの概要
従来のユーザ対話監視方法の結果が効果のないものであったため、ユーザの対話についての意味情報をより直接的に判断および推論することを可能にするシステムおよび方法が必要とされる。このため、この発明の局面は、アプリケーションと対話する際にユーザが何を行おうとしていたかを判断または推論するのに有用であり得る情報の取込みを含む。アドミニストレータは、システム全体の健全性を監視しようと努め、個々のユーザの対話に関して集められたデータは、アドミニストレータがこのタスクを行うのを助ける。
【００１５】
このユーザ作業監視を容易にするために、リッチクライアントフレームワークは要求についての情報を提供して、アドミニストレータが、過去および現在の両方についてアプリケーション内のページの健全性を監視することができるようする。たとえば、ユーザ作業情報は、いくつかのデータ要素、たとえば、限定ではなく例示を目的として、「クリック・トゥ・レンダー（click to render）」時間、イベント情報、コンテキスト識別子、領域識別子、さらには、部分要求のために、ストリーミング要求（たとえばテーブルにおけるデータフェッチ）、およびクライアント側の転送要求、などを含み、ユーザ作業情報はさらに、特別なパラメータを用いてヘッダ、応答本文またはＵＲＬ中に通常一まとめにされた情報に含まれてもよい。いくつかの実施例においては、性能メトリックである「クリック・トゥ・レンダー」時間は、ブラウザ上でユーザが動作を実行する時間（クライアント開始時間）から、ウェブアプリケーションがこの動作の処理を完了し、その結果を用いてブラウザを更新する時間（クライアント終了時間）までのすべての処理を含む。いくつかの実施例においては、アプリケーションは、このフレームワークを用いて、クライアントとサーバとの間のトラフィックをスニッフィングすることなどによって対話を監視し、容易に識別可能なパラメータを用いて意味情報を抽出することができる。次いで、抽出された意味情報をアプリケーションおよび／またはアドミニストレータが用いることによって、ユーザの対話を監視することができる。
【００１６】
図１は、本発明の実施例に従ったユーザ作業監視についての全体的なシステム１００の例を図示する。図１には、ネットワーク１２５を介してバックエンドシステム１３０に通信可能に結合されるクライアントコンピューティングシステム１１０が示される。いくつかの実施例においては、コンピューティングデバイスは、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、または処理能力を有する他のデバイスもしくはデバイスのセットであり得る。ネットワーク１２５は、インターネット、イントラネット、エクストラネット、直接接続またはこれらの何らかの組合せであってもよい。いくつかの実施例においては、バックエンドシステム１３０はネットワーク１２５の一部をなし得る。いくつかの実施例においては、バックエンドシステム１３０は、ウェブサーバなどの１つ以上のサーバであってもよい。バックエンドシステム１３０は、単一のデバイス内に含まれ得るか、または、複数のデバイスにわたって分散され得る。
【００１７】
いくつかの実施例においては、システム１００は、２つのソフトウエアコンポーネント、モジュールまたはアプリケーションを含む。一方のモジュール１２０は、フロントエンドまたはクライアントコンピューティングデバイス１１０において動作し、他方のモジュール１３５、バックエンドまたはサーバモジュール１３５は、バックエンド１３０において動作する。ある実施例においては、フロントエンドモジュール１２０は、ブラウザ１１５などのクライアントアプリケーションと共に機能するプラグインモジュールまたは他のモジュールであってもよい。クライアントモジュール１２０およびサーバモジュール１３０は、フレームワークの形成を支援するものであるが、このフレームワークは、クライアント側でユーザ対話情報を獲得してそれらの対話をバックエンドシステムによって実行されるオペレーションとリンクさせるために、アプリケーションがユーザ作業に関するデータを抽出することを可能にする。
【００１８】
クライアントモジュール１２０は、ユーザ作業情報を取込み、この情報のうち少なくともいくらかをバックエンド１３０とやり取りする。サーバモジュール１３５はまた、ユーザ作業監視に関するデータをクライアントモジュール１２０とやり取りするよう構成される。
【００１９】
いくつかの実施例においては、クライアントモジュール１２０は、この情報を、典型的な伝送に付随させることによって送信する。たとえば、クライアントモジュール１２０は、要求にユーザ作業データを含め得る。既存の対話またはネットワーク作業を用いてユーザ作業データをピギーバックすることは、ユーザ監視作業の間接費を下げることの助けとなる。また、間接処理費を下げるのを助けるために、ユーザ作業は、ＵＲＬ、ヘッダ、本文またはこれらの組合せにおいて１つ以上の特別なパラメータとして含まれてもよい。特別なパラメータを用いることにより、これら特別なパラメータをどこに伝送すべきかを選択することにより、またはこれら両方を行うことにより、ユーザ作業データを抽出する間接費を劇的に減らすことができる。当然、当業者であれば、他の実現例が利用され得ることを認識するだろう。たとえば、ネットワークトラフィックおよび／または処理方法がさほど大きな問題にならなければ、ユーザ作業データは別個のネットワーク伝送で伝送されてもよい。
【００２０】
いくつかの実施例においては、要求のためのユーザ作業監視データの一部として利用可能であり得る情報は、以下のものを含むが、これらに限定されない。
【００２１】
・  いくつかの実施例において、一次動作または二次動作のためのストリングコンテキスト識別子であるコンテキスト識別子；
・  いくつかの実施例において、二次動作のための親（または一次）動作のコンテキスト識別子である親コンテキスト識別子；
・  いくつかの実施例において、クライアント要求の現在の開始時間であるクライアント開始時間。いくつかの実施例においては、クライアント開始時間はクライアントのクロックを用いたＵＴＣ（Universal Coordinated Time（万国標準時））に沿っている；
・  いくつかの実施例において、現在の要求のためにクライアントに部分ターゲットとして登録したコンポーネント識別子のリストであるＰＰＲ（Partial Page Request（部分ページ要求））ターゲット。これらのアイテムは、ウェブページ全体の更新またはリロードを必要とすることなく変更または更新され得るコンポーネントを表わす。部分ページ要求は、ページ全体ではなく、ページのうち変更が必要な部分のみについてのマークアップを含む応答を結果としてもたらす要求である。クライアントは、具体的には、ページのある特定の部分を作成し直すことを要求することができ、サーバも付加的な部分を追加し得る。
【００２２】
・  いくつかの実施例において、以下の情報を含み得るがこれらに限定されない動作についての情報であるイベント情報：
−  いくつかの実施例において、（ボタンまたはリンクが選択されたことを表わす動作イベントなどの）より低いレベルであり得るか、または、（ポップアップウィンドウが表示された、行がテーブルにおいて選択された、などの）より高いレベルであり得るイベントタイプ；
−  コンポーネントタイプ。いくつかの実施例においては、ページのサーバ表示には、ページ上でユーザ対話を処理する（たとえば、テキスト領域への入力の処理、購入すべきアイテムの選別、などの）ためにコードが関連付けられている。これは、しばしば、ユーザインターフェイスコンポーネントのツリーとしてモデル化される。これらのコンポーネントは、また、クライアント上に表示されたコンテキスト、たとえばＨＴＭＬおよび関連するｊａｖａｓｃｒｉｐｔ（登録商標）、を生成する。クライアントはまた、サーバに戻ることを必要とすることなくクライアント上で対話を処理するために、ユーザインターフェイスコンポーネントの対応するツリーを有してもよい。これらのコンポーネントは、ボタンのようなより低レベルのカプセル化、またはショッピングカートをユーザインターフェイスで表示するといったようなより高レベルのカプセル化であり得る。いくつかの実施例においては、コンポーネントタイプに関連して記録されるのはこれらのタイプのコンポーネントである。
【００２３】
−  いくつかの実施例において、イベントのソースであるコンポーネントのクライアント識別子であるコンポーネントクライアントＩｄ。いくつかの実施例においては、これは、コンポーネントタイプのインスタンス、たとえばどのボタンがクリックされたかについて、を固有に識別する。
【００２４】
−  いくつかの実施例において、ウェブページ上のコンポーネントを識別する名前であるコンポーネントディスプレイ名。たとえば、ボタンまたはリンクは、アプリケーションによって識別子が与えられてもよいが、アドミニストレータはその識別子が参照するものが何であるかを容易には知り得ないだろう。このため、いくつかの実施例においては、クライアントコンポーネントは、ユーザ作業を確認しようとする際に、アドミニストレータにとってより有意義になる可能性のあるディスプレイ名を割当てるかまたは少なくとも割当てるよう試みる。（たとえば、ユーザによって選択されたイベントが、ユーザが「キャンセル」ボタンをクリックした結果であった場合、コンポーネントディスプレイ名として「キャンセル」を割当てる）。すなわち、コンポーネントディスプレイ名は、通常、ユーザインターフェイス上に表示される「キャンセル」などの人間が読取れる名前であって、「キャンセル申込み」などのより意味のあるものである。識別子がページ内のコンポーネントを一意的に識別する一方で、ディスプレイ名は一意的ではない可能性がある。いくつかの実施例においては、識別子は、同様にコンポーネントについてのコンテキスト情報を提供し得る。いくつかの実施例においては、クライアントアプリカントは、アプリケーションによって割当てられたコンポーネントディスプレイ識別子と、それ自体のコンポーネントディスプレイ名識別子とをともに送信してもよい。
【００２５】
−  いくつかの実施例において、ユーザ動作が領域内で始まった場合における、最も外側の領域までの領域名のリストである領域名。いくつかの実施例においては、ウェブページは、さまざまな領域およびタスクフローに分割されてもよい。イベントが規定された領域においては始まった場合、その領域名が集められて用いられてもよい。領域が１つ以上の他の領域内にネストされる場合、ネスト情報が集められてもよい。限定ではなく例示のために、図２に示される例を検討する。図２は、本発明の実施例に従った１セットのネストされたタスクフロー２００を表す。図２に示されるように、アプリケーションのディスプレイの一部は、ディスプレイにおけるさまざまな領域において提示される１セットのネストされたタスクフローを含む。示される例においては、タスクフロー２の領域２１０内にコンポーネント、この場合はボタン２１５、が存在する。タスクフロー２の表示された領域２１０は、タスクフロー１に関連付けられるより大きな領域２０５内にネストされる。このため、領域識別子はこのネストされた関係を示す可能性がある。たとえば、ボタン２１５を選択するユーザのユーザイベントのための領域識別子は、「タスクフロー１：タスクフロー２：ボタン」であってもよい。
【００２６】
−  領域ビューＩｄは、ユーザ動作が領域内で始まった場合における、最も外側の領域にまで至る領域識別子のリストである。いくつかの実施例においては、領域名は、タスクフローを全体的に識別する名前であり、アドミニストレータが熟知している可能性のある名前、および、（「チェックアウト」などの）より高レベルのプロセスを記述する可能性のある名前であり、一方で、領域ビュー識別子は、（「checkout_credit_card.jsff）」などの）領域の定義を含むファイル名に由来している。
【００２７】
いくつかの実施例においては、クライアント属性の変化によってもたらされる要求のために、「イベント情報」が「ヌル（null）」に設定されてもよい。
【００２８】
いくつかの実施例においては、応答または要求の一部として含まれ得るユーザ作業監視データの一部として利用可能な情報は、以下を含み得るがこれらには限定されない。
【００２９】
・  いくつかの実施例において、ちょうど行われたところである要求についての応答ページのビューの識別子であるビューＩｄ；
・  いくつかの実施例において、現在の要求のコンテキスト識別子であるコンテキストＩｄ。いくつかの実施例においては、バックエンドにおいて機能する診断および監視サービスは、要求のために実行されたログ記録済みの作業を関連付けるのに用いられる現在の要求についての実行コンテキスト識別子を生成し得る。いくつかの実施例においては、この実行コンテキスト識別子（ＥＣＩＤ：execution context identifier）は、コンテキストＩｄとして用いられてもよい。
【００３０】
・  いくつかの実施例において、要求または応答が以前の一次的なユーザ要求の補足部分であることを識別するためのパラメータである、二次的なもの。たとえば、データストリーミング要求は、二次応答を発生させることとなる二次要求の一例である。データストリーミング要求は、典型的には、一次要求についての応答がテーブルまたはツリーなどのデータリッチなコンポーネントを含む場合に発生する。しばしば、レイアウトだけが一次要求についての応答の一部となり、これらのコンポーネントについてのデータが二次ストリーミング要求の一部として検索される。いくつかの実施例においては、ブールフラグは、応答が以前の一次要求に関連付けられていることを示すよう設定され得る。
【００３１】
いくつかの実施例においては、ビューＩｄ、コンテキストＩｄおよび二次的なものを含むがこれらに限定されないパラメータが応答ヘッダに配置される。ヘッダにこの情報を配置することにより、かなりの量のデータを含み得る応答本文に配置される場合よりも抽出にかかる計算コストがより安くなる。しかしながら、当業者であれば、データを伝送および抽出し得るいくつかの方法を認識するだろう。したがって、当業者であれば、バックエンドシステムが、応答ペイロードの一部として、応答ヘッダの一部として、別個の通信でまたはその何らかの組合せで、ユーザ作業監視に関する１つ以上のパラメータをクライアントに送信し得ることを認識するだろう。いくつかの実施例においては、フロントエンドとバックエンドとの間の対話は、ユーザ作業監視に関するデータを得るために、監視アプリケーションによってスニッフィングされてもよい。
【００３２】
Ｂ．具体的な方法の実施例
図３は、本発明の実施例に従ったユーザ作業を監視するための方法の実施例を示す。いくつかの実施例においては、アプリケーションとのユーザの対話に関する意味情報がクライアントにおいて記録される（３０５）。意味情報は、ユーザがアプリケーションに対して何を行ったのかまたは何を行おうとしていたのかを判断または推論するのに用いることのできる情報を意味するものと理解されるだろう。クライアントとサーバとの間の意味情報の受渡しを容易にするために、識別可能なパラメータを用いて、クライアントまたはフロントエンドとサーバまたはバックエンドとの間で意味情報のうち少なくともいくらかを伝送する（３１０）。いくつかの実施例においては、特別なパラメータがＵＲＬ、ヘッダ、本文、またはそれらの組合せで現われてもよい。バックエンドにおいて実行されたオペレーションについてログ記録された情報は、フロントエンドにおいて受取られるクライアント要求にリンクされ得る（３１５）。ユーザがフロントエンドにおいて何を行なっているかについての意味情報を有しており、かつ、フロントエンドオペレーションとバックエンドオペレーションとがリンクされていることにより、アプリケーションとの対話の際にユーザが何を行っていたかまたは何を行おうとしていたかを確認することが容易になり得る（３２０）。いくつかの実施例においては、アプリケーションは、このフレームワークを用いて、クライアントとサーバとの間のトラフィックをスニッフィングすることなどによって対話を監視し、容易に識別可能なパラメータを用いて意味情報を抽出することができる。次いで、抽出された意味情報をアプリケーションおよび／またはアドミニストレータが用いることによって、ユーザの対話を監視することができる。いくつかの実施例においては、このアプリケーションはバックエンドで動作してもよい。
【００３３】
ユーザインターフェイスおよびコンテキスト識別子についての意味情報を伝送することにより、少なくとも２つのレベルで分析を行うことが可能となる。すなわち、１）ユーザ−インターフェイス・セマンティクスに基づいて行われていることに関する迅速な分析（いくつかの実施例においては、この分析はリアルタイムで行われてもよく、ともに集約されてもよい）、および、２）特定の要求−応答に関して起こったものに関するより深い分析（いくつかの実施例においては、この分析を、コンテキスト識別子を用いて行うことにより、ユーザ対話、迅速な分析またはこれら両方を、特定の要求−応答についてバックエンド上で起こっていたものに関するより詳細な情報に結び付け直してもよい）。典型的なワークフローは、実行システムにおいて起こり得る問題を識別するために迅速な分析時に情報を用い、次いで、実際に何が起こったのかと、それがなぜ起こったのかとを判断するためにより深い分析を用いるアドミニストレータを含む。
【００３４】
ユーザ作業監視に関する方法の具体的な実施例を以下に示す。具体的な実施例は、限定ではなく例示として提供される実現情報を含む。たとえば、記載されかつクレームされている方法におけるステップのうちのいくつかが、本発明を実質的に変更することなく変更され得るかまたは異なる順序で実行され得ることに留意されたい。したがって、実現例の詳細が選択の余地があり、他の実現例が使用され得ることに留意されたい。このため、選択の余地があるかまたはユーザ作業監視のアプリケーションを実質的に変更しない実現例の詳細によって本発明の範囲が限定されるわけではない。
【００３５】
Ａ．部分ページ要求の実施例
図４は、本発明の実施例に従った部分ページ要求についてのユーザ作業監視のための方法を示す。いくつかの実施例においては、ユーザがクライアントまたはフロントエンドにおいて動作を開始する。たとえば、ユーザがアプリケーションにＵＲＬを入力してもよい。いくつかの実施例においては、クライアント側のモジュールが、最初の対話についてのユーザ作業に関するデータを記憶する（４２０）。たとえば、最初の動作が、ユーザがウェブページ上でリンクまたはボタンを選択することであった場合、リンクまたはボタンの識別子が記録されてもよく、イベントが記録されてもよく、リンクまたはボタンの領域が記録されてもよい、等である。ユーザ要求のクライアント開始時間が最初の対話では知り得ない可能性があるので、いくつかの実施例においては、この情報がシミュレートされてもよく、またはブランク／不明のままにされてもよい。いくつかの実施例においては、他のユーザデータが集められて記憶されてもよい。
【００３６】
図４に図示のとおり、要求がクライアントからバックエンド４１５に送信される（４２０）。いくつかの実施例においては、要求は、クライアント４１０において取込まれたユーザ作業データのうちいくらかを含み得る（４２５）。代替的には、現在の要求についてのユーザ作業データには要求が含まれていなくてもよいが、代わりに、部分的に現在の要求で、かつ部分的に次の要求で、次の要求のみで、または、１つ以上の別個の通信として送信されてもよい。
【００３７】
バックエンドシステム４１５はフロントエンド４１０から要求を受取り（４３０）、要求を処理する（４３０）。いくつかの実施例においては、バックエンドシステムがコンテキスト識別子（たとえば、実行コンテキスト識別子（ＥＣＩＤ：execution context identifier））を生成し、要求を処理する際に実行される作業がログ記録され、そのＥＣＩＤに関連付けられる。作業をログ記録させ、開始要求と関連付けることにより、診断および監視が容易になり、さらに、ユーザ作業のログ記録も容易になる。しばしば、バックエンドアプリケーションサーバは、要求またはコンテキストの識別子を生成するための機構を有し得る。このため、いくつかの実施例においては、サーバコンポーネントのプラグインインターフェイスはその識別子を利用することができる。なお、さまざまなコンテキスト識別子を用いることができることで、本発明の実施例を特定用途向けのサーバ実現例から抽出することが可能となり、これにより汎用性が高くなることに留意されたい。いくつかの実施例においては、バックエンドシステム４１５がユーザ作業データを抽出し、これをコンテキスト識別子に関連付けて記憶する。いくつかの実施例においては、サーバシステムは抽出、記憶または分析を実行せず、むしろ、この情報は、単に、ネットワークトラフィックが集まるのを監視する１つ以上の他のアプリケーションまたはツールのために公表されるに過ぎない。このため、本発明の実施例は、１つの要求の始まりと応答との間に一時的なデータ記憶を実行するが、そうでない場合には、データが記憶またはログ記録されないかもしれない。いくつかの実施例においては、抽出されログ記録されたユーザ作業データは、現在の要求、以前の要求またはこれら両方についての情報を含み得る。
【００３８】
要求を処理した後、バックエンドシステムは応答４３５を返す（４３０）。いくつかの実施例においては、応答は、要求された動作を完了させるための応答ペイロードと、ユーザ監視に有用となり得る付加的なユーザ作業関連データとを含む。たとえば、いくつかの実施例においては、応答は、図示された例においてはＥＣＩＤ．１であるコンテキスト識別子と、更新されるページについてのビュー識別子などの他のデータとを応答ヘッダに含み得る。たとえば、ユーザがプロダクトカタログを要求として見ることを選択した場合、要求ＵＲＬは、バックエンド識別子とは異なる識別子を有し得る。このため、いくつかの実施例においては、ユーザが見るビューについてのバックエンド識別子であるビューＩＤは、応答とともに特別なパラメータとして送信されてもよい。一例として、応答１について図４に示されるビュー識別子は「ProductCatalog.jspx」であってもよい。
【００３９】
フロントエンドシステム４１０は、バックエンドからの応答を受取って処理する（４４０）。いくつかの実施例においては、クライアント側がページをロードし、要求された動作を完了させるためのクライアント終了時間が留意される。いくつかの実施例においては、この情報が次の要求の一部としてサーバに送信されることとなる。代替的には、最初のユーザ要求および応答に関する情報のうちいくらかまたはすべてが集められなくてもよいか、またはバックエンドに伝送されなくてもよい。
【００４０】
ユーザは、次の要求を作成するロード済みのページと対話する（たとえば、ボタン／リンクをクリックするかまたは属性を変化させる）。たとえば、次の要求は、部分ページ応答を引起こすためにサーバに渡されるイベントであってもよく、または、次の要求は、コンポーネントの部分的なリフレッシュを引起こすためにサーバに渡される属性変化であってもよい。当業者であれば、あるタイプの部分ページ要求が部分ページ送信（partial page submit）であり得ることを認識するだろう。要求２がサーバに進む準備ができた場合、クライアントモジュールは、以前の要求のために保存されたいずれかのクライアント側ユーザ作業データが存在するかどうかを確かめるためにチェックを行う。もし存在していれば、その要求、すなわち図４の要求２が含まれていることになる。
【００４１】
いくつかの実施例においては、要求でピギーバックされたユーザ作業データがヘッダまたは本文のいずれかに含まれ得る。というのも、要求は典型的には応答よりも小さく、これらは、典型的には、容易にパースされるＨＴＴＰポストなどのフォーマットであるからである。また、いくつかの実施例においては、エンドユーザ監視情報を識別する特別なパラメータによって識別が容易になる。というのも、パーサが本文中のそのパラメータを探すことができるからである。いくつかの実施例においては、特別なパラメータは、クライアント開始時間、起動されたイベントユーザ、領域などのさまざまなユーザ作業情報を含むＸＭＬ文書であり得る。
【００４２】
図４に示される例においては、次の要求、すなわち要求２、がサーバに送信され（４４５）、ユーザ作業データが要求に含まれている。いくつかの実施例においては、ユーザ作業データは、（（既知である場合、またはシミュレートされた場合）要求１のクライアント開始時間、要求−応答を完了させるクライアント終了時間、およびその要求−応答についてのコンテキスト識別子などの）以前の要求−応答に関するデータである。いくつかの実施例においては、ユーザ作業データはまた、（要求２のクライアント開始時間や、既知であり得る他のイベントまたはコンポーネント情報などの）現在の要求についてのデータを含み得る。この記載される実施例においては、要求２についてのコンテキスト識別子は、その識別子がサーバによって割当てられるので未知であることに留意されたい。また、要求２についてのクライアント終了時間は、その要求が現在進行中であるので、まだ未知のままである。
【００４３】
サーバは、この次の要求を受取り、従来通り、多くのステップを繰返す（４５０）。すなわち、いくつかの実施例においては、バックエンドはコンテキスト識別子（たとえばＥＣＩＤ  ２）を生成し、要求を処理し、要求２の処理に関するデータをログ記録する。いくつかの実施例においては、バックエンド４１５がまた、要求からユーザ作業データを抽出し、そのデータをログ記録する。先に述べたとおり、いくつかの実施例においては、サーバシステムは抽出、記憶または分析を実行しない可能性があるが、むしろ、このデータは、単に、ネットワークトラフィックが集まるのを監視する１つ以上の他のアプリケーションまたはツールのために公表されるに過ぎない。ユーザ作業データを一意的なコンテキスト識別子に関連付けることにより、ログ記録されたデータ同士をリンクさせることが可能となり、これにより、ユーザとシステム全体との間の対話についてのさらなる見通しをもたらすことができる。すなわち、ユーザ作業データを一意的なコンテキスト識別子に関連付けることにより、ログ記録されたデータを、他のバックエンドコンポーネントによってログ記録されたより詳細な情報とリンクさせることが可能となり、特定の要求／応答に関して起こったものに関するより包括的なアイディアが得られる。いくつかの実施例においては、バックエンドはまた応答データ（応答２）を送信する。これは、要求および応答２についてのコンテキスト識別子、ビュー識別子などの、ユーザ作業を監視するために用いられるデータを含み得る。
【００４４】
当業者であれば、さまざまなユーザ対話のためにこれらの一般的なプロセスステップ（たとえばステップ４４０〜４５５）を繰返すことができることを認識するだろう。たとえば、ステップ４６０〜４７５は、ユーザ作業関連データを集めて公開し、かつさまざまな作業をリンクさせるためにバックエンドとフロントエンドとの間のやり取りを容易にする同じ一般的な概念のステップを繰返す。
【００４５】
当業者であれば、ユーザ作業データが次の要求でピギーバックされるいくつかの実施例において、次の要求がない場合に、データが別々に送信され得るか、アプリケーションのアンロード前に送信され得るか、次のアプリケーションのロード時に送信され得るか、または送信され得ないことも認識するだろう。当業者であれば、データを送信するためのいくつかの方法が存在することを認識するだろう。
【００４６】
Ｂ．記憶済みのユーザ作業関連データの獲得
いくつかの実施例においては、クライアント側で集められたユーザ作業関連データが、ウェブページの一部として記憶される。しかしながら、ウェブアプリケーションは、ユーザ作業に関するデータを集めてやり取りしようとする際に複雑さを増す可能性のあるさまざまな要求および応答の対話を発生させる可能性がある。たとえば、ウェブブラウザが新しいページに転送される場合、新しいページがレンダリングされたときに、ページで記憶されたいずれのクライアント側情報も失われてしまう。このような状況に対処するために、ユーザ作業関連データが記憶されてもよく、および／または、１つ以上の二次記憶装置からアクセスされてもよい。図５は、本発明の実施例に従った記憶済みユーザ作業監視データを得るための方法を示す。
【００４７】
図５は、限定ではなく例示を目的として、本発明の実施例に従ったユーザ作業に関するデータを得ることに重点を置いて、クライアント５１０とサーバ５１５との間の対話の一部を表わす。例示だけを目的として、応答がサーバからクライアントに送信される（５２０）ことにより、結果として、クライアントが新しいページ全体をレンダリングする（５２５）こととなると想定する。新しいページが生成されるので、以前のページに記憶されたユーザ作業関連データがこのとき失われる。しかしながら、いくつかの実施例においては、以前の要求−応答対話のクライアント終了時間などのユーザ作業データのうちのいくらかは有用である可能性があり、ユーザ作業監視のためにバックエンドに伝えられなければならない。このため、クライアントシステムは、動作に応答して次の要求を送信する準備ができると、そのページで記憶された以前の要求−応答対話についてのユーザ作業関連データが存在するかどうかをチェックする（５３５）。以前の要求からのユーザ作業関連データがウェブページで記憶される場合、クライアントシステムは、そのデータを用いてサーバに送信する（５４０）。しかしながら、ここに記載される例において新しいページがレンダリングされているように、現在のページは新しく、このようなデータは記憶されていない。したがって、いくつかの実施例においては、クライアントシステム５１０は１つ以上の二次ソースからデータを獲得する（５４５）。
【００４８】
このため、いくつかの実施例においては、ユーザ作業関連データを記憶する際に、クライアントは、ウェブページでユーザ作業関連データを保存してもよく、また、１つ以上の他の位置において当該データを保存してもよい。いくつかの実施例においては、レンダリングよりも前に、ユーザ作業関連データが二次記憶装置に記憶される。加えて、または、代替例として、クライアントは、ブラウザセッションストレージ、クッキーまたはグローバルストレージなどを含むがこれらに限定されない二次ソースからデータを得てもよい。
【００４９】
（現在のページ（５４０）からであろうと、１つ以上の二次ソース（５４５）からであろうと）ユーザ作業関連データが得られると、クライアントはユーザ作業関連データとともに現在の要求を送信する。
【００５０】
Ｃ．特別な要求および応答
最後の段落において言及したように、ウェブアプリケーションは、ユーザ作業関連データを集めて伝達しようとする際に複雑さを増す可能性のあるさまざまな要求および応答の対話を発生させる可能性がある。直接的なユーザ動作ではない要求が生成されるインスタンスがある。本発明の実施例の主要な目標のうちの１つが、ユーザ作業または動作を判断または推論するのに用いられ得るデータを集めることであるので、ユーザ対話ではなく技術的対話の問題として生じる動作を考慮することは有益である。このような２つの例を、図６および図７に関連付けて以下に示す。図６は、本発明の実施例に従ったデータストリーミングの場合などの二次要求を含むユーザ作業監視のための方法を示す。図７は、本発明の実施例に従った転送要求を含むユーザ作業監視のための方法を示す。
【００５１】
１．データストリーミング
クライアントとサーバとの間のデータストリーミング対話により、結果として、クライアントとサーバとの間に付加的な要求および応答が発生する可能性がある。真のユーザ作業をより正確に取込むために、この発明の実施例はこのような対話を補償する。いくつかの実施例においては、より大きなタスクの一部である対話が一次タスクに付随するものとして注目される。図６に示される例について限定ではなく例示を目的として検討する。
【００５２】
図６は、本発明の実施例に従った二次要求を含むユーザ作業監視のための方法を示す。ユーザは、クライアント６１０において彼または彼女に対して表示されるウェブページ６２０を見ている。例示を目的として、ユーザがページ上でテーブルのレンダリングを引起す動作を選択したものと想定する。その要求（要求ｎ）はバックエンドに送信される（６２５）。ユーザ作業関連データは、要求とともに送信されてもよい。いくつかの実施例においては、ユーザ作業関連データは、以前の要求−応答対話（要求−応答ｎ−１）についてのデータを含み、現在の要求（要求ｎ）についてのデータを含み得る。
【００５３】
バックエンドシステム６１５はフロントエンド６１０から要求を受取り（６３０）、要求を処理する（６３０）。いくつかの実施例においては、バックエンドシステムがコンテキスト識別子（たとえば実行コンテキスト識別子（ＥＣＩＤ））を生成し、要求の処理時に実行される作業がログ記録され、そのＥＣＩＤに関連付けられる。いくつかの実施例においては、バックエンドシステムはまた、ユーザ作業関連データを抽出し、特別なパラメータを用いてデータを識別して、そのデータを記憶する。先に述べたように、いくつかの実施例においては、サーバシステムは抽出、記憶または分析を実行しない可能性がある。むしろ、この情報は、単に、ネットワークトラフィックが集まるのを監視する１つ以上の他のアプリケーションまたはツールのために公表されるに過ぎない。バックエンドシステムは応答を返す（６３５）。いくつかの実施例においては、応答は、ユーザ監視に有用であり得る付加的なユーザ作業関連データとともに応答ペイロードを含む。
【００５４】
フロントエンドシステム６１０は、バックエンドからの応答を受取って処理する（６４０）。ウェブページ上に１つ以上のテーブルがある状況、または他のデータストリーミング状況においては、応答がクライアントに戻ってくると、ページのレイアウトが受取られる（たとえば６４０のディスプレイ）。但し、テーブルを埋めるべきデータが１つ以上の後続の対話の際にフェッチおよびロードされる。このため、クライアントシステムは、応答ｎを受取ると、テーブルについてのデータを得るためにサーバに対する別の要求（要求ｎ＋１）を自動的に開始する（６４５）。いくつかの実施例においては、クライアントモジュールは、それが二次要求であると理解する。なぜなら、コード（たとえばＪａｖａｓｃｒｉｐｔ（登録商標）コード）の形でクライアントが動作を開始したからである。
【００５５】
しかしながら、この要求は一次要求に付随するものである。ユーザの観点から見ると、彼または彼女は、データを含むテーブルの獲得を要求していたので、データを含むテーブルが表示されると動作が完了したものと見なす。このため、いくつかの実施例においては、クライアントシステムは、この要求（要求ｎ＋１）が二次要求であることを示す特別なパラメータを含み得る。いくつかの実施例においては、二次要求であることを示す特別なパラメータは、要求本文中に、またはＵＲＬの一部として含まれてもよい。要求に特別なパラメータが含まれることにより、トラフィックをスニッフィングしているアプリケーションがユーザ作業データを監視することを可能にして、この要求が二次要求であることを知ることができる。さらに、最初の要求（要求ｎ）がまだ果たされていないので、クライアントは、この要求（要求ｎ＋１）に他の如何なるユーザ作業関連データも含み得ない。
【００５６】
サーバは要求を受取って処理する（６５０）。いくつかの実施例においては、サーバは、二次要求についてのコンテキスト識別子を割当てて、要求の処理に関連付けられたデータをログ記録してもよい。要求を処理した後、サーバは応答（応答ｎ＋１）を準備する。いくつかの実施例においては、バックエンドシステムは、要求（要求ｎ＋１）がストリーミング要求であると理解し、これにより、この要求を二次要求にして、それが二次応答であることを示すために応答に特別なインジケータを追加する（６５５）。いくつかの実施例においては、二次要求−応答対話のためのコンテキスト識別子が含まれている場合、ユーザ作業データを監視するアプリケーションがそのコンテキスト識別子を一次コンテキスト識別子に関連付けることができる。
【００５７】
クライアントは二次応答を受取り（６６０）、テーブルにデータをロードする。いくつかの実施例においては、クライアント終了時間は、ユーザの要求を完了させる応答の終わりとして計算される。図示される例においては、クライアント開始時間６７０は一次要求（要求ｎ）の始まりであって、クライアント終了時間６７５は、最初の応答の終わりではなく二次応答（応答ｎ＋１）の終わりである。当業者であれば、ウェブページ上にいくつかのテーブルが存在し得ることを認識するだろう。いくつかの実施例においては、クライアント終了時間は、最後のテーブルがデータで占められたときに設定される。図６におけるアイテム６６０は、データで占められたテーブルを有するウェブページを示す。いくつかの実施例においては、クライアント開始時間６７０およびクライアント終了時間６７５などのユーザ作業関連データが、次の要求（要求ｎ＋２）の一部として、または別個の通信としてサーバに送信されてもよい。いくつかの実施例においては、ユーザ作業関連データは、一次要求（たとえばＥＣＩＤ．ｎ）、二次要求（たとえばＥＣＩＤ．ｎ＋１）またはこれら両方についてのコンテキスト識別子を含む。
【００５８】
当業者であれば、複数のテーブルが存在する場合、いくつかの実施例において、個々のテーブルについての終了時間も追跡され得ることも認識するだろう。たとえば、サーバは各テーブルごとに別個のスレッドを用いることができ、テーブルについてのデータが集められると、このデータをクライアントに送ることができる。クライアントは、どのテーブルが完了していないかを追跡することができ、サーバは同じことを行ってもよい。すべてのテーブルについてのデータが送信されると、サーバは接続を閉じ、クライアントは、それが行われたことを知って、完了した終了時間を計算することができる。
【００５９】
２．クライアント側の転送
クライアント側の転送により、ユーザ作業を正確に監視することについて同様の課題が生じる。具体的には、クライアント側の転送によっても、結果として、クライアントとサーバとの間に真のユーザ作業ではない付加的な要求および応答が生じる。真のユーザ作業をより正確に取込むために、本発明の実施例はクライアント側の転送に留意することによって補償を行う。限定ではなく例示を目的として、図７に示される例を検討する。
【００６０】
図７は、本発明の実施例に従ったクライアント側の転送を含むユーザ作業監視のための方法を示す。ユーザは、クライアント７１０において彼または彼女に対して表示されるウェブページ７２０を見ている。ユーザによって選択されたイベントにより、結果として、要求（要求ｎ）がバックエンド７１５に送信されることとなる（７２５）。ユーザ作業関連データは、要求とともに送信されてもよい。いくつかの実施例においては、ユーザ作業関連データは、以前の要求−応答対話（要求−応答ｎ−１）についてのデータを含んでもよく、現在の要求（要求ｎ）についてのデータを含んでもよい。
【００６１】
バックエンドシステム７１５は要求を受取り（７３０）、それを処理する（７３０）。いくつかの実施例においては、バックエンドシステムはコンテキスト識別子（たとえばＥＣＩＤ）を生成し、要求を処理する際に実行される作業がログ記録され、そのコンテキスト識別子に関連付けられる。いくつかの実施例においては、バックエンドシステムはまた、ユーザ作業関連データを抽出し、特別なパラメータを用いてデータを識別し、そのデータを記憶する。いくつかの実施例においては、サーバシステムは抽出、記憶または分析を実行しなくてもよく、むしろ、この情報は、単に、ネットワークトラフィックが集まるのを監視する１つ以上の他のアプリケーションまたはツールのために公表されるに過ぎない。バックエンドシステムは応答を返す（７３５）。いくつかの実施例においては、応答は、ユーザ監視に有用であり得る付加的なユーザ作業関連データとともに応答ペイロードを含む。
【００６２】
フロントエンドシステム７１０は、バックエンドからの応答を受取って処理する（７４０）。例示を目的として、クライアントにおいて処理された際の応答により、結果として、転送要求（要求ｎ＋１）が送信されることとなる（７４５）。いくつかの実施例においては、転送応答がクライアント上で処理されると、クライアントが、いずれの未報告のユーザ作業データおよびその関連するＥＣＩＤをも二次記憶装置に保存してから、転送要求（要求ｎ＋１）が開始される。先の段落のデータストリーミングの場合と同様に、この要求は一次要求に付随するものである。ユーザの観点から見ると、彼または彼女は、最初の要求とは別個のタスクの転送については考慮しない可能性があるだろう。このため、いくつかの実施例においては、クライアントシステムは、この要求（要求ｎ＋１）が二次要求であることを示す特別なパラメータを含んでもよい。いくつかの実施例においては、それが二次要求であることを示す特別なパラメータが、要求本文に含まれてもよく、またはＵＲＬの一部として含まれてもよい。要求に特別なパラメータを含めることにより、トラフィックをスニッフィングしているアプリケーションが、この要求が二次要求であることを知ることが可能となる。さらに、いくつかの実施例においては、最初の要求（要求ｎ）がまだ果たされていないので、クライアントは、この要求（要求ｎ＋１）に他の如何なるユーザ作業データも含めない可能性がある。
【００６３】
サーバは要求を受取って処理する（７５０）。いくつかの実施例においては、サーバは、転送要求についてのコンテキスト識別子を割当てて、要求の処理に関連付けられるデータをログ記録してもよい。要求を処理した後、サーバは応答（応答ｎ＋１）を準備する。いくつかの実施例においては、バックエンドシステムは、要求（要求ｎ＋１）が転送要求であることを理解し、これにより、その要求が二次要求とされ、それが二次応答であることを示すために応答に対して特別なインジケータが追加される（７５５）。いくつかの実施例においては、二次要求−応答対話のためのコンテキスト識別子が含まれている場合、ユーザ作業データを監視するアプリケーションはそのコンテキスト識別子を一次コンテキスト識別子に関連付けることができる。
【００６４】
クライアントは転送応答を受取り（７６０）、ウェブページをロードする。当業者であれば、転送の結果、ページ全体がロードされるので、クライアント開始時間７７０などのユーザ作業関連データのうちのいくらかが二次的なソースから得られることを認識するだろう。このため、いくつかの実施例においては、クライアントは、典型的にはＥＣＩＤおよび要求７２５のクライアント開始時間であり二次記憶装置に記憶されたユーザ作業関連データを検索する。いくつかの実施例においては、クライアント終了時間は、ユーザの要求を完了させる応答７５５を処理した後に計測される。示される例においては、クライアント開始時間７７０は一次要求（要求ｎ）の始まりであった。また、クライアント終了時間７７５は、最初の応答の終わりではなく二次応答（応答ｎ＋１）の終わりである。いくつかの実施例においては、クライアント開始時間７７０およびクライアント終了時間７７５などのユーザ作業関連データは、次の要求（要求ｎ＋２）の一部として、または別個の通信としてサーバに送信されてもよい。いくつかの実施例においては、ユーザ作業関連データは、一次要求（たとえばＥＣＩＤ．ｎ）、二次要求（たとえばＥＣＩＤ．ｎ＋１）またはこれら両方についてのコンテキスト識別子を含む。
【００６５】
Ｄ．コンピューティングシステムの実現例
いくつかの実施例においては、コンピューティングシステムは、この明細書中に提示される方法、機能および／または動作のうち１つ以上を実行するよう構成され得る。この明細書中に記載される方法、機能および／または動作のうち少なくとも１つ以上を実現するシステムは、コンピュータシステム上で動作するユーザ作業監視アプリケーションを含み得る。コンピュータシステムは、１つ以上のコンピュータおよび１つ以上のデータベースを含み得る。
【００６６】
本発明が、電話、ラップトップコンピュータ、デスクトップコンピュータおよびサーバを含むがこれらに限定されない、データを処理可能な如何なる命令実行／コンピューティングデバイスまたはシステムにおいて実現され得ることに留意されたい。本発明はまた、他のコンピューティングデバイスおよびシステムへと実現され得る。さらに、本発明の局面は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組合せを含む多種多様な態様で実現され得る。たとえば、本発明のさまざまな局面を実施する機能は、離散的なロジックコンポーネント、１つ以上の特定用途向け集積回路（ＡＳＩＣｓ：application specific integrated circuits）および／またはプログラム制御されたプロセッサを含む多種多様な態様で実現されるコンポーネントによって実行され得る。なお、これらのアイテムが実現される態様が本発明にとって重要ではないことに留意されたい。
【００６７】
図８は、クライアントおよびサーバを含むがこれらに限定されない、本発明の実施例を実現または具体化し得る命令実行／コンピューティングデバイス８００の実施例の機能ブロック図を示す。図８に図示のとおり、プロセッサ８０２はソフトウェア命令を実行し、他のシステムコンポーネントと対話する。ある実施例においては、プロセッサ８０２は、ＡＭＤプロセッサ、ＩＮＴＥＬプロセッサ、ＳＵＮ  ＭＩＣＲＯＳＹＳＴＥＭＳプロセッサ、もしくはＰＯＷＥＲＰＣ−コンパチブルＣＰＵなどの（例示を目的としたものであってこれらに限定されない）汎用プロセッサであり得るか、または、プロセッサは、特定用途のプロセッサであり得る。プロセッサ８０２に結合された記憶装置８０４には、データおよびソフトウェアプログラムが長期間格納される。記憶装置８０４は、ハードディスクドライブ、および／または、磁気媒体もしくは光学媒体（たとえばディスケット、テープ、コンパクトディスク、ＤＶＤなどの）ドライブもしくはソリッドステートメモリデバイスなどの、データを記憶することのできる別のデバイスであり得る。記憶装置８０４は、プロセッサ８０２で使用されるべきプログラム、命令および／またはデータを保持し得る。ある実施例においては、記憶装置８０４に記憶されるかまたは記憶装置８０４からロードされるプログラムまたは命令がメモリ８０６にロードされ、プロセッサ８０２によって実行され得る。ある実施例においては、記憶装置８０４は、プロセッサ８０２上でオペレーティングシステムを実現するためのプログラムまたは命令を保持する。一実施例においては、実現可能なオペレーティングシステムは、ＵＮＩＸ（登録商標）、ＡＩＸ、ＬＩＮＵＸ（登録商標）、マイクロソフト・ウィンドウズ（登録商標）およびアップルＭＡＣ  ＯＳを含むがこれらに限定されない。いくつかの実施例においては、オペレーティングシステムは、コンピューティングシステム８００上で実行され、その動作を制御する。
【００６８】
プロセッサ８０２に結合されるアドレス可能なメモリ８０６を用いて、プロセッサ８０２によって実行されるべきデータおよびソフトウェア命令を記憶してもよい。メモリ８０６は、たとえば、ファームウェア、読取り専用メモリ（ＲＯＭ：read only memory）、フラッシュメモリ、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：non-volatile random access memory）、ランダムアクセスメモリ（ＲＡＭ：random access memory）またはこれらの如何なる組合せであってもよい。一実施例においては、メモリ８０６は、他の場合にはサービス、ユーティリティ、コンポーネントまたはモジュールとして公知であるいくつかのソフトウェアオブジェクトを記憶する。当業者であれば、ストレージ８０４およびメモリ８０６が両方の容量に関してアイテムおよび機能が同じであり得ることも認識するだろう。ある実施例においては、この明細書中に記載される方法、機能または動作のうち１つ以上が、メモリ８０４、８０６に格納されたモジュールとして実現され、プロセッサ８０２によって実行され得る。
【００６９】
ある実施例においては、コンピューティングシステム８００は他のデバイス、他のネットワークまたはこれら両方と通信する能力を提供する。コンピューティングシステム８００は、このコンピューティングシステム８００を他のネットワークおよびデバイスに通信可能に結合するために１つ以上のネットワークインターフェイスまたはアダプタ８１２、８１４を含み得る。たとえば、コンピューティングシステム８００は、ネットワークインターフェイス８１２、通信ポート８１４またはこれら両方を含んでもよく、その各々は、プロセッサ８０２に対して通信可能に結合され、コンピューティングシステム８００を他のコンピュータシステム、ネットワークおよびデバイスに結合するのに用いられてもよい。
【００７０】
ある実施例においては、コンピューティングシステム８００は、グラフィックスおよびテキストの表示を容易にするようプロセッサ８０２に結合された１つ以上の出力装置８０８を含み得る。出力装置８０８は、ディスプレイ、液晶ディスプレイ画面、ＣＲＴモニタ、プリンタ、タッチスクリーン、または情報を表示するための他のデバイスを含み得るがこれらに限定されない。コンピューティングシステム８００はまた、出力装置８０８上に情報または画像を表示するのを支援するためのグラフィックスアダプタ（図示せず）を含んでもよい。
【００７１】
ユーザ入力を容易にするために、プロセッサ８０２に結合された１つ以上の入力装置８１０が用いられてもよい。入力装置８１０は、マウス、トラックボールまたはタッチパッドなどのポインティングデバイスを含み得るがこれらに限定されず、コンピューティングシステム８００にデータまたは命令を入力するためのキーボードまたはキーパッドを含み得る。
【００７２】
ある実施例においては、コンピューティングシステム８００は、スキャナ、コピー機、ファクシミリ装置または他のコンピューティングデバイスから、通信ポート８１４、ネットワークインターフェイス８１２を介してであろうと、または、入力装置８１０を介してであろうと、メモリ８０４／８０６に記憶されたデータの入力を受取り得る。
【００７３】
いくつかの実施例においては、コンピューティングシステム８００は１つ以上のデータベースを含み得る。それらのうちいくつかは、プログラムまたはアプリケーションによって使用および／または生成されるデータを記憶し得る。いくつかの実施例においては、１つ以上のデータベースが、コンピューティングシステム８００内にある１つ以上の記憶装置８０４に配置されてもよい。代替的な実施例においては、１つ以上のデータベースはリモートであってもよく（すなわち、コンピューティングシステム８００に対してローカルではなく）、そのネットワークインターフェイス８１４を介してコンピューティングシステム８００との接続をネットワーク８１６と共有し得る。さまざまな実施例においては、データベースは、ＳＱＬフォーマットされたコマンドに応答してデータを記憶、更新および検索するよう適合されたオラクル（Oracle）データベースなどのリレーショナルデータベースであってもよい。
【００７４】
当業者であれば、コンピューティングシステムまたはプログラミング言語が本発明の実施にとって重要ではないことを認識するだろう。当業者であれば、また、上述のいくつかの要素が物理的および／または機能的にサブモジュールに分割され得るかまたはともに組合わされ得ることを認識するだろう。
【００７５】
本発明の実施例がさらに、コンピュータによって実現されるさまざまなオペレーションを実行するためにコンピュータコードが格納されたコンピュータ読取可能媒体を備えたコンピュータプロダクトに関し得ることに留意されたい。この媒体およびコンピュータコードは、本発明の目的のために特別に設計および構築されたものであってもよく、または、当業者にとって公知であるかもしくは利用可能なものであってもよい。コンピュータ読取可能媒体の例として、ハードディスク、フロッピーディスク（登録商標）および磁気テープなどの磁気媒体；ＣＤ−ＲＯＭおよびホログラフィ装置などの光学媒体；磁気光学媒体；ならびに、プログラムコードを記憶するかまたはプログラムコードを記憶して実行するよう特別に構成された、特定用途向け集積回路（ＡＳＩＣｓ：application specific integrated circuits）、プログラム可能論理回路（ＰＬＤ：programmable logic devices ）、フラッシュメモリデバイス、ならびにＲＯＭおよびＲＡＭデバイスなどのハードウェアデバイスが含まれるが、これらに限定されない。コンピュータコードの例として、コンパイラによって生成されるようなマシンコードや、インタープリタを用いてコンピュータによって実行されるより高レベルのコードを含むファイルが含まれる。本発明のいくつかの実施例は、全体的または部分的に、コンピュータによって実行されるプログラムモジュールにあり得る機械実行可能な命令として実現されてもよい。プログラムモジュールの例として、ライブラリ、プログラム、ルーチン、オブジェクト、コンポーネントおよびデータ構造が含まれる。分散されたコンピューティング環境においては、プログラムモジュールは、ローカルであるかリモートであるかまたはこれらの両方である設定で物理的に配置され得る。
【００７６】
上述の例および実施例が例示的なものであり、本発明の範囲に限定されないことが当業者に認識されるだろう。明細書を読み、添付の図面を検討することで当業者にとって明らかになるすべての変更例、向上例、同等例、組合せおよびそれらに対する改善例が本発明の真の精神および範囲内に含まれるものと意図されている。
【図１】
2014510969.tif 000003
【図２】
2014510969.tif 000004
【図３】
2014510969.tif 000005
【図４】
2014510969.tif 000006
【図５】
2014510969.tif 000007
【図６】
2014510969.tif 000008
【図７】
2014510969.tif 000009
【図８】
2014510969.tif 000010
【国際調査報告】
2014510969.tif 000011
2014510969.tif 000012