[本発明の実施の形態における前提]
図1に本発明の一実施の形態に係るシステム概要図を示す。インターネット等のオープンネットワーク1には、複数のクライアント端末(CT:Client Terminal)が接続されている。また、オープンネットワーク1は、ゲートウェイ(GW:Gateway)3を介してサービス提供ネットワーク5に接続されている。サービス提供ネットワーク5においては、以下に説明するネットワーク・プラットフォーム(NP)50が構築されている。
ネットワーク・プラットフォーム50には、共通機能モジュールとして、認証・認可機能モジュール501と、課金機能モジュール502と、CT管理機能モジュール503とが設けられている。認証・認可機能モジュール501は、クライアント認証、端末認証、サービス認可等を行う。課金機能モジュール502は、例えばクライアント毎に機能モジュールの使用回数等の課金に必要なデータを収集し、例えばクライアント毎の課金データを生成する。CT管理機能モジュール503は、各機能モジュールの版数管理、クライアント端末の状態管理、クライアント端末への機能モジュールのダウンロード制御、及び以下で説明するサービスプログラムの登録確認、サービスIDの発行などを行う。
また、ネットワーク・プラットフォーム50には、個別機能モジュールとして、セッション制御(例えばSIP(Session Initiation Protocol))を行うセッション制御機能モジュール504、クライアントのプレゼンス・データを管理するコンテキスト管理機能モジュール505、メディア変換機能モジュール506などの機能モジュールが設けられている。図1では3つの個別機能モジュールを示しているが、他の機能モジュールが設けられる場合もある。さらに、ネットワーク・プラットフォーム50には、個別機能モジュール等が共通して使用するコモンアプリケーション#1、#2、#3なども設けられている。
一方、クライアント端末には、1又は複数のサービスプログラムと、1又は複数のクライアント機能モジュールと、管理プログラムとが設けられている。図1の例では、クライアント端末7には、サービスプログラム#1及び#2と、クライアント機能モジュールA及びBと、管理プログラム71が設けられている。クライアント機能モジュールについては、ネットワーク・プラットフォーム50からダウンロードした機能モジュールである場合もあれば、予めクライアント端末に用意されている機能モジュールの場合もある。また、クライアント端末9には、サービスプログラム#3と、クライアント機能モジュールCと、管理プログラム91とが設けられている。
さらに、ネットワーク・プラットフォーム50内には、コモンアプリケーションと個別機能モジュールとの間にNP−API(Application Program Interface)が規定されている。また、クライアント端末内には、サービスプログラムとクライアント機能モジュールとの間にCT−APIが規定されている。例えばクライアント端末においてサービスプログラムは、CT−APIを介してクライアントの機能モジュールを用いるようになっている。さらに、クライアント端末とネットワーク・プラットフォーム50との間に、サービス管理インターフェース(SMI:Service Management Interface)と、サービス制御インターフェース(SCI:Service Control Interface)とが規定されている。サービスプログラムは、SCIを介してクライアント端末のユーザが望むサービスが、ネットワーク・プラットフォーム50から提供されるように、定義される。
次に、サービス管理インターフェースSMIについて説明する。ネットワーク・プラットフォーム50は、ネットワーク・プラットフォーム50において公開している機能モジュールとその機能を実行する際に必要なパラメータをSMIを介して公開しており、クライアント端末のユーザ又はクライアント・システムの構築者は、SMIを介してネットワーク・プラットフォーム50から必要な情報を取得してサービスプログラム作成を行う。
SMIを介してやりとりされるパケットの形式は、例えば図2(a)に示すようなものである。すなわち、IPアドレスなどのネットワーク・アドレスを含むパケット・ヘッダと、クライアントIDと、端末IDと、動作データとが含まれる。動作データについては、クライアント端末からのパケットであれば例えばサービス要求内容(サービスプログラム登録要求、機能ダウンロード要求、版数管理要求、状態管理要求など)が含まれ、ネットワーク・プラットフォーム50からのパケットであれば例えば処理結果や要求データが含まれる。また、SCIを介してやりとりされるパケットの形式は、例えば図2(b)に示すようなものである。すなわち、IPアドレスなどのネットワーク・アドレスを含むパケットヘッダと、クライアントIDと、端末IDと、サービスプログラムのIDであるサービスIDと、動作データとを含む。動作データについては、クライアント端末からのパケットであれば例えば起動すべき機能モジュールのID及び必要なパラメータを含み、ネットワーク・プラットフォーム50からのパケットであれば例えば処理結果が含まれる。
また、サービス提供ネットワーク5には、NP運用管理機能も用意されており、NP運用管理インターフェースを介してNP運用管理機能によりネットワーク・プラットフォーム50について各種管理を行う。なお、NP運用管理機能については本実施の形態の主要部ではないので、これ以上説明は行わない。
[サービスプログラムを実行するための構成]
図1に示したシステム概要は、ユーザによる指示に応じてクライアント端末7又は9において保持されているサービスプログラムを実行し、ネットワーク・プラットフォーム50における機能モジュールに対して処理を依頼し、ネットワーク・プラットフォーム50の機能モジュールから処理結果を受信するケースについて示している。しかし、このようにサービスプログラムの実行主体及び保管主体をクライアント端末に固定してしまうと柔軟性が損なわれる。すなわち、サービスプログラムの実行主体及び保管主体を固定的にクライアント端末としてしまうと、クライアント又はクライアント端末のコンテキスト(状態)によってサービスを受けるクライアント端末が一意に決まらないような場合がある。そうすると、サービスプログラムを最初に実行したクライアント端末がそのまま最終的な処理結果を受信するクライアント端末と一致しない場合があるため、クライアントは面倒な処理を実行させなければならない場合が生ずる。一方、ネットワーク・プラットフォーム50が固定的に実行主体とすると、サービスプログラム実行のトリガがクライアント端末で発生した場合には、ネットワーク・プラットフォーム50が当該トリガの処理を開始するのに時間がかかってしまう。さらに、サービスプログラムを固定的にクライアント端末に保管していると、当該クライアント端末の電源が落とされていると、外出先からサービスプログラムをダウンロードすることができなくなる。このように、サービスプログラムの実行主体及び保管主体を固定的にするのはサービス提供の柔軟性及び迅速性を損なうことになる。
そこで、(1)クライアント端末がサービスプログラムを保管しておき、クライアント端末が当該サービスプログラムを実行するケース、(2)ネットワーク・プラットフォーム50がサービスプログラムを保管しておき、クライアント端末がダウンロードして実行するケース、(3)クライアント端末がサービスプログラムを保管しておき、ネットワーク・プラットフォーム50がダウンロードして実行するケース、(4)ネットワーク・プラットフォーム50がサービスプログラムを保持しておき、ネットワーク・プラットフォーム50が当該サービスプログラムを実行するケースを全て取り扱えるようにする。
そのためネットワーク・プラットフォーム50については図3に示すような機能を付加的に採用する。すなわち、ネットワーク・プラットフォーム50は、サービスプログラム実行処理部520をさらに含む。なお、CT管理機能モジュール503については図1に示したものと同じであるが、その機能を詳細化している。サービスプログラム実行処理部520は、トリガ検出部5201と、サービスプログラム特定部5202と、サービスプログラムデータ格納部5203と、実行受託処理部5204と、ダウンロード部5205と、場合によっては実行主体決定部5206とを含む。また、CT管理機能モジュール503は、サービスプログラムチェック部5031と、サービスID管理部5033と、保管主体決定部5034と、実行主体決定部5035と、プロセッサ能力DB5036と、仕事量分析部5037とを有する。
サービスプログラム実行処理部520のトリガ検出部5201は、トリガを検出すると、当該トリガのデータをサービスプログラム特定部5202に出力する。サービスプログラム特定部5202は、サービスプログラムに関するデータ及びサービスプログラム自体を格納するサービスプログラムデータ格納部5203を参照して処理を実行し、特定されたサービスプログラムを実行させる。なお、ネットワーク・プラットフォーム50に、特定されたサービスプログラムが保管されていない場合には、サービスプログラム特定部5202は、ダウンロード部5205に、必要なサービスプログラムを保管先からダウンロードさせる。また、サービスプログラム特定部5202は、場合によっては実行主体決定部5206に実行主体を決定するように指示する。実行主体決定部5206は、サービスプログラムデータ格納部5203を参照して実行主体を決定し、ネットワーク・プラットフォーム50が実行主体であると判断すると、当該サービスプログラムを実行させる。なお、当該サービスプログラムが保管されていない場合には、ダウンロード部5205にダウンロードさせる。ダウンロード部5205は、サービスプログラムをダウンロードすると、当該サービスプログラムをサービスプログラムデータ格納部5203に格納し、実行させる。実行受託処理部5204は、クライアント端末から実行を委任された場合には、サービスプログラムデータ格納部5203から、実行を要求されたサービスプログラムを読み出して実行させる。但し、保持されていない場合には、当該サービスプログラムをダウンロード部5205にダウンロードさせ、実行させる。また、実行受託処理部5204は、サービスプログラムの処理結果を受け取り、必要があればクライアント端末に送信する。
CT管理機能モジュール503の保管主体決定部5034、実行主体決定部5035及び仕事量分析部5037は、サービスプログラムデータ格納部5203を参照して処理を実行する。また、保管主体決定部5034は、ネットワーク・プラットフォーム50に保管すると判断されたサービスプログラムを、サービスプログラムデータ格納部5203に格納する。なお、実行主体決定部5035はさらに各端末の処理能力についてのデータを格納するプロセッサ能力DB5036を参照して処理を行う。
一方、クライアント端末7又は9についても図4に示すような機能を付加的に採用する。すなわち、クライアント端末(ここではクライアント端末7を例に説明する)は、サービスプログラム実行処理部710をさらに含む。なお、管理プログラム71については図1に示したものと同じであるが、その機能を詳細化している。サービスプログラム実行処理部710は、トリガ検出部711と、サービスプログラム特定部712と、サービスプログラムデータ格納部717と、第2実行主体決定部713と、ダウンロード部714と、CPU使用率取得部715と、CPU使用率格納部716と、実行委任処理部718と、各端末の処理能力についてのデータを格納するプロセッサ能力DB719とを有する。管理プログラム71は、サービスプログラム開発部701と、仕事量分析部702と、保管主体決定部703と、第1実行主体決定部704と、サービスID管理部705とを有する。
サービスプログラム実行処理部710のトリガ検出部711は、トリガを検出すると、サービスプログラム特定部712に当該トリガのデータを出力する。サービスプログラム特定部712は、サービスプログラムに関するデータ及びサービスプログラム自体を格納するサービスプログラムデータ格納部717を参照して処理を行い、実行すべきサービスプログラムを特定する。そして、サービスプログラム特定部712は、特定したサービスプログラムの識別情報及びトリガのデータを第2実行主体決定部713に出力する。また、CPU使用率取得部715は、サービスプログラム特定部712からの指示に応じて、OS(Operating System)等からCPU使用率のデータを取得し、CPU使用率格納部716に格納する。第2実行主体決定部713は、CPU使用率格納部716とサービスプログラムデータ格納部717及びプロセッサ能力DB719を参照して処理を行い、特定されたサービスプログラムの実行主体を決定する。第2実行主体決定部713が、クライアント端末7においてサービスプログラムを実行すると判断した場合には、当該サービスプログラムを実行させる。但し、サービスプログラムデータ格納部717にサービスプログラムが格納されていない場合には、ダウンロード部714に当該サービスプログラムをネットワーク・プラットフォーム50からダウンロードさせる。ダウンロード部714は、ダウンロードしたサービスプログラムを実行させる。なお、第2実行主体決定部713が、検出されたトリガに対応するサービスプログラムの実行主体をネットワーク・プラットフォーム50と決定した場合には、実行委任処理部718に処理を実行させる。実行委任処理部718は、第2実行主体決定部713の指示に従って、トリガのデータ及びサービスプログラムのサービスIDをネットワーク・プラットフォーム50に送信する。また、実行委任処理部718は、ネットワーク・プラットフォーム50から処理結果を受信し、クライアント端末7に処理結果を提示するか、必要な機能モジュールに処理させる。
管理プログラム71のサービスプログラム開発部701は、サービスプログラムを生成し、ネットワーク・プラットフォーム50に対する登録処理などを実施する。仕事量分析部702は、サービスプログラムデータ格納部717を参照して処理を実施し、処理結果をサービスプログラムデータ格納部717に格納する。保管主体決定部703は、サービスプログラムデータ格納部717を参照して処理を行い、保管主体をクライアント端末7と判断した場合にはサービスプログラムをサービスプログラムデータ格納部717に格納する。サービスID管理部705は、サービスプログラムについてサービスIDを発行し、サービスプログラムデータ格納部717に格納する。第1実行主体決定部704は、サービスプログラムデータ格納部717及びプロセッサ能力DB719を参照して処理を実行し、処理結果をサービスプログラムデータ格納部717に格納する。
図3及び図4に示したネットワーク・プラットフォーム50及びクライアント端末7又は9についての処理内容については、以下に詳細に説明する。
[サービスプログラムの作成時の処理]
サービスプログラムの作成時の処理については図5乃至図14を用いて説明する。例えばクライアント端末7における管理プログラム71のサービスプログラム開発部701は、SMIを介してサービスプログラム作成要求をネットワーク・プラットフォーム50に送信する(ステップS1)。ネットワーク・プラットフォーム50のCT管理機能モジュール503は、クライアント端末7からサービスプログラム作成要求を受信し(ステップS3)、サービスプログラム作成要素データをSMIを介してクライアント端末7に送信する(ステップS5)。クライアント端末7における管理プログラム71のサービスプログラム開発部701は、ネットワーク・プラットフォーム50からサービスプログラム作成要素データを受信し(ステップS7)、当該サービスプログラム作成要素データを用いてサービスプログラム作成画面を表示する(ステップS9)。例えば図6に示すような画面が表示される。図6の例では、サービスプログラム開発ウインドウと、サービスプログラムのロジックのテンプレート・ウインドウとが表示されている。サービスプログラム開発ウインドウには、ネットワーク・プラットフォーム50において公開されている機能モジュールのリストが含まれ、ここではSIP、RSVP(Resource Reservation Setup Protocol)−TE(Traffic Engineering)、コンテキスト管理、RFID(Radio Frequency-ID)ミドル、メディア変換などの項目が列挙されている。また、各項目をクリックすると、当該項目に係る機能モジュールの機能概要及び入力パラメータ情報が表示されるようになっている。なお、図6ではSIPを選択した場合を示しており、機能概要及び入力パラメータについてはポップアップウインドウなどにて表示しても良い。テンプレート・ウインドウでは、典型的な処理ロジックが選択可能となっており、図6の例では第1段階で何らかの処理を行って、第2段階で条件を判断し、第3段階で条件によって異なる処理を行うというロジックの例が示されている。クライアント端末7のユーザは、サービスプログラム開発ウインドウに表示された内容を参照しつつ、テンプレート・ウインドウに今回作成するサービスプログラムのロジックに合致するロジックを表示させ、各ブロックで行う処理、使用する機能モジュールのID、必要なパラメータを入力する。
なお、クライアント端末7における管理プログラム71のサービスプログラム開発部701は、必要な機能モジュールがクライアント端末7に存在するか確認する(ステップS11)。もし、必要な機能モジュールがクライアント端末7に存在しないと判断した場合には、ネットワーク・プラットフォーム50に対して必要な機能モジュールについて機能モジュール要求をSMIを介して送信する(ステップS13)。ネットワーク・プラットフォーム50のCT管理機能モジュール503は、クライアント端末7から機能モジュール要求を受信する(ステップS15)。ネットワーク・プラットフォーム50のCT管理機能モジュール503は、受信した機能モジュール要求のパケットに含まれるクライアントID等から、要求に係る機能モジュールの送信可否を判断することもある。但し、ネットワーク・プラットフォーム50を利用する上で必要な基本的な機能モジュールであれば、特にチェックする必要はない。CT管理機能モジュール503は、機能モジュール格納部511から要求に係る機能モジュールを読み出し、SMIを介してクライアント端末7に送信する(ステップS17)。クライアント端末7における管理プログラム71のサービスプログラム開発部701は、ネットワーク・プラットフォーム50から要求機能モジュールを受信すると、クライアント端末の記憶装置に格納する(ステップS19)。
ステップS11において必要な機能モジュールがクライアント端末7に存在すると判断された場合及びステップS19の後に、クライアント端末7における管理プログラム71のサービスプログラム開発部701は、例えば図6に示したような画面において、ユーザからのサービスプログラム作成指示を受け付ける(ステップS21)。ネットワーク・プラットフォーム50において利用可能な機能モジュールのID及び必要な入力パラメータのセットが、ロジックを表すテンプレートのブロックにおいて指定されており、ロジックに必要な条件等のデータも指定される。処理は端子Aを介して図7の処理に移行する。
そして、クライアント端末7における管理プログラム71のサービスプログラム開発部701は、受け付けた入力データに従ってサービスプログラムを生成し、記憶装置に格納する(ステップS23)。そして、管理プログラム71のサービスプログラム開発部701は、サービスプログラムを含むサービスプログラム登録要求を、ネットワーク・プラットフォーム50に送信する(ステップS25)。ネットワーク・プラットフォーム50におけるCT管理機能モジュール503のサービスプログラムチェック部5031は、クライアント端末7からサービスプログラムを含むサービスプログラム登録要求を受信し、記憶装置に格納する(ステップS27)。そして、CT管理機能モジュール503のサービスプログラムチェック部5031は、クライアントデータ格納部513を参照して、受信したサービスプログラムに対するチェック処理を実施する(ステップS29)。
例えば、クライアントデータ格納部513には、図8に示すようなデータが格納されている。図8の例では、クライアントIDに対応して利用可能な機能モジュールのIDが登録されている。このような簡単なテーブルではなく、クライアントの所属が定義されたテーブルと、所属と利用可能な機能モジュールのIDとの対応テーブルとを組み合わせる場合もある。CT管理機能モジュール503のサービスプログラムチェック部5031は、サービスプログラム登録要求に含まれるクライアントIDを用いて図8に示すようなテーブルを検索して利用可能な機能モジュールのIDを特定し、サービスプログラムにおいて規定されている全機能モジュールが利用可能か、すなわちサービスプログラムの利用を認可できるか判断する(ステップS31)。
もし、利用不可能な機能モジュールがサービスプログラム中に規定されている場合には、CT管理機能モジュール503のサービスプログラムチェック部5031は、登録拒否通知をクライアント端末7に送信する。クライアント端末7における管理プログラム71のサービスプログラム開発部701は、ネットワーク・プラットフォーム50から登録拒否通知を受信し、表示装置に表示する(ステップS33)。これにて作成したサービスプログラムに問題があることを認識することができる。
一方、クライアント端末7から受信したサービスプログラムにおいて規定されている全機能モジュールが利用可能であると判断された場合には、CT管理機能モジュール503のサービスID管理部5033は、当該サービスプログラムに対してサービスIDを発行し、クライアントデータ格納部513に登録する(ステップS35)。例えば、図9に示すように、クライアントIDに対応してサービスIDが登録される。なお、サービスプログラム自体又は定義されている全機能モジュールのID群をクライアントデータ格納部513又は他のデータ格納部にクライアントIDに対応付けて認証・認可処理のために登録するようにしても良い。サービスIDについては、ネットワーク・プラットフォーム50においてサービスIDがユニークである場合、又はクライアント又はクライアントの集合毎にユニークである場合があるが、いずれの方式を採用することも可能である。
次に、主に実行主体決定部5035は、サービスプログラムを解析し、さらにプロセッサ能力DB5036を参照して、実行主体決定処理を実施する(ステップS37)。ネットワーク・プラットフォーム50における実行主体決定処理については図10を用いて説明する。実行主体決定部5035は、サービスのトリガの検出がクライアント端末であるか判断する(ステップS51)。トリガの検出がクライアント端末である場合とは、例えばトリガが特に規定されていない場合、すなわちユーザに指示によってサービスプログラムが実行される場合や、ICタグ(RFID等とも呼ぶ)の読み出しなどセンサによる検出又は測定などが定義されている場合、その他クライアント端末で発生する特有のイベントがトリガとして規定されている場合である。もし、サービスのトリガの検出がクライアント端末により行われるとは判断されなかった場合には、ネットワーク・プラットフォーム50を実行主体として指定し、サービスプログラムデータ格納部5203に格納する(ステップS63)。なおこの際、サービスプログラムを起動させるトリガについてのデータと実行主体の指定とサービスプログラムの登録を要求したクライアントのIDとをサービスIDに対応づけて格納する。
サービスプログラムデータ格納部5203に格納されるデータの一例を図11に示す。図11に示したデータテーブルは、サービスIDの列と、起動トリガの列と、当該サービスプログラムの登録を要求したクライアントのIDの列と、保管主体の列と、実行主体の列とを含む。すなわち、サービスプログラム毎に、起動トリガ、登録クライアント、保管主体(保管先ネットワークアドレスを含む)及び実行主体が登録され、実際のトリガ検出時に用いる。なお、登録クライアントについては、サービスプログラムの実行を許可されている者が登録されるようにしてもよい。
一方、サービスのトリガの検出がクライアント端末により行われると判断された場合には、当該サービスプログラムが複数のクライアント端末に関係しているか判断する(ステップS53)。サービスプログラムが複数のクライアント端末に関係するという場合は、例えばクライアントのコンテキスト(状態)に応じてデータの送信先のクライアント端末を変更するような場合である。サービスプログラムが複数のクライアント端末に関係すると判断された場合には、ネットワーク・プラットフォーム50を実行主体に指定し、サービスプログラムデータ格納部5203に登録する(ステップS63)。
一方、サービスプログラムが単一のクライアント端末にのみ関係していると判断された場合には、仕事量分析部5037は、受信したサービスプログラムを解析して、当該サービスプログラムの仕事量を算出し、例えばメインメモリなどの記憶装置に格納する(ステップS55)。ここでサービスプログラムの仕事量とは、本実施の形態ではサービスプログラムのステップ数Ni(例えばアセンブラ言語レベルでのステップ数。但し、サービスプログラムがコンパイルされない言語で記述される場合には当該言語におけるステップ数の場合もある)と、状態遷移数Nsと、利用する機能モジュールの種類数Nfとを重み付けして加算した値を用いる。例えば、仕事量をf(Ni,Ns,Nf)という関数で表すとすると、f(Ni,Ns,Nf)=aNi+bNs+cNfと表される。なお、Niが支配的な要素として、係数を決定しておく。b=c=0としてもよい。仕事量分析部5037は、サービスプログラムを解析して、上で述べたようにサービスプログラムのステップ数Niと、状態遷移数Nsと、種類数Nfとを計数し、上で述べた式に従って仕事量f(Ni,Ns,Nf)を算出し、記憶装置に格納する。そして、仕事量分析部5037は、実行主体決定部5035に、算出した仕事量f(Ni,Ns,Nf)のデータを出力する。
実行主体決定部5035は、プロセッサ能力DB5036を参照し、クライアント端末のプロセッサ能力Ppのデータを読み出す。クライアント端末の種別については、パケットに含まれる端末IDから特定する(例えば端末IDに種別コードが含まれる)ようにしてもよいし、別途ステップS25において送信されるパケットに端末種別データが含まれる場合もある。そして、実行主体決定部5035は、クライアント端末の性能を表すプロセッサ能力とサービスプログラムの仕事量とを用いてクライアント端末の無負荷時性能Puを算出し、記憶装置に格納する(ステップS57)。無負荷時性能Puは、そのクライアント端末において実行している他のプログラムが無く、そのサービスプログラムだけを実行する際に、単位時間でどの程度の量の仕事を処理することができるかを表す。すなわち、Pu=Pp/f(Ni,Ns,Nf)を算出し、記憶装置に格納する。
そして、実行主体決定部5035は、クライアント端末の無負荷時性能Puが所定の閾値J1以上であるか判断する(ステップS59)。もし、クライアント端末の無負荷時性能Puが所定の閾値J1以上であると判断された場合には、クライアント端末を実行主体に指定し、サービスプログラムデータ格納部5203に格納する(ステップS61)。
このように、トリガの検出場所及びクライアント端末とサービスプログラムとの関係に従って、実行主体を決定する。サービスプログラムの登録時においては、トリガが実際に検出された際のクライアント端末の状態は分からないので、上で述べたような判断基準にて実行主体を決定することにより、サービスプログラムの登録時における実行主体の最適化が図られている。
図7の説明に戻って、次に、保管主体決定部5034は、保管主体決定処理を実施する(ステップS39)。この保管主体決定処理については図12を用いて説明する。基本的にサービスプログラムは、サービス実行主体と同じ所に保管しておくと、サービスプログラムをダウンロードする必要がなく、迅速性の面で優れる。そこで、保管主体決定部5034は、サービスプログラムデータ格納部5203を参照して、当該サービスプログラムの実行主体がクライアント端末に設定されているか確認する(ステップS71)。サービスプログラムの実行主体がクライアント端末ではなくネットワーク・プラットフォーム50である場合には、ネットワーク・プラットフォーム50において保管した方がサービスプログラムの迅速な実行が可能となるので、ネットワーク・プラットフォーム50を保管先に指定し、サービスプログラムデータ格納部5203に格納する(ステップS73)。さらに、サービスプログラム自体についてもサービスプログラムデータ格納部5203に格納する。
一方、サービスプログラムの実行主体がクライアント端末である場合には、クライアントに対して使用状況を問い合わせる(ステップS75)。保管主体決定処理をネットワーク・プラットフォーム50で実行する際には、クライアント端末に対して「本サービスプログラムを他人と共用するか」及び「外出先から頻繁にネットワーク・プラットフォーム50にアクセスするか」という質問を表示させ、クライアントに対して回答を促すようなデータを送信する。クライアント端末は、当該データを受信し、表示装置に表示して、クライアントに回答を求める。クライアントは上で述べたような質問にYes又はNoで回答して、クライアント端末は回答データをネットワーク・プラットフォーム50に返信する。
保管主体決定部5034は、クライアント端末から回答データを受信し、記憶装置に格納する。そしてステップS77以降の処理を実施する。すなわち、回答データに基づき、当該サービスプログラムを他人と共用するか判断する(ステップS77)。本サービスプログラムを他人と共用するという回答がなされていれば、ネットワーク・プラットフォーム50及びクライアント端末を保管先に指定し、サービスプログラムデータ格納部5203に格納する(ステップS83)。なお、クライアント端末を保管先に指定する場合には、当該クライアント端末のネットワーク・アドレスも登録しておく。場合によってはクライアント端末からダウンロードしなければならない場合もあるからである。サービスプログラム自体についてもサービスプログラムデータ格納部5203に格納する。
一方本サービスプログラムを他人と共用しないという回答がなされていれば、回答データに基づき、クライアントが外出先からネットワーク・プラットフォーム50に頻繁にアクセスするか判断する(ステップS79)。外出先からネットワーク・プラットフォーム50に頻繁にアクセスするという回答がなされていれば、ネットワーク・プラットフォーム50及びクライアント端末を保管先に指定し、サービスプログラムデータ格納部5203に格納する(ステップS83)。さらに、サービスプログラム自体についてもサービスプログラムデータ格納部5203に格納する。一方、外出先からネットワーク・プラットフォーム50にあまりアクセスしないという回答がなされていれば、クライアント端末を保管先に指定し、サービスプログラムデータ格納部5203に格納する(ステップS81)。
このようにサービスプログラムの実行主体に応じて保管先を決定することにより、迅速な実行が可能となり、高性能なサービス処理が可能となる。更に、想定される使用状況を考慮して保管先を決定することにより、利便性が向上する。例えば、複数人がサービスプログラムを共用する場合に、サービスプログラムをネットワーク・プラットフォーム50に保管することで、ある端末だけに保管する場合に比べダウンロードが容易になる。またサービスプログラムを外出先から頻繁に利用する場合も、サービスプログラムをネットワーク・プラットフォーム50に保管することで、容易にダウンロードし、その場でそのサービスプログラムを実行させることが可能になる。
図7の処理の説明に戻って、CT管理機能モジュール503は、サービスプログラムデータ格納部5203を参照して、実行主体の指定(NP又はCT)、保管主体の指定(CT/NP/CT及びNP)及びサービスIDを含む登録完了通知を生成し、クライアント端末7に送信する(ステップS41)。
クライアント端末7における管理プログラム71のサービスプログラム開発部701は、ネットワーク・プラットフォーム50から、実行主体の指定、保管主体の指定及びサービスIDを含む登録完了通知を受信し(ステップS43)、サービスIDと実行主体及び保管主体の指定データとをサービスプログラムデータ格納部717に格納する(ステップS45)。サービスプログラムデータ格納部717に格納されるデータの一例を図13に示す。図13のデータテーブルは、サービスIDの列と、サービスプログラムのステップ数Niの列と、サービスプログラムの状態遷移数Nsの列と、サービスプログラムの利用機能モジュール数Nfの列と、起動トリガの列と、登録クライアントの列と、保管主体の列と、実行主体の列とを含む。サービスプログラム開発部701は、受信したサービスIDと実行主体及び保管主体の指定データを、サービスIDの列、保管主体の列及び実行主体の列に登録する。なお、実行主体がクライアント端末である場合には、この段階にて仕事量分析部702にサービスプログラムを解析させ、Ni、Ns及びNfを計数させ、サービスプログラムデータ格納部717に格納させるようにしてもよい。そうすれば、トリガが発生した際にサービスプログラムを解析する必要が無くなるためである。さらに、実行主体がクライアント端末である場合には、サービスプログラム開発部701は、サービスプログラムを解析し、当該サービスプログラムの起動トリガ及び登録クライアントIDについても、それぞれ起動トリガの列及び登録クライアントの列に登録する。
そして、サービスプログラム開発部701は、サービスプログラムデータ格納部717に格納された保管主体のデータに従って、クライアント端末が保管先に指定されている場合には、登録されたサービスプログラムをサービスプログラムデータ格納部717に格納する(ステップS47)。
以上のような処理を実施することにより、サービスプログラムの実行準備が完了する。なお、ネットワーク・プラットフォーム50において実行主体を決定する場合には、仕事量(f(Ni,Ns,Nf))をクライアント端末7において計算することがないので、例えばステップS45の後に、仕事量分析部702が仕事量(f(Ni,Ns,Nf))を算出し、サービスプログラムデータ格納部717に格納するようにしてもよい。そうすれば、トリガが発生した際にサービスプログラムを解析する必要が無くなるためである。
上で述べた例では実行主体及び保管主体の決定並びにサービスIDの発行をネットワーク・プラットフォーム50において決定する例を示したが、必ずネットワーク・プラットフォーム50において実行しなければならないわけでない。
次にサービスプログラムの実行主体及び保管主体の決定並びにサービスIDの発行をクライアント端末において行う場合について説明する。なお、図5に示した処理については同様であるから、端子A以降の処理について図14を用いて説明する。
クライアント端末7における管理プログラム71のサービスプログラム開発部701は、受け付けた入力データに従ってサービスプログラムを生成し、記憶装置に格納する(ステップS91)。そして、管理プログラム71のサービスプログラム開発部701は、サービスID管理部705にサービスプログラムに対するサービスIDを発行させる(ステップS93)。サービスID管理部705は、発行したサービスIDを記憶装置に格納する。そして、サービスプログラム開発部701は、発行したサービスID及び生成したサービスプログラムを含むサービスプログラム登録要求を、ネットワーク・プラットフォーム50に送信する(ステップS95)。ネットワーク・プラットフォーム50におけるCT管理機能モジュール503のサービスプログラムチェック部5031は、クライアント端末7からサービスID及びサービスプログラムを含むサービスプログラム登録要求を受信し、記憶装置に格納する(ステップS97)。そして、CT管理機能モジュール503のサービスプログラムチェック部5031は、クライアントデータ格納部513を参照して、受信したサービスプログラムに対するチェック処理を実施する(ステップS99)。
例えば、クライアントデータ格納部513は、図8に示すようなデータが格納されている。CT管理機能モジュール503のサービスプログラムチェック部5031は、サービスプログラム登録要求に含まれるクライアントIDを用いて図8に示すようなテーブルを検索して利用可能な機能モジュールのIDを特定し、サービスプログラムにおいて規定されている全機能モジュールが利用可能か、すなわちサービスプログラムの利用を認可できるか判断する(ステップS101)。
もし、利用不可能な機能モジュールがサービスプログラム中に規定されている場合には、CT管理機能モジュール503のサービスプログラムチェック部5031は、登録拒否通知をクライアント端末7に送信する。クライアント端末7における管理プログラム71のサービスプログラム開発部701は、ネットワーク・プラットフォーム50から登録拒否通知を受信し、表示装置に表示する(ステップS103)。これにて作成したサービスプログラムに問題があることを認識することができる。
一方、クライアント端末7から受信したサービスプログラムにおいて規定されている全機能モジュールが利用可能であると判断された場合には、CT管理機能モジュール503のサービスID管理部5033は、受信した当該サービスプログラムのサービスIDをクライアントデータ格納部513及びサービスプログラムデータ格納部5203に登録する(ステップS105)。例えば、図9に示すように、クライアントIDに対応してサービスIDが登録される。また図11に示すデータテーブルにレコードを生成し、サービスIDを登録する。なお、サービスプログラム自体又は定義されている全機能モジュールのID群をクライアントデータ格納部513又は他のデータ格納部にクライアントIDに対応付けて認証・認可のために登録するようにしても良い。
サービスプログラムチェック部5031は、サービスIDの登録完了通知を生成し、クライアント端末7に送信する(ステップS107)。クライアント端末7のサービスプログラム開発部701は、ネットワーク・プラットフォーム50からサービスIDの登録完了通知を受信し、サービスプログラムデータ格納部717に登録する(ステップS109)。サービスプログラムデータ格納部717に登録されるデータは図13に示したようなデータであり、ここではサービスID及び登録クライアントIDが登録される。
次に、サービスプログラム開発部701は、第1実行主体決定部704に実行主体決定処理を実施させる(ステップS111)。第1実施主体決定部704による実行主体決定処理は、基本的には図10に示した処理と同様であるが、ステップS111の場合には、サービスプログラムデータ格納部717と、第1実行主体決定部704と、仕事量分析部702と、プロセッサ能力DB719を用いて実施される。そして、サービスプログラムデータ格納部717に格納されるデータは、図13に示したようなデータであって、ステップS111における実行主体決定処理において、Ni、Ns、Nf、起動トリガ及び実行主体が登録される。
さらに、保管主体決定部703は、保管主体決定処理を実施する(ステップS113)。保管主体決定部703による保管主体決定処理は、基本的には図12に示した処理と同様であるが、ステップS113の場合には、サービスプログラムデータ格納部717と、保管主体決定部703とを用いて実施される。また、使用状況の問い合わせについては、保管主体決定部703がクライアントに対して直接行う。なお、ステップS113における保管主体決定処理において、サービスプログラムデータ格納部717に保管主体が登録される。
そして、サービスプログラム開発部701は、サービスプログラムデータ格納部717を参照して、実行主体及び保管主体の指定データをネットワーク・プラットフォーム50に送信する(ステップS115)。なお、サービスIDも送信することによりサービスプログラムを識別する。ネットワーク・プラットフォーム50におけるCT管理機能モジュール503は、実行主体及び保管主体の指定データを受信し、同じく受信したサービスIDに対応してサービスプログラムデータ格納部5203に登録する(ステップS117)。そして、CT管理機能モジュール503は、保管主体の指定データに基づいて、保管主体がネットワーク・プラットフォーム50であれば、ステップS97で受信し記憶装置に格納されたサービスプログラムをサービスプログラムデータ格納部5203に格納する(ステップS121)。
一方、クライアント端末7における管理プログラム71の保管主体決定部703は、保管主体の指定データに基づき、保管主体がクライアント端末であれば、ステップS91で生成し記憶装置に格納されたサービスプログラムをサービスプログラムデータ格納部717に格納する(ステップS119)。
このような処理に置換してもサービスプログラムの実行準備を実行することができるようになる。
また、このようにすれば、SCIを介してネットワーク・プラットフォーム50に対してサービスを要求する際に、図2(b)に示すようなパケットを生成して送信することができ、ネットワーク・プラットフォーム50からは、ユーザにカスタマイズされたサービスプログラムにおいて規定されたサービスを受けることができるようになる。
なお、図5の処理フローでは、クライアント端末のための機能モジュールをステップS11乃至S19で必要であればダウンロードするような構成を示したが、例えばクライアント端末が登録完了通知を受信した後に、サービスプログラムの実行に必要となる機能モジュールをさらにダウンロードするようにしても良い。また、ステップS11乃至S19を実施せず、登録完了通知を受信した後にサービスプログラムの実行に必要となる機能モジュールをダウンロードするようにしても良い。
[サービスプログラムの実行処理]
次に、クライアント端末においてトリガを検出して処理を開始する場合について図15を用いて説明する。クライアント端末7におけるサービスプログラム実行処理部710のトリガ検出部711は、トリガとなるイベントの発生を探索しており、何らかのトリガが発生すると、当該トリガのデータを取得する(ステップS131)。そしてトリガ検出部711は、当該トリガのデータをサービスプログラム特定部712に出力する。サービスプログラム特定部712は、サービスプログラムデータ格納部717を参照して、実行すべきサービスプログラムを特定する(ステップS133)。例えば図13における起動トリガの列を探索して、検出されたトリガに合致するサービスプログラムが登録されているか判断する(ステップS135)。なお、現在クライアント端末7を使用しているクライアントが登録クライアント(許可クライアント)であるかをさらに確認するようにしてもよい。
ここで、検出されたトリガに対応して実行すべきサービスプログラムが登録されていないと判断された場合には処理を終了する。一方、実行すべきサービスプログラムが登録されていると判断された場合には、第2実行主体決定部713は、プロセッサ能力DB719を検索して本クライアント端末のプロセッサ能力を読み出し、サービスプログラムデータ格納部717から実行すべきサービスプログラムのステップ数Ni、状態遷移数Ns及び利用する機能モジュール数Nfを読み出し、上で述べたような方法で無負荷時性能を算出し、記憶装置に格納する(ステップS137)。もしNi,Ns及びNfが未計数の場合には、仕事量分析部702に計数させた上で、第2実行主体決定部713に無負荷時性能を算出させるようにしてもよい。また、図13では無負荷時性能の値については登録されていないが、例えばサービスプログラムの登録時に算出した値を登録しておき、ステップS137において当該値を読み出すようにしてもよい。そして、無負荷時性能が所定の閾値以下であるか判断する(ステップS139)。
もし無負荷時性能が所定の閾値以下であると判断された場合には、クライアント端末7では当該サービスプログラムを実行させると、クライアント端末7の通常の動作に悪影響を及ぼしたり、もしくは処理に多くの時間がかかるなど、満足する性能が得られない可能性があるため、サービスプログラム登録段階で、ネットワーク・プラットフォーム50に実行を委託することになる。従って、第2実行主体決定部713は実行委任処理部718にネットワーク・プラットフォーム50に対する実行委任処理を実施させる。すなわち、実行委任処理部718は、検出されたトリガのデータ及び実行すべきサービスプログラムのサービスIDを含む実行委任要求を生成し、ネットワーク・プラットフォーム50に送信する(ステップS155)。
これ以降の処理については図16を用いて説明する。ネットワーク・プラットフォーム50におけるサービスプログラム実行処理部520の実行受託処理部5204は、トリガのデータ及び実行すべきサービスプログラムのサービスIDを含む実行委託要求を受信する(ステップS161)。そして、実行受託処理部5204は、サービスプログラムデータ格納部5203を参照して、サービスIDで特定されるサービスプログラムを保持しているか確認する(ステップS163)。もし保持しているようであればステップS169に移行する。一方、サービスプログラムを保持していないと判断された場合には、サービスプログラムデータ格納部5203を参照して、当該サービスプログラムの保管主体のデータ(保持しているクライアント端末のネットワーク・アドレス)からサービスプログラムの保管先を特定し、サービスIDを含むサービスプログラム要求をサービスプログラム保管先に送信する(ステップS165)。クライアント端末7が保管先である場合には、管理プログラム71はサービスプログラムデータ格納部717からサービスIDに対応するサービスプログラムのデータを読み出し、ネットワーク・プラットフォーム50に送信する。ネットワーク・プラットフォーム50の実行受託処理部5204は、サービスプログラムを受信し、サービスプログラムデータ格納部5203を格納する(ステップS167)。
ステップS167の後に又はステップS163でサービスプログラムを保持していると判断された場合には、実行受託処理部5204は、実行を委任されたサービスプログラムを実行させる(ステップS169)。サービスプログラムは、ネットワーク・プラットフォーム50に設けられている機能モジュールを用いて実行を行い、サービスプログラムの処理結果を実行受託処理部5204に出力する。実行受託処理部5204は、サービスプログラムの処理結果を取得し(ステップS171)、当該処理結果を実行委任元のクライアント端末7に送信する(ステップS173)。そして元の処理に戻る。
このようにサービスプログラムの処理をクライアント端末において行わずにネットワーク・プラットフォーム50に実行させることができるため、クライアント端末の処理負荷を上げることなくネットワーク・サービスを受けることができるようになる。
図15の説明に戻って、実行委任処理部718は、ネットワーク・プラットフォーム50からサービスプログラムの処理結果を受信し、必要であれば対応する機能モジュールを起動する(ステップS157)。例えば、HTML形式で処理結果を受信した場合には、ウェブ(Web)ブラウザを起動させ、表示させる。メール形式であればメールクライアントを起動させ、メールを表示させる。その他実行委任処理部718が、自ら処理結果を表示させるようにしてもよい。
一方ステップS139において無負荷時性能が所定の閾値を上回っていると判断された場合には、第2実行主体決定部713は、CPU使用率取得部715にOSなどからCPU使用率を取得させ、CPU使用率格納部716に格納させる(ステップS141)。その後、第2実行主体決定部713は、CPU使用率格納部716とサービスプログラムデータ格納部717とプロセッサ能力DB719とを参照して、CPU使用率とプロセッサ能力と仕事量算出の基となるデータ(Ni,Ns及びNf)とを取得し、それらのデータから実負荷時性能を算出し、記憶装置に格納する(ステップS143)。ここではクライアント端末において既に実行されている他のジョブを考慮し、プロセッサの余剰能力をベースにサービスプログラムの実行が与える影響を分析しなければならない。従って、まずプロセッサ余剰能力Pr=プロセッサ能力Pp×(1−CPU使用率)と定義する。そして、クライアント端末の実負荷時性能Plを、Pr/f(Ni,Ns,Nf)=Pr/(aNi+bNs+cNf)と定義する。
そして第2実行主体決定部713は、実負荷時性能Plが所定の閾値(ステップS139における閾値とは異なる場合もある)以下であるか判断する(ステップS145)。実負荷時性能Plが所定の閾値以下と判断された場合には、ステップS155に移行して、当該サービスプログラムの実行をネットワーク・プラットフォーム50に委託する。一方、実負荷時性能Plが所定の閾値を上回っていると判断された場合には、第2実行主体決定部713は、サービスプログラムデータ格納部717を参照して、実行すべきサービスプログラムを保持しているか判断する(ステップS147)。もし、保持していないと判断された場合には、第2実行主体決定部713は、ダウンロード部714にネットワーク・プラットフォーム50に対して実行すべきサービスプログラムのサービスIDを含むサービスプログラム要求を送信させる(ステップS149)。
ネットワーク・プラットフォーム50のCT管理機能モジュール503は、サービスプログラム要求をクライアント端末から受信すると、サービスプログラムデータ格納部5203から読み出し、要求元のクライアント端末に返信する。これに対して、ダウンロード部714は、ネットワーク・プラットフォーム50からサービスプログラムを受信し、サービスプログラムデータ格納部717に格納する(ステップS151)。そして、第2実行主体決定部713又はダウンロード部714は、サービスプログラムを実行させる(ステップS153)。この後はサービスプログラムを通常通り実行すればよい。
上で述べたような条件を満たせば迅速且つ適切にクライアント端末においてサービスプログラムを実行することができる。また、条件を満たしていない場合においても、ネットワーク・プラットフォーム50に実行を委託することができるため、クライアントはクライアント端末に処理余裕がない場合でもネットワーク・サービスを受けることができる。
なお、クライアントがいつも使用していないクライアント端末を使用する際に、特定のサービスプログラムを実行させる指示を行うと、当該クライアント端末のサービスプログラムデータ格納部717には特定のサービスプログラムのデータが登録されていない場合もあるが、このような場合サービスプログラムはユーザにより指定されるので、ステップS135からステップS137に移行するものとする。
次に、ネットワーク・プラットフォーム50においてトリガが検出された場合の処理について図17を用いて説明する。ネットワーク・プラットフォーム50におけるサービスプログラム実行処理部520のトリガ検出部5201は、トリガとなるイベントの発生を探索しており、何らかのトリガが発生すると、当該トリガのデータを取得する(ステップS181)。そしてトリガ検出部5201は、当該トリガのデータをサービスプログラム特定部5202に出力する。サービスプログラム特定部5202は、サービスプログラムデータ格納部5203又はクライアントデータ格納部513を参照して、検出されたトリガが登録クライアントについてのトリガであるか判断する(ステップS183)。例えば図11のようなデータテーブルにおける登録クライアントの列に登録されているクライアントであるか、若しくは図8又は図9に示すようなデータテーブルにおけるクライアントIDの列に登録されているクライアントであるかを判断する。もし、検出されたトリガが登録クライアントについてのトリガではないと判断された場合には処理を終了する。
一方、検出されたトリガが登録クライアントについてのトリガであると判断された場合には、サービスプログラム特定部5202は、サービスプログラムデータ格納部5203を参照して、当該検出されたトリガに関連するサービスプログラムが定義されているか判断する(ステップS185)。例えば、図11のデータテーブルにおいて起動トリガの列に、検出されたトリガが登録されているか否かで判断する。もし、検出されたトリガに関連するサービスプログラムが定義されていないと判断された場合には、処理を終了する。そして、検出されたトリガに関連するサービスプログラムが定義されていると判断された場合には、サービスプログラム特定部5202は、実行すべきサービスプログラム(例えば検出されたトリガに対応するサービスID及びクライアントIDから特定)を保持しているか確認する(ステップS187)。
もし実行すべきサービスプログラムを保持している場合にはステップS193に移行する。一方、実行すべきサービスプログラムを保持していない場合には、サービスプログラム特定部5202は、ダウンロード部5205にダウンロードさせる。すなわち、ダウンロード部5205は、サービスプログラムデータ格納部5203に格納されている保管主体のデータから保管先を特定し、サービスプログラム要求を当該保管先に送信する(ステップS189)。クライアント端末7が保管先であれば、クライアント端末7の管理プログラム71が、サービスプログラムデータ格納部717から、要求されたサービスプログラムを読み出し、ネットワーク・プラットフォーム50に送信する。ダウンロード部5205は、クライアント端末7から要求に係るサービスプログラムを受信し、サービスプログラムデータ格納部5203に格納する(ステップS191)。
ステップS187において実行すべきサービスプログラムを保持していると判断された場合、又はステップS191の後に、サービスプログラムを実行させる(ステップS193)。必要に応じてサービスプログラムの処理結果はクライアント端末に送信される。
このようにすれば、迅速且つ適切にネットワーク・プラットフォーム50においてサービスプログラムを実行することができる。なお、実行主体決定部5206については、再度クライアント端末又はネットワーク・プラットフォーム50における特定のサーバの状態を調査してクライアント端末又は特定のサーバにおいてサービスプログラムを実行すべきか判断するようにしてもよいが、通常ネットワーク・プラットフォーム50についてはクライアント端末より処理能力の余裕があるため、実行主体決定部5206を用いた処理を行わずともよい。
[サービスプログラムの具体的な処理態様]
(1)クライアント端末におけるサービスプログラムの実行(クライアント指示あり)
次に、クライアント端末7においてクライアントにより特定のサービスプログラムの実行が指示され、そのままクライアント端末7において特定のサービスプログラムを実行する場合について説明する。なお、最初に、図18乃至図20を用いて、前提となる、メッセージ及びパケットの組立、分解、及び振分方法について説明する。
図18で示すように、サービスプログラム#1又はサービスプログラム#2は、動作データ(例えば特定の機能モジュールの起動要求及び必要なパラメータ)を生成すると、動作データをメッセージ組み立て機能モジュール72に出力する。メッセージ組み立て機能モジュール72に出力されるデータは、図19(1)に示されるようなデータである。基本的には、動作データだけであるが、サービスプログラムを識別するために動作データと共にサービスIDが出力される場合もある。メッセージ組み立て機能モジュール72は、さらに端末ID及びクライアントIDを付加してパケット組立部73に出力する。すなわち、図19(2)に示すようなデータがメッセージとして構成される。なお、メッセージ組立機能モジュール72とパケット組立部73とのインターフェースは、通常の通信インターフェースであり、パケット組立部73は、特定の通信プロトコルに従って例えばネットワーク・アドレスを含むパケットヘッダを付加する。図19(3)に示されるようなデータが生成される。
次に、ネットワーク・プラットフォーム50においては、パケット分解部521が、特定の通信プロトコルに従ってクライアント端末からのパケットを受信して、当該パケットに含まれるメッセージ(動作データ、サービスID、端末ID及びクライアントID)を抽出し、通信インターフェースを介してメッセージ分解機能モジュール522に出力する。メッセージは図19(4)に示されるようなデータである。メッセージ分解機能モジュール522は、メッセージを受け取ると、クライアントID、端末ID、サービスID及び動作データを分解して、クライアントID、端末ID、サービスIDを認証・認可機能モジュール501及び課金機能モジュール502に出力する。なお、応答の返信のため、パケット分解部521が、パケットヘッダに含まれるネットワーク・アドレスをメッセージ分解機能モジュール522に出力し、メッセージ分解機能モジュール522において、クライアントID、端末ID又はサービスIDに対応してネットワーク・アドレスを記憶装置に格納しておく場合もある。
認証・認可機能モジュール501は、クライアントデータ格納部513を参照して、クライアントID及びサービスIDを用いてサービス認可を行う。但し、従来どおり、クライアントID及び端末IDにてネットワーク・プラットフォーム50の利用可否を判断し、別途クライアントIDとパスワードなどのデータにより本人認証を行う。また、課金機能モジュール502は、主にクライアントIDを用いて課金処理を実施する。なお、サービスID等をさらに用いて課金処理を実施する場合もある。そうすると、例えば使用する機能毎に料金が異なる場合には、サービスIDから利用した機能を特定して機能毎の利用状況を特定して、請求を行うことができる。なお、端末IDについては、複数の端末に同一のIDを付与したり、端末IDにより特定のグループに属する端末であることを特定することができるため、端末IDも、あるユーザグループが1つの端末を使用するときの課金に用いる場合もある。さらに、不特定多数のユーザの利用を想定した公共端末等の場合には、あるクライアントが定義したサービスを実行することを認可するか否かを端末IDを用いて判断するようにしても良い。
なお、認証・認可機能モジュール501は、さらに、クライアントデータ格納部513を参照して、図8に示すようなクライアントIDと利用可能な機能モジュールのIDとの対応付けに基づき、動作データにおいて指定されている起動機能モジュールの利用可否を判断するようにしても良い。この際、起動機能モジュールの特定については、認証・認可機能モジュール501が行っても良いし、以下で述べるメッセージディスパッチャ523によって行っても良い。又は、図8のようなデータではなく、クライアントIDと登録サービスプログラム又は登録サービスプログラムにおいて定義されている全機能モジュールのID群との対応付けから判断する場合もある。
そして、クライアントID及びサービスIDによるサービス認可が得られると、メッセージ分解機能モジュール522は、図19(5)及び(6)に示すように、動作データのみ、又は動作データ及びサービスIDをメッセージディスパッチャ523に出力する。メッセージディスパッチャ523は、動作データを解析して出力先の機能モジュールを特定して、当該機能モジュールに動作データを出力する。図19(5)及び(6)に示すように、この際メッセージディスパッチャ523は、どのサービスプログラムによる要求であるかを識別するためサービスIDを付加して出力する場合もある。
なお、メッセージディスパッチャ523が、クライアントデータ格納部513(図8等)を参照して、動作データにおいて指定されている利用機能モジュールの利用可否を判断するようにしても良い。また、基本的には動作データには、利用(すなわち起動)される機能モジュールの指定が含まれるが、機能モジュールの指定を含まないようにして必要なパラメータのみを含むようにしても良い。このような場合には、例えばクライアントID及びサービスIDとサービスプログラム自体又はサービスプログラムにおいて定義されている全機能モジュールのID群との対応付けをサービスプログラムデータ格納部5203に登録しておき、クライアントID及びサービスIDにより特定されるサービスプログラムにおける状態を動作データに含まれるパラメータにて特定し、当該サービスプログラムにおける状態に応じてパラメータを出力すべき機能モジュールを特定するようにしてもよい。
このようにしてクライアント端末におけるサービスプログラムの要求がネットワーク・プラットフォーム50における適切な機能モジュールに伝達される。
次に、ネットワーク・プラットフォーム50からクライアント端末に応答を返す場合の処理を図20を用いて説明する。まず、ネットワーク・プラットフォーム50における機能モジュール#1又は機能モジュール#2は動作データ(処理結果)又は動作データ及びサービスIDをメッセージ組み立て機能モジュール524に出力する。出力されるデータは、図19(1)と同様である。また、メッセージ組み立て機能モジュール524は、要求元クライアントを特定し、端末ID、クライアントIDをさらに付加してメッセージを構成し、パケット組立部525に出力する。構成されたメッセージは、図19(2)に示したようなデータである。要求元クライアントの特定については、図18のメッセージ分解機能モジュール522及びメッセージディスパッチャ523と連携することにより行うか、又は図9に示したデータ及びクライアントIDに対応して端末ID等が格納されているクライアントデータ格納部513を利用するなどにて行われる。そして、パケット組立部525は、クライアントID又は端末IDに対応するネットワーク・アドレスを含むパケットヘッダを含むパケットを生成して、クライアント端末に送信する。送信されるパケットは、図19(3)と同様である。
クライアント端末においては、パケット分解部74は、図19(3)のようなパケットを受信すると、パケットヘッダを取り除き、メッセージ部分をメッセージ分解機能モジュール75に出力する。メッセージ部分の構成は図19(4)と同様である。そして、メッセージ分解機能モジュール75は、メッセージに含まれる動作データ、又は動作データ及びサービスIDを抽出し、メッセージディスパッチャ76に出力する。この段階で出力されるデータは、図19(5)又は(6)と同様である。メッセージディスパッチャ76は、動作データを解析するか又はサービスIDに従って、サービスプログラム#1又はサービスプログラム#2に動作データ又は動作データ及びサービスIDを出力する。
このような処理を行うことにより、動作データが適切にクライアント端末とネットワーク・プラットフォーム間でやり取りされるようになる。なお、ネットワーク・アドレスと機能モジュールとは直接関係付けられていないので、ネットワーク・プラットフォーム50における機能モジュールの追加や変更をわざわざクライアント端末に通知する必要はないというメリットもある。
次に、図18乃至図20に示したメッセージ及びパケットの組立、分解、及び振分方法を前提に、図21乃至図25を用いて、上でも述べたようにクライアントがクライアント端末7に対して特定のサービスプログラムの実行を指示した場合における、メッセージのやりとりについての具体的な処理フローを説明する。ここでは、例えばクライアント端末7におけるサービスプログラム#1において、図21に示すようなロジックが定義されているものとする。すなわち、最初に特定の端末(又はユーザ)についての状況理解としてコンテキスト管理機能モジュール#cに対して問い合わせを行い、問い合わせへの応答に基づき状況判定を行い、特定の端末の状況が状況#Xであれば機能モジュール#aを起動し、状況#Yであれば機能モジュール#bが起動されるように、サービスプログラム#1が規定されているものとする。また、サービスIDが#0703であり、端末IDが#936であり、クライアントIDが#531であるものとする。
そうすると、クライアント端末7のサービスプログラム#1等は、特定の端末についての状況理解を行うため、機能モジュール#cの起動要求メッセージを生成し、メインメモリ等の記憶装置に格納する(ステップS251)。起動要求メッセージには、クライアントID”#531”と端末ID”#936”とサービスID”#0703”と機能モジュール#cの起動要求と特定の端末の識別情報(又は特定のユーザの識別情報)が含まれる。そして、クライアント端末7のパケット組立部73は、生成された起動要求メッセージと宛先ネットワーク・アドレスを含むパケットを生成し、ネットワーク・プラットフォーム50に送信する(ステップS253)。例えば、図23の(1)に示すようなパケットが生成され、送信される。
一方ネットワーク・プラットフォーム50のパケット分解部521は、クライアント端末7から機能モジュール#cの起動要求メッセージを含むパケットを受信し、記憶装置に格納する(ステップS255)。そして、パケットから機能モジュール#cの起動要求メッセージを抽出する(ステップS257)。また、上でも述べたように、メッセージ分解機能モジュール522は、起動要求メッセージに含まれるクライアントID、端末ID、サービスIDを抽出し、認証・認可機能モジュール501及び課金機能モジュール502に出力する。認証・認可機能モジュール501は、クライアントID及び端末IDについて確認を行い、課金機能モジュール502は、課金処理を実施する(ステップS259)。さらに、認証・認可機能モジュール501は、サービスID及びクライアントIDを用いて当該機能モジュール#cの起動要求を認可できるか確認する(ステップS261)。もし、ステップS259又はS261で問題が検出されれば、クライアント端末7に対して要求処理を実施できない旨のメッセージを返信する。一方、ステップS259及びS261で問題が検出されない場合には、メッセージ分解機能モジュール522から動作データ(ここでは機能モジュール#cの起動要求及びパラメータ)又は動作データ及びサービスIDがメッセージディスパッチャ523に出力され、メッセージディスパッチャ523は、動作データを解析し、当該動作データを機能モジュール#cにディスパッチする(ステップS263)。なお、起動であれば、必要なパラメータを渡して起動させる。
上でも述べたが、機能モジュール#cを起動する前に、機能モジュール#c自体の利用可否(起動可否)を判断するようにしても良い。この場合には、クライアントデータ格納部513内の図8のようなデータを参照して判断しても良いし、さらに上で述べたようにサービスプログラムデータ格納部5203に格納された、クライアントIDとサービスプログラム自体又はサービスプログラムに規定されている機能モジュールのID群との対応付けを参照して判断しても良い。
機能モジュール#cは、動作データに基づき処理を行い(ステップS265)、実行結果(ここでは”機能#c実行結果:状況Y”(例えばユーザAは携帯電話機を持って電車に乗っている))を含む動作データを生成し、当該動作データ又は動作データ及びサービスIDを、メッセージ組み立て機能モジュール524に出力する。メッセージ組み立て機能モジュール524は、クライアントID”#531”、端末ID”#936”及びサービスID”#0703”を付加してメッセージを生成し(ステップS267)、パケット組立部525は、実行結果を含むメッセージにパケットヘッダを付加してパケットを生成し、クライアント端末7に送信する(ステップS269)。本ステップで送信されるパケットは、例えば図23(2)のようなパケットである。
クライアント端末7のパケット分解部74は、ネットワーク・プラットフォーム50から実行結果メッセージを含むパケットを受信し、例えばメインメモリ等の記憶装置に格納する(ステップS271)。処理は端子Bを介して図24に移行する。そして、パケット分解部74は、実行結果メッセージ部分を抽出してメッセージ分解機能モジュール75に出力する(ステップS273)。メッセージ分解機能モジュール75は、実行結果メッセージから実行結果を含む動作データ又は動作データ及びサービスIDを抽出し、メッセージディスパッチャ76に出力し、メッセージディスパチャ76は、動作データを動作データの要求元であるサービスプログラム#1に出力する。
サービスプログラム#1は、動作データに含まれる実行結果を解析し、図21のようなサービスプログラムであれば状況判定を行う(ステップS275)。図23(2)の例では、状況#Yであることが分かるので、機能モジュール#bを起動させることになる。例えば、SIPを用いてVoIP(Voice Over IP)にて発呼する。従って、サービスプログラム#1は、解析結果に従って、機能モジュール#bの起動要求メッセージを生成し(ステップS277)、メインメモリ等の記憶装置に格納する。起動要求メッセージには、クライアントID”#531”と端末ID”#936”とサービスID”#0703”と機能モジュール#bの起動要求と発呼先SIP−URL等のパラメータとが含まれる。そして、クライアント端末7のパケット組立部73は、生成された起動要求メッセージと宛先ネットワーク・アドレスを含むパケットを生成し、ネットワーク・プラットフォーム50に送信する(ステップS279)。例えば、図23の(3)に示すようなパケットが生成され、送信される。
一方ネットワーク・プラットフォーム50のパケット分解部521は、クライアント端末7から機能モジュール#bの起動要求メッセージを含むパケットを受信し、記憶装置に格納する(ステップS281)。そして、パケットから機能モジュール#bの起動要求メッセージを抽出する(ステップS283)。また、上でも述べたように、メッセージ分解機能モジュール522は、起動要求メッセージに含まれるクライアントID、端末ID、サービスIDを抽出し、認証・認可機能モジュール501及び課金機能モジュール502に出力する。認証・認可機能モジュール501は、クライアントID及び端末IDについて確認を行い、課金機能モジュール502は、課金処理を実施する(ステップS285)。さらに、認証・認可機能モジュール501は、サービスID及びクライアントIDを用いて当該機能モジュール#bの起動要求を認可できるか確認する(ステップS287)。もし、ステップS285又はS287で問題が検出されれば、クライアント端末7に対して要求処理を実施できない旨のメッセージを返信する。一方、ステップS285及びS287で問題が検出されない場合には、メッセージ分解機能モジュール522から動作データ(ここでは機能モジュール#bの起動要求及びパラメータ)又は動作データ及びサービスIDがメッセージディスパッチャ523に出力され、メッセージディスパッチャ523は、動作データを解析し、当該動作データを機能モジュール#bにディスパッチする(ステップS289)。なお、起動であれば、必要なパラメータを渡して起動させる。上でも述べたようにこの段階にても機能起動の可否を判断するようにしても良い。
機能モジュール#bは、動作データに基づき処理を行い(ステップS291)、実行結果(ここでは”機能#b実行結果”)を含む動作データを生成し、当該動作データ又は動作データ及びサービスIDを、メッセージ組み立て機能モジュール524に出力する。処理は端子Cを介して図25の処理に移行する。
そして、メッセージ組み立て機能モジュール524は、クライアントID”#531”、端末ID”#936”及びサービスID”#0703”を付加してメッセージを生成し(ステップS293)、パケット組立部525は、実行結果を含むメッセージにパケットヘッダを付加してパケットを生成し、クライアント端末7に送信する(ステップS295)。本ステップで送信されるパケットは、例えば図23(4)のようなパケットである。
クライアント端末7のパケット分解部74は、ネットワーク・プラットフォーム50から実行結果メッセージを含むパケットを受信し、例えばメインメモリ等の記憶装置に格納する(ステップS297)。そして、パケット分解部74は、実行結果メッセージ部分を抽出してメッセージ分解機能モジュール75に出力する(ステップS299)。メッセージ分解機能モジュール75は、実行結果メッセージから実行結果を含む動作データ又は動作データ及びサービスIDを抽出し、メッセージディスパッチャ76に出力し、メッセージディスパッチャ76は、動作データを動作データの要求元であるサービスプログラム#1に出力する。
サービスプログラム#1は、動作データに含まれる実行結果を解析し(ステップS301)、解析結果に従って必要な処理を実施する(ステップS303)。
このようにサービスIDが付加されたメッセージがやりとりされて、サービスプログラムに従って処理が行われていく。
(2)クライアント端末におけるサービスプログラムの実行(クライアントの指示なし)
次に図26及び図27を用いて、サービスプログラム実行処理部710が動作することによりクライアント端末7においてサービスプログラムが実行される場合の処理を説明する。クライアント端末であるPDA(Personal Digital Assistant)は、そのプロセッサの処理能力が低いが、RFID(Radio Frequency ID。ICタグとも呼ぶ)リーダを有しており、当該RFIDリーダによりIDを読み取ることによりサービスプログラムが実行されるものとする。サービスプログラムは、図26に示すようなロジックを含むプログラムであるものとする。すなわち、まずIDを読み取り、IDに対応するURL(Uniform Resource Locator)が既知であるか判断する。もし、IDに対応するURLを既に保持している場合にはサーバアクセスを実施する。一方、IDに対応するURLを保持していない場合、アドレス解決処理を実施し、取得したアドレスを用いてサーバにアクセスする。
次に図27を用いてシステム全体の処理の流れを説明する。クライアント端末であるPDAのRFIDリーダにおいてIDを読み取ると、サービスプログラム実行処理部710のトリガ検出部711は、トリガ発生を検出し、サービスプログラム特定部712はサービスプログラムデータ格納部717を参照して実行すべきサービスプログラムを特定する。ここでは図26に示したようなサービスプログラムが特定されるものとする。そして、当該サービスプログラムがサービスプログラムデータ格納部717に格納されていると、サービスプログラム特定部712は、サービスプログラムを実行させる。ここでは読み取ったIDに対応するURLが不明であるものとする。そうすると、サービスプログラムにおけるアドレス解決処理として、読み取ったID及びアドレス解決処理モジュール531のIDを含むメッセージをネットワーク・プラットフォーム50に送信する(ステップ(1))。ネットワーク・プラットフォーム50のアドレス解決機能モジュール531は、クライアント端末であるPDAから受信したIDを受け取り、ucode解決サーバにIDを含むサイト検索要求を送信する(ステップ(2))。ucode解決サーバは、IDを基にURLを検索し、URLを含む応答メッセージをネットワーク・プラットフォーム50に返信する(ステップ(3))。ネットワーク・プラットフォーム50のアドレス解決機能モジュール531は、ucode解決サーバからURLを含む応答メッセージを受信し、処理結果としてURLを含むメッセージをクライアント端末であるPDAに返信する(ステップ(4))。クライアント端末であるPDAにおけるサービスプログラムは、ネットワーク・プラットフォーム50からURLを含むメッセージを受信すると、URLに基づくサーバアクセスを実施する。例えば、受信したURL及びHTTP(Hyper Text Transfer Protocol)機能モジュール532のIDを含むメッセージをネットワーク・プラットフォーム50に送信する(ステップ(5))。
ネットワーク・プラットフォーム50のHTTP(Hyper Text Transfer Protocol)機能モジュール532は、クライアント端末であるPDAからURLを受信し、URLで指定されるWebサーバに対してGETメッセージを送信する(ステップ(6))。Webサーバは、ネットワーク・プラットフォーム50からGETリクエストを受信し、当該GETリクエストに対するレスポンスとしてHTMLファイル等を、ネットワーク・プラットフォーム50に返信する(ステップ(7))。ネットワーク・プラットフォーム50のHTTP機能モジュール532は、WebサーバからHTMLファイル等を含むレスポンスを受信し、さらにクライアント端末であるPDAに転送する(ステップ(8))。クライアント端末であるPDAのサービスプログラムは、ネットワーク・プラットフォーム50からHTMLファイル等のレスポンスを受信すると、Webブラウザなどの機能モジュールを起動させ、受信したHTMLファイルなどを表示させる。
このようにクライアント端末においてトリガが発生した場合にサービスプログラムをクライアント端末で実行し、ネットワーク・プラットフォーム50からネットワーク・サービスとして、アドレス解決及びHTTP機能の提供を受けることができる。
(3)クライアント端末からのネットワーク・プラットフォームへのサービスプログラムの実行委託
次にクライアント端末であるPDAの余剰処理能力が足りないために、PDAが有するRFIDリーダによりIDを読み取った場合に、クライアント端末であるPDAでは当該読み取ったIDを処理するサービスプログラムを実行できない場合を図28を用いて説明する。
クライアント端末であるPDAのRFIDリーダにおいてIDを読み取ると、サービスプログラム実行処理部710のトリガ検出部711はトリガ発生を検出し、サービスプログラム特定部712はサービスプログラムデータ格納部717を参照して実行すべきサービスプログラムを特定する。ここでは図26に示したようなサービスプログラムが特定されるものとする。そして、第2実行主体決定部713は、実負荷時性能が所定の閾値以下であると判断し、実行委任処理部718を起動する。実行委任処理部718は、検出されたトリガのデータ及び当該トリガを取り扱うサービスプログラムのサービスIDを含む実行委託要求メッセージをネットワーク・プラットフォーム50に送信する(ステップ(1))。
ネットワーク・プラットフォーム50におけるサービスプログラム実行処理部520の実行受託処理部5204は、クライアント端末であるPDAから、検出されたトリガのデータ及びサービスプログラムのサービスIDを含む実行委任要求を受信すると、サービスプログラムデータ格納部5203を参照してサービスIDで特定されるサービスプログラムを保持しているか確認する。そしてサービスIDで特定されるサービスプログラムを保持していない場合には、実行受託処理部5204はダウンロード部5205に保管先のクライアント端末であるPDAに対して実行すべきサービスプログラムのサービスIDを含むサービスプログラム要求を送信させる(ステップ(2))。クライアント端末であるPDAにおける管理プログラム71は、サービスプログラム要求を受信すると、サービスプログラムデータ格納部717から要求に係るサービスプログラムを読み出し、ネットワーク・プラットフォーム50に返信する(ステップ(3))。ネットワーク・プラットフォーム50におけるサービスプログラム実行処理部520のダウンロード部5205は、クライアント端末であるPDAからサービスプログラムを受信する。そして、実行受託処理部5204は、サービスプログラム533を実行させると共に、当該サービスプログラム533に対して予め受信しているトリガのデータをサービスプログラム533に出力する(ステップ(4))。
サービスプログラム533は、図26に示したロジックに従って、アドレス解決機能モジュール531を起動すると共に、トリガのデータであるRFIDのIDを出力する(ステップ(5))。アドレス解決機能モジュール531は、サービスプログラム533からIDを受け取り、ucode解決サーバにIDを含むサイト検索要求を送信する(ステップ(7))。ucode解決サーバは、受信したIDを基にURLを検索し、URLを含む応答メッセージをネットワーク・プラットフォーム50に返信する(ステップ(8))。ネットワーク・プラットフォーム50のアドレス解決機能モジュール531は、ucode解決サーバからURLを含む応答メッセージを受信し、処理結果としてURLをサービスプログラムに出力する(ステップ(9))。ネットワーク・プラットフォーム50において実行されているサービスプログラム533は、アドレス解決機能モジュール531からURLを受信すると、URLに基づくサーバアクセスを実施する。例えば、HTTP機能モジュール532を起動すると共に、受け取ったURLを出力する(ステップ(10))。
ネットワーク・プラットフォーム50のHTTP機能モジュール532は、URLを受け取り、URLで指定されるWebサーバに対してGETメッセージを送信する(ステップ(11))。Webサーバは、ネットワーク・プラットフォーム50からGETリクエストを受信し、当該GETリクエストに対するレスポンスとしてHTMLファイル等を、ネットワーク・プラットフォーム50に返信する(ステップ(12))。HTTP機能モジュール532は、WebサーバからHTMLファイル等を含むレスポンスを受信し、サービスプログラムに出力する(ステップ(13))。ネットワーク・プラットフォーム50において実行されているサービスプログラム533は、HTMLファイル等のレスポンスを受け取ると、処理結果であるHTMLファイル等のレスポンスを実行受託処理部5204に出力する(ステップ(14))。
実行受託処理部5204は、サービスプログラムから処理結果であるHTMLファイル等のレスポンスをクライアント端末であるPDAに送信する(ステップ(15))。クライアント端末であるPDAの実行委任処理部718は、処理結果であるHTMLファイル等のレスポンスを受信し、Webブラウザなどの機能モジュールを起動させ、受信したHTMLファイルなどを表示させる。
このようにPDA等のクライアント端末が他のジョブで処理余力を有しない場合であっても、ネットワーク・プラットフォーム50に実行を委託することができ、ネットワーク・プラットフォーム50では委託されたサービスプログラムの実行を行い、処理結果をPDA等のクライアント端末に返すことができる。すなわち、クライアント端末でサービスプログラムを実行したのと同様の処理結果を得ることができる。
なお、アドレス解決機能モジュール531の処理結果であるURLをサービスプログラム533に一旦戻し、サービスプログラム533からHTTP機能モジュール532を起動させる構成を示しているが、アドレス解決機能モジュール531の機能としてアドレス解決機能モジュール531がHTTP機能モジュール532と直接やりとりを行うようにしてもよい。これは図27についてのケースでも同様である。
(4)ネットワーク・プラットフォーム50においてトリガを検出し、サービスプログラムを実行する場合
例えば図29のようなサービスプログラムの場合には、ネットワーク・プラットフォーム50におけるサービスプログラム実行処理部520のトリガ検出部5201がトリガである電話の着信を検出し、サービスプログラム特定部5202がサービスプログラムを実行させる。
図29の例では、特定のクライアントについての着信に応じて、当該特定のクライアントについてのコンテキスト取得(状態取得)処理を実施する。その結果として、特定のクライアントが在席中であって話中であれば、留守番電話機能モジュール等にメッセージの蓄積処理を行わせる。一方、特定のクライアントが在席中であって取り込み中であれば、メール送信機能モジュール等にメール送信処理を行わせる。さらに、特定のクライアントが在席中であって取り込み中でもない場合には、特定のクライアントの電話機に着信させるため例えばSIP機能モジュールに処理を実施させる。一方、特定のクライアントが在席中ではなく離席中である場合には、メール送信機能モジュール等にメール送信処理を行わせる。また、特定のクライアントが在席中ではなく外出中(離席中ではない)であり、本日が休日であれば、留守番電話機能モジュール等にメッセージの蓄積処理を行わせる。一方、特定のクライアントが在席中ではなく外出中であり、本日が平日であれば、転送機能モジュール等に、予め定められた特定のクライアントの携帯電話機に着信を転送させる。
このような場合には、ネットワーク・プラットフォーム50においてサービスプログラムの処理は完結しており、特定のクライアントのクライアント端末では、サービスプログラムとは関係なく保持している機能モジュールを用いてネットワーク・サービスの提供を受ける。
以上のように、ネットワークサービス提供のための各種APIが用意されており、クライアント端末のユーザ又はソフトウエア開発者は、必要に応じて機能モジュールを組み合わせて使用するようなサービスプログラムを作成することができる。さらに、特定のサービスを利用する場合にはサービスプログラムだけを用意すればよいので、特定のサービス全体をシステム化するより開発工数及び期間を減らすことができる。また、サービスプログラム自身の更新は容易であり、ネットワーク・プラットフォーム50側の機能モジュールが更新されれば全てのクライアントが改良された機能を利用可能となる。さらに、必要に応じてクライアント端末には機能モジュールをダウンロードできるため、元々機能をあまり有さない端末であっても多様な、また高度なサービスを利用することができるようになる。
また、サービスプログラムの実行主体は、サービスプログラムの登録(定義)時に、サービスプログラムとクライアント端末との関係から、クライアント端末又はネットワーク・プラットフォーム50に設定される。しかし、サービスプログラムの実行時に再度他のジョブなどに悪影響を及ぼすことなく実行可能であるかを確認して、さらに実行主体を決定するため、サービスプログラムの適切な実行を行うことができる。また、保管主体についても、トリガの検出場所、クライアント端末又はサービスプログラムの使用状況に応じて決定されるため、柔軟且つ適切な実行も可能となる。
なお、クライアントが複数のクライアント端末を使用しているような場合、ネットワーク・プラットフォーム50の所定のストレージに使用するサービスプログラムを保管しておき、クライアントの指示により、現在使用中のクライアント端末にダウンロードしてから当該サービスプログラムを実行させるようにしても良い。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、SMIを介したサービスプログラムの作成処理について説明したが、別途ネットワーク・プラットフォーム50において提供される機能モジュールの詳細などを入手することができれば、別途入手した情報に基づきサービスプログラムを作成するようにしても良い。また、サービスプログラムの登録についてもネットワークを介さずに、別途確認及び登録するような手順を採用する場合もある。
また、ネットワーク・プラットフォーム50は、1台のコンピュータにより実現せずに複数台のコンピュータにより機能分担したり、一部の機能については並列又は分散処理を実施する場合もある。
また、サービス認可についてはメッセージに他のデータ(例えば、サービスプログラムの改ざんがなされていないことを照明するデータ(ハッシュ値又は電子証明書など))を付加して確認する場合もある。
さらに、ネットワーク・プラットフォーム50における機能モジュール毎に、利用可能なクライアントを規定しておき、クライアントIDと動作データに含まれる利用機能モジュールIDとを用いて、機能モジュール毎に利用の可否を判断するようにしてもよい。また、図8に示したようなクライアントIDと機能モジュールIDとの対応テーブルのみを用いて機能モジュールの利用可否を判断しても良い。
さらに、図3及び図4に示した機能ブロック図は一例であって、必ずしも実際のプログラム・モジュールに対応しない場合もある。
なお、ネットワーク・プラットフォーム50を実現する1又は複数のコンピュータ及びクライアント端末は、コンピュータ装置であって、図30に示すように、メモリ2501(記憶装置)とCPU2503(処理装置)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施の形態における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本発明の実施の形態では、上で述べた処理を実施するためのアプリケーション・プログラムはリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
(付記1)
ネットワーク・プラットフォーム側で提供される機能のうちクライアントによって利用される機能の組み合わせ方が定義されているサービスプログラムに関する情報処理方法であって、
前記サービスプログラムを解析して、前記サービスプログラムを起動させるトリガの検出がクライアント端末であるかネットワーク・プラットフォーム側であるか判断するステップと、
前記サービスプログラムを起動させるトリガの検出がクライアント端末であると判断された場合、前記サービスプログラムとクライアント端末との関係に関する条件が満たされているか判断するステップと、
前記条件が満たされていると判断された場合には、前記サービスプログラムの実行主体をクライアント端末として決定するステップと、
を含み、コンピュータにより実行される情報処理方法。
(付記2)
前記条件が、前記サービスプログラムにおいて単一のクライアント端末に関連する処理が規定されているという条件を含むことを特徴とする付記1記載の情報処理方法。
(付記3)
前記条件が、前記サービスプログラムがクライアント端末に生じさせる処理負荷と当該クライアント端末の処理能力との関係についての条件を含むことを特徴とする付記1記載の情報処理方法。
(付記4)
前記クライアント端末の処理能力が、無負荷時の処理能力であることを特徴とする付記1記載の情報処理方法。
(付記5)
前記サービスプログラムを起動させるトリガの検出がネットワーク・プラットフォーム側と判断された場合又は前記条件が満たされていないと判断された場合に、前記サービスプログラムの実行主体をネットワーク・プラットフォームとして決定するステップと、
実行主体がネットワーク・プラットフォームであると決定されたサービスプログラムを、前記ネットワーク・プラットフォーム側に保管させるステップと、
をさらに含む付記1記載の情報処理方法。
(付記6)
前記サービスプログラムの実行主体をクライアント端末として決定した場合、当該サービスプログラム又は前記クライアント端末の想定される使用状況に関するデータに応じて、当該サービスプログラムの保管先をクライアント端末のみ又は当該クライアント端末及び前記ネットワーク・プラットフォームの両方のいずれかに決定するステップ
をさらに含む付記1記載の情報処理方法。
(付記7)
前記想定される使用状況に関するデータが、前記サービスプログラムの共用の有無と、前記サービスプログラム又は前記クライアント端末を複数箇所で使用するか否かとのうち少なくともいずれかのデータを含む付記6記載の情報処理方法。
(付記8)
ネットワーク・プラットフォーム側で提供される機能のうちクライアント側に利用許可された機能の組み合わせ方に関し前記クライアント側で定義され且つ前記ネットワーク・プラットフォーム側に識別情報が登録されているサービスプログラムに関する情報処理方法であって、
特定のトリガを検出するステップと、
前記特定のトリガに対応する前記サービスプログラムを特定するステップと、
特定された前記サービスプログラムの実行が前記クライアント端末に所定レベル以上影響を与えるか判断する判断ステップと、
特定された前記サービスプログラムの実行が前記クライアント端末に所定レベル以上影響を与えることがないと判断された場合には、当該特定された前記サービスプログラムを実行させるステップと、
を含み、クライアント端末により実行される情報処理方法。
(付記9)
特定された前記サービスプログラムが前記クライアント端末に所定レベル以上影響を与えると判断された場合には、前記特定のトリガに関するデータ及び前記サービスプログラムの識別情報を含む実行要求を前記ネットワーク・プラットフォームに送信するステップと、
前記ネットワーク・プラットフォームから前記サービスプログラムによる処理結果を受信するステップと、
をさらに含む付記8記載の情報処理方法。
(付記10)
特定された前記サービスプログラムの実行が前記クライアント端末に所定レベル以上影響を与えることはないと判断された場合には、当該特定された前記サービスプログラムを保持しているか判断するステップと、
特定された前記サービスプログラムを保持していないと判断された場合には、前記ネットワーク・プラットフォームからダウンロードするステップと、
をさらに含む付記8記載の情報処理方法。
(付記11)
前記判断ステップにおいて、
前記サービスプログラムが前記クライアント端末に生じさせる処理負荷と前記クライアント端末の処理能力との関係が所定の条件を満たしているか判断する
ことを特徴とする付記8記載の情報処理方法。
(付記12)
前記クライアント端末の処理能力が、現在の余裕処理能力であることを特徴とする付記11記載の情報処理方法。
(付記13)
ネットワーク・プラットフォーム側で提供される機能のうちクライアント側に利用許可された機能の組み合わせ方に関し前記クライアント側で定義され且つ前記ネットワーク・プラットフォーム側に識別情報が登録されているサービスプログラムに関する情報処理方法であって、
トリガを検出するステップと、
検出された前記トリガが取扱可能なトリガであるか判断する判断ステップと、
検出された前記トリガが取扱可能なトリガであると判断された場合、検出された前記トリガに対応するサービスプログラムを特定するステップと、
特定された前記サービスプログラムを実行するステップと、
を含み、ネットワーク・プラットフォームにより実行される情報処理方法。
(付記14)
前記判断ステップが、
検出された前記トリガが、前記ネットワーク・プラットフォームを利用可能なクライアントに関連するトリガであるか判断するステップと、
検出された前記トリガが前記ネットワーク・プラットフォームを利用可能なクライアントに関連するトリガであると判断された場合、検出された前記トリガに関連するサービスプログラムが定義されているか確認するステップと、
を含む付記13記載の情報処理方法。
(付記15)
付記1乃至14のいずれか1つ記載の情報処理方法をコンピュータに実行させるためのプログラム。
(付記16)
ネットワーク・プラットフォーム側で提供される機能のうちクライアントによって利用される機能の組み合わせ方が定義されているサービスプログラムに関する情報処理を行うコンピュータであって、
前記サービスプログラムを解析して、前記サービスプログラムを起動させるトリガの検出がクライアント端末であるかネットワーク・プラットフォーム側であるか判断する手段と、
前記サービスプログラムを起動させるトリガの検出がクライアント端末であると判断された場合、前記サービスプログラムとクライアント端末との関係に関する条件が満たされているか判断する手段と、
前記条件を満たしていると判断された場合には、前記サービスプログラムの実行主体をクライアント端末として決定する手段と、
を有するコンピュータ。
(付記17)
ネットワーク・プラットフォーム側で提供される機能のうちクライアント側に利用許可された機能の組み合わせ方に関し前記クライアント側で定義され且つ前記ネットワーク・プラットフォーム側に識別情報が登録されているサービスプログラムに関する情報処理を実施する端末装置であって、
特定のトリガを検出する手段と、
前記特定のトリガに対応する前記サービスプログラムを特定する手段と、
特定された前記サービスプログラムの実行が前記クライアント端末に所定レベル以上影響を与えるか判断する判断手段と、
特定された前記サービスプログラムの実行が前記クライアント端末に所定レベル以上影響を与えることはないと判断された場合には、当該特定された前記サービスプログラムを実行させる手段と、
を有する端末装置。
(付記18)
ネットワーク・プラットフォーム側で提供される機能のうちクライアント側に利用許可された機能の組み合わせ方に関し前記クライアント側で定義され且つ前記ネットワーク・プラットフォーム側に識別情報が登録されているサービスプログラムに関するコンピュータ・システムであって、
トリガを検出する手段と、
検出された前記トリガが取扱可能なトリガであるか判断する判断手段と、
検出された前記トリガが取扱可能なトリガであると判断された場合、検出された前記トリガに対応するサービスプログラムを特定する手段と、
特定された前記サービスプログラムを実行する手段と、
を有するコンピュータ・システム。