(57)【要約】  要求に合ったサービスを管理し選択するシステムにおいて、クライアントアプリケーションは、機能を実行するためのメッセージを発行できる。サービスプロキシは、クライアントアプリケーションからそのメッセージを受け取り、１以上の規則に基づき、複数のサービスの中から前記機能を実行するためのサービスを特定できる。サービスプロキシは、その特定したサービスにメッセージを送り、前記機能を実行させることができる。またはサービスプロキシは、特定したサービスの識別情報をクライアントアプリケーションに送ることができる。クライアントアプリケーションは、特定したサービスの識別情報をサービスプロキシから受け取ると、前記機能を実行させるためのメッセージを当該特定したサービスへ送ることができる。【選択図】図２
2007521770.tif 000002
【特許請求の範囲】
【請求項１】
機能を実行するためのメッセージを受け取ると当該機能を実行すべく動作する複数のサービスと、
前記機能を実行するための前記メッセージを発行すべく動作する少なくとも１つのクライアントアプリケーションと、
前記クライアントアプリケーションから前記メッセージを受け取り、少なくとも１つの規則に基づき前記複数のサービスから前記機能を実行するための１つの選択サービスを特定すべく動作する、前記クライアントアプリケーションと前記複数のサービスとに機能的に結合したサービスプロキシとを備える、分散拡張型デジタル資産システム。
【請求項２】
前記サービスプロキシは、前記規則に基づき前記選択サービスを特定すると、当該選択サービスへメッセージを送るべく動作する、請求項１の分散拡張型デジタル資産システム。
【請求項３】
前記サービスプロキシは、前記クライアントアプリケーションへ前記選択サービスの識別情報を送るべく動作する、請求項１の分散拡張型デジタル資産システム。
【請求項４】
前記クライアントアプリケーションは、前記サービスプロキシから前記選択サービスの識別情報を受け取ると、前記選択サービスへメッセージを送るべく動作する、請求項３の分散拡張型デジタル資産システム。
【請求項５】
前記規則は、オブジェクトおよびバーブの少なくとも１つからなる、請求項１の分散拡張型デジタル資産システム。
【請求項６】
前記オブジェクトは、前記システムの構成要素を記述する、請求項５の分散拡張型デジタル資産システム。
【請求項７】
前記バーブは、前記サービスプロキシが前記オブジェクトに対して実行できる動作である、請求項５の分散拡張型デジタル資産システム。
【請求項８】
機能を実行するためのメッセージを受け取り、
前記メッセージを受け取ると、選択サービスの特定を支援する少なくとも１つの規則に基づき、複数のサービスから前記機能を実行するための１つの選択サービスを特定し、
前記規則に基づき前記選択サービスを特定すると、前記選択サービスへメッセージを送る各段階を備える、複数のサービスを管理する方法。
【請求項９】
前記規則は、分散ネットワーク環境の構成要素を記述したオブジェクトからなる、請求項８の方法。
【請求項１０】
前記規則は、前記オブジェクトに対して実行可能な少なくとも１つの動作たるバーブからなる、請求項９の方法。
【請求項１１】
前記規則は、最もコスト効率よく前記機能を実行可能な選択サービスの特定を支援する、請求項８の方法。
【請求項１２】
前記規則は、前記機能を実行するために利用可能な選択サービスの特定を支援する、請求項８の方法。
【請求項１３】
前記規則は、前記機能を実行するために利用可能であって前記機能を最もコスト効率よく実行可能である選択サービスの特定を支援する、請求項８の方法。
【請求項１４】
機能の実行を要求するクライアントアプリケーションからメッセージを受け取り、
前記メッセージを受け取ると、選択サービスの特定を支援する少なくとも１つの規則を用いて、複数のサービスから前記機能を実行するための１つの選択サービスを特定し、
前記機能を実行するために使用する前記選択サービスを特定する命令を前記クライアントアプリケーションへ送る各段階を備える、分散ネットワーク環境において複数のサービスを管理する方法。
【請求項１５】
前記命令を受け取ると、前記クライアントアプリケーションから前記選択サービスへメッセージを送る段階を備える、請求項１４の方法。
【請求項１６】
前記規則は、分散ネットワーク環境の構成要素を記述したオブジェクトからなる、請求項１４の方法。
【請求項１７】
前記規則は、前記オブジェクトに対して実行可能な少なくとも１つの動作たるバーブからなる、請求項１６の方法。
【請求項１８】
前記規則は、最もコスト効率よく前記機能を実行可能な選択サービスの特定を支援する、請求項１４の方法。
【請求項１９】
前記規則は、前記機能を実行するために利用可能な選択サービスの特定を支援する、請求項１４の方法。
【請求項２０】
加入者へデジタル資産を配信するメッセージを受け取ると、当該加入者への当該デジタル資産の配信を支援すべく動作する複数のサービスと、
前記デジタル資産を配信する前記メッセージを発行すべく動作するクライアントアプリケーションと、
前記クライアントアプリケーションから前記メッセージを受け取り、少なくとも１つの規則を使用して前記複数のサービスから前記デジタル資産を配信するための１つの選択サービスを特定すべく動作する、前記クライアントアプリケーションと前記複数のサービスとに機能的に結合したサービスプロキシとを備える、分散デジタル資産システム。
【請求項２１】
前記サービスプロキシは、オブジェクトおよびバーブの少なくとも１つを持った前記規則を実行すべく動作する規則エンジンをさらに備える、請求項２０の分散デジタル資産システム。
【請求項２２】
前記オブジェクトは、前記システムの構成要素を記述する、請求項２１の分散デジタル資産システム。
【請求項２３】
前記バーブは、前記規則エンジンが前記オブジェクトに対して実行できる動作である、請求項２１の分散デジタル資産システム。
【請求項２４】
前記サービスプロキシは、選択サービスが利用可能か否かに応じて選択サービスを特定すべく動作する、請求項２０の分散デジタル資産システム。
【請求項２５】
前記サービスプロキシは、最もコスト効率の良い方法で前記加入者へ前記デジタル資産を配信できる選択サービスを特定すべく動作する、請求項２０の分散デジタル資産システム。
【請求項２６】
前記サービスプロキシは、前記加入者へ配信する前記デジタル資産に基づき選択サービスを特定すべく動作する、請求項２０の分散デジタル資産システム。
【請求項２７】
前記サービスプロキシは、選択サービスを特定すると当該選択サービスへメッセージを送るべく動作する、請求項２０の分散デジタル資産システム。
【請求項２８】
前記サービスプロキシは、選択サービスを特定すると前記クライアントアプリケーションへ当該選択サービスの識別情報を送るべく動作する、請求項２０の分散デジタル資産システム。
【請求項２９】
前記クライアントアプリケーションは、前記サービスプロキシから前記選択サービスの識別情報を受け取ると、前記選択サービスへメッセージを送るべく動作する、請求項２８の分散デジタル資産システム。
【請求項３０】
前記選択サービスは、前記メッセージを受け取ると、前記加入者へ前記デジタル資産を配信すべく動作する、請求項２０の分散デジタル資産システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は広くケーブルテレビネットワークに関する。さらに詳しくは、本発明はサービスプロキシとサービスプロキシ規則エンジンとを使用することで、要求に合ったサービスを選択し、どのサービスを使用するかを決定することに関する。
【０００２】
背景技術
最近まで従来のケーブルテレビシステムは、占有的な単一配信業者システムが一般的であった。このようなケーブルテレビシステムは、新しいシステム構成要素やサービスを追加または統合する時、ソフトウエアコードやハードウエアの調整を必要とした。そのためかかるシステムは拡張性がなく変更や拡張に費用がかさんだ。
【０００３】
業界標準アーキテクチャ（ＩＳＡ）等の工業システム規格は、ケーブルテレビシステムの拡張性を向上し、多業者による構成要素およびサービス間の「プラグアンドプレイ」相互運用を可能にした。図１に示す多業者システムの一例１０において、１以上の多業者による映画オンデマンド（ＭＯＤ）アプリケーション１００１、１００２、１００３は、ＩＳＡ等のシステム規格を使って１以上の多業者によるＭＯＤサービス１２０Ａおよび１２０Ｂと対話できる。例えばＭＯＤアプリケーション１００１は、他の配信業者が提供するＭＯＤサービス１２０Ａを介して要求加入者に映画を配信できる。
【０００４】
従来技術において、各ＭＯＤサービス１２０Ａおよび１２０Ｂは、特定グループの加入者または重なったグループの加入者にサービスを提供できる。また各ＭＯＤサービス１２０Ａおよび１２０Ｂは、特定地域に住む加入者にサービスを提供するか、特定層の加入者にサービスを提供できる。例えば図１に示すように、ＭＯＤサービス１２０Ａは、地域１、２、および３に住む加入者にサービスを提供し、ＭＯＤサービス１２０Ｂは、地域１および２に住む加入者にサービスを提供する。
【０００５】
各ＭＯＤアプリケーション１００１、１００２、１００３は、規則またはビジネスロジック１３０１、１３０２、１３０３を使用し、ＭＯＤサービス１２０Ａ、１２０Ｂのいずれを使って特定の加入者に映画を配信するかを決定する。例えばＭＯＤアプリケーション１００１、１００２、１００３は、ビジネスロジック１３０１、１３０２、１３０３を使用し、ＭＯＤサービス１２０Ａ、１２０Ｂのいずれが利用可能か、ＭＯＤサービス１２０Ａ、１２０Ｂのいずれが要求加入者に最も近いか、あるいはＭＯＤサービス１２０Ａ、１２０ＢのいずれがＭＯＤアプリケーション１００１、１００２、１００３にとって最も安価であるかを決定できる。
【０００６】
図１の従来の多業者システム１０は、従来の占有ケーブルテレビシステムよりも有利であるが、いくつかの限界を有する。第１に、システム１０は拡張や縮小が容易でない。例えば、システム１０は追加のＭＯＤサービス１２０Ｃを統合して地域３の加入者の需要を支援する必要がある場合、各ＭＯＤアプリケーション１００１、１００２、１００３とそれに対応するビジネスロジック１３０１、１３０２、１３０３とを変更し、新しいＭＯＤサービス１２０Ｃを認識し支援しなければならない。
【０００７】
システム１０の他の限界として、各ＭＯＤアプリケーション１００１、１００２、１００３は、異なるビジネス規則またはビジネスロジック１３０１、１３０２、１３０３を実行し、加入者へ映画を配信するためのＭＯＤサービス１２０Ａ、１２０Ｂ、１２０Ｃを決定せねばならない。各ＭＯＤアプリケーション１００１、１００２、１００３は、映画の配信を調整することにより、ＭＯＤサービス１２０Ａ、１２０Ｂ、１２０Ｃを効率的に使用できるが、この方法は加入者へ映画を動的に配信しない。さらに複数のＭＯＤアプリケーション１００１、１００２、１００３間の調整は、資源の割り当てを複雑にし、加入者への映画配信の管理を極めて困難にし、システム資源の効率的使用を妨げる。
【０００８】
従って当分野は、ケーブルテレビシステムの拡張および縮小を容易にしケーブル加入者の需要に応えられるシステムおよび方法を必要としている。さらに当分野は、多大な技術的努力や出費を伴わずにケーブルテレビシステムにおいて多業者のアプリケーションおよびサービスを簡単に効率的に統合するためのシステムおよび方法を必要としている。さらにまた当分野は、多業者の構成要素間にシステム資源を割り当て、最大限の自動化を行い、各資源の効率的使用を促進するシステムおよび方法を必要としている。
【０００９】
発明の概要
本発明は、前記問題を解決するため、要求に合ったサービスを管理し選択するためのシステムおよび方法を提供する。本発明の一態様において、クライアントアプリケーションは、機能を実行するためのメッセージを発行できる。サービスプロキシは、前記クライアントアプリケーションから前記メッセージを受け取り、１以上の規則に基づき、前記機能を実行するための１つのサービスを複数のサービスから特定できる。本発明の一態様において、前記サービスプロキシは、前記規則に基づいて前記機能を実行するサービスを特定すると、前記特定したサービスにメッセージを送り、前記機能を実行させることができる。本発明の他の態様において、前記サービスプロキシは、前記クライアントアプリケーションに前記特定したサービスの識別情報を送ることができる。前記クライアントアプリケーションは、前記サービスプロキシから前記特定したサービスの前記識別情報を受け取ると、前記特定したサービスへ、前記機能を実行するためのメッセージを送ることができる。
【００１０】
本発明の様々な態様は、以下に開示する実施例の詳細説明を読むと共に、図面および請求の範囲を参照することにより、より明確に理解できるであろう。
【００１１】
発明の実施の形態の詳細な説明
以下に示す実施例は、広くケーブルテレビ産業の範疇において説明するが、当業者には明らかな通り、本発明は、特定サービスへの要求を満たすためどのサービスを選択し使用するかを決定するあらゆるアプリケーションにおいて実施可能である。
【００１２】
本発明の一実施例において、加入者は、システムが提供するサービスを受けるため、要求を行う。クライアントアプリケーションは、サービスプロキシへメッセージを送り、サービスが要求されたことを当該サービスプロキシに伝える。サービスプロキシは、規則エンジンを使用し、複数のサービスのどれを使って加入者の要求を満たすかを決定する。サービスプロキシは、規則エンジンが実行する１以上の規則に基づき、要求を満たすためにどのサービスを使用するかを決定し、選択したサービスへメッセージを送り、要求を遂行させる。
【００１３】
本発明の他の実施例において、加入者は、システムが提供するサービスを受けるため、要求を行う。クライアントアプリケーションは、サービスプロキシへメッセージを送り、サービスが要求されたことを当該サービスプロキシに伝える。サービスプロキシは、規則エンジンを使用し、複数のサービスのどれを使って加入者の要求を満たすかを決定する。サービスプロキシは、規則エンジンが実行する１以上の規則に基づき、要求を満たすためにどのサービスを使用するかを決定し、クライアントアプリケーションへメッセージを送り、どのサービスを使用するかを知らせる。クライアントアプリケーションは、選択されたサービスへメッセージを送り、要求を遂行させる。
【００１４】
図を参照し、本発明の実施例および動作環境例を説明する。図において同一番号は同一構成要素を示す。
【００１５】
図２は、１以上の加入者へサービスを配信するためのシステム２００の各構成要素を示す。システム２００は、１以上のクライアントアプリケーション２１０１、２１０２、２１０３．．．２１０ｎを備える。クライアントアプリケーション２１０１、２１０２、２１０３．．．２１０ｎは、１以上の配信業者が提供できる。
【００１６】
システム２００は、１以上のサービス２４０Ａ、２４０Ｂ、２４０Ｃ．．．２４０Ｎをさらに備える。これらサービス２４０Ａ、２４０Ｂ、２４０Ｃ．．．２４０Ｎは、クライアントアプリケーション２１０１、２１０２、２１０３．．．２１０ｎが発行する要求を遂行できる。
【００１７】
システム２００は、サービスプロキシ２２０をさらに備える。サービスプロキシ２２０は、サービスプロキシ規則エンジン（規則エンジン）２３０を使用する。規則エンジン２３０は、ビジネスロジックまたは「規則」を使用し、いずれのサービス２４０Ａ、２４０Ｂ、２４０Ｃ．．．２４０Ｎを使用してクライアントアプリケーション２１０１、２１０２、２１０３．．．２１０ｎから特定の加入者へサービスを配信するかを決定する。例えばサービスプロキシ２２０は、規則エンジン２３０を使用し、サービス２４０Ａ、２４０Ｂ、２４０Ｃ．．．２４０Ｎのいずれが最も安価な選択か、サービス２４０Ａ、２４０Ｂ、２４０Ｃ．．．２４０Ｎのいずれが利用可能か、サービス２４０Ａ、２４０Ｂ、２４０Ｃ．．．２４０Ｎのいずれが特定の加入者に最も近いかを決定する。
【００１８】
サービスプロキシ２２０は、規則エンジン２３０を使用し、システム２００内の様々な構成要素に基づいて決定を行う。システム２００は、極めて柔軟であり将来のハードウエアおよびサービスを支援できるような構成であるため、規則エンジン２３０は具体的な指定をせずに会話を定義する。新しいサービスおよびハードウエアを追加すると、それらは規則エンジン２３０自体に少しの変更を行うだけであるいは全く変更せずに規則エンジン２３０へ追加することができる。
【００１９】
規則エンジン２３０は、オブジェクト、バーブ、およびイベントへの抽象的参照を支援する。一実施例において、規則の形式は「オブジェクトがこの基準に合うなら、そのオブジェクトに対してこのバーブを実施せよ」である。他の実施例において、規則の形式は「イベントを受け取ったら、オブジェクトに対してこのバーブを実施せよ」である。さらに別の実施例は複雑な規則を作ることもできる。例えば「イベントを受け取りかつオブジェクト（イベント）がこの基準に合うなら、オブジェクト（一致基準）に対してバーブを実施せよ」である。
【００２０】
オブジェクト、バーブ、およびイベントに対して抽象的参照を使うことにより、規則エンジン２３０は様々なタスクを実行できる。例えば規則エンジン２３０は、前記例の規則を使用することにより、映画オンデマンドサービス２４０から期限切れファイルを取り除くことができる。この規則は例えば次のようなものである。「if TimerObject(HourEvent) then MODServer(DeleteContent(Expired))」
一実施例において、規則はＸＭＬ文書で表現する。例えば、前記したように映画オンデマンドサービス２４０から期限切れファイルを取り除く規則の場合、ＸＭＬ文書の表現は次のようであろう。
【００２１】
<?xml version="1.0"?>
<!DOCTYPE ServiceProxyRule SYSTEM
"http://svcproxy/xmldb/svcproxyrule.dtd">
<ServiceProxyRule>
Name="ExpireContentRule"
<Event
Object="Timer"
Event="HourEvent"
</Event>
<Action
Object="AllMODservers"
Criteria="FindContent(Expired)"
Verb="DeleteContent"
</Action>
<Action>
ThrowEvent="ExpireContentRule"
</Action>
</ServiceProxyRule>
前記規則ExpireContentRuleの例では、オブジェクトTimerがイベントHourEventを与え、その規則を開始する。すなわちオブジェクトTimerは、イベントHourEventに関するイベントメッセージを発行する。このようなイベントが発生した時に通知を受けようとするプロセスは、前記イベントメッセージが発行された時に通知を受けるように登録する。
【００２２】
より詳細には、システム２００はイベント処理サーバ２５０を備える。イベント処理サーバ２５０は、ネットワーク上の良く知られたアドレスに位置する。イベント処理サーバ２５０は、イベントタイプのリストを管理する。一実施例において、これらイベントタイプは、システム管理者が作成する。他の実施例において、これらイベントタイプはソフトウエアプロセスによって自動的に追加する。
【００２３】
システム２００内の全てのソフトウエアプロセスは、いつでもイベント処理サーバ２５０へイベントメッセージを送ることができる。イベントメッセージは、イベントタイプとそのイベントタイプに関する全ての追加情報とを含む。一実施例において、イベントは「Timer」であり、このイベントはtimerIdおよびtimerStatusフィールドを含むことができる。timerIDは「ウオッチドッグタイマ」等の特定のタイマを識別するものであり、timerStatusは「時間切れ」などイベントが発生した理由を識別するものである。
【００２４】
全てのソフトウエアプロセスは、イベント処理サーバ２５０に登録することで、イベントメッセージを受け取ることができる。一実施例において、登録は追加のフィルタ基準である。例えばプロセスは、フィールドtimerIdが「ウオッチドッグタイマ」である時、タイマイベントを受け取るように登録できる。イベント処理サーバ２５０は、フィールドtimerIdが「ウオッチドッグタイマ」の時にタイマイベントを受け取ると、タイマイベントに登録しかつイベント基準が「ウオッチドッグタイマ」である全てのプロセスにタイマイベントを送る。
【００２５】
規則エンジン２３０は、オブジェクトTimerからイベントHourEventを受け取ると、その規則用のリストの動作を順次処理する。前記例の規則において、第１の動作はAllMODServersと定義したグループに実行する。規則エンジン２３０は、各映画オンデマンドサービスオブジェクト２４０に対し、基準Expiredを使用して動作FindContentを実行する。基準Expiredに合致する全てのコンテンツオブジェクトについて、動作DeleteContentを実行する。規則エンジン２３０は、全ての映画オンデマンドサービス２４０を処理したら、第２動作を実行する。
【００２６】
第２動作は、規則エンジン２３０からイベントExpireContentRuleを発生する。イベントExpireContentRuleは、全ての登録プロセスに対し、関係するコンテンツに対して規則が実行されたことを通知する。当該コンテンツに関係する全てのプロセスは、このイベントを使用し、コンテンツ状態の変化に応じてなすべき処理を開始する。例えば一実施例において、カタログ処理は、利用可能なコンテンツをユーザに表示するカタログから当該コンテンツを削除する。
【００２７】
システム２００の他のプロセスは、このイベントを監視し、それを使って他の動作を開始できる。例えばカタログの記録または更新を開始できる。またオブジェクトMODServerは、各コンテンツオブジェクトが削除された時にイベントを発生することもできる。
【００２８】
オブジェクト
オブジェクトは、システム２００の構成要素を記述するために使う。ケーブルシステムにおけるオブジェクトの例は、映画オンデマンドサービス、ビデオサービス、エンコーダ、スイッチ、およびマルチプレクサである。しかしながら当業者には明らかな通り、オブジェクトはソフトウエアモジュールやファイルも参照できる。一実施例において、一群のビデオコンテンツやそのコンテンツのメタデータを含むファイルもオブジェクトである。
【００２９】
各オブジェクトは、それを検査するための基準セットを有する。また各オブジェクトは、そのオブジェクトに対して実行できるバーブセットを有する。これらバーブは、規則エンジン２３０がそのオブジェクトに対して実行可能な動作である。規則エンジン２３０に１つのオブジェクトを定義すると、そのオブジェクトが支援するバーブも同時に定義される。規則エンジン２３０は、これらバーブを実行することによってオブジェクトへの動作を遂行する。規則エンジン２３０がオブジェクトにバーブを実行する場合、当該バーブを実行するために使用する他のオブジェクトのリストを当該オブジェクトに渡すことができる。
【００３０】
バーブ
バーブは、規則エンジン２３０が認識する動作に関連する。例えば映画オンデマンドサービスオブジェクト２４０の場合、規則エンジン２３０はAddContent(objectId)、DeleteContent(objectId)、FindContent(objectId)等のバーブを支援できる。これらバーブにより、サービスプロキシ２２０は映画オンデマンドサービス２４０のコンテンツを管理できる。当業者には明らかな通り、コンテンツを再生したり、映画オンデマンドサービス２４０の状態および構成を取得することをサービスプロキシ２２０に可能にするようなバーブもある。
【００３１】
オブジェクトは、作成可能なイベントセットを定義することもできる。これらイベントは、オブジェクト上で実行した動作に応じ、サービスプロキシ２２０へ送る。サービスプロキシ２２０は、これらイベントを使用し、当該オブジェクトあるいはシステム２００内の他のオブジェクトを管理する。
【００３２】
本発明の一実施例において、オブジェクトは、拡張マークアップ言語（ＸＭＬ）文書を使って定義する。当業者には明らかな通り、ＸＭＬ文書は、タグ／値の機構を使用し、オブジェクトを記述する。将来の柔軟性を提供するため、オブジェクト定義は追加のタグ／値の記述子を付加することによって拡張できる。下位互換性を維持するため、新しい記述子を認識しないサービスプロキシ２２０の実行において、既存機能を維持する必要がある。サービスプロキシ２２０は、それが認識しない全ての記述子を無視する。これにより、オブジェクトに新しい特徴を付加でき、そのオブジェクトをサービスプロキシ２２０の複数のバージョンで動かせる。記述子は、全てのＸＭＬオブジェクト文書に含め、当該文書のバージョンを作成するために使用したＸＭＬＤＴＤを定義する。サービスプロキシ２２０は、この記述子を使ってＸＭＬオブジェクト文書の扱い方を決定しても良い。
【００３３】
映画オンデマンドサービスオブジェクト２４０を記述するＸＭＬ文書の例を以下に示す。
【００３４】
<MODServer
Name="MainServer">
<Status
AdminStatus="InService"
OperationalStatus=" InService"
StatusDate="01012000"
StatusTime="01:23:41"
</Status>
<Configuration
ServiceGroup="DowntownSGl"
ServiceGroup="DowntownSG2"
ServiceGroup="NorthBurbs"
</Configuration>
<Verbs
Verb="AddObject"
Verb="DeleteObject"
Verb="FindObject"
Verb="PlayObject"
Verb="GetStatus"
Verb="SetAdminStatus"
</Verbs>
<Events
Event="ObjectChange"
Event="StatusChange"
Event="ObjectPlay"
</Events>
</MODServer>
イベント
オブジェクトは、規則エンジン２３０からの命令により、イベントを発生できる。規則エンジン２３０は、このイベントを使用することにより、他の規則の実行を開始できる。システム２００における他のプロセスも、イベント処理サーバ２５０に登録することにより、これらイベントを受け取ることができる。
【００３５】
一般にイベントは、オペレーティングプラットフォームが提供する特定のメッセージングシステムを使用して設定する。OpenStream.CORBAメッセージングシステムを使用する一実施例において、イベントはＣＯＲＢＡ通知サービスを使って送る。OpenStream.NETメッセージングシステムを使用する他の実施例において、．ＮＥＴ基盤を用いてイベントを送る。イベント機構は、プロセス間メッセージング機能を提供する全てのプラットフォームへ移行できる。例えばコンピュータプラットフォームの無制限な基本割り込み処理、ＵＮＩＸ(登録商標)オペレーティングシステムにおけるネイティブ信号処理、ＪＡＶＡ(登録商標)や．ＮＥＴ等の高級言語プロセッサに移行できる。
【００３６】
グルーピング
グルーピングは、システム２００内のオブジェクトを単一名の元にグループ化する。規則エンジン２３０は、その名前に遭遇すると、そのグループ内の各構成要素に動作を行う。
【００３７】
グループを記述するＸＭＬ文書の例を以下に示す。
【００３８】
<?xml version="1.0"?>
<!DOCTYPE Group SYSTEM "http j/serviceproxy/xmldb/group.dtd">
<Group>
Name="AllMODServers"
ObjectType="MODServer"
Object="metroServerl"
Object="metroServer2"
Object="northwestServerl"
Object="northeastServerl"
Object="eastServerl"
Object="westServer1"
</Group>End >
<Group>
Name="mediumUseServers"
ObjectType="MODServer"
Object="headendServerl"
Object="headendServer2"
Object="headendServer3"
Object="southRegionServer"
Object="northRegionServer"
</Group>
<Group>
Name="DCIIServers"
ObjectType="MODServer"
Group="mediumUseservers"
Object="headendServer3"
</Group>
<Group>
Name="modApps"
ObjectType="MODApp"
Object="modAppServer"
Object="tvGuideServer"
Object= "testAppServer"
</Group>
１グループ内の全オブジェクトは、同一オブジェクトタイプに属さねばならない。１グループは別のグループからなることができる。ただし別のグループは、親グループと同じオブジェクトタイプを持たねばならない。
【００３９】
図３は、サービスプロキシ２２０を用いてケーブル加入者へ映画を配信するシステム２００を示すブロック図である。本発明の一実施例において、ケーブル加入者は、オンデマンドで映画を見る要求を行う。その要求は、セッションオブジェクトの形式を取り、コンテンツ要求と加入者情報とからなる。
【００４０】
映画オンデマンドアプリケーション２１０１、２１０２、２１０３、２１０４は、その要求を受け取り、そのケーブル加入者への映画配信を予定する。例えば映画オンデマンドアプリケーション２１０１は、加入者への映画配信要求をサービスプロキシ２２０へ送る。サービスプロキシ２２０は、その要求を受け取ると、規則エンジン２３０を使用し、映画オンデマンドサービス２４０Ａ、２４０Ｂ、２４０Ｃ、２４０Ｄのいずれを使ってケーブル加入者へ映画を配信するかを決定する。例えばサービスプロキシ２２０は、規則エンジン２３０を使用し、映画オンデマンドサービス２４０Ａ、２４０Ｂ、２４０Ｃ、２４０Ｄのいずれがケーブル加入者へ映画を配信するために利用可能か、映画オンデマンドサービス２４０Ａ、２４０Ｂ、２４０Ｃ、２４０Ｄのいずれを使えばケーブル加入者へ映画を配信するために最も安価かあるいは最も効率的か、映画オンデマンドサービス２４０Ａ、２４０Ｂ、２４０Ｃ、２４０Ｄのいずれがケーブル加入者に最も近いかを決定できる。
【００４１】
システム２００内のアプリケーションは、加入者がオンデマンドコンテンツの映画視聴要求を出すと、PlayContentRuleを起動する。一実施例においてPlayContentRuleは、映画オンデマンドアプリケーション２１０１が起動する。PlayContentRuleは、起動すると、要求されたコンテンツの最良位置を決定する。これは、セットトップボックスの位置と、コンテンツストア、ビデオ配信サーバ、ネットワーク経路等の構成要素間の接続性とに基づいて決定する。PlayContentRuleは、要求されたコンテンツの最良位置を決定すると、コンテンツとセットトップボックスとの間に経路を設定し、要求されたコンテンツサーバと、ビデオ配信サーバと、ネットワーク資源とを予約する。PlayContentRuleは、コンテンツとセットトップボックスとの間に接続が完全に確立すると、配信を開始する。
【００４２】
一実施例において、PlayContentRuleは、映画オンデマンドアプリケーション２１０１が起動するが、当業者には明らかな通り、他の実施例において、システム２００内のいずれのアプリケーションがPlayContentRuleを起動しても構わない。例えばPlayContentRuleは、放送コンテンツに広告を挿入するための広告挿入アプリケーションが起動することもできる。
【００４３】
規則エンジン２３０は、要求が含む情報を使用し、加入者にコンテンツを配信するために利用可能な最適映画オンデマンドサービス２４０を決定する。規則エンジン２３０は、このタスクを完遂するため、以下の規則を使用できる。
【００４４】
<?xml version="1.0"?>
<!DOCTYPE ServiceProxyRule SYSTEM
"http://svcproxy/xmldb/svcproxyrule.dtd">
<ServiceProxyRule>
Name="PlayContentRule"
<Event
Object="Content"
Event= "Play"
</Event>
<Action
Name=SelectServer
Object=AllMODServers
Verb=Filter(Server.Asset.IdList Includes Session.Assetld)
If (Result.Count = 0)
Action=Fail(100)
End
Verb=Filter(Server.SvcGrpList Includes Session.SvcGrp)
If (Result.Count = 0)
Action=Fail(101)
End
Verb=Filter(Server.AvailBandwidth => Server.Asset.Bandwidth)
If (Result.Count = 0)
Action=Fail(102)
End
Verb=Sort(Server.AvailBandwidth Descending)
Verb=Filter(Server.Asset.Encoding=Session.Equipnient.Encoding)
If (Result.Count = 0)
Action=Fail(103)
End
If (Filter(Server.SvcGrp.Connection.Type = "ASI"))
Verb=Server.Play(Session)
Action=Pass(0)
Else If (Filter(Server.SvcGrp.Connection.Type="IP"))
If(Filter(Server.SvcGrp.Connection.AvailBandwidth =>
Server.Asset.Bandwidth))
Verb=Server.Play(Session)
Action=Pass(0)
Else
Action=Fail(104)
Else
Action=Fail(105)
End
</Action>
<Action
Name=Fail
Argument=Reason
Verb=Session.Fail(Reason)
ThrowEvent="PlayContentRule.Fail(Reason)"
</Action>
<Action
Name=Pass
Argument=Reason
Verb=Session.Pass(Reason)
ThrowEvent="PlayContentRule.Pass(Reason)"
</Action>
</ServiceProxyRule>
前記例のServiceProxyRuleにおいて、規則エンジン２３０は、アクションSelectServiceを最初に処理する。その理由は、それが規則における最初のアクションだからである。オブジェクト「AllMODServers」は、規則エンジン２３０に対し、ＭＯＤサービスグループにかかわらず前記アクションを実行するよう命令する。このＭＯＤサービスグループは、先に定義した通り、映画オンデマンドサービス２４０たる地下鉄サーバ１（metroServer1）、地下鉄サーバ２（metroServer2）、北西サーバ１（northwestServer1）、北東サーバ１（northeastServer1）、東サーバ１（eastServer1）、西サーバ１（westServer1）を含む。
【００４５】
図４を参照する。図４は、処理の一例を示すブロック図である。この処理によって規則エンジン２３０は、いずれの映画オンデマンドサービス２４０を使用してServiceProxyRuleを実行するかを選択する。規則エンジン２３０は、フィルタリング動作を実行し、要求コンテンツを格納している映画オンデマンドサービス２４０を決定する。規則エンジン２３０が各資産ＩＤに対してフィルタリング動作を実行すると、地下鉄サーバ２（metroServer2）２４０Ｂが除外される。このサーバは、加入者が要求しているコンテンツを持っていないからである。
【００４６】
次に規則エンジン２３０は、フィルタリング動作を実行し、要求を発行した加入者のセットトップボックスにサービスを提供する映画オンデマンドサービス２４０を決定する。規則エンジン２３０がサービスグループのフィルタリングを実行すると、東サーバ１（eastServer1）２４０Eが除外される。このサーバは、コンテンツを要求したセットトップボックス（すなわち加入者）に到達できないからである。
【００４７】
次に規則エンジン２３０は、フィルタリング動作を実行し、どの映画オンデマンドサービス２４０が要求コンテンツを配信するために十分な帯域幅を持っているかを決定する。規則エンジン２３０が帯域幅のフィルタリングを実行すると、北東サーバ１（northeastServer1）２４０Dが除外される。このサーバは、要求コンテンツを配信するために十分な帯域幅を持っていないからである。
【００４８】
次に規則エンジン２３０は、ソート動作を実行する。このソート動作は、残りのオブジェクトを整列し、一番大きな利用可能帯域幅を持っているサービスオブジェクトを先頭に持ってくる。これによりサービス２４０の負荷が均衡する。当業者には明らかな通り、より複雑なソート動作を使用し、他の基準に従って残りのオブジェクトを整列しても構わない。
【００４９】
次に規則エンジン２３０は、符号化フィルタを実行し、どの映画オンデマンドサービス２４０が要求コンテンツの適切な符号化を有しているかを決定する。規則エンジン２３０が符号化フィルタを実行すると、地下鉄サーバ１（metroServer1）２４０Aが除外される。このサーバは、セッションを要求している特定のセットトップボックスタイプへ要求コンテンツを配信できないからである。すなわち、そのセットトップボックスに適した符号化が行われていないからである。当業者には明らかな通り、サービス２４０は、同一コンテンツについて異なる符号化を含むことができる（PreEncrypted、Clear、MPEG-2、Windows(登録商標)MediaPlayer等）。
【００５０】
ServiceProxyRuleに示したように、規則エンジン２３０は、ｉｆ／ｔｈｅｎ／ｅｌｓｅ構造を用いた分岐を支援する。次の動作において、第１のフィルタは、残りの映画オンデマンドサービス２４０のいずれかがＡＳＩ接続を使用するかを決定する。実際において、これは映画オンデマンドサービス２４０がサービスグループに直接接続していることを意味する。従って、ネットワーク帯域幅を必要とせずにそのセッションを配信できる。直接接続したサービス２４０があれば、ソートしたリストの先頭のサービスを使用する。本例において、残りのサービス２４０Ｃおよび２４０Ｆのいずれもサービスグループに直接接続していない。当業者には明らかな通り、サービス２４０は１以上のサービスグループに直接接続できると同時に、ネットワークを介して他のサービスグループにも接続できる。
【００５１】
次に規則エンジン２３０は、残りのサービス２４０Ｃおよび２４０Ｆを検査し、いずれかがＩＰ接続を介してサービスグループに接続しているかを決定する。代表的なネットワークにおいて、サービスはＡＳＩまたはＩＰを用いて接続するが、この検査は規則エンジン２３０のｉｆ／ｔｈｅｎ／ｅｌｓｅ機能を示すために含まれている。本例において、残りのサービスのいずれもＡＳＩを使っていないので、ＩＰ接続性を有している。
【００５２】
規則エンジンは、サービスグループへのＩＰ接続性を有している残りのサービスを検査し、サービス２４０とサービスグループとの間の接続に要求コンテンツを配信するのに十分な帯域幅があるかを決定する。規則エンジンは、ソート順序にかかわらずリストの一番目のサービスを選択し、それを使ってコンテンツを再生する。規則エンジン２３０が利用可能帯域幅のフィルタリングを実行すると、北東サーバ１（northwestServer1）２４０Cが除外される。このサーバは、要求コンテンツを配信するために利用可能な帯域幅が十分でないからである。このように規則エンジン２３０は、ServiceProxyRuleを実行した結果、西サーバ１（westServer1）２４０Fを使って要求加入者へコンテンツを配信すべきことを決定する。
【００５３】
この実施例において、インライン動作として成功か失敗かの動作は決して実行しない。「ｉｆ」構造の各結果が１つの動作にジャンプするからである。１つの動作が他の動作へのジャンプで終わらない時もあり得る。この場合、規則において次の動作が存在すればそれを実行する。
【００５４】
図５および図６に示す処理において、本発明が規定通りに機能するために、あるステップは他のステップに先行しなければならない。しかしながら本発明は説明通りのステップ順序に制限されるものではない。ただし順序を変更することによって本発明の機能が変化してはならない。いくつかのステップは、他のステップの前または後に実行しても、本発明の範囲および精神を逸脱することはない。
【００５５】
図５は、サービスプロキシ２２０を使用してケーブル加入者へ映画を配信するための処理例５００を示す論理流れ図である。ステップ５１０は、図５の処理例５００における第１ステップである。
【００５６】
ステップ５１０において、映画オンデマンドアプリケーション２１０は、ケーブル加入者へサービスを配信させるためのメッセージをサービスプロキシ２２０へ送る。ステップ５２０において、サービスプロキシ２２０はアプリケーション２１０からそのメッセージを受け取る。ステップ５３０において、サービスプロキシ２２０は規則エンジン２３０を使用し、どのサービス２４０を使ってケーブル加入者へサービスを配信するかを決定する。ステップ５４０において、サービスプロキシ２２０はその決定に基づくメッセージをサービス２４０へ送る。
【００５７】
図６は、ケーブル加入者へサービスを配信するための処理例５００’を示す論理流れ図である。ステップ５１０は、図６の処理例５００’における第１ステップである。
【００５８】
ステップ５１０において、アプリケーション２１０はケーブル加入者へサービスを配信させるためのメッセージをサービスプロキシ２２０へ送る。ステップ５２０において、サービスプロキシ２２０はアプリケーション２１０からそのメッセージを受け取る。ステップ５３０において、サービスプロキシ２２０は規則エンジン２３０を使用し、どのサービス２４０を使ってケーブル加入者へサービスを配信するかを決定する。ステップ６１０において、サービスプロキシ２２０はその決定に基づき、どのサービス２４０を使用するかに関する命令をアプリケーション２１０へ送る。ステップ６２０において、アプリケーション２１０はどのサービス２４０を使用するかに関する命令をサービスプロキシ２２０から受け取ると、メッセージをサービス２４０へ送る。
【００５９】
当業者には明らかな通り、システム例２００は、容易に拡張して加入者の需要に応えることができる。例えばシステム２００は、追加のクライアントアプリケーション２１０、サービス２４０、およびビジネスロジックまたは規則を追加すべく容易に拡張できる。サービスプロキシ２２０とサービスプロキシ規則エンジン２３０とを変更するだけで、新しい構成要素または規則を認識できるからである。
【００６０】
また当業者には明らかな通り、システム２００と方法とは、多大な技術的努力や出費を伴うことなく、複数の配信業者アプリケーションおよびサービスを容易に効率的に統合することを可能にする。例えば構成要素や規則をシステム２００に加えたり削除する場合、サービスプロキシ２２０とサービスプロキシ規則エンジン２３０とを変更するだけで、構成要素あるいは規則の変更を認識できる。
【００６１】
最後に、当業者には明らかな通り、一例としてのシステム２００および方法は、多業者の構成要素間にシステム資源を効率的に割り当てられ、自動化を促進し、各資源を効率的に利用できる。例えばサービスプロキシ２２０とサービスプロキシ規則エンジン２３０とは、規則エンジン２３０において規則セットを実行することにより、多業者構成要素の代理としてシステム資源を管理し割り当てることができる。
【００６２】
以上、本発明の好適実施例を説明してきたが、これら実施例には、請求の範囲に定義した本発明の範囲および精神を逸脱することなく、多くの変更が可能である。
【図面の簡単な説明】
【００６３】
【図１】従来のケーブルテレビシステムの各部を示す図である。
【図２】１以上の加入者へサービスを配信するためのシステム例の各部を示す図である。
【図３】サービスプロキシを用いてケーブル加入者に映画を配信するためのシステム例を示すブロック図である。
【図４】サービスプロキシ規則の実行例において、規則エンジンがどの映画オンデマンドサービスを使用するかを選択する処理例を示すブロック図である。
【図５】サービスプロキシを使用してケーブル加入者へ映画を配信するための処理例を示す論理流れ図である。
【図６】ケーブル加入者へサービスを配信するための処理の他の例を示す論理流れ図である。
【図１】
2007521770.tif 000003
【図２】
2007521770.tif 000004
【図３】
2007521770.tif 000005
【図４】
2007521770.tif 000006
【図５】
2007521770.tif 000007
【図６】
2007521770.tif 000008
【国際調査報告】
2007521770.tif 000009