(57)【要約】  共通スクリプトパターンを抽象化し、スクリプト記述用の構造を提供するためのスクリプトアプリケーションフレームワークが提供される。スクリプトアプリケーションフレームワークは、スクリプト記述ロジックをスクリプトコンポーネントにカプセル化し、スクリプトオブジェクトの存続期間を管理し、異なるスクリプトオブジェクトの間の関係を構築する。スクリプトアプリケーションフレームワークは、どのスクリプト記述環境にも適用され得る。
2009508255.tif 000002
【特許請求の範囲】
【請求項１】
スクリプト記述環境用のスクリプトアプリケーションフレームワーク（１００）を提供する、１つまたは複数のコンピュータ可読媒体上で実現されるアプリケーションプログラミングインターフェイス（「ＡＰＩ」）であって、
複数のスクリプトオブジェクトを含むアプリケーションの提供に関連し、前記複数のスクリプトオブジェクトの管理に関連した第１のサービス群（「Ａｐｐｌｉｃａｔｉｏｎ」）（１０２）を含むことを特徴とするＡＰＩ。
【請求項２】
前記複数のスクリプトオブジェクトの１つに関連づけられた挙動および少なくとも１つのオブジェクト属性の定義に関連した第２のサービス群（「Ｃｏｍｐｏｎｅｎｔ」）をさらに含むことを特徴とする請求項１に記載のＡＰＩ。
【請求項３】
前記オブジェクト属性は、前記スクリプトオブジェクトのプロパティ、前記スクリプトオブジェクト用のメソッド、および前記スクリプトオブジェクト用のイベントからなる項目群から選択されることを特徴とする請求項２に記載のＡＰＩ。
【請求項４】
前記第２群の前記サービスは、前記オブジェクト属性が変化した場合の変更通知の提供にさらに関連することを特徴とする請求項２に記載のＡＰＩ。
【請求項５】
前記第２のサービス群は、前記スクリプトオブジェクトのオブジェクトモデルの記述に関連した第３のサービス群（「ＴｙｐｅＤｅｓｃｒｉｐｔｏｒ」）をさらに含むことを特徴とする請求項２に記載のＡＰＩ。
【請求項６】
前記第１のサービス群は、前記複数のスクリプトオブジェクトの接続にさらに関連することを特徴とする請求項１に記載のＡＰＩ。
【請求項７】
前記第１のサービス群は、前記複数のスクリプトオブジェクト中の第１のスクリプトオブジェクトの、前記複数のスクリプトオブジェクト中の第２のスクリプトオブジェクトとの、前記第１のスクリプトオブジェクトのオブジェクト属性から前記第２のスクリプトオブジェクトのオブジェクト属性へのデータ転送による接続に関連した第４のサービス群（「Ｂｉｎｄｉｎｇ」）をさらに含むことを特徴とする請求項６に記載のＡＰＩ。
【請求項８】
前記第４のサービス群は、前記第１のスクリプトオブジェクトの前記オブジェクト属性の前記データのタイプの、前記第２のスクリプトオブジェクトの前記オブジェクト属性のタイプへの変換に関連した第５のサービス群（「Ｔｒａｎｓｆｏｒｍｅｒ」）をさらに含むことを特徴とする請求項７に記載のＡＰＩ。
【請求項９】
前記データは、
スクリプトオブジェクトのオブジェクト属性の中へのみ、スクリプトオブジェクトのオブジェクト属性の外へのみ、およびスクリプトオブジェクトのオブジェクト属性の中へ、かつその外への方向に転送するように構成されることを特徴とする請求項７に記載のＡＰＩ。
【請求項１０】
前記第４のサービス群は、前記第１のスクリプトオブジェクトの前記オブジェクト属性が変化したことを信号通知する変更通知に応答してトリガされることを特徴とする請求項７に記載のＡＰＩ。
【請求項１１】
前記変更通知は、プロパティ変更通知またはコレクション変更通知のどちらかであることを特徴とする請求項１０に記載のＡＰＩ。
【請求項１２】
前記第１のスクリプトオブジェクトの前記オブジェクト属性がプロパティであり、前記プロパティの値が変化したときに前記プロパティ変更通知が起こることを特徴とする請求項１１に記載のＡＰＩ。
【請求項１３】
前記第１のスクリプトオブジェクトがコレクションスクリプトオブジェクトであり、すなわち、データのコレクションを含み、前記第１のスクリプトオブジェクトの前記オブジェクト属性がアップデートされたときに、前記コレクション変更通知が起こることを特徴とする請求項１１に記載のＡＰＩ。
【請求項１４】
１つまたは複数のイベントハンドラの維持およびイベントの出現の信号通知に関連した第６のサービス群（「Ｅｖｅｎｔ」）をさらに含むことを特徴とする請求項１に記載のＡＰＩ。
【請求項１５】
前記複数のスクリプトオブジェクトの１つにおいて特定のイベントが出現したときの特定のアクションの呼び出しに関連した第７のサービス群（「Ａｃｔｉｏｎ」）をさらに含むことを特徴とする請求項７に記載のＡＰＩ。
【請求項１６】
前記特定のアクションは、前記スクリプトオブジェクトの別のオブジェクト属性を呼び出すことであり、前記別のオブジェクト属性はメソッドであることを特徴とする請求項１５に記載のＡＰＩ。
【請求項１７】
前記特定のアクションは、前記スクリプトオブジェクトの別のオブジェクト属性を修正することであることを特徴とする請求項１５に記載のＡＰＩ。
【請求項１８】
前記特定のイベントが起きたときに前記特定のアクションを実施するかどうか決定するための特定の基準の提供に関連した第８のサービス群（「Ｃｏｎｄｉｔｉｏｎ」）をさらに含むことを特徴とする請求項１５に記載のＡＰＩ。
【請求項１９】
前記複数のスクリプトオブジェクトの１つの処理に関連した第９のサービス群（「ＩＤｉｓｐｏｓｅ」）をさらに含むことを特徴とする請求項１に記載のＡＰＩ。
【請求項２０】
スクリプト記述環境用のスクリプトアプリケーションフレームワーク（１００）を提供する、１つまたは複数のコンピュータ可読媒体上で実現されるアプリケーションプログラミングインターフェイス（「ＡＰＩ」）であって、
複数のスクリプトオブジェクトを含むアプリケーションの提供に関連し、前記複数のスクリプトオブジェクトの管理に関連した第１のサービス群（「Ａｐｐｌｉｃａｔｉｏｎ」）（１０２）と、
前記複数のスクリプトオブジェクトの１つに関連づけられた挙動および少なくとも１つのオブジェクト属性の定義に関連した第２のサービス群（「Ｃｏｍｐｏｎｅｎｔ」）（１０４）と、
前記スクリプトオブジェクトのオブジェクトモデルの記述に関連した第３のサービス群（「ＴｙｐｅＤｅｓｃｒｉｐｔｏｒ」）（１０６）と、
前記複数のスクリプトオブジェクト中の第１のスクリプトオブジェクトの、前記複数のスクリプトオブジェクト中の第２のスクリプトオブジェクトとの、前記第１のスクリプトオブジェクトのオブジェクト属性から前記第２のスクリプトオブジェクトのオブジェクト属性へのデータ転送による接続に関連した第４のサービス群（「Ｂｉｎｄｉｎｇ」）（１０８）と、
前記第１のスクリプトオブジェクトの前記オブジェクト属性の前記データのタイプの、前記第２のスクリプトオブジェクトの前記オブジェクト属性のタイプへの変換に関連した第５のサービス群（「Ｔｒａｎｓｆｏｒｍｅｒ」）（１１０）と、
１つまたは複数のイベントハンドラの維持およびイベントの出現の信号通知に関連した第６のサービス群（「Ｅｖｅｎｔ」）（１１６）と、
前記スクリプトオブジェクトにおいて特定のイベントが出現したときの特定のアクションの呼び出しに関連した第７のサービス群（「Ａｃｔｉｏｎ」）（１１２）と、
前記特定のイベントが起きたときに前記特定のアクションを実施するかどうか決定するための特定の基準の提供に関連した第８のサービス群（「Ｃｏｎｄｉｔｉｏｎ」）（１１４）と、
前記スクリプトオブジェクトの処理に関連した第９のサービス群（「ＩＤｉｓｐｏｓｅ」）（１１８）とを含むことを特徴とするＡＰＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スクリプトアプリケーションフレームワークに関する。
【背景技術】
【０００２】
コンピュータの当業者によって知られているように、プログラミング言語またはコンピュータ言語とは、コンピュータが命令を実行して特定の行為を実施することができるように、コンピュータに対する命令を表す、標準化された伝達ツールである。プログラミング言語は、様々な様式をとる。一部は、Ｃなどの手続き型言語である。一部は、Ｃ＋＋およびＪａｖａ（登録商標）など、オブジェクト指向である。一部は、Ｈａｓｋｅｌｌなどの関数型である。スクリプト言語は、プログラミングを簡単にし、特殊または限られたタスクを実施するために設計された、単純なプログラミング言語である傾向がある。たとえば、今日、ウェブアプリケーション向けの追加の機能および／または対話性を提供するために、Ｊａｖａ（登録商標）スクリプトがしばしば使われる。Ｖｉｓｕａｌ  Ｂａｓｉｃスクリプト、Ｐｅｒｌ、およびＴＣＬは、スクリプト言語の他の例である。概して、スクリプト言語は、Ｃ、Ｃ＋＋、またはＪａｖａ（登録商標）など、従来のプログラミング言語より単純なシンタクスおよびより少ないプログラミング構造体を有する。さらに、スクリプト言語は、実行時に翻訳され得るが、コンパイルされる必要がなく、直ちに実行され得る。
【０００３】
スクリプト記述は、スクリプト言語を使う特定の機能を遂行するための１組の命令を、スクリプト言語を使って作成するプロセスである。コンピュータのプロセスを操作するＣ、Ｃ＋＋、またはＪａｖａ（登録商標）などのプログラミング言語を使う従来のプログラミングとは異なり、スクリプト記述は、高速かつ比較的小さい１組の単純な命令を伴う傾向がある。スクリプトは、モデムを介してコンピュータを別のコンピュータに接続するプロセスの制御、またはウェブページ中の内容がユーザ入力によってどのように変わるかについての制御など、特定の目的を達成する傾向がある。ワールドワイドウェブ上では、スクリプトを作成してウェブページおよびウェブアプリケーションをカスタマイズし、またはそれらに対話性を加えるのに、スクリプト言語が使われ得る。たとえば、ウェブページに挿入されると、スクリプトは、ウェブページのユーザインターフェイス、様式、およびＨＴＭＬマークアップなど、ウェブページの様々な要素を制御することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
やがて、従来のプログラミングは、抽象化およびカプセル化などの概念をプログラミング言語に統合し、所定のパターンおよび構造を提供するＣ＋＋およびＪａｖａ（登録商標）などのプログラミング言語を生成した。一方、スクリプト記述は、パターンも構造も伴わず、保守することが困難なエラーが起きやすいコードをしばしば生じるアドホックのままである。たとえば、スクリプト記述環境は概して、アプリケーションフレームワーク層をもたない。スクリプト記述はしたがって、異なる機能の複雑さをわからないようにし、共通スクリプトパターンに対処するための、いかなる抽象化なしでも起こる。
【０００５】
この背景セクションにおいて既存のシステムの特定の欠点が例示され説明されたが、本明細書において権利請求される対象は、説明された欠点のいずれかまたはすべてを解決するどの特定の実装形態にも限定されないことを、当業者およびそれ以外の者は認識するであろう。
【課題を解決するための手段】
【０００６】
この要約は、選定された概念を、詳細な説明において後でさらに説明される簡略化された形で紹介するために与えられる。この要約は、権利請求される対象の主要な特徴を識別することも意図しておらず、権利請求される対象の範囲の確定を助けるものとして用いられることも意図していない。
【０００７】
本発明の態様は、スクリプトの開発を簡単にするためのスクリプトアプリケーションフレームワークを提供する。スクリプトアプリケーションフレームワークは、スクリプト記述ロジックをコンポーネントにカプセル化し、スクリプトオブジェクトモデルを提供し、異なるスクリプトオブジェクトのプロパティおよびメソッドをバインドし、スクリプトオブジェクトの存続期間を管理する、などのことを行う。スクリプトアプリケーションフレームワークは、どのスクリプト記述環境にも適用され得る。
【０００８】
本発明の一態様によると、スクリプトアプリケーションフレームワークは、あるスクリプトアプリケーションに、共通機能をカプセル化するＡｐｐｌｉｃａｔｉｏｎクラスを提供することができる。スクリプトアプリケーションは、複数のスクリプトオブジェクトを含み得る。Ａｐｐｌｉｃａｔｉｏｎクラスは、複数のスクリプトオブジェクトを管理する機能を含み得る。
【０００９】
スクリプトオブジェクトに関連づけられた挙動および少なくとも１つのオブジェクト属性を定義するＣｏｍｐｏｎｅｎｔクラスが提供され得る。オブジェクト属性は、スクリプトオブジェクトのプロパティ、スクリプトオブジェクトのメソッド、またはスクリプトオブジェクト用のイベントでよい。好ましくは、スクリプトオブジェクトのオブジェクトモデルを記述するＴｙｐｅＤｅｓｃｒｉｐｔｏｒクラスが提供される。
【００１０】
本発明の別の態様によると、スクリプトオブジェクトは、バインディングおよびアクションなどの機構を介して、互いと通信することができる。Ｂｉｎｄｉｎｇクラスは、第１のスクリプトオブジェクトのオブジェクト属性から第２のスクリプトオブジェクトのオブジェクト属性にデータを転送することによって、第１のスクリプトオブジェクトを第２のスクリプトオブジェクトと接続する機能を提供する。好ましくは、必要な場合、Ｔｒａｎｓｆｏｒｍｅｒクラスが、第１のスクリプトオブジェクトのオブジェクト属性のデータのタイプを、第２のスクリプトオブジェクトのオブジェクト属性のタイプに変換するのに使われる。
【００１１】
一方、スクリプトオブジェクト中に特定のイベントが出現した場合、特定のアクションを呼び出すのに、Ａｃｔｉｏｎクラスが使われ得る。特定のアクションは、たとえば、別のスクリプトオブジェクトのメソッドを呼び出すことでも、別のスクリプトオブジェクトのプロパティを構成することでもよい。１つまたは複数のイベントハンドラを維持し、スクリプトオブジェクトに対するイベントの出現を信号通知するＥｖｅｎｔクラスが使われ得る。さらに、特定のイベントが起きたときに特定のアクションを実施するかどうか決定する特定の基準を提供するのに、Ｃｏｎｄｉｔｉｏｎクラスが使われ得る。
【００１２】
さらに、スクリプトアプリケーションフレームワークは、スクリプトオブジェクトの処理および／またはそのスクリプトオブジェクトと他のスクリプトオブジェクトの関係を解消するために実装され得るＩＤｉｓｐｏｓｅインターフェイスをさらに含み得る。
【００１３】
本発明の上述の態様およびそれに付随する利点の多くが、添付の図面を併せ読み以下の詳細な説明を参照することによってよりよく理解され、より容易に理解されよう。
【発明を実施するための最良の形態】
【００１４】
以下の本文は、本発明の例示的な実施形態を例示し、説明する。ただし、実施形態においては、本発明の精神および範囲から逸脱することなく様々な変更が行われ得ることを、当業者は理解するであろう。
【００１５】
図１は、例示的なスクリプトアプリケーションフレームワーク１００およびその例示的なコンポーネントを示す。本発明の実施形態において、スクリプトアプリケーションフレームワーク１００は、図１に示されるものよりも多い、またはより少ないコンポーネントを含み得る。
【００１６】
図１に示されるように、示されているスクリプトアプリケーションフレームワーク１００は、Ａｐｐｌｉｃａｔｉｏｎ１０２クラスを含む。Ａｐｐｌｉｃａｔｉｏｎ１０２クラスは、スクリプトアプリケーションフレームワーク１００の全コンポーネントをまとめ、アプリケーション中のスクリプトオブジェクトの存続期間の管理およびそのアプリケーションの異なる部分に対する、サービスへのアクセスの提供などのタスクを実施するトップレベルクラスである。本発明の例示的な実施形態では、個々のウェブページが、Ａｐｐｌｉｃａｔｉｏｎ１０２クラスの１つのインスタンスを含む。次の擬似コードは、例示的なＡｐｐｌｉｃａｔｉｏｎ１０２クラスを示す。
【００１７】
【表１】
2009508255.tif 000003
【００１８】
Ｃｏｍｐｏｎｅｎｔ１０４クラスは、全スクリプトコンポーネントにとってのベースクラスである。Ｃｏｍｐｏｎｅｎｔ１０４クラスは、アプリケーション開発者によっても、他のスクリプトコンポーネントによっても使われ得るスクリプトコンポーネント向けの、特定の１組の機能をカプセル化するための機構である。本発明の例示的な実施形態において、Ｃｏｍｐｏｎｅｎｔ１０４クラスは、スクリプトオブジェクトの挙動ならびにプロパティ、メソッド、およびイベントなど、オブジェクトモデルの属性を記述する。Ｃｏｍｐｏｎｅｎｔ１０４クラスは、アプリケーションにおけるスクリプトオブジェクトの存続期間管理にスクリプトオブジェクトが関与し、スクリプトオブジェクトのプロパティが変化したときに変更通知を出し、スクリプトオブジェクトに固有のイベントを管理することを可能にすることもできる。次の擬似コードは、Ｃｏｍｐｏｎｅｎｔ１０４クラスの例示的な実装を示す。
【００１９】
【表２】
2009508255.tif 000004
【００２０】
ＴｙｐｅＤｅｓｃｒｉｐｔｏｒ１０６クラスは、スクリプトオブジェクトに、プロパティ（タイプおよび関連付けられた属性を伴う）、イベント、ならびにメソッド（関連付けられたパラメータを伴う）を含む、そのオブジェクトモデルを記述させる。たとえば、ＴＩＭＥＲスクリプトオブジェクト向けのＴｙｐｅＤｅｓｃｒｉｐｔｏｒオブジェクトは、数値タイプのＩｎｔｅｒｖａｌプロパティおよびブール値タイプのＥｎａｂｌｅｄプロパティ、Ｔｉｃｋイベント、ならびにＳｔａｒｔ（）およびＳｔｏｐ（）などのメソッドを含み得る。たとえば、Ａｒｒａｙスクリプトオブジェクト向けのＴｙｐｅＤｅｓｃｒｉｐｔｏｒオブジェクトは、どのようなタイプのオブジェクトがアレイ中にあるかについて、情報を提供することができる。次のテキストは、ＴｙｐｅＤｅｓｃｒｉｐｔｏｒ１０６クラスの例示的な実装を示す。
【００２１】
【表３】
2009508255.tif 000005
【００２２】
【表４】
2009508255.tif 000006
【００２３】
【表５】
2009508255.tif 000007
【００２４】
本発明の実施形態は、スクリプトオブジェクトを相互に接続するための１つまたは複数の機構を提供する。図１は、このような２つの機構、すなわちＢｉｎｄｉｎｇ１０８クラスおよびＡｃｔｉｏｎ１１２クラスを示す。Ｂｉｎｄｉｎｇ１０８クラスは、あるオブジェクトプロパティから別のオブジェクトプロパティに、かつその逆にデータを転送するのに使われ得る。たとえば、スクリプトオブジェクトＣｏｕｎｔｅｒがＶａｌｕｅプロパティを有する場合、別のスクリプトオブジェクトＬａｂｅｌは、Ｔｅｘｔプロパティを有する。Ｂｉｎｄｉｎｇ１０８クラスのインスタンスは、Ｃｏｕｎｔｅｒ．ＶａｌｕｅをＬａｂｅｌ．Ｔｅｘｔにバインドさせることができる。その結果、スクリプトオブジェクトＬａｂｅｌは、Ｃｏｕｎｔｅｒ．Ｖａｌｕｅを表示することができる。本発明の例示的な実施形態において、Ｂｉｎｄｉｎｇ１０８クラスのインスタンスは、特定のプロパティ名ではなく、任意のプロパティパスに関連づけられ得る。たとえば、Ｌａｂｅｌ．Ｔｅｘｔは、Ｌａｂｅｌ．Ｔｅｘｔに対するデータのソースである被参照スクリプトオブジェクトの表現であるＦｏｏ．Ｂａｒ．Ｂａｚにバインドされ得る。本発明の例示的な実施形態において、データは、プロパティの中へのみ転送させられても、プロパティから出て別のプロパティの中へ転送させられても、またはその両方、すなわち、プロパティから出て、もしくはその中へ転送させられてもよい。
【００２５】
本発明の実施形態において、Ｂｉｎｄｉｎｇ１０８クラスは、あるプロパティのタイプを別のプロパティのタイプに変換するＴｒａｎｓｆｏｒｍｅｒ１１０クラスに関連づけられ得る。たとえば、例示的なＣｏｕｎｔｅｒ．Ｖａｌｕｅは数値タイプであり、例示的なＬａｂｅｌ．Ｔｅｘｔは、ストリングタイプである。したがって、こうした２つのプロパティの間のバインディングが起こると、Ｔｒａｎｓｆｏｒｍｅｒ１１０クラスのインスタンスは暗黙的に、Ｃｏｕｎｔｅｒ．Ｖａｌｕｅを数値タイプからストリングタイプ、すなわちＬａｂｅｌ．Ｔｅｘｔのタイプに変換する。
【００２６】
次の擬似コードは、Ｂｉｎｄｉｎｇ１０６クラスの例示的な実装を示す。
【００２７】
【表６】
2009508255.tif 000008
【００２８】
【表７】
2009508255.tif 000009
【００２９】
本発明の実施形態は、イベントハンドラのリストを維持し、イベントが起きたときにそれを信号通知するのに使われ得るＥｖｅｎｔ１１６クラスも提供することができる。次のテキストは、Ｅｖｅｎｔ１１６クラスの例示的な実装を示す。
【００３０】
【表８】
2009508255.tif 000010
【００３１】
別の例示的なバインディング機構がＡｃｔｉｏｎ１１２クラスによって提供されるが、このクラスは、特定のイベントが起きたときに特定のアクションを呼び出させる。たとえば、スクリプトオブジェクトＴｉｍｅｒは、ＣｏｕｎｔｅｒプロパティおよびＴｉｃｋイベントを含み得る。スクリプトオブジェクトＴｉｍｅｒの例示的な実装において、Ｔｉｃｋイベントが起こると常に、Ａｃｔｉｏｎ１１２クラスのインスタンスが、Ｃｏｕｎｔｅｒプロパティの値を増分させる。このようなアクションは、ＩｎｖｏｋｅＭｅｔｈｏｄアクションと呼ばれ得る。本発明の例示的な実施形態は、様々なタイプのアクションを提供する。たとえば、スクリプトオブジェクトのプロパティを具体的な値に設定するために、ＳｅｔＰｒｏｐｅｒｔｙアクションが提供され得る。本発明の例示的な実施形態では、Ａｃｔｉｏｎ１１２クラスは、指定されたイベントが起きている場合にアクションを実施するかどうか決定するのに使われ得るＣｏｎｄｉｔｉｏｎ１１４クラスにさらに関連づけられ得る。次のテキストは、ＩＡｃｔｉｏｎインターフェイスおよびＡｃｔｉｏｎ１１２クラスの例示的な実装を示す。
【００３２】
【表９】
2009508255.tif 000011
【００３３】
【表１０】
2009508255.tif 000012
【００３４】
本発明の実施形態において、Ｂｉｎｄｉｎｇ１０８クラスのインスタンスによって提供されるサービス（たとえば、データ転送）は、変更通知に応答して、明示的または自動的にトリガされる必要がある場合がある。変更通知は、プロパティ変更通知でもコレクション変更通知でもよい。たとえば、スクリプトオブジェクトＴｉｍｅｒに関連づけられた例示的なＣｏｕｎｔｅｒ．Ｖａｌｕｅが変化すると、プロパティ変更通知が、Ｂｉｎｄｉｎｇ１０８クラスの対応するインスタンスに発行され、このインスタンスは次いで、Ｌａｂｅｌ．Ｔｅｘｔを、現在のＣｏｕｎｔｅｒ．Ｖａｌｕｅでアップデートする。コレクション変更通知は、ＤａｔａＳｏｕｒｃｅなどのコレクションスクリプトオブジェクトに変化があったときに起こる。コレクションスクリプトオブジェクトは、データのコレクションを含む。ＤａｔａＳｏｕｒｃｅはたとえば、データベースでよい。ＤａｔａＳｏｕｒｃｅは、Ｄａｔａプロパティを有し得る。Ｒｅｐｅａｔｅｒスクリプトオブジェクトも、Ｄａｔａプロパティを有し得る。Ｒｅｐｅａｔｅｒ．ＤａｔａがＤａｔａＳｏｕｒｃｅ．Ｄａｔａと結びついていると仮定する。データの新たな記録がＤａｔａＳｏｕｒｃｅ．Ｄａｔａに追加されると、コレクション変更通知がＢｉｎｄｉｎｇ１０８クラスの対応するインスタンスに発行され、このインスタンスは次いで、それに従ってＲｅｐｅａｔｅｒ．Ｄａｔａをアップデートする。たとえば、Ｂｉｎｄｉｎｇ１０８クラスのインスタンスは、新たなデータをＲｅｐｅａｔｅｒのテーブルに投入することができる。次の擬似コードは、変更通知機能の例示的な実装を示す。
【００３５】
【表１１】
2009508255.tif 000013
【００３６】
たとえばＢｉｎｄｉｎｇ１０８クラスのインスタンスを介して、スクリプトオブジェクトが互いを参照すると、こうしたオブジェクトは、循環参照を作成する。すると、ＩＤｉｓｐｏｓａｂｌｅ１１８インターフェイス実装が、循環参照を中断するのに使われ得る。ＩＤｉｓｐｏｓａｂｌｅ１１８実装は、スクリプトオブジェクトおよびそのスクリプトオブジェクトの他のスクリプトオブジェクトへの参照を処理し一掃するロジックおよび機構を含む。次の擬似コードは、Ｄｉｓｐｏｓａｂｌｅ１１８インターフェイスの例示的な実装を示す。
【００３７】
【表１２】
2009508255.tif 000014
【００３８】
要約すると、スクリプトアプリケーションフレームワーク１００は、共通スクリプト記述ロジックをコンポーネントにカプセル化し、スクリプトオブジェクト用の定義を提供し、スクリプトオブジェクトがバインディングおよびアクションなどの機構を介して互いと通信することを可能にする。スクリプトアプリケーションフレームワーク１００はしたがって、従来通りのアドホック型スクリプト記述の構造を提供する。
【００３９】
添付の特許請求の範囲において定義される対象は、上述された特定の特徴にも実装形態にも必ずしも限定されないことが理解されるべきである。そうではなく、上述された特定の特徴および実装形態は、特許請求の範囲を実装する形の例として開示されている。
【図面の簡単な説明】
【００４０】
【図１】例示的なスクリプトアプリケーションフレームワークを示すブロック図である。
【図１】
2009508255.tif 000015
【国際調査報告】
2009508255.tif 000016
2009508255.tif 000017