(57)【特許請求の範囲】
【請求項１】
ウェブサーバを含むアプリケーションサーバ装置と、ウェブブラウザを含むクライアント装置とを含むクライアント／サーバシステムを用いた通信のための方法であって、
前記アプリケーションサーバ装置に、前記クライアント装置の前記ウェブブラウザによって表示されたユーザインタフェースを制御させる制御過程を備え、
前記制御過程は、
前記ウェブサーバに、入ってくるイベントに応答して、前記ウェブブラウザへと、通信チャネルからの通信の到達を示す情報を含む非同期メッセージを前記イベントの着信とは非同期にプッシュさせる過程と、
前記ウェブサーバに、前記非同期メッセージの前記アプリケーションサーバ装置内の発信元を識別させる過程と、
前記ウェブブラウザに、前記ウェブサーバに対し、前記ウェブブラウザに関連付けられたウェイトリクエストを提供させる過程とを含み、前記ウェイトリクエストは、前記ウェブブラウザからのリクエストに対する即時のレスポンスを含めたデータをプッシュしないことを前記ウェブサーバへ求めるものであり、前記制御過程はさらに
前記ウェブサーバに、前記発信元と前記ウェイトリクエストとを関連付けさせる過程を含み、前記関連付けさせる過程は、前記ウェイトリクエストに含まれる値を、前記発信元に対応するユーザセッションスレッドおよびセッションマネージャリスニングスレッドに記録する過程を含み、前記制御過程はさらに
前記ウェブブラウザに、前記非同期メッセージに応答して、ユーザインタフェースの変化を表示させる過程を含み、
前記ウェブブラウザにウェイトリクエストを提供させる過程は、前記ウェイトリクエストを提供するためのＪａｖａ（登録商標）アプレットに従うリクエスト命令を、前記ウェ
ブサーバから前記ウェブブラウザへダウンロードする過程を含み、前記方法はさらに、
前記アプリケーションサーバ装置に、前記非同期メッセージを生成させる過程を備える、方法。
【請求項２】
前記非同期メッセージは、前記ウェイトリクエストを識別し、当該識別によって前記ウェブブラウザを前記非同期メッセージの受信者として識別し、
前記方法はさらに、
前記アプリケーションサーバ装置に、前記ウェブサーバに対して前記非同期メッセージを提供させる過程を備える、請求項１に記載の方法。
【請求項３】
前記方法は、さらに
前記アプリケーションサーバ装置に、前記ウェイトリクエストよりの情報を含むコールバックファンクションに対するレファレンスをストアさせる過程と、
前記アプリケーションサーバ装置に、前記非同期メッセージが前記ウェブサーバへと提供されるとき、前記コールバックファンクションを呼び出すために前記レファレンスを使用させる過程とを備え、前記コールバックファンクションが前記非同期メッセージをプッシュする、請求項２に記載の方法。
【請求項４】
前記方法は、さらに
前記アプリケーションサーバ装置に、前記コールバックファンクションにコンテクスト情報を提供させる過程を備え、前記コンテクスト情報が前記ウェブブラウザを識別する、請求項３に記載の方法。
【請求項５】
前記方法は、さらに
前記アプリケーションサーバ装置に、前記ウェブサーバとビジネス処理サーバとの間の接続に対し、前記ウェイトリクエストをアサインさせる過程と、
前記アプリケーションサーバ装置に、前記非同期メッセージのために前記接続をリスニングさせる過程とを備える、請求項２〜４のいずれか１項に記載の方法。
【請求項６】
前記ウェブサーバに前記非同期メッセージをプッシュさせる過程は、前記アプリケーションサーバ装置に、非同期メッセージがレシーブされるとき、前記ウェブブラウザに関連付けられたコールバックファンクションを呼び出す過程を含み、前記コールバックファンクションは、前記非同期メッセージをプッシュする、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記方法は、さらに
前記アプリケーションサーバ装置に、前記コールバックファンクションに対するレファレンスをストアさせる過程と、
前記アプリケーションサーバ装置に、前記コールバックファンクションを呼び出すために前記レファレンスを使用させる過程とを備える、請求項６に記載の方法。
【請求項８】
前記方法は、さらに
前記アプリケーションサーバ装置に、前記ウェブブラウザを識別するコンテクスト情報に対する第２のレファレンスをストアさせる過程と、
前記アプリケーションサーバ装置に、前記コールバックファンクションに対し前記コンテクスト情報を提供するために前記第２のレファレンスを使用させる過程とを備える、請求項７に記載の方法。
【請求項９】
前記ユーザインタフェースの変化は、
第１のユーザインタフェースオブジェクトを、ユーザの注意を視覚的に喚起するべく移動させる過程と、
データのスクリーンポップを表示する過程と、
スクリーンの前面へとウェブブラウザウィンドウを移動させる過程とのうち、少なくとも１つを有する、請求項１〜８のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はインターネットを介した通信に関する。更に詳しくは、ウェブブラウザに対してメッセージを非同期にプッシュすることによって制御されるユーザインタフェースに関する。
【背景技術】
【０００２】
インターネットは、情報伝達のクライアント／サーバモデルの下で動作する。このようなモデルでは、情報が存在するサーバとクライアントのコンピュータが接続される。クライアントは情報の伝達に関してサーバに依存している。実際のところ、クライアントはサーバのサービスを要求している。サーバによってアクセス可能なデータベースがクエリされる場合は、このサービスには、情報の検索やクライアントに対する情報送信が含まれる。これらサービスの別実施例は、これより後“ウェブサーバ”と呼ぶWorld Wide Web上のサーバよりのウェブページ伝達、および送受信メール処理である。インターネットのユーザは、サーバコンピュータに接続し、サーバのリソース使用を要求する。
【０００３】
典型的には、クライアントコンピュータとはローカルに存在するパーソナルコンピュータであって、またサーバコンピュータ（ホスト）とはより高性能なコンピュータであって、データを格納し、またデータを格納した別のコンピュータシステムに対するアクセスを有している。サーバに対する接続は、電話回線、ローカルエリアネットワーク（ＬＡＮ）、またはインターネット上のワイドエリアネットワークをベースとしたＴＣＰ／ＩＰを介して作成される。ウェブのために、クライアントのコンピュータ上で実行されるマイクロソフトインターネットエクスプローラーの様なウェブブラウザソフトウェアがクライアント／サーバの環境である。クライアント／サーバの関係におけるサーバは、典型的にはサーバコンピュータ上で実行される、例えば、マイクロソフト社のインターネットインフォメーションサーバ（ＭＩＳ）の様なウェブサーバソフトウェアである。クライアント／サーバの関係によって、多くのクライアントがサーバ上に格納されている同一のアプリケーション及びファイルに対してアクセス可能となっている。
【０００４】
ウェブ上の典型的な通信には、特定のウェブページのリクエストをウェブサーバに送信するウェブブラウザと、前記リクエストを処理してウェブブラウザに対しウェブページのフォームのレスポンスを送信して戻すウェブサーバとを含む。リクエスト及びレスポンスは、ハイパーテキストトランスファープロトコル（HTTP）を用いて通信される。HTTPはウェブプロトコルであって、リクエストやレスポンスを送信するためのトランスフォームコントロールプロトコル／インターネットプロトコル（TCP/IP）に含まれるものである。
【０００５】
一般的には、ネットワークにおける通信は、同期もしくは非同期のいずれかで実行され得る。ここで同期とはリクエスト側がメッセージを送信し、レスポンスが戻るまでブロックされるものであり、非同期とはリクエスト側がメッセージを送信し、レスポンスが戻るまで待機しないものである。用語“同期”は、ここではリクエスト側即ちウェブブラウザが、ＨＴＴＰリクエストに対するレスポンスを待つ間に渡ってブロックされている状態を示し、用語“非同期”とは、ウェブブラウザがＨＴＴＰリクエストに対するレスポンスがレシーブされていないにも関わらずブロックされていない状態を示す。非同期のリクエストに対するレスポンスが到達する場合、リクエスト側は、レスポンスの準備完了を送信側によって通知され、レスポンスを受け取るか否かを選択し得る。
【０００６】
ウェブブラウザは高い安全性をもって設計されているので、厳格な同期規則をもってウェブサーバよりの情報をレシーブする。ウェブ接続においては、インターネットに対するＴＣＰ／ＩＰ接続がユーザのウェブブラウザを開始時に確立される。ＨＴＴＰ接続は、ウェブブラウザがウェブサーバよりウェブページをリクエストするときに確立される。クライアント−サーバの間のＨＴＴＰ接続は、実際に情報が交わされる間のみ継続される。そのようなわけで、ウェブページがウェブサーバより転送され終わると、サーバコンピュータとクライアントコンピュータ間のＨＴＴＰ接続が遮断される。ＨＴＴＰ接続が遮断されているにも関わらず、ウェブブラウザのユーザは、ＴＣＰ／ＩＰ接続を介したインターネットに対する接続を保持したままである。
【０００７】
クライアント／サーバモデルは、クライアント側のコンピュータに、インターネット内に存在するホストサーバに接続し、またウェブをサーチするべくウェブブラウザソフトウェアを起動させることを可能とし、サーチを実行しファンクションを修正する。基本的にクライアント／サーバモデルでは、ウェブが、ウェブブラウザを稼働させる複数の個人のパーソナルコンピュータによって全アクセスが可能な数千のホストコンピュータにおいて提供されている、限りなく巨大なファイルストレージ媒体、すなわちデータベースとして機能しうるようにする。
【０００８】
インターネットがクライアント／サーバモデルの条件下で機能するので、クライアントのウェブブラウザはウェブサーバよりの情報をリクエストし、情報をレシーブするように設計されている。クライアントのウェブブラウザが数分ほどの比較的短い時間にウェブサーバよりのレスポンスをレシーブしないとすると、ＨＴＴＰ接続を確立しようとする試みは中断されてよい。ウェブブラウザはブロックされるので、ウェブサーバはウェブサーバよりのレスポンスを待つ間に別のことを実行できない。同時に、ウェブサーバはウェブブラウザに対するレスポンスを送信しようと試み、ＨＴＴＰ接続がロストされると送信のための試みが比較的短時間の経過の後中断され得る。故に、ウェブブラウザはレスポンスを無限に待ち続ける設定にされておらず、むしろウェブサーバよりほぼ瞬時にウェブページをレシーブするべく設計されている。
【０００９】
しかし、サーバがクライアントに対して情報を“プッシュ”し得ることが望ましい場合がある。例えば、それは時折、インターネットがプッシュ技術として既知の技術を用いて個人に対し情報を一掃送信するのに用いられる。プッシュ技術を用いると、所定の時間間隔、または特定のイベント発生に基づいて、データがクライアントコンピュータシステムへと自動送信される。これらの特定のイベントは、情報の自動生成リクエスト即ち自動化されたプル（pull）を含んでいてよく、インターネットユーザは時間毎に各ユーザリクエストを含まない特定情報を自動でレシーブする。
【００１０】
典型的には、インターネットユーザは特定タイプの情報をレシーブするためにプッシュ技術を提供するサービスに加入している。プッシュテクノロジーを提供するウェブサイトは“チャネル”と称されており、典型的にはチャネルによって関心のある特定領域内の情報が提供される。チャネルの発信元は情報を収集して、加入者より特定された自動的な時間間隔で加入者へと情報を提供する。
【００１１】
この様な加入型チャネルは、典型的には、加入者のコンピュータにダウンロードされた加入型ソフトウェアを有するべく実行される。加入型ソフトウェアプログラムは、特定時間間隔で規則的に作動し、関心のあるウェブページを要求しチャネル内のアップデート用のチェックを実行する。アップデートされたものは、リクエストを実行するクライアントのコンピュータハードディスクドライブ上に格納されてよく、ユーザは後からそれらの情報を閲覧してもよく、その場合インターネット上にログオンしなくとも閲覧が可能である。
【００１２】
ウェブブラウザは最初、ウェブブラウザによるウェブページの要求が無い限りは、ウェブページもしくはデータにアクセスしないように設計されている。クライアント／サーバ同期リクエスト／レスポンスモデルでの動作によって、ユーザが、例えば“スパム（spamming）”がマシン自体若しくはクライアントコンピュータ上のユーザセッションに対し非常に破壊的であるといった、必要としないウェブページ即ちデータファイルを受信しないようにされる。加入型チャネルは、ユーザ一承認の到達前に獲得されることによってこの限定を解除し、特定の間隔で、加入ユーザに代わって要求を実行してもよい。しかし、加入型チャネルは、クライアントコンピュータシステムにインストールされる追加ソフトウェアを要求するかもしれない。
【００１３】
インターネットが広く普及したことで、多くの企業が標準的なソフトウェアブラウザに組み込んで動作するソフトウェアの開発を懸命に行っており、追加的なソフトウェアがクライアントのコンピュータシステム上にインストールされる必要を回避する。例えば、巨大な顧客のサポート組織では、顧客サポートを行う業者が自宅のコンピュータよりアプリケーションへとアクセス可能であることが望ましく、例えば、旅行中で専用アプリケーションソフトウェアが利用不可能な別地域でもアプリケーションへとアクセス可能であることが望ましい。しかし、ウェブブラウザは基本的にはウェブページを要求・表示するために設計されており、サーバとの高度な相互通信を実行するためには設計されていない。故に、複雑なユーザインタフェースを提供することは従来より高機能なクライアントソフトウェアを提供するという場合に限定されてきた。複数の条件下では、最初にウェブページを要求するウェブブラウザの使用をすることなく、ウェブサーバが、顧客サポートアプリケーションのようなアプリケーションをサポートするウェブブラウザへと非同期に情報をプッシュし得ることが望ましい。用語“非同期メッセージ”は、ここでウェブサーバによって送信されるメッセージを指しており、ここでは、ウェブページのためのウェブブラウザリクエストに対する同期的なレスポンスではなく、ウェブブラウザがメッセージを待つ間ブロックされていない。そのような非同期のメッセージプッシュが望ましい状況例とは、ユーザが瞬時に通知されるべきイベントが発生する場合である。ウェブサーバは、緊急のヘルプが必要とされる時、更には業者が特定ウェブサイトに現在アクセスしていない時、業者に対するイベント通知を実行して良い。
【００１４】
クライアントコンピュータシステムにインストールされなくてはならないアプリケーションプログラムを要求することなく、ウェブサーバが非同期のメッセージのプッシュを実行することを実現するのは難しい。仮に、加入チャネルがブラウザページのクライアントを完璧に実行するならば、加入チャネルは加入ウェブサイトに対するログオン時にのみユーザに対してアップデートを提供し、特定時間間隔でアップデートを提供することはない。ユーザは、アップデートをレシーブするためにウェブサイトにログオンしなければならないかもしれない。ユーザが、加入サービスのウェブサイトに継続的に接続状態にある場合にのみ、瞬間的なアップデートのレシーブが確実に実行される。多くの加入者に対してサービスを行うためには、加入サービス側が充分な連続接続状態を提供するとは考えにくい。このソリューションはスケーラブルではない。
【００１５】
他のソリューションは、例えばJava（登録商標）アプレットのようなプログラムであってクライアントコンピュータシステムの一部分でリスニングスレッドを生じさせるプログラムを有することであり、それによってウェブサーバが適当な時刻にいつでも情報をプッシュし得る。しかしながら、ポートは、ウェブサーバよりというわけではなく、ポートを感知したいずれかのアプリケーションよりのメッセージを受信しやすい。このソリューションは、セキュリティ上のリスクを抱える。加えて、ウェブサーバは全クライアントを記憶していなければならず、メッセージは正しいクライアントへとプッシュされる。ウェブサーバは、対応するクライアントに対して非同期メッセージをプッシュするため、適切なポートに対する接続を開始しなければならない。
【００１６】
更に別のソリューションとしては、ウェブブラウザがウェブブラウザへと伝達されるべきメッセージを有するのがどのウェブサーバであるのかを問い合わせるために、ウェブブラウザがウェブサーバを継続的にポールすることがあげられる。しかし、このソリューションはやはりスケーラブルではない。例えば、一定のポールリクエスト送信する数千の顧客サポート業者を有する顧客サポート用アプリケーションは、ウェブサーバに負担をかけてしまうかもしれない。ウェブサーバは、通常のリクエストに適切なサービスをできない障害となるかもしれない。
【００１７】
必要とされているのは、ウェブサーバがウェブブラウザへと非同期でメッセージをプッシュすることを許容するための、安全かつスケーラブルな方法である。ウェブブラウザが他のタスクを実行し得るべく、ウェブよりの情報を受信する目的でブロックされないことが望ましい。また、ウェブブラウザは、不必要なメッセージの受信から保護されることが望ましい。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】米国特許第６１９９１０４号明細書
【特許文献２】米国特許第５９６４８３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１９】
本発明は、ウェブブラウザによって表示されたユーザインタフェースを制御するための方法及びシステムを提供するものである。
【課題を解決するための手段】
【００２０】
本発明の一側面によれば、方法にはウェブブラウザによって表示されたユーザインタフェースを制御する過程が含まれる。方法には、更にウェブサーバにウェブブラウザに対する非同期メッセージをプッシュさせる過程であって、ウェブブラウザが前記非同期メッセージに応答してユーザインタフェースの変化を示すことを特徴するものが含まれる。
【００２１】
本発明の別の側面によれば、方法は、非同期メッセージをレシーブするのに利用可能なウェブブラウザを登録することによってウェブブラウザによって表示されるユーザインタフェースを制御する過程を含む。ウェブブラウザは、前記非同期メッセージを待つ間もブロックされていない。更に方法は、ウェブサーバにウェブブラウザに対する非同期メッセージをプッシュさせる過程を含み、ウェブブラウザは非同期メッセージに応答し、ユーザインタフェースが変化することを特徴としている。
【００２２】
本発明の更に別の側面では、ウェブブラウザにウェブサーバに対するウエイトリクエストを提供させることによってウェブブラウザが表示するユーザインタフェースを制御する過程を含み、ここでウエイトリクエストはウェブブラウザに関連付けられている。方法は更に、非同期メッセージのソースを識別する過程と、ソースとウエイトリクエストとを関連付ける過程とを有しており、ここで関連付ける過程がウェブブラウザを非同期メッセージの受信者として認識することを特徴としている。方法は更に、ウェブブラウザに対し非同期メッセージをプッシュする過程を含み、ここでブラウザは非同期メッセージに応答してユーザインタフェース変化を表示することを特徴としている。
【００２３】
コンピュータシステム、コンピュータプログラム製品、及び上述したような各方法を実現するためのシステムが提供される。
【００２４】
先に述べた内容は要約であって、当然に、詳細な説明を単純化し、一般化し、また省略したものであって、当業者であれば本発明がそれに限定されないことはご理解頂けよう。特許請求の範囲によってのみ示される本発明のその他の側面、進歩性、及び利点は、以下に示す詳細な説明に限定されるものではない。
【図面の簡単な説明】
【００２５】
【図１】図は、非同期メッセージがブラウザへとプッシュされる方式が適用されるクライアント／サーバシステムの一実施例のダイヤグラムである。
【図２】図は、非同期メッセージのウェブブラウザクライアントへのプッシュを伴う中心コンポーネントを示すものである。
【図３】図は、図１のウェブブラウザクライアントに対する非同期メッセージプッシュを示すフローチャートである。
【図４】図は、図１のクライアント／サーバシステムの実施例における通信インフラストラクチャを示す、より詳細なダイヤグラムである。
【図５Ａ】図は、図３のフローチャートにおける非同期メッセージのレシーブ準備過程を実行する際の、図１のクライアント／サーバシステムの動作を示すものである。
【図５Ｂ】図は、図３のフローチャートにおける非同期メッセージのレシーブ準備過程を実行する際の、図１のクライアント／サーバシステムの動作を示すものである。
【図６Ａ】図は、図３のフローチャートにおける非同期メッセージのプッシュ過程を実行する際の、図１のクライアント／サーバシステムの動作を示すものである。
【図６Ｂ】図は、図３のフローチャートにおける非同期メッセージのプッシュ過程を実行する際の、図１のクライアント／サーバシステムの動作を示すものである。
【発明を実施するための形態】
【００２６】
以下の記載は、本発明の実施例を詳細に説明するものであり、本発明をこれに限定するものではない。むしろ、複数の変形実施例が、特許請求の範囲に記載された発明に包含される。
【００２７】
以下の記載では、説明のため、本発明の完全な理解を提供する目的で、複数の特定実施例が開示されているが、当業者であれば、特定実施例以外の方法で本願発明を実施しうることは明白である。
【００２８】
「一実施例」若しくは「ある実施例」におけるレファレンスは、実施例に関連して記載された特定の特徴、構造、特性が、少なくとも一つの本願の実施例に含まれることを意味している。明細書内の「一実施例に於いて」という言い回しは、同一の実施例に対してすべてが参照されるものではなく、また、互いに別の実施例を除外する独立した実施例、すなわち代替実施例に対しすべてが参照されるものでもない。さらには、複数の実施例によって示されているが別の実施例では示されていない様々な特徴が記載されている。同様に、複数の実施例のためには用いられて良いが、別の実施例では用いられない、異なる様々な条件が記載されていても良い。
【００２９】
図１は、メディアタイプの異なる複数の通信チャネルを介した、顧客のサポートリクエスト及び／または情報リクエストに対して、業者側が応答し得るためのクライアント／サーバシステム１００の一実施例を示す図である。クライアント／サーバシステム１００は、本願の親出願であってMingte Chen, Anil K. Annadata,及びKuang Huangらによる「マルチチャネル通信用ユーザインタフェース」と命名された、２００１年３月３１日出願の０９／８２３，５３１（代理人ディスク番号Ｍ−１１５１８ＵＳ、出願人参照番号ＳＩＥＢ０６２／ＵＳ）にて詳細に開示されている。クライアント／サーバシステム１００は、ウェブブラウザに対して、ウェブサーバよりのメッセージの非同期のプッシュを実行するシステムの実施例であるが、本願はそれに限定されていない。ウェブブラウザに対して非同期にメッセージをプッシュするための能力が、インターネットを介してアクセス可能である複数のソフトウェアアプリケーションに対しても適用可能である。
【００３０】
クライアント／サーバシステム１００は、顧客をサポートする業者が用いるためのユーザインタフェースを提供するツールバー１０５の制御を目的として、ウェブブラウザクライアント１０４Ａへと非同期メッセージが送信されることを可能にする。非同期メッセージが、１つ若しくは複数の通信チャネルを介した通信の到達を、クライアントに通知する。クライアント／サーバシステム１００は、メディアタイプの異なった複数の通信チャネルをサポートする。これらメディアタイプには、これに限定するものではないが、電話、E-MAIL、ファックス、ウェブコラボレーション、インターネットコールミーナウ（internet call me now）及びインターネットコールミーレイター(internet call me later)、ウェブチャット、ワイヤレスアクセスプロトコル、ページング、及びショートメッセージサービスなどが含まれる。
【００３１】
親出願では、３つのタイプのクライアント１０４が開示されており、それはウェブブラウザクライアント１０４Ａ、シン（thin）クライアント１０４Ｂ、専用クライアント１０４Ｃの３つである。クライアント／サーバシステム１００がクライアントとしてウェブブラウザのみで動作し得ることから、本発明はアプリケーションに関しウェブブラウザクライアント１０４Ａに限定されている。
【００３２】
ウェブブラウザクライアント１０４Ａは、クライアントのコンピュータシステム（図示せず）上で実行されるマイクロソフトインターネットエクスプローラーのようなウェブブラウザプログラムを含む。ウェブブラウザクライアント１０４Ａは、ウェブサーバ１８８と通信し、ウェブブラウザクライアント１０４Ａに対しウェブサーバ１８８より非同期にプッシュされたメッセージをレシーブする。ウェブブラウザクライアント１０４Ａは、ウェブサーバ１８８のようなウェブサーバよりのJava（登録商標）アプレットのような命令をダウンロードする能力を有しており、その命令を実行する。
【００３３】
クライアント／サーバシステム１００におけるアプリケーションサーバ１２６は、ウェブブラウザクライアント１０４Ａへの情報のために機能し、またウェブサーバ１８８を介して情報を送信する。ここでウェブサーバは、表示のためにウェブページやウェブブラウザクライアント１０４Ａのためのその他のユーザインタフェースの変化を提供する。
【００３４】
ウェブブラウザクライアント１０４Ａは、ツールバー１０５を有して示されている。当業者であれば、ツールバーの機能を提供するその他ユーザインタフェースが本願の精神を逸脱することなく利用可能であることがお判りであろう。ツールバー１０５は、ウェブブラウザクライアント１０４Ａを介したユーザインタフェースの一部として示されている。
【００３５】
通信サーバ１０９は、セッションモード通信サーバ１１０、リクエストモード通信サーバ１４０、及びインバウンド通信レシーバ１７０を含む。各々の通信サーバ１１０、１４０、及び１７０が、メッセージを非同期にプッシュする能力を有していてよい。しかしながら、セッションモード通信サーバ１１０がウェブブラウザクライアント１０４Ａによって示されるユーザインタフェースを制御するので、このアプリケーションについては、セッションモード通信サーバ１１０の機能に限定して話を進めるものとする。
【００３６】
更にここでは、複数の実施例においてユーザに着信通知を行うような電話を介した通信に関する非同期のメッセージを図示しているが、本願は通信または非通信のものの何れかに関連するいかなるタイプの非同期メッセージもサポート可能である。
【００３７】
ウェブブラウザクライアント１０４Ａを使用する業者（ここではユーザとして取り扱われる）は、ウェブサーバ１８８を介して企業のウェブページにアクセスすることによってクライアント／サーバシステム１００にログインする。セッションが業者のために確立され、少なくとも１つの通信チャネル１３０を通じて送受信が行われる。
【００３８】
セッションは、ここではオブジェクトマネージャサーバ１０７と称される別個のビジネスプロセスサーバへと向けられた、ウェブサーバ１８８よりの論理接続である。オブジェクトマネージャサーバ１０７は、ビジネスオブジェクト及びビジネスロジックに対するアクセスを提供する。ビジネス処理サーバは、いつウェブブラウザクライアント１０４Ａへのメッセージの非同期のプッシュがなされるかを決定する。ここに記載されたクライアント／サーバシステム１００において、オブジェクトマネージャサーバ１０７は次に、セッションモード通信サーバ１１０のような特定ビジネス機能を提供する１つ若しくは複数の追加的サーバへの接続によってこの論理接続を拡張してもよい。セッションに関しては、図５及び図６において詳述する。
【００３９】
クライアント／サーバシステム１００では、セッションモード通信サーバ１１０が、業者を、ウェブブラウザクライアント１０４Ａを介して提供される単一のユーザインタフェースを用いた異なるメディアタイプの、例えば通信チャネル１３０Ａ、１３０Ｂ、１３０Ｃ、及び１３０Ｄのような通信チャネル１３０を介して通信可能にさせる。この通信を確立するために、チャネルドライバ１２０Ａ、１２０Ｂ、及び１２０Ｃのようなチャネルドライバ１２０が、通信ＡＰＩ１２５を介したメディア特有の通信を提供する。通信ＡＰＩ１２５は、セッションモード通信サーバ１１０が通信チャネルのメディアタイプ及び特定プロトコルとは関係なく動作することを可能とするものである。
【００４０】
ウェブブラウザクライアント１０４Ａ、ウェブサーバ１８８、及びビジネス処理サーバ（オブジェクトマネージャサーバ１０７）の３階層アーキテクチャが、ウェブサーバ１８８がウェブページのリクエストを処理することを可能とし、クライアント／サーバシステム１００の別コンポーネントへとビジネスロジックをオフロード（offload）する。重要なのは、オブジェクトマネージャサーバ１０７、通信サーバ１０９、及びセッションモード通信サーバ１１０のようなサーバによって提供される機能が、１つのサーバコンピュータシステム上で実現されてもよく、また複数のサーバコンピュータシステムを介して配信されてもよいことに留意することである。更には、典型的には大企業がウェブサーバ１８８の機能を実行するためにだけ完全に特化されたコンピュータシステムを有し、また複数のウェブサーバ１８８に類似するウェブサーバを所有しているにも関わらず、それらサーバがウェブサーバ１８８のような同一のコンピュータシステム上に存在してもよい。
【００４１】
或る実施例では、クライアント／サーバシステム１００のアプリケーションサーバ１２６が、図１に示されているように、オブジェクトマネージャサーバ１０７、セッションモード通信サーバ１１０、リクエストモード通信サーバ１４０、インバウンド通信レシーバ１７０、ユニバーサルキュー（ＵＱ）システム１０２、ＵＱビジネスサービス１０６、ウェブサーバ１８８、ウェブサーバ１４６、企業アプリケーションインタフェース（ＥＡＩ）オブジェクトマネージャサーバ１９０、及びワークフロー処理１４４を有している。或る実施例では、アプリケーションサーバ１２６における構成要素間の通信は、当技術分野で既知のトランスファーコントロールプロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）のような通信プロトコルに関係する、好適な内部処理通信プロトコルを用いて実現されうる。これらコンポーネント及びそれらの間の相互作用は、親出願、及び本願の引例とされている関連出願中で詳述されている通りである。
【００４２】
図２はウェブブラウザに対する非同期のプッシュを実行するための３階層アーキテクチャを示している。ビジネス処理サーバ２０２は、非同期メッセージの発信元である。動作２−１では、ビジネス処理サーバ２０２がウェブサーバ１８８に非同期メッセージをプッシュさせており、そのことはJava（登録商標）アプレット１１６に対する動作２−２で示されている。ここでウェブサーバ１８８にはマイクロソフト社のインターネットインフォメーションサーバ（ＩＩＳ）、またはＡｐａｃｈｅのような標準型オフザシェルフウェブサーバソフトウェアが含まれる。動作２−３では、Java（登録商標）アプレット１１６がウェブブラウザクライアント１０４Ａによって表示されているようなユーザインタフェースを制御する。一実施例では、Java（登録商標）アプレット１１６は、業者が複数の異なるメディアタイプの通信チャネルを介して通信を行うためのツールバーを制御する。
【００４３】
図３は、ウェブブラウザクライアントへの非同期メッセージのプッシュ方法の実施例を示すフローチャートである。通信接続のセットアップステップ３１０では、通信接続が、ウェブブラウザ、ウェブサーバ、及びビジネス処理サーバとの間で確立される。ここで、非同期メッセージがウェブブラウザに対してプッシュされるべきであることを決定するために、ビジネス処理サーバが応答可能である。非同期メッセージをプッシュするために、それら通信接続は、ビジネス処理サーバがウェブサーバ及びウェブブラウザクライアントと常時通信可能であることを確立する。
【００４４】
非同期メッセージの受信準備ステップ３２０で、ウェブブラウザクライアントが非同期メッセージを受信し得ることを示すべく、ビジネス処理サーバに登録される。非同期メッセージのプッシュステップ３３３では、非同期メッセージがウェブブラウザクライアントへとプッシュされる。非同期メッセージの受信準備ステップ３２０に関しては、図５において詳細に説明されており、非同期メッセージのプッシュステップに関しては、図６において詳細に説明されている。
【００４５】
通信のインフラストラクチャ
図４は、図１に示された発明の実施例のための通信接続をセットアップする過程３１０を実行した結果を示すものである。図４の構成要素は、ウェブブラウザクライアント１０４Ａ、ウェブブラウザクライアント１０４Ａと直接通信をするウェブサーバ１８８、及び２つのビジネス処理サーバであるオブジェクトマネージャサーバ１０７及びセッションモード通信サーバ１１０を含む。本発明は１つのビジネス処理サーバによって実行可能であるが、図１のクライアント／サーバシステム１００に関しては、本発明の動作を示すのに２つのビジネス処理サーバが用いられる。本発明に関して通信接続を示すにあたって、Java（登録商標）アプレット１１６が、ウェブブラウザクライアント１０４Ａに、ウェブサーバ１８８へと通常のＨＴＴＰリクエストの一部としてのウェイトリクエスト２１０を送信させる。最終的には、図４において示されている通信インフラストラクチャを介して、非同期のメッセージ２９０がウェブサーバ１８８よりウェブブラウザクライアント１０４Ａへと非同期で送信される。
【００４６】
ウェブサーバ１８８を参照すると、ウェブエンジンプラグイン１８５が、セッションマネージャ２２０、オブジェクトマネージャサーバ１０７、及び残りのクライアント／サーバシステム１００と通信を行うために、マイクロソフト社のインターネットインフォメーションサーバ（ＩＩＳ）のようなオフザシェルフ型のウェブサーバを機能的に用いる。セッションモード通信サーバ１１０は非同期のメッセージを発し、オブジェクトマネージャサーバ１０７を用いることで処理を実行しウェブサーバ１８８へと非同期のメッセージをプッシュするのに用いられる。ウェブエンジンプラグイン１８５は、永続的ＨＴＴＰ接続１３１を介してウェブブラウザクライアント１０４Ａへとウェブサーバ１８８より非同期のメッセージをプッシュする。ウェブサーバ１８８に非同期のメッセージのプッシュを実行させることによって、ウェブブラウザクライアント１０４Ａによって示されているユーザインタフェースが制御される。
【００４７】
セッションモード通信サーバ１１０は、セッションモード通信サーバ１１０、オブジェクトマネージャサーバ１０７、及びウェブサーバ１８８間の一連の接続を介して、ウェブブラウザクライアント１０４Ａと通信をおこなう。既述のとおり、セッションとはウェブサーバ１８８よりオブジェクトマネージャサーバ１０７へと繋がった論理接続である。この実施例では、ウェブブラウザクライアント１０４Ａのために、ウェブサーバから第１のビジネス処理サーバであるオブジェクトマネージャサーバ１０７へと繋がる論理接続として、アクティブ接続１３５Ａが用いられている。この論理接続は、更に第２のビジネス処理サーバ、セッションモード通信サーバ１１０へと拡張されおり、アクティブ接続１３５Ｂのような接続を介している。注意して頂きたいのは、第２の接続が本発明の操作のために要求されることはないが、示されている実施例における特定の目的のためには必要とされることである。
【００４８】
図４における実施例では、アクティブ接続１３５Ｂがサービスリクエスト層２３５Ａとサービスリクエストブローカー２３０との間のサブ接続１３５Ｂ−１、及びサービスリクエストブローカー２３０とサービスリクエスト層２３５Ｂとの間のサブ接続１３５Ｂ−２を含む。接続をサブ接続に分離させることは、示されている特定実施例に特徴的なものであって、本発明の必須条件ではない。
【００４９】
特定のウェブブラウザクライアント１０４Ａに対応する処理が、セッション関連の各ビジネス処理サーバ上で実行される。示されている実施例においては、ユーザのセッションスレッド１６０がオブジェクトマネージャサーバ１０７上で実行され、通信サーバセッションスレッド１２２がセッションモード通信サーバ１１０上で実行される。ユーザセッションスレッド１６０及び通信サーバセッションスレッド１２２は、上述の親出願のクロスリファレンス内に於いてより詳細に説明されている。図示された実施例では、ユーザのセッションスレッド１６０と通信サーバセッションスレッド１２２との間の通信は、アクティブ接続１３５を介したサービスリクエストブローカー２３０を用いることによって達成される。
【００５０】
セッションモード通信サーバ１１０は、接続されている各クライアント、ここではウェブブラウザクライアント１０４Ａの情報を維持する。セッションモード通信サーバ１１０は、顧客サポートリクエストのようなインカミングイベントをレシーブして、業者に表示されているユーザインタフェースへと非同期メッセージをプッシュすることによって、業者とインタラクティブに通信を行う。可能であれば、インカミング顧客サポートリクエストは、処理目的のみに許可された短時間の中断、及び顧客サポートリクエストの転送時間を伴って、通信チャネル１３０によって顧客サポートリクエストが受信されるのと概ね同時刻に、業者に対する通信を行う。このことで、とりわけ業者へのインタラクティブなリクエストのために、顧客の待ち時間が最短となる。
【００５１】
外部からの電話呼出（コール）のようなイベントが発生すると、業者の注意を喚起するために、インターフェースの変更通知機能を用い、ユーザインタフェースが業者に通知を実行する。例えば、ユーザインタフェースの通知機能が、非同期メッセージをレシーブしてもよく、電話の着信を業者に通知するためには、ボタンを点滅させる動作命令を提供してもよい。この通知機能はまた、業者が電話を取るまでの間、発信者に関する情報（“スクリーンポップ”）のようなその他情報の表示動作命令を提供してもよい。業者がツールバー１０５を用いて、着信、保留（ホールド）、またはリリース（release）する時、ユーザインタフェースは、セッションモード通信サーバ１１０へとコマンドを送信する。ここでサーバ１１０はチャネルドライバ１２０の内の１つと通信を行い、電話を制御する通信チャネルに対しコマンドを発信する。
【００５２】
通信チャネルからのメッセージを非同期でプッシュできる機能を有することで、業者は、当該業者宛のＥ−メールのような到着ワークアイテムをリアルタイムで受信することができる。
【００５３】
セッションマネージャ
先に述べたように、ウェブサーバがウェブブラウザに対し非同期でメッセージを提供可能であるソリューションは、クライアント／サーバシステム１００のような大規模配信アプリケーションが大量のユーザをサポート可能とすることが望ましい。一般的に、ウェブサーバは、ウェブブラウザクライアント１０４Ａのような複数のウェブブラウザクライアントの要求を満たしうる。例えば、クライアント／サーバシステム１００を用いる各業者は、ウェブサーバ１８８にアクセスするためのウェブブラウザクライアントを各自で使用する。次に、ウェブサーバ１８８がウェブブラウザクライアントに代行して、オブジェクトマネージャサーバ１０７のようなビジネス処理サーバとの通信を行う。各々のウェブブラウザクライアントは、論理的にウェブブラウザクライアントの全通信が実行されるビジネス処理サーバへと向かうウェブサーバ１８８よりの固有専用接続を有している。それらの論理接続がセッションと呼ばれており、セッションマネージャによって管理されている。
【００５４】
セッションマネージャは、各々、２つのサーバ上で実行されるコンポーネントを有していてよく、この実施例ではセッションマネージャ２２０Ａがウェブサーバ１８８上で実行されており、セッションマネージャ２２０Ｂがオブジェクトマネージャサーバ１０７上で実行されている。セッションマネージャ２２０Ａ及びセッションマネージャ２２０Ｂは、まとめてセッションマネージャ２２０として称される。セッションマネージャ２２０の２つのコンポーネント同士は、アクティブ接続１３５Ａのようなそれらの間に存在する物理接続を確立して処理を行うので、２つのサーバ１８８及び１０７上の各プロセスが通信可能である。セッションマネージャ２２０Ａは、セッションマネージャリスニングスレッド２２４を生成し、アクティブ接続１３５Ａに従う。セッションマネージャ２２０Ａは、セッションデータ２２２Ａにおいて示されているようなセッション関連のローカルデータを保持しており、セッションマネージャ２２０Ｂはセッションデータ２２０Ｂ内にローカルセッションデータを維持する。
【００５５】
複数のアクティブ接続が２つのサーバ間で確立されてもよい。図２を参照すると、アクティブ接続１３５Ａはウェブサーバ１８８及びオブジェクトマネージャサーバ１０７の間に１つのアクティブ接続を示しており、追加的なアクティブ接続は図示されていない。各ウェブブラウザクライアントが、かなりの時間アイドル状態であり得るので、ネットワークリソースを保存してスケーラビリティを達成するためには、アクティブ接続が各ウェブブラウザクライアントに確立されなくてもよい。セッションマネージャは、アクティブ接続がウェブブラウザクライアント間で共有されるようにする。
【００５６】
クライアント／サーバシステム１００のコンポーネントが通信を必要とする場合いつでも、前記コンポーネントが同一サーバシステム上の対応するセッションマネージャコンポーネントを呼び出してよい。ここでは、サーバコンピュータシステムは通信を実行可能なアクティブ接続を決定する。例えば、ウェブエンジンプラグイン１８５がウェブブラウザクライアント１０４Ａのユーザのために情報を送信する必要がある場合、ウェブエンジンプラグイン１８５がセッションマネージャ２２０Ａに対し情報送信の要求を行う。セッションマネージャ２２０Ａは、アクティブ接続１３５Ａのようなセッションマネージャ２２０Ｂに対して有効なアクティブ接続を決定し、アクティブ接続を介してセッションマネージャ２２０Ｂへ向けて情報を送信する。セッションマネージャ２２０Ｂは、ウェブブラウザクライアント１０４Ａに対応した適切なプロセスに対する情報、即ちユーザセッションスレッド１６０を提供する。
【００５７】
セッションマネージャ２２０のようなセッションマネージャは、適切な内部プロセス通信プロトコルへとデータをコンバートしてもよく、そのようなプロトコルは、例えばＴＣＰ／ＩＰのような転送プロトコルに関連して用いられるものであり、クライアント／サーバシステム１００の配信コンポーネント間の通信に用いられている。
【００５８】
セッションマネージャ２２０のようなセッションマネージャを有し、クライアント／サーバシステム１００のその他のコンポーネントの代わりに通信することは、接続及びセッションに関連するロジックが他の機能を実行するコンポーネントより取り除かれることを可能とする。このことが、クライアント／システム１００のその他コンポーネントを単純化し、セッションマネージャ２２０の一部としてのセッション及び接続マネージメントの複雑性が回避される。
【００５９】
業者は、ウェブサーバ１８８を介してウェブページにアクセスし、またログイン情報を完了させることで、クライアント／システム１００へとログインする。様々な接続がログインに応答して確立される。ユーザログイン時、セッションマネージャ２２０がアクティブ接続１３５Ａを確立させる。通信クライアントサービス１６０がセッションモード通信サーバ１１０への接続を要求するとき、サービスリクエストブローカー２３０及びサービスリクエスト層２３５Ａ及び２３５Ｂが、アクティブ接続１３５Ｂを確立させる。セッションモード通信サーバ１１０に対する接続が確立されると、Java（登録商標）アプレット１１６が、ウェブブラウザクライアント１０４Ａ及びウェブサーバ１８８の間の永続（persistent）ＨＴＴＰ接続１３１を確立させる。或る実施例では、永続ＨＴＴＰ接続１３１はウェブサーバ１８８よりのJava（登録商標）アプレット１１６へ向かう物理的な双方向ソケット接続である。永続ＨＴＴＰ接続１３１はウェブブラウザクライアント１０４Ａ専用であって、ウェブサーバ１８８がウェブブラウザクライアント１０４Ａに対して随時非同期メッセージを送信可能であるようにする。図４で示されているような実施例に於いてそれら接続は非同期メッセージがプッシュされるようにするが、アクティブ接続１３５Ｂは本願で必要とはされていない。
【００６０】
アクティブ接続１３５Ａ及び１３５Ｂは、ウェブブラウザクライアント１０４Ａがアイドル状態であるかそうでないかに関わらずアクティブなままである。それらの接続はユーザがログアウト（ｅｘｉｔ）を選択するときに閉じられて良い。それら接続は、ウェブブラウザクライアント１０４Ａが、例えば３０分のような或る時間に渡ってアイドル状態であった後に終了されてもよい。ユーザが一定時間ウェブブラウザクライアント１０４を使用していないと、セッションマネージャ２２０が、ユーザはすでに利用不可能状態であるという決定をおこなってもよい。
【００６１】
非同期メッセージをレシーブするための準備
図５は、非同期メッセージを受信するための準備プロセスについて示すものである。
【００６２】
動作５−１では、ウェブブラウザクライアント１０４Ａが非同期メッセージをレシーブすることが可能であることを示すために、Java（登録商標）アプレット１１６がウェブブラウザクライアント１０４Ａに対してウェブサーバ１８８へのウェイトリクエスト２１０を送信するようにさせる。ウェイトリクエスト２１０は図５において示されているようなＵＲＬに対応していてよく、
http://webserver188/.../start.swe?waitrequest=1&target=160&Session_ID=104A_ID
と示されている。
【００６３】
クエスチョンマーク（？）よりも前にあるＵＲＬの一部分であるパス要素は、ウェブサーバ１８８のためのディレクトリパスネームを示すものである。クエスチョンマークに続くＵＲＬの一部分であるＵＲＬのサーチ要素は、ネーム／バリューペアとしてパラメータ及びバリューを提供する。
【００６４】
この実施例中で、第１のネーム／バリューペアであるウェイトリクエストパラメータ２１２は、ウェブエンジンプラグイン１８５によってコマンドが実行されるべきであることを示す。ターゲットパラメータ２１４は、通信クライアントサービス１６０に対応したターゲットプロセス１６０を示しており、そこより非同期メッセージがレシーブされてもよい。Java（登録商標）アプレット１１６は、ウェブブラウザクライアント１０４Ａに対応するセッションが既に図３のセットアップ通信チャネルステップ３１０の結果として確立されているので、標的プロセス情報にアクセスする。セッション＿ＩＤパラメータ２１６は、セッションのセッション＿ＩＤを示すものである。特定のウェブブラウザクライアント１０４Ａの要求を満たすために、セッションが論理的に“専用”とされているので、セッション＿ＩＤは、ウェブサーバ１８８が対応ウェブブラウザクライアントに対し非同期のメッセージをプッシュすることを可能とする。本発明のその他の実施例が、ＵＲＬ内部に異なるパラメータを提供することがあってもよい。
【００６５】
Java（登録商標）アプレット１１６は、ウェブブラウザクライアント１０４ＡがＨＴＴＰフォーマットでウェイトリクエスト２１０を送信することを可能とするが、結果的にこのリクエストは標準的ウェブブラウザのＵＲＬリクエストの場合のような“タイムアウト”を起こさない。即時に同期型のレスポンスを提供されることがないにも関わらず、ウェブブラウザクライアント１０４Ａは、レスポンス待ち時間にブロックされることはない。Java（登録商標）アプレット１１６は、ウェブサーバ１８８よりの非同期メッセージを無期限に待ち続け、ウェブブラウザクライアント１０４Ａは、ユーザインタフェースの制御等その他タスクを実行するために解放される。
【００６６】
或る実施例においてウェブサーバ１８８は、クエスチョンマーク（？）の前に存在するＵＲＬの一部のパスエレメントの「.swe」エクステンション（拡張）２１１を認識する。「.swe」エクステンション２１１より、ウェブサーバ１８８はウェブエンジンプラグイン１８５がリクエストを取り扱ってもよいことを決定する。ウェブサーバ１８８は、動作５−２におけるウェブエンジンプラグイン１８５に対するターゲットパラメータ２１４及びセッション＿ＩＤパラメータ２１６のようなウェイトリクエスト２１０において付与された情報を提供する。
【００６７】
動作５−３において、ウェブエンジンプラグイン１８５は、ウェイトリクエスト２１０よりの情報をリクエストオブジェクト５１０にストアする。ここでリクエストオブジェクト５１０は、ウェブブラウザクライアント１０４Ａの非同期メッセージがレシーブされるまでメモリ内部にストアされる。リクエストオブジェクト５１０は、Java（登録商標）アプレット１１６に対する非同期メッセージのプッシュに必要とされ得るリクエスト情報をセーブする。ここでJava（登録商標）アプレット１１６は、ウェブブラウザクライアント１０４Ａで表示されているユーザインタフェースを制御する目的で非同期のメッセージを用いる。例えば、この情報には、ウェブブラウザクライアント１０４Ａのためのユーザネーム及び／またはその他の識別情報が含まれていてよい。任意に、ウェブエンジンプラグイン１８５がJava（登録商標）アプレット１１６に対して“リクエストペンディング”ステータス（図示せず）を戻してもよい。リクエストオブジェクト５１０はメモリ内部に残り、非同期メッセージがセッションマネージャリスニングスレッド２２４を介して到達したことをセッションマネージャ２２０Ａが検出するときに用いられる。
【００６８】
ウェブエンジンプラグイン１８５は、リクエストオブジェクト５１０よりのウェイトリクエスト２１０のためのコールバックオブジェクト５３０を生成し、クライアントウェイティングリスト５５０へとコールバックオブジェクト５３０を配置する。コールバックオブジェクト５３０は、非同期メッセージがウェブブラウザクライアント１０４Ａのために受信されるとき用いられるコンテクスト情報を提供する。クライアントウェイティングリスト５５０は、ウェブブラウザクライアント１０４Ａのような全てのクライアントリストを提供するが、ここでは全てのクライアントが非同期メッセージを受信可能である。
【００６９】
動作５−４において、セッションマネージャ２２０Ａをウェブエンジンプラグイン１８５が呼び出し、ウェイトリクエスト、非同期メッセージがウェイトリクエストのためにレシーブされるときに呼び出されるべきコールバックファンクションに対するレファレンス、及びコールバックファンクションを呼び出すときに用いられるべきコンテクスト情報に対するレファレンスを提供する。この実施例では、コールバックファンクション５４０及びコールバックオブジェクト５３０に対するレファレンスが提供される。図４では、シングルタイプのコールバックファンクションのみが開示されているが、本願の精神を逸脱することなく異なるタイプの非同期メッセージ、異なるタイプのイベント、または特別な取扱いを要する別の状況のために複数のコールバックファンクションが含まれていても良い。
【００７０】
セッションマネージャ２２０は、各リクエストのための独自の識別子であるリクエスト＿ＩＤをアサインする。またセッションマネージャ２２０は、非同期メッセージがウェブブラウザクライアント１０４Ａのために受信される時必要とされる情報と共に、セッションデータ２２２Ａにおける独自の識別子であるリクエスト＿ＩＤカラム２２２Ａ−１をストアする。図５において示されている実施例において、独自の識別子リクエスト＿ＩＤは１０４Ａ＿ＩＤ／１の値を有しており、それはウェブブラウザクライアント１０４Ａよりの第１のリクエストであることを示している。セッションマネージャ２２０Ａはまた、ポインタ５４０ｐの場合において、コールバックコラム２２２Ａ−２におけるコールバック機能に対してレファレンスをストアする。セッションマネージャ２２０Ａはまた、コールバックファンクションを呼び出す時に用いられるためにコンテクストコラム２２２Ａ−３、即ちポインタ５３０ｐにおけるコンテクスト情報に対するレファレンスもストアする。この場合は、用いられるべきコンテクスト情報がコールバックオブジェクト５３０にてストアされる。別の実施例では、コールバックファンクション及びコンテクスト情報に対するストアレファレンスというよりは寧ろ、セッションマネージャ２２０Ａが、セッションデータ２２２Ａ内に、音声のコールバックファンクション及びコンテクスト情報をストアしてもよい。
【００７１】
動作５−５において、セッションマネージャ２２０Ａは、リクエスト＿ＩＤ及び例えばウェイトリクエスト２１０よりのターゲットパラメータ２１４の値のようなその他の情報の値を含むリクエストを、オブジェクトマネージャサーバ１０７内部のセッションマネージャ２２０Ｂへと送信する。セッションマネージャ２２０Ａは、セッションマネージャ２２０Ｂに送信される前に、リクエストを適切な内部プロセス通信プロトコルへコンバートしてもよい。
【００７２】
セッションマネージャ２２０Ｂよりのリクエストをレシーブするとき、セッションマネージャ２２０Ｂは、リクエストを処理するための対応プロセスを決定する。ここでは、ユーザセッションスレッド１６０とされる。セッションマネージャ２２０Ｂは、リクエスト＿ＩＤの値をセッションデータ２２２Ｂリクエスト＿ＩＤコラム２２２Ｂ−１へと配置し、ハンドラのための識別子をハンドラコラム２２２Ｂ−２に配置する。セッションマネージャ２２０Ｂは次に、ターゲット２１４の値やハンドラの識別子のようなリクエストよりの情報を、動作５−６でリクエストキュー５６０へと配置する。リクエストキュー５６０は、全ユーザ及び全タイプのサービスのためにオブジェクトマネージャサーバ１０７によってレシーブされた、全リクエストの一般的リクエストキューである。示された実施例においては、リクエスト＿ＩＤコラム５６２がリクエストのための独自の識別子リクエスト＿ＩＤを含んでおり、データコラム５６４は標的パラメータ値１６０を含んでおり、ハンドラコラム５６６はユーザセッション１６０のための識別子を含んでいる。オブジェクトマネージャサーバ１０７がアイドル状態の場合、オブジェクトマネージャサーバ１０７は動作５−７において示されているような処理を行うために、リクエストキュー５６０からリクエストを検索する。
【００７３】
オブジェクトマネージャサーバ１０７がリクエストキュー５６０よりのリクエストを検索するとき、オブジェクトマネージャサーバ１０７はハンドラコラム５６６よりのリクエストを処理するためのプロセスの識別子を含む。動作５−８において、オブジェクトマネージャサーバ１０７がユーザセッションスレッド１６０に対するリクエストを提供し、動作５−９においてユーザセッションスレッド１６０がウェイトマップ５７０へと、リクエストよりの情報を配置している。ウェイトマップ５７０はまた、リクエストのための独自の識別子であるリクエスト＿ＩＤをリクエスト＿ＩＤコラム５７２内に有しており、また非同期メッセージが予想されるプロセスの識別子（ここでは通信クライアントサービス１６０）をターゲットコラム５７４内部に有している。リクエスト＿ＩＤを、ウェイトマップ５７０の中に配置することがウェブブラウザクライアント１０４Ａを“記録する”ことであり、ここでウェブブラウザクライアント１０４Ａは、非同期メッセージをレシーブすることが可能なクライアントとしてリクエスト＿ＩＤに独自に関連付けられる。
【００７４】
ウェブブラウザに対する非同期メッセージのプッシュ
図６は、ビジネスプロセスサーバであるオブジェクトマネージャサーバ１０７よりのウェブブラウザへ向かう非同期メッセージのプッシュを示したものである。クライアント／サーバシステム１００に関する非同期メッセージをプッシュする能力を開示する目的で、通信サービス１１３、ＯＭリスニングスレッド２３４、アクティブ接続１３５Ｂ−１、及びサービスリクエスト層２３５Ａが含まれた構成となっている。これらの構成要素は本発明の動作にとって必要不可欠という訳ではなく、本発明のその他の実施例は同等の機能を実現する構成要素を含んでいなくてもよい。例えば、全てのビジネスロジック機能が非同期メッセージがプッシュされるべき時に決定動作を実行するシングルタイプのビジネス処理サーバにすべてのビジネスロジック機能が含まれていても良い。
【００７５】
この実施例においては、アクティブ接続１３５Ｂ−１を介してのＯＭリスニングスレッド２３４におけるイベント６１０のようなイベントの到達によって、非同期のプッシュが開始される。イベント６１０が到達されると、サービスリクエスト層２３５Ａがイベント６１０を処理するべくハンドラープロセスを決定する。このプロセスは、例えば図４におけるサービスリクエストブローカー２３０によるイベント６１０のために提供されたセッション＿ＩＤを用いて決定されてもよい。動作６−１において、ユーザセッションスレッド１６０内で通信サービス１１３がイベント６１０を処理するためのプロセスであると決定されると、サービスリクエスト層２３５Ａが通信サービス１１３へとイベント６１０を提供する。動作６−２では、通信サービス１１３が、６１０＿ＩＤのリクエスト＿ＩＤカラム５６２における値によって識別されるリクエストキュー５６０内へとイベント６１０を送信し、動作６−３では、ハンドラカラム５６６におけるイベントを処理するためのプロセスとしてそのカウンターパートである通信クライアントサービス１６０を識別する。イベント６１０に対するデータ仕様は、データカラム５６４において提供されている。
【００７６】
動作６−４において、オブジェクトマネージャサーバ１０７がリクエストキュー５６０よりイベント６１０を回収し、通信クライアントサービス１６０へとイベント６１０を提供する。通信クライアントサーバ１６０は、ウェイトマップ５７０におけるリクエストのためのターゲットが何れであるのかを決定するためにウェイトマップ５７０のターゲットカラム５７４へとアクセスする。ターゲットカラム５７４において１６０の値を見つけると、通信クライアントサービス１６０がリクエスト＿ＩＤカラム５７４を用い、イベントが対応しているリクエストの独自の識別子リクエスト＿ＩＤを決定する。通信クライアントサービス１６０は、適切なイベントのレスポンスを決定し、リクエスト＿ＩＤ及びイベントのレスポンスを実行するための命令を含む目的で非同期メッセージ２９０を生成する。例えば、イベントのレスポンスとしてはツールバー１０５上のボタンを点滅させたり、データの“スクリーンポップ”を生成したり、ウェブブラウザクライアント１０４Ａの前部へとウィンドウを提示したりすることなどが含まれてもよい。非同期のメッセージ２９０は、Java（登録商標）アプレット１１６のための動作命令を含んでおり、イベントレスポンスを実行する。
【００７７】
動作６−５では、通信クライアントサービス１６０がセッションマネージャ２２０Ｂに対する非同期のメッセージ２９０を供給し、非同期メッセージ２９０を送信するためにセッションマネージャ２２０Ｂに要求を行う。
【００７８】
動作６−６では、セッションマネージャ２２０Ｂがセッションマネージャ２２０Ａへと非同期メッセージ２９０を提供する。セッションマネージャ２２０Ａは、まず最初に、クライアントが非同期メッセージを受信することが可能であることを通知するためにクライアントのウェイティングリスト５５０をチェックする。セッションマネージャ２２０Ａは非同期メッセージ２９０中に提供されているリクエスト＿ＩＤ値を、リクエスト＿ＩＤカラム２２２Ａ−１における値と一致させる。この５４０のケースでは、セッションマネージャ２２０Ａが呼び出しを行うためにコールバックファンクションを決定し、コールバックオブジェクト５３０を提供するためのコンテクスト情報を決定する。
【００７９】
動作６−７では、セッションマネージャ２２０Ａがコールバックファンクション５４０へとコールバックオブジェクト５３０を提供する。動作６−８では、コールバックファンクション５４０がリクエストオブジェクト５１０を用いて非同期メッセージが送信されるべきウェブブラウザクライアントを決定し、ウェブブラウザクライアントに対し非同期メッセージをプッシュする。
【００８０】
Java（登録商標）アプレット１１６が非同期メッセージをレシーブするとき、永続的な接続１３１は閉止される。ウェブブラウザクライアント１０４Ａが非同期メッセージをレシーブすることを可能とするためには、Java（登録商標）アプレット１１６が別のウェイトリクエストを送信する。通信クライアントサービス１６０はJava（登録商標）アプレット１１６との通信を継続させ、ウェブブラウザクライアント１０４Ａによって表示されているユーザインタフェース変化を制御する。
【００８１】
例えば、ツールバー１０５におけるログアウトボタンをクリックすることによってユーザがログアウトする時に、セッションマネージャ２２０はオブジェクトマネージャサーバ１０７が、ウェブブラウザクライアントのために割り当ててきたリソースをクリーンアップする。例えば、サービスリクエストブローカー２３０に対するアクティブ接続１３５Ｂ−１及びセッションモード通信サーバ１１０に対するアクティブ接続１３５Ｂ−２が閉止されてもよい。
【００８２】
ここに記載されているように、ウェブブラウザに対するウェブサーバよりの非同期のプッシュはより多くの利点を有しており、例えばそれはウェブブラウザしか有していないユーザに、ユーザへとリアルタイムにデータを提供するユーザインタフェースを制御するウェブベースアプリケーションにアクセスすることを可能とさせるものである。ウェブブラウザクライアントはブロックされておらず、またユーザインタフェースの変化が非同期にプッシュされた命令によって達成され、各ユーザインタフェースの変化のためにウェブブラウザクライアントによってなされるべきリクエストを必要とすることなくユーザインタフェースの変化させる。
【００８３】
その他の実施例
本発明は、１つ若しくは複数のコンピュータシステム上で動作するソフトウェアアプリケーションに関して記載された。しかし、当業者であれば本発明が様々な形態のプログラム製品として配布可能であり、また本発明は実際に配布するのに用いられる特定形式のシグナルベアリングメディア（signal bearing media）に依存することなく適用されることがお分かりであろう。メディアの例としては、フレキシブルディスクやＣＤ−ＲＯＭのような記録可能メディア、デジタル及びアナログ通信リンクのような転送メディアは勿論のこと、将来想定し得るメディア媒体及び配布システムのすべてが含まれる。
【００８４】
更に、既述の詳細な説明中では、ダイヤグラム、フローチャート、及び実施例を用いて本発明の様々な実施例を提示してきた。当業者であれば、実施例の使用によって示されてきた各ブロック図の要素、フローチャートのステップ、及び動作及び／または要素が、多岐に亘ってハードウェア、ソフトウェア、ファームウェア、またはその何れかの組み合わせ等で、個別及び／または相互に実現し得ることがお分かりになるであろう。一実施例では、本発明が特定用途向ＩＣ（ＡＳＩＣ）によって実現されてもよい。しかし、当業者であれば、ここに記載された実施例は、全体またはその一部分でコンピュータ上で稼働するコンピュータプログラムやファームウェアやそれらの組み合わせのように、汎用ＩＣによって同じ様に実現し得ることがご理解頂けよう。本発明の詳細な説明を踏まえて、回路構成を設計し、及び／またはソフトウェア即ちファームウェアのためのプログラミングコードを書くことは当業者であれば可能である。
【００８５】
本発明は、ここに固有なことは勿論のことであるが、言及された利点を達成する目的で適合されている。本発明は特定の実施例について記載されているが、それは本発明を限定するものではない。本発明は、その形態及び機能に関する変形例や変更例を含むものである。記載された実施例は提示的なものであって本発明の精神をこれに限定するものではない。つまり、本発明の権利範囲は特許請求の範囲によってのみ限定されるものであって、あらゆる点でそれに等しいものを包含する。
【図１】
0005023082.tif 000002
【図２】
0005023082.tif 000003
【図３】
0005023082.tif 000004
【図４】
0005023082.tif 000005
【図５Ａ】
0005023082.tif 000006
【図６Ａ】
0005023082.tif 000007
【図５Ｂ】
0005023082.tif 000008
【図６Ｂ】
0005023082.tif 000009