JP2004500619A - サービスを作成するための方法および装置 - Google Patents
サービスを作成するための方法および装置 Download PDFInfo
- Publication number
- JP2004500619A JP2004500619A JP2001503068A JP2001503068A JP2004500619A JP 2004500619 A JP2004500619 A JP 2004500619A JP 2001503068 A JP2001503068 A JP 2001503068A JP 2001503068 A JP2001503068 A JP 2001503068A JP 2004500619 A JP2004500619 A JP 2004500619A
- Authority
- JP
- Japan
- Prior art keywords
- function
- service
- model
- template
- xml
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
ネットワーク・サービスを作成するための方法および装置を提供する。webサービス全体のプログラミングまたはハード・コーディングの代わりに、本発明は、webサービスを作成するために利用することができるコードを生成するモジュール/メカニズム(テンプレート(100)と呼ばれる)を容易に作成するための能力を提供する。したがって、テンプレート(100)が形成され、利用されて、アプリケーション(104)またはwebサービスを生成することができるモデル(204)が作成される。各テンプレートは、機能のリスト(202)およびモデル(102)(ランタイム・モデルまたはRTMと呼ばれる)からなる。RTM(102)はXMLドキュメントであり、これはwebサービス・アプリケーション(WSA(304)と呼ばれる)の構造、機能性および挙動を宣言する。1つまたは複数の実施形態では、各機能が、新しいRTM(102)において出力されるXMLエンティティを生成することを担う。各機能は、1つまたは複数のユーザの入力を得ることができ、これが利用されてXMLエンティティが新しいRTMにおいて構築される。さらに、各機能を順次処理することができ、これは、すでに(たとえば、他の機能によって)作成されているいかなる既存のXMLエンティティも修正するための能力を有する。
Description
【0001】
(発明の背景)
1.発明の分野
本発明は、ネットワーク・サービス作成の分野に関する。
【0002】
本特許明細書の開示の一部は、著作権保護を受ける事項を含む。著作権の所有者は、特許商標局のファイルまたは記録において現れるような本特許明細書または本特許の開示の、いかなるものによる複写複製にも異議を申立てないが、そうでない限りはすべての著作権を留保する。
【0003】
2.背景技術
World Wide Webはwebサイトの集まりであり、それぞれが情報、データおよび/またはある種類または別の種類のサービスを提供する。現在のインターネットおよびWebサービスによる問題は、各サービスを静的に、かつ他のサービスから独立してプログラムしなければならないことである。さらに、webサービスの機能を修正あるいは変更するには、プログラマがwebサービスのコードを修正しなければならない。この問題は、ビジネスおよびそれらによるインターネットの使用を見直すことによって、よりよく理解できる。
【0004】
多数のビジネスが、それらの機能性の一部として他のビジネスに依拠している。たとえば、製品のディストリビュータは異なる製品のメーカのすべてに依拠して、信頼性を有して製品自体を供給するだけでなく、製品の価格および可用性についての情報も供給している。メーカ自体も部分的にサプライヤに依拠して完全な製品を構築している。競争的なビジネス環境において競争するためには、会社が製品およびサービスについての迅速な応答を顧客に提供できることが必要である。これにはしばしば多数の他の会社との対話が必要となる。過去には、会社の販売員が電話をかけるか、あるいはカタログを参照して顧客の要求に回答を提供する間、顧客が快く待機している可能性があった。しかし今日は、顧客がより高速なサービス、または自分自身で情報を得る能力を要求している。他の場合、顧客は会社の販売員とまったく対話しておらず、会社のwebサイトと対話している可能性がある。この環境では、顧客はさらに高速かつ効率的なサービスを要求する。
【0005】
会社が今日のビジネス環境において競争できる状態であり続けるための1つの方法は、サード・パーティである会社のコンピュータ・システムと対話して、自社のビジネスを運用するために必要とされる情報およびサービスを得ることができる、アプリケーション・プログラム(ソフトウェア)を開発することである。しかし、従来、これらのアプリケーションを作成することは困難であった。1つの問題は、異なる会社のしばしばメーカ独自のコンピュータ・システムとの対話における困難さである。もう1つの問題は、アプリケーションを自分で記述かつデバッギングすること、ならびに状態が変化したとき、あるいはサード・パーティの会社が自社所有のシステムを変更あるいは更新したときにこれらを更新することにおける困難さである。
【0006】
ビジネスの風潮におけるこの変化も、部分的にはインターネットによって促進されてきた。インターネットは、多数のソースからの情報を容易に個人が入手できるようにした。加えて、インターネットは、会社が互いに対話する方法を変えた。ビジネスとビジネスとの対話は現在、しばしばインターネットを介して実施される。ビジネス間の関係(ディストリビュータとそのサプライヤの間など)はしばしば「チャネル関係」または「ビジネス・チャネル」と呼ばれる。
【0007】
ビジネス・チャネルを管理するためのソフトウェア・アプリケーションを作成することは、従来の技術を使用すると複雑であり、柔軟性がない。ハード・コーディングされたアプリケーションが作成された場合、経時的に作成あるいは修正される新しいチャネルに応答することができない可能性がある。記録の労力を繰り返すことが必要となる可能性がある。他の場合、ある会社が別の会社と、他の会社が気付くことなくチャネル関係にある可能性がある。たとえば、Federal Expressまたは他の運送業者を使用して商品を輸送する会社は、運送業者との明示的で公的な関係を有することなくそれを行う。運送業者にとっては、それを使用するあらゆる会社とのビジネス・チャネルを維持することは、不可能なタスクではない場合でも気力をくじくようなことである。
【0008】
従来の技術は、たとえばオブジェクト指向プログラミングを介して、アプリケーションの設計においてコードの再使用における効率に焦点を置くが、アプリケーションのランタイムでの効率またはカスタマイズ可能性を提供しない。多数の会社がサービスをインターネット上で使用可能にしているので、webサービスの組み合わせを動的に呼び出して相互接続し、それら自体をカスタマイズされたフォーマットにおいてランタイムで構成するカスタム・アプリケーションを、効率的に作成できるようにする必要性がある。現在までのところ、従来技術は効果的なソリューションを提供していない。
【0009】
現在、webが使用されて、事前定義されたwebページがユーザ/クライアントによる閲覧用に提供されている。しかし、静的なwebページを提供するよりも多くのことを行う必要性がある。webページを動的に修正あるいは作成し、webページの他の要素またはコンポーネントを考慮するメカニズム/モジュールを容易に作成することが望ましい。さらに、ユーザに様々な機能を提供するwebサービスを利用する必要性が増大しつつある。現在、webサービスを動的に生成あるいは修正するためのメカニズムはない。加えて、webサービスを、webサービスの既存の態様に基づいて修正するためのメカニズムはない。
【0010】
(発明の概要)
本発明は、ネットワーク・サービスを作成するための方法および装置を提供する。webサービス全体のプログラミングまたはハード・コーディングの代わりに、本発明の1つまたは複数の実施形態は、webサービス・アプリケーションのXML定義を提供するコード(ランタイム・モデルと呼ばれる)を生成するモジュール/メカニズム(テンプレートと呼ばれる)を容易に作成するための能力を提供する。したがって、テンプレートが形成され、利用されて、webサービス・アプリケーションの基礎を生成することができるモデルが作成される。
【0011】
各テンプレートは、機能(features)のリストおよびモデル(ランタイム・モデルまたはRTMと呼ばれる)を含む。RTMは、XMLドキュメントであり、これはwebサービス・アプリケーション(WSAと呼ばれる)の構造(structure)、機能性(functionality)および挙動(behavor) を宣言する。1つまたは複数の実施形態では、各機能が、新しいRTMにおいて出力されるXMLエンティティを生成することを担う。各機能は、1つまたは複数のユーザの入力を得ることができ、これが利用されてXMLエンティティが新しいRTMにおいて構築される。さらに、各機能を順次処理することができ、これは、すでに(たとえば、他の機能によって)RTMにおいて作成されているいかなる既存のXMLエンティティも修正するための能力を有する。したがって、機能は、アプリケーションを全体として見て、それらが担うエンティティを調整かつ修正するだけでなく、変更を既存のアプリケーション全体に実施するための能力を有する。
【0012】
本発明の1つまたは複数の実施形態では、アプリケーションに影響を与える可能性のある状態が変化したとき、テンプレートを利用してRTMを再生して、新しいwebサービスまたはXMLドキュメントを生成することができる。
【0013】
(発明の詳細な説明)
以下の説明では、多数の特定の詳細を、本発明のより十分な理解を提供するために述べる。しかし、本発明を、これらの特定の詳細がなくとも実施できることは、当業者には明らかになるであろう。他の例では、よく知られた機能を詳細に記載していないが、これは本発明を不必要に不明瞭にしないためである。
【0014】
本発明は、使用可能なwebサービスを使用するアプリケーションを作成するための方法および装置を提供する。多数のサービスがインターネットを介して、ならびに既存のAPIおよび他の技術を介して使用可能にされている。インターネットでは、多数のサービスがXMLサービスとして使用可能にされている。XML(拡張マークアップ言語、extensible markup language)は、情報を記述するため、あるいはより正確には、情報を自己記述にするために使用される言語である。従来、webページはHTMLを使用して構築されている。HTML(ハイパーテキスト・マークアップ言語)はデータのぺージのジオメトリおよび外観を記述し、実際にはデータが挿入される穴またはスロットを作成する。しかし、HTML記述におけるページ上に現れるデータの直接通信はない。ユーザには、名前、住所および電話番号など、認識可能な情報を含むページを提示することができる。しかし、HTMLでは、データは単に表示するためのテキストである。
【0015】
他方では、XMLは、使用中のデータのタイプを識別することができるプロトコルを提供する。XMLはこれを部分的には、事前定義された「スキーマ」を使用して行うことができ、これを使用して伝送中のデータのタイプを理解することができる。標準のスキーマが使用された場合、データはスキーマへの参照のみを含む必要があり、これがデータと共に移動する必要はない。カスタム・スキーマが使用された場合、これをデータの前または後に送信することができるか、あるいは、スキーマの位置への明示的な方向を提供することができる。
【0016】
本発明は、XMLベースのサービスを十分に利用することができるが、通信プロトコルを確立することができるいかなるサービスとの使用にも適用可能である。
【0017】
本発明の1つまたは複数の実施形態は、使用のために入手可能なサービスを含む、ビジネスまたは企業のためのwebサービス・ディレクトリを作成する。各サービスのためのインターフェイスが使用可能であり、これは要求および応答を、インターネットおよびバック・エンド・システム環境における使用のために適切なフォーマットに変換するためのものである。加えて、インターフェイスを利用して、コールされたサービスに渡される要求データのスキーマを定義することができ、コールされたサービスによって渡される応答データのスキーマを定義することができる。
【0018】
webサービス・アーキテクチャ(「システム」と呼ばれる)がwebサービスについてのメタデータを維持し、これらはwebサービス消費者による使用のために公開されている。システムはwebサービスのアクセス・コントロール、編成(organization)、インターフェイス定義、管理およびオペレーションを提供する。webサービス・アーキテクチャは、集中化された位置としての機能を果たし、ここからwebサービス消費者が、公開されたwebサービスのセットについてのすべての情報を得ることができる。加えて、webサービス・アーキテクチャは中心位置を提供し、個々のwebサービスの実際の作業を実行するシステム(アプリケーション)がインターネット全体に分散されているという事実に関わらず、ここからwebサービスを動作することができる。
【0019】
webサービス・アーキテクチャは、webサービス・ディレクトリおよびwebサービス・エンジンを含む。webサービス・ディレクトリはデータベースであり、webサービス・エンジンはwebサービス要求をハンドルするプロセッサである。
【0020】
<<Webサービス・アプリケーションおよびランタイム・モデル>>
webサービス・エンジンが実行するもっとも著しいアクティビティの1つが、単一のセッションのコンテキストにおける多数のwebサービスの実行である。webサービス・アーキテクチャは、ランタイム・モデルと呼ばれるXMLオブジェクトのタイプをサポートしており、これは多数のwebサービスが実行されるコンテキストを定義する。webサービス・エンジンが、このような指定されたランタイム・モデルによるモデル・ランナー・サービス(model runner service)を実行するための要求を受信したとき、システムが、webサービス・アプリケーションと呼ばれるものをセッションにおいて生成する。
【0021】
ランタイム・モデルは、いくつかのwebサービスの実行を共に連鎖する方法の宣言とは著しく異なる。本発明の1つまたは複数の実施形態は、多数のアクションを宣言するランタイム・モデルを提供し、それぞれをファンクションにおいて定義された精巧な機能性の実行にバインドすることができる。加えて、ランタイム・モデルは多数のパラメータを宣言し、これらがwebサービスの入力および出力として使用される。最後に、ランタイム・モデルが、いくつかのwebサービスの使用を引き起こし、これらが特殊なユーザ・インターフェイス・ページを出力データとして構築する。これらのページの挙動は、webサービス・エンジンに対する後続のwebサービス要求を生成すること、および実行のために、webサービス・アプリケーション・セッションにおいて定義されたアクションをコールすることである。それとして、ランタイム・モデル、およびそれが生成するwebサービス・アプリケーションは、アプリケーションの複雑な新しい形式のためのレシピである。
【0022】
WSAがないと、webサービス・アーキテクチャはアトミックとなり、場合により、webサービス・エンジンに対する要求の処理中のアクティビティが単一のwebサービスの実行のみとなることを意味する。WSAは、webサービス・エンジンが、多数のwebサービスを含む複雑なタスクを実行できるようにするための手段を提供する。加えて、WSAは、webサービス・エンジンの外側のwebサービス要求者が単一のセッション状態と、要求を通じて対話することができるようにする。
【0023】
<<Webサービス・アプリケーションのオペレーション>>
webサービス・エンジンに対する要求がWSAを呼び出したとき、システムがこの要求を処理し、応答を生成する。応答をXML、HTML、MIMEエンコード化(たとえば、.gifファイル)、またはインターネット・ワイヤ・プロトコルによってサポートされたいかなるフォーマットにすることもできる。1つまたは複数の実施形態では、webサービス要求が、ブラウザにおいて表示されるグラフィカル・ユーザ・インターフェイスの形式を取る応答を生成する。これは、要求側(webサービス消費者)がwebブラウザであるときの場合である。返されたユーザ・インターフェイスはしばしばそれらにおいて埋め込まれたコントロールを有し、これが後続のユーザ生成イベントに反応し、ブラウザに、webサービス・エンジンに返す後続のHTTP要求を生成させる。これらの要求ではしばしば同じWSAが目標とされる。webサービス・アーキテクチャでは、webサービス・エンジン上の単一のWSAセッションがその状態を、異なるユーザ・インターフェイスによって生成された異なる要求とのいくつかの対話全体で維持することが可能である。たとえば、WSAがUIの初期ページを、初期要求に対する応答として生成することが可能である。このUIはボタンを含むことができる。ユーザがボタンを押したとき、ブラウザが、同じWSAに対して目標とされた新しい要求を生成する。webサービス・エンジンがサービスを呼び出し、これにより既存のWSAが要求を処理し、別のUIページを生成することができる。
【0024】
webサービス・エンジンは、WSAのキャッシングを管理する。webサービス・ディレクトリは、webサービス、およびランタイム・モデルを構築するために使用されたテンプレートの持続的な記述を管理する。webサービス・エンジンはWSAの呼び出しを、モデル・ランナーwebサービスの使用を介して実施する。
【0025】
webサービス・アーキテクチャは、1つまたは複数のランタイム・モデルのためのwebサービスを維持する。要求側がWSAを動作することを望んだとき、要求側がHTTP要求を生成して、「モデルベース」のwebサービスと呼ばれる特殊なタイプのwebサービスを動作する。これらのwebサービスは、WSAに対応するためのランタイム・モデルを維持する責任を有する。これらのwebサービスは、モデル・ランナーと呼ばれる共通のwebサービス・ドライバも参照し、これはランタイム・モデルをサービス・パラメータとして取り、WSAを生成することを担う。
【0026】
webサービス・エンジンがモデル・ランナー・ドライバのインスタンスを呼び出し、WSAを生成した後、モデル・ランナー・ドライバが、WSAにおいて定義された特殊な名前のアクション(この実施ではOnloadと呼ばれる)をコールする。アクションは、webサービスまたはファンクション(いくつかのアクションの呼び出しを定義するもの)へのコールである。アクションは、メソッドによって実行されるオペレーションに類似している(たとえば、別のメソッド/ファンクションへのコール、または、割当てまたは連結のような単純なデータ操作を実行すること)。
【0027】
OnloadファンクションはWSAの初期状態を確立し、これは、webサービス要求に対する応答データを生成する作業単位を実行する。Onloadファンクションが動作を終了したとき、モデル・ランナー・ドライバが要求側のセッションにおけるWSAの状態を保存する。加えて、ランタイム・モデルを要求側のセッションにおいて保存することもできる。
【0028】
Pageアクションは、応答データをインタラクティブなUIの形式において生成するために使用される特殊なタイプのアクションである。Pageアクションは応答データのパケットをHTMLまたはXMLのいずれかで生成し、これはグラフィカルに提示可能な情報をユーザ・インターフェイス(UI)コントロールと共に含む。これらのコントロールの挙動を、元のWSAセッションのハンドルを使用して、webサービス・エンジンに対する後続のwebサービス要求を生成するように設定することができる。
【0029】
時として、WSAはOnloadファンクションにおいてそのすべての作業を行い、その応答データを送信して戻し、ダウンストリーム・コンタクトを確立する後続のwebサービス要求のいかなる意図もなしに終了する。他のときは、WSAにおけるアクション(またはファンクション)が、埋め込み型XMLモデル・セッション・ハンドルを含む応答データを生成する。このデータにより、ブラウザまたは他のシステムが、webサービス要求を同じWSAセッションに対して生成することができる。
【0030】
<<Webサービス・アプリケーションの機能性>>
WSAの機能性(fanctionality) は完全に、ランタイム・モデルにおけるXMLベースの宣言、および呼び出されたwebサービスによって提供された機能性によって定義される。WSAの機能性を宣言するランタイム・モデルがモデル・ランナー・サービスによって使用されて、WSAによって呼び出された、すべての呼び出されたwebサービスがインスタンス化される。加えて、ランタイム・モデルは、ロジック(機能性)、データ構造および挙動の宣言を含む。
【0031】
WSAの挙動は、ランタイム・モデルにおいて宣言されるイベントに対するアクションのバインディングのセットによって定義される。イベントの多数は、ランタイム・モデルにおいて定義されたPagesと対話するユーザによって生成されるものである。webサービスがWSAと対話するとき、WSAがPagesを応答データとして生成し、これらのPagesが、追加のwebサービスをコールするアクションへのイベントのバインディングを定義する挙動を含む。
【0032】
本発明の1つまたは複数の実施形態によれば、起動において、WSAがOnload機能性を実行する。実行中に、モデル・ランナー・サービス・ドライバが追加のwebサービスに対して内部コールを行い、これはwebサービス・エンジンが追加のサービス・ドライバをエンゲージする結果となる。webサービスを動作するための内部要求は、webサービス・エンジンから、WSAセッションにおいて存在するサービス入力のセットと共に来る。しかし、外部コールはHTTPポストの形式において来るか、あるいはwebサービス・エンジンにおけるURLへ、入力データのパケットと共に到着する。
【0033】
初期webサービス要求が処理され、応答データが送信され戻された後、webサービス・エンジンは、すでに動作中のWSAのモデル・セッションが目標とされた後続のwebサービス要求をハンドルすることができる。これらのセッション固有の要求はそれぞれモデル・ハンドルIDを含み、これによりwebサービス・エンジンが、指定されたWSAをエンゲージすることができる。これらの要求はまた、WSAにおいて実行してwebサービス要求の作業を実行するためのアクションも識別する。たとえば、WSAは最初に従業員のリストを、そのOnloadアクティビティを介して得て、この情報をページにおいて、応答としてブラウザへ送信しておくことができる。加えて、このページはボタンを含むことができる。このボタンが押されたとき、ブラウザが、同じWSAセッションにおいて指定されたアクションを動作するためのwebサービス要求を生成する。このとき、要求がWSAセッションのIDを含む。結果として、ボタンが、動作中のWSAにおいてアクションを動作するための要求を生成して、状態がWSAにおいてすでに存在する従業員についての追加の情報を得る。
【0034】
WSAの状態がXMLパラメータのセット(webサービス・コール・データ出力を含む)によって表現される。パラメータはデータのためのXMLコンテナであり、これらはXMLスキーマを有し、これらがパラメータにおいてサポートされるデータのタイプを定義する。パラメータにおけるデータは、経時的にWSAセッションにおいて変化する。ファンクションにおいて定義されたロジックによって、WSAがパラメータ値をサービス・コール入力に割り当てることができ、ならびにwebサービス・コールの出力をパラメータに向けて送ることができる。WSAは、webサービス・エンジンによって管理されたwebサービス・コールの内外へ情報を移動するためのブローカリング・システムとしての機能を果たす。
【0035】
最後に、WSAは、完全にインタラクティブなユーザ・インターフェイスの生成および更新をサポートする。ユーザ・インターフェイスは、Pagesと呼ばれる、動的に生成かつ更新されたXMLエンティティのセットからなる。PagesはXMLデータのブロックであり(HTMLはサブセットとなる)、ブラウザによる表示に適している(しかし、いかなる形でもブラウザにおける閲覧に限定されない。PageはHTMLを含まなくてもよい)。
【0036】
ユーザ・インターフェイスはWSAのオプションの特性である。いくつかのWSAは、計算をデータ入力上で実行し、UIコンポーネントを含んでいない出力データを生成する機能性を有する。これらのWSAは通常、最初のwebサービス要求の実行後にシャット・ダウンする。他のWSAは、UIを応答データにおいて生成する起動機能性を有する。この生成されたUIは、タグ付けされた挙動を含むことができ、これによりブラウザが、webサービス・エンジンに対する後続のサービス要求を静止して、動作中のWSAに接続し、追加のアクションを呼び出す。次にこれらのアクションは、サービス要求に対する応答として送信され戻される新規または更新されたページを生成する結果となる可能性がある。この対話を介して、WSAはユーザとの複雑な対話をハンドルすることができるが、同時に、インターネット全体に分散されているwebサービスをエンゲージするwebサービス・コール・アクションを実行することができる。
【0037】
<<ランタイム・モデルの構造>>
ランタイム・モデルは、いかなるXMLデータ(XMLにおいて記述されたwebサービスを含む)も表現するドキュメントのタイプである。たとえば、1つまたは複数の実施形態では、ランタイム・モデルはXMLドキュメントであり、これはWSAの構造、機能性および挙動を宣言する。もう1つの実施形態では、ランタイム・モデルが、たとえば、3Dジオメトリック・データ・エンティティまたはXSL(eXtensible Stylesheet Languageエンティティ)を表現する。1つまたは複数の実施形態では、webサービス・エンジンにおけるモデル・ランナー・ドライバがランタイム・モデルのコンテンツを、WSAを生成するために解釈する。しかし、他のタイプのサービスは、新しいアプリケーションのために使用されたランタイム・モデル・エンティティの解釈をハンドルすることができる。1つまたは複数の実施形態は、オープンかつ拡張可能であるスキーマに従うためのランタイム・モデルに備える。
【0038】
ランタイム・モデルは幅広いアレイのエンティティをサポートしており、これらが異なる態様のWSAを記述する。ランタイム・モデルは機能性を宣言することができ、多数のランタイム・モデルが、ランタイム実行中に協調するWSAに呼び出される結果となる。これは、ランタイム・モデルにwebサービスへのコールを宣言させることによって実施され、webサービスは他のランタイム・モデルへの参照を作成する。
【0039】
<<モデル>>
1つまたは複数の実施形態では、ランタイム・モデルがModelと呼ばれるルート・ノードを有することができる。Modelエンティティはサブノードのセットを含む。この実施では、これがPages、ServiceCalls、Triggers、ParametersおよびBehaviorsを含む。以下で参照するように、XMLの機能性および使用は、共通に利用されるものに基づいている。さらに、本明細書で利用されたXML記述は、記述のためのものであり、XMLデータは空のタグからなる可能性がある。空のタグは<タグ名/>としてフォーマットされる。XMLデータは、満たされたタグを、<タグ名>他の<タグ付けされたデータ>さらなるデータ</タグ付けされたデータ>を含むデータ</タグ名>の形式で含むことができる。加えて、XMLの構造をスキーマ言語において定義することはできず、ランタイム・モデルは、いかなるXMLスキーマにも従ういかなるXMLデータも含むことができる。
【0040】
たとえば、以下のXMLは1つまたは複数の実施形態を記述し、これはランタイム・モデルにおいて利用することができるいくつかのエンティティを含む。
【表1】
【0041】
Pages
ランタイム・モデルのPagesエンティティは、個々のページ・エンティティのセットを含む。ランタイム・モデルはいかなる数のページを有することもできる。Pagesは、ブラウザにおける表示のために適切にフォーマットされるコンテンツおよびUIのための媒介物としての機能を果たす。
【0042】
モデル・ランナー・サービス・ドライバがWSAを生成した後、これはWSAにおいて機能性のブロックを実行し(以下のサービス・コールおよびトリガのセクションを参照)、これが最終的に応答を要求側に送信して戻す。多くの回数、応答はページの形式であり、ブラウザにおける表示に適している。
【0043】
ページは単に、WSAセッションにおいてパラメータ化されたXMLデータの別のタイプであるので、WSAはページを出力としてサービス要求に利用するか、あるいは入力として別のwebサービスに利用することができる。これは、WSAがページを入力として様々なwebサービスに送信できることを意味する。たとえば、WSAはページをeメールのwebサービスへ、メッセージのコンテンツとして送信することができる。
【0044】
Pageエンティティは、以下のエンティティを含む。
【表2】
【0045】
PageにおけるContentsエンティティは、ネストされたXMLを含むいかなるタイプのHTMLも含む。ContentセクションはXMLエンティティも含み、これがデータおよびコントロールのためのプレースホルダを表現する。
【0046】
WSAにおいてコールすることができるアクションの1つが、Pageアクションである。このアクションはwebサービスを呼び出し、これが変換をPageエンティティのセットに、データをサービス要求に対する応答として送信するための準備において適用する。Pageアクションにより、システムがパラメータ・データを、Pageエンティティにおいて宣言されたデータ・プレースホルダに挿入し、コールバックをPageにおいて、そのPageのためのランタイム・モデルにおいて定義済のいかなる宣言された挙動についても書き込む。たとえば、LDT:Buttonエンティティは、HTMLボタンの存在を宣言し、これはwebサービス要求をWSAにおけるアクションに対して呼び出すクリック・アクションを有する。
【0047】
<<サービス・コール>>
ランタイム・モデルのServiceCallsエンティティは、個別のServiceCallエンティティのセットを含む。サービス・コールは、webサービス・ディレクトリにおいて定義されたwebサービスを呼び出すアクションである。1つまたは複数の実施形態では、サービス・コールが、WSAの実行を管理している同じwebサービス・ディレクトリに位置するwebサービスのみを識別することができる。1つまたは複数の追加の実施形態では、webサービス・エンジンがwebサービス要求を、別のwebサービス・ディレクトリに位置するwebサービスに対して、それが動作中であるWSAに代って行うことができる。
【0048】
サービス・コールは、webサービス・ディレクトリにおけるwebサービスをコールするアクションである。サービス・コールは、名前付きのwebサービスのための入力および出力データ・スキーマ、ならびにデータのためのプレースホルダのWSA常駐表現も提供する。最後に、サービス・コールは、webサービスの入力への入力値の割当ての定義を維持することができる。これらの割り当てられた値は、定数、またはランタイム・モデルにおけるパラメータにおける値への参照にすることができる。
【0049】
ServiceCallエンティティは、以下を含む。
【表3】
【0050】
InputDefinitionsエンティティは、個別のDataDefinitionエンティティのセットを含む。これらのエンティティは入力への定数値の割当て、ならびにサービス・コールへの入力のためのデータのソースとしてのランタイム・モデルにおけるパラメータの割当てを含む。
【0051】
1つまたは複数の実施形態では、効果選択条件を、ServiceID情報の一部として含めることができる。1つまたは複数の実施形態では、サービス・コールがサービスをその名前によって識別する。さらに、1つまたは複数の実施形態では、ServiceIDが一意の識別子をLDAP識別名の代わりに利用することができる。このような実施形態では、テンプレートを容易に、あるディレクトリから別のディレクトリへ移動することができる。もう1つの実施形態では、サービス・コールが、「リリース・レベル」などの属性のための属性値を、正しいバージョンのサービスを識別する手段として識別することができる。さらに、サービス・コールは、サービスのバージョンを選択条件によって識別することができる。
【0052】
<<Triggers(ファンクションとしても知られる)>>
ランタイム・モデルのTriggersエンティティは、Actionエンティティのセットを含む。Triggersはクラスにおけるメソッド、およびスクリプトされたHTMLページにおけるファンクションに相当するものである。
【0053】
トリガは実行ロジックのブロックであり、識別ハンドルとしての機能を果たすアクションを有する。ランタイム・モデルは、アクション・ハンドルをイベントにバインドすることができ、これは挙動の概念を構成するものである。ランタイム・モデルにおける挙動は、イベントへのアクションのバインディングとして定義される。
【0054】
1つまたは複数の実施形態では、トリガがアクションのシーケンスとして定義される。トリガのアクションが呼び出されたとき、システムはトリガによって指定されたアクションを呼び出す。別の実施形態では、トリガが、分岐を含む多数の形式のロジック処理をサポートする。
【0055】
Triggerエンティティは以下を含む。
【表4】
【0056】
Actionsエンティティは、Triggerが呼び出されたときに実行されるアクションのロジックおよびフローを記述する情報を含む。これを、単純なアクションのリストにすることができる。
【0057】
Actionsは、ランタイム・モデルにおいて機能的に定義されたものへのハンドルである。1つまたは複数の実施形態では、ランタイム・モデルにおいて各サービス・コール、トリガおよびページに関連付けられたアクションがある可能性がある。
【0058】
<<パラメータ>>
Parametersエンティティは、いかなるタイプおよび数のXMLエンティティを含むこともできる。これは、パラメータがいかなる形式のデータも表現できることを意味する。
【0059】
Parameterはデータのためのプレース・ホルダであるが、データの構造表現のためのプレース・ホルダでもある。すなわち、各パラメータについて、システムがXMLエンティティを維持し、これは許容可能なコンテンツ、およびパラメータにおけるデータのための構造(すなわち、スキーマ)を定義する。
【0060】
パラメータの構造表現を、パラメータに関連付けられたデータが出現するよりも長く前に満たすことができる。
【0061】
<<挙動>>
挙動(behaviors) のエンティティは、アクションへのイベントのマッピングを定義する。この実施では、挙動はPagesにおいてのみ、コントロールを介して定義される。コントロールは、そのイベントの1つに関連付けられたアクションを識別することができる。この実施では、これらのアクションを、webサービス・エンジンに戻されるwebサービス要求にのみすることができる。
【0062】
<<テンプレート>>
1つまたは複数の実施形態では、ランタイム・モデルが個別にハード・コーディングかつプログラムされる。しかし、このようなランタイム・モデルをコーディングかつ維持することは困難であり、これは関係するwebサービス(ランタイム・モデルの一部としてコールすることができるもの)の常に変化し続ける特性、および異なるユーザのためのランタイム・モデルの間で必要とされる可変性の量が高いことによる。結果として、本発明の1つまたは複数の実施形態は、ランタイム・モデルを構築するための命令を記録するシステムを提供する。これらの命令は機能と呼ばれ、これらはテンプレートと呼ばれるオブジェクトにおいて記録される。
【0063】
テンプレートは、容易にランタイム・モデルを生成するためのメカニズムを提供し、これがWSAの構造、機能性および挙動を生成あるいは宣言する。さらに、テンプレートは、単に明示的なハード・コーディングされたランタイム・モデル・ベースのサービスのためのwebサービス要求を発行するのではなく、WSAを呼び出すための強力かつ汎用のモデルを提供する。テンプレートは、ランタイム・モデルをハード・コーディングするのではなく、動的にランタイム・モデルを生成するための能力を提供する。
【0064】
1つまたは複数の実施形態では、テンプレートが特殊なタイプのランタイム・モデル(高レベルの命令を使用して書かれたもの)であり、これが子ランタイム・モデルの動的な構成に(テンプレートによって表現されたランタイム・モデルを実行することによって)備える。上述のランタイム・モデルに類似して、子(チャイルド)ランタイム・モデルは、WSAの下にある構造を表現し、WSAに変わることができる。しかし、テンプレートおよび機能は、ランタイム・モデルとしてではなくまったく異なるフォーマットにおいて実施することができる。たとえば、1つまたは複数の実施形態では、webサービスがテンプレートのコンテンツを、リレーショナル・データベースからのデータのブロックとして検索することができる。したがって、テンプレートは、ランタイム・モデルを構築するための高レベル命令のセットの使用に備える中間オブジェクトである。
【0065】
上述のように、ランタイム・モデルはパラメータを有し、これらがデータまたはデータの構造表現のためのプレース・ホルダとして利用される。テンプレートのパラメータの1つがランタイム・モデルである(子またはネストされたランタイム・モデルと呼ばれる)。そのため、テンプレートは、WSAに変換されて動作されたとき、それが実行できる別のランタイム・モデルをその内部に生成するランタイム・モデルである。
【0066】
図1は、WSAを生成するためのテンプレートの使用を例示する。図1の実施形態では、テンプレート100がランタイム・モデルである。しかし、テンプレート100がランタイム・モデルではない可能性があり、この場合、ランタイム・モデル102はいかなるランタイム・モデルの子でもなく、単にテンプレート100によって作成されたランタイム・モデルである。テンプレート100によって表現されたランタイム・モデルはWSAに変えられ、実行される。WSAの出力は子ランタイム・モデル102である。子ランタイム・モデル102はwebサービス・アプリケーション104を表現し、これを生成するために使用することができる。したがって、テンプレートはランタイム・モデルの構成を自動化する。
【0067】
上述のように、ランタイム・モデルのパラメータ・セクションは様々なタイプのXMLデータをサポートすることができる。したがって、本発明の1つまたは複数の実施形態は、子ランタイム・モデル102を一種の「ワーク・ベンチ」として、パラメータ・セクションの内部でネストする。さらに、ランタイム・モデルがWSAの機能性および挙動を定義することができるので、本発明の1つまたは複数の実施形態はランタイム・モデル(すなわち、テンプレート100)を使用して子ランタイム・モデル102を定義かつ構築し、これは、機能サービスとして知られるwebサービスへの一連のwebサービス・コールを介して行う。機能サービスは、ランタイム・モデルへの参照を入力として、他のパラメータと共に受け入れ、変換されたランタイム・モデルを出力として生成する特性を有する。別の実施形態では、子ランタイム・モデル102を、実際のサービスではなく「機能クリエータ」と呼ばれるコードを使用して構築することができる。機能クリエータを、たとえばサービス(たとえば、機能サービス)またはJavaクラスとして実施することができる。
【0068】
上述のように、テンプレート100はランタイム・モデルであり、これはいくつかの特殊なタイプのデータをそのパラメータ・セクションにおいて有し、ならびにネストされたランタイム・モデル102を生成するいくつかのwebサービス・コールを有する。
【0069】
テンプレートのパラメータ・セクションにおける特殊なタイプのデータは、以下のエンティティを含むことができる。
【表5】
【0070】
図2は、テンプレート100の構成(パラメータを含む)を例示する。ランタイム・モデル102は1つのパラメータである。第2のパラメータは、機能リスト202のものである。モデル・エンティティ/パラメータは上述のようなランタイム・モデルである。したがって、テンプレートがWSAに変わったとき、WSAによって使用されたパラメータの1つがランタイム・モデルである。以下に記載するように、このランタイム・モデルはWSAによって、完全な子ランタイム・モデル102が生成されるまで、修正される。したがって、子ランタイム・モデルは、ランタイム・モデル・パラメータを修正することによって生成される。ランタイム・モデル・パラメータは、他のパラメータ・エンティティ−機能によって提供された仕様に従って修正される。
【0071】
図3は、テンプレートを使用したwebサービス・アプリケーションの生成を例示する。最初に、webサービス・エンジン300がテンプレート・ベースのサービスのための要求を受信する。webサービス・エンジン300がこの要求をモデル・ランナー302に送信する。モデル・ランナー302はランタイム・モデルをロードし、WSAを生成するように構成される。したがって、モデル・ランナー302はテンプレート100をロードし、対応するWSA304を生成する。WSA304は機能202を含み、これが利用されて子ランタイム・モデル102が修正かつ作成される。WSA304は、機能202によって識別された機能サービスまたは機能クリエータへのコールを行い、子ランタイム・モデル102を生成する。次いで、モデル・ランナー302が利用されて、子ランタイム・モデル102がロードされ、これがWSA306に変換される。したがって、テンプレート100が利用されてランタイム・モデル102が生成され、これはシステムによって利用することができるwebサービス・アプリケーションに対応する。
【0072】
<<機能>>
テンプレート100の機能エンティティ/パラメータは、エンティティを構築あるいは生成して子ランタイム・モデル102を生成するための能力を提供する。機能エンティティは機能のリストを含み、これは機能リストとして知られるものを含む。機能リストは命令セットであり、webサービス(再生として知られる)が子ランタイム・モデルをどのように構築するべきであるかを記述し、これは「サイド・キック」webサービス(機能サービスまたは機能クリエータと呼ばれる)のセットおよび入力値(機能入力パラメータと呼ばれる)のセットの使用を介して行う。
【0073】
機能リスト202における機能はランタイム・モデル204を入力として利用し、機能がリストされる順序において実行される。各機能は、入力として使用された既存のランタイム・モデル204を修正あるいは変更することができる。この実行プロセスは再生と呼ばれる。標準プログラムの代替物として、再生プロセスをWSAの形式(以下で詳細に記載する)にすることができる。再生プロセスは、ネストされたランタイム・モデル102のコンテンツを、機能リストにおいて各機能について定義される入力パラメータに基づいて生成する。図4は、本発明の1つまたは複数の実施形態による再生プロセスを例示する。再生WSA400が機能リスト202およびランタイム・モデル204を入力として利用して、変換されたランタイム・モデル102を生成する。
【0074】
1つまたは複数の実施形態では、再生プロセスを、テンプレートの作成において即時に実行することができる。再生プロセスをこのようなときに実行することによって、ランタイム・モデルを、webサービスが動作するように要求されたときに生成する必要がない。しかし、このシナリオでは、完成されたランタイム・モデルを永続メモリに格納しなければならない。他の実施形態では、再生プロセスが、webサービスが動作するように要求されたときに、動的に実行される。再生プロセスをこのようなときに実行することによって、ユーザがより十分に、機能によって参照されるいかなるwebサービスも最新バージョンのサービスであること、および、利用されたいかなる入力/出力スキーマ・データも最新データであることを確信することができる。しかし、モデルまたはWSAを動的に生成することによって、処理時間が長くなる可能性がある。
【0075】
機能(feature) は、2つのコンポーネント、すなわち機能ユーザ・インターフェイス・テンプレートおよび機能サービスからなる。機能ユーザ・インターフェイス・テンプレートは、入力をユーザまたは他のアプリケーションから得ること、および、機能ブロックを機能リストにおいて構築し、続いて維持することを担う。ユーザにより機能ユーザ・インターフェイス・テンプレートに供給された入力が、機能ブロックにおいて識別された機能サービスのための入力パラメータの作成において利用される。機能サービスは、ランタイム・モデル102において機能パラメータに基づいてエンティティを生成する作業を実行する。1つまたは複数の実施形態では、機能ユーザ・インターフェイス・テンプレートが入力をユーザから得て、次いで機能ブロックを生成する。このデータのブロックは順次機能リストに配置される。機能ブロックは、入力パラメータ、およびランタイム・モデル・エンティティを構築する作業を行う機能サービスの名前を含む。1つまたは複数の実施形態では、ユーザが機能UIテンプレートに供給する入力が、UIテンプレートが機能ブロックに入れるものと同じでない可能性がある。たとえば、1つの機能においては、UIテンプレートがユーザからリレーショナル・データベース・テーブルの名前およびクエリーを行う列についての入力を取り、次いでこれらをSQL(構造化照会言語,structured query language) データ入力として機能ブロックに書く。そのため、機能UIテンプレートが、入力における変換を、これらを機能ブロックに配置する前に実行することができる。ユーザが機能を修正した場合、機能UIテンプレートが逆マッピングも実行して機能ブロック入力を取り、これらをUIへ、ユーザが修正するためにマップし戻す。
【0076】
テンプレートにおける各機能がXMLデータのブロックによって表現され、これは、機能のための入力パラメータ値のセット、および、機能入力値を使用してランタイム・モデル204をランタイム・モデル102に変換するための作業を実行する機能サービスの名前を定義する。各機能サービスが効果的にランタイム・モデル204をその入力の1つとして取り、変換されたランタイム・モデル102をその出力として生成する。図5は、変換されたランタイム・モデル102を作成するための機能および機能サービスの使用を例示する。機能1のための機能ユーザ・インターフェイス・テンプレートは、機能1入力パラメータ500を得ることができる。機能サービス1は機能1入力パラメータ500およびランタイム・モデル204を利用して、変換されたランタイム・モデル102を生成する。次いで、機能サービス2が、変換されたランタイム・モデル102および機能2入力パラメータ502を入力として利用して、新しい変換されたランタイム・モデル102を生成する。機能リストにおける各機能に対応する機能サービスが、変換されたランタイム・モデルを、機能入力パラメータとの組み合わせにおいて処理して、最終的な子ランタイム・モデル102を生成する。
【0077】
機能サービスが順次実行されるので、各機能サービスが、変換されたランタイム・モデルを全体として望むように修正することができる。したがって、各機能は、動的に既存のランタイム・モデルを調べ、このモデルをランタイム・モデルの存在、不在または状態に基づいて修正するための能力を有する。このような能力は、プログラムがハード・コーディングされ、個別のユニットのみを既存のプログラムとは独立して修正することしかできない通常のプログラミングに勝る、著しい利点を提供する。加えて、ハード・コーディングされたプログラムは動作することしかできない。実行中に、ハード・コーディングされたプログラムは、その挙動を変更する手段として、環境に対して反応することしかできない。テンプレートでは、機能がプログラムをその動作前に構築する。したがって、プログラムは別のレベルの適合を有し、これがプログラムに、その動作の前に注入され、あるいはそれにおいて同期化される。したがって、機能は既存のランタイム・モデルのいかなる態様も修正することができ、1つの機能が、いかなる実行前の機能の効果も、望むなら反転させることができる。
【0078】
単純な機能の一例が、インポートされたページ機能(ランタイム・モデルにおけるPageエンティティのHTMLバックグラウンド・コンテンツを構築するもの)である。この機能は機能入力パラメータを有し、これは、インポートされたページのコンテンツのための基本または開始ポイントとして機能するページへのURLを指定するためのものである。たとえば、機能ユーザ・インターフェイス・テンプレートはURLをユーザまたは他のサービスから要求することができる。URLが得られた後、機能ユーザ・インターフェイス・テンプレートがURLを機能サービスへ、さらなる処理のために転送することができる。別法として、機能UIテンプレートが機能ブロックを書くことができ、これは、機能サービスに渡されることを再生サービスが保証するデータを含む。上述のように、指定されたURLに位置するページを、機能サービスへの入力として利用することができ、これが最終的にエンド・ユーザへの伝送用のページを生成する。この機能は、インポートされたURLコンテンツを使用するランタイム・モデルにおいて構築するべきページ数を指定するための入力も有する。その2つの入力のために供給された値に基づいて、ランタイム・モデルにおいてインポートされたページを構築する機能サービスは、正しい数のページ・エンティティをランタイム・モデルにおいて生成し、ページが、(現在の機能の前の機能によって)ランタイム・モデルにおいて構築されている他のエンティティに関して一意のIDを有することを保証する。
【0079】
1つまたは複数の実施形態では、1つまたは複数の機能が静的なHTMLドキュメントを入力として(たとえば、URLによって指定されたようなもの)有することができ、ランタイム・モデルからの出力はサービス使用可能なwebページである。サービス使用可能なwebページは、エンド・ユーザ/閲覧者がドキュメントのある部分を選択することによってサービスを呼び出すことを許可することができる。たとえば、表がwebページ上に表示された場合、ユーザは、表における項目をソートするための列を選択することができる可能性がある。このようなアクションが、選択された入力(たとえば、選択された列の値)に基づいて情報をソートする能力を有するwebサービスを呼び出すことができる。別法として、ユーザが表の特定の行を選択し、その行に関係するより詳細な情報を得ることができる可能性がある(たとえば、行が従業員および従業員の給与を表した場合、その行をクリックすることにより、その従業員に関係するより詳細な情報を生成することができる)。所望のアクションをwebサービスの一部として完了するには、あるいはwebページをサービス使用可能にするには、1つまたは複数の機能を利用する必要がある可能性がある。各機能は1つまたは複数のエンティティからなる。
【0080】
機能エンティティは、たとえば以下のエンティティからなり得る。
【表6】
【0081】
FeatureServiceIDエンティティは、この機能のためのランタイム・エンティティを構築する作業を、再生プロセス中に実行する機能サービスの名前である。
【0082】
FeatureModifyTriggerエンティティは、Feature Serviceに供給される入力値を収集するためのUIを提供するテンプレートの名前である。このUIが呼び出されるのは、ユーザが最初に機能をテンプレートにおいて作成したとき、ならびにユーザが、機能に供給された入力値のいくつかを変更することを望んだときである。
【0083】
FeatureInputsエンティティは、機能の入力パラメータのための値割当て情報を含む。この情報を、定数値、またはランタイム・モデルにおける他のパラメータの値への参照の形式において供給することができる。
【0084】
1つまたは複数の実施形態では、機能が単に、機能サービス、および、エンティティをランタイム・モデルにおいて構築するための機能サービスを可能にする入力パラメータのセットを識別するテンプレートにおけるメタデータのブロックである。
【0085】
別法として、1つまたは複数の実施形態では、機能エンティティが、たとえば以下のエンティティからなり得る。
【表7】
【0086】
FeatureClassnameエンティティは、この機能のためのランタイム・エンティティを構築する作業を、再生プロセス中に実行する機能クリエータの名前である。
【0087】
FeatureModifyTemplateエンティティは、機能クリエータに供給される入力値を収集するためのUIを提供するテンプレートの名前である。このUIが呼び出されるのは、ユーザが最初に機能をテンプレートにおいて作成したとき、ならびにユーザが、機能に供給された入力値のいくつかを変更することを望んだときである。
【0088】
<<機能選択>>
ユーザは、テンプレート・オーサー・アプリケーションを使用することによって作成のための機能を選択することができる。1つまたは複数の実施形態では、テンプレート・オーサー・アプリケーションは、ユーザが単に所望の機能を選択し(例えば、カーソルが所望の機能上に配置されているときにマウス・ボタンをクリックすることにより)、その機能をテンプレート内にドラッグ・アンド・ドロップすることを可能にする。そのような実装形態は、ユーザ・インターフェース機能およびドラッグ・アンド・ドロップ機能を生成するWSAによって提供され得る。そのような実施形態のユーザ・インターフェースは、ユーザがそれを介して、テンプレート内に機能を入れるのに使用する機能入力パラメータを供給する機構を提供することができる。テンプレート・オーサー・アプリケーションは、入力値をとり、テンプレートの機能セクション内に機能メタデータ・ブロックを書き込む。
【0089】
図6は、本発明の1つまたは複数の実施形態によるテンプレート内で使用する機能の選択を示している。テンプレート604内に配置するための機能を選択するには、ユーザは、テンプレート作成者(オーサー)アプリケーション602内の機能タイプのリストから機能を選択する。システムは、特定の機能に関する入力値を得るためにユーザと対話するための適切なUIを生成するように設計されたテンプレート・ベースのウェブ・サーバを起動する。「機能編集」UI600として知られるこのUIは、ユーザから機能の入力パラメータに関する値を得ることを担う。これらの値は、ユーザによって供給された明示的値(数「123」または「http://www.bowstreet.com」のようなURLのような)であることが可能であり、あるいはランタイム・モデル内のエンティティに対するユーザ供給されるリファレンス(「123」のような数またはURLを含むパラメータ「pdq」に対するリファレンスのような)であることが可能である。
【0090】
リファレンスの使用の一実施例は、ボタン機能の場合である。ボタン機能に対する入力パラメータのうちの1つは、このボタンがそこに追加される一組のページである。ユーザは、特定のページを名前で参照すること、あるいは「すべて」などのキーワードを特定することができる。ボタン機能は、機能入力パラメータとして供給される値に応じて、正しい数のボタンを正しい数のページ上に構築することができる。
【0091】
ユーザが機能編集UI600に値を供給し終わると、機能編集UI WSA600は、機能ブロックと呼ばれる1つのブロックのXMLデータを編集中のテンプレート604内に書き込む。機能編集UIは、このブロックのデータを編集中のテンプレート604内のパラメータの機能セクション606内に、テンプレート604内に既に存在する最後の機能の後に書き込む。
【0092】
ユーザがテンプレート・オーサーWSAに新しい機能の作成プロセスを開始するように指示する仕方は、WSA内のアクションを実行するウェブ・サービス要求を行う(テンプレート・オーサーUI内の機能上でクリックする)ことによってである。このアクションは、特定の機能編集UIテンプレート600に関するテンプレート・ベースのウェブ・サービスを起動する。このテンプレート・ベースのサービスは、ユーザから入力を得るためにそれ自体のUIを生成し、また最終的に、機能入力値をそれに指示し、テンプレート・オーサーWSAが機能メタデータ・ブロックを作成できるようにするテンプレート・オーサーWSA602内のアクションを呼び出す。
【0093】
機能UIテンプレートとテンプレート・オーサーWSAが合同で機能ブロックを書き込んだ後、テンプレート・オーサーWSA602は、再生成ウェブ・サービスを起動する。おのウェブ・サービスは、テンプレート内に書き込まれたばかりの機能ブロックと関連する機能サービスを実行する。(再生成は、機能リスト606内の機能に対応する機能サービス610のすべてを実行するのを担うことを留意されたい。)機能サービス610は、その入力パラメータ値をランタイム・モデル608(機能サービスはこれを分析し、判断を下す基準として使用することができる)とともに使用して、変換されたランタイム・モデルを生成する。
【0094】
機能は、ランタイム・モデルを変換するプロセス・ステップのうちの1つをキャプチャする。テンプレート内の一組の機能は、ウェブ・サービス・エンジンによるWSAへのインスタンス化の準備が整ったランタイム・モデルに空のランタイム・モデルを変換するのに必要な一連の変換の全体を協働して定義する。
【0095】
機能の一特性(プロパティ)は、アプリケーション開発者によって通常、手動で行われる一組のプロセス・ステップの実行をキャプチャし、自動化することである。従来のアプリケーション開発ツールは、開発者の設計意図をキャプチャすることができない明示的モデリング手法、ならびにアプリケーションを構築する際に行われるプロセス全体をサポートする。Java開発製品およびC++開発製品を含む従来のツールは、手動設計プロセスの最終結果を表すデータ(すなわち、ソース・コード)をキャプチャする。このため、従来のアプリケーションは、構築するのに時間がかかり、変更するのが困難である。開発者は、変更を行うのにコードを削除し、新しいコードを作成しなければならない。開発者は、変更が完全に伝播されるのを確実にすることを担う。従来のアプリケーション編集ツールは、アプリケーションが壊れているかを判定するのを助けることができ、アプリケーションを分解工学してその問題を診断しようと試みることができる。ただし、アプリケーションの構築がそれに従って行われた製法の記述はないので、その製法の記述からアプリケーションを再生成する簡単な手段は存在しない。
【0096】
本発明の1つまたは複数の実施形態によれば、機能は、ランタイム・モデルだけではなく、どの型のXMLもでの構築にも適用することができる。例えば、XMLベースのメッセージを構築するために、一組の機能を作成することができる。
【0097】
機能の一特性は、モデル内のエンティティに対する参照である機能入力値を有するのが可能なことである。この特性により、機能は、モデルにエンティティを追加するだけでなく、エンティティを「過去のもの」としてマーク付けすることもできる。機能は、それが適用されるモデルに非常に深い変換をもたらすことができる。
【0098】
<<機能再生成>>
前述のとおり、再生成プロセスは、テンプレート内に特定された機能に基づいてWSAを作成する。機能再生成ウェブ・サービスは、機能リストおよびランタイム・モデルに対して動作する。完全な再生成は、ゼロからランタイム・モデルを再構築することに関わり、他方、部分的再生成は、機能のいくつかだけのためにランタイム・モデルを変更することに関わる。例えば、本発明の1つまたは複数の実施形態は、ある状況でいくつかの機能の使用を提供することができ、また別の状況では、別の一組の機能の使用を提供することができる(両組の機能は、同じテンプレート内に存在している)。
【0099】
再生成サービスは、機能サービスを実行したとき、ランタイム・モデルをサービス内に通し、それがランタイム・モデル内のエンティティを参照できるようにする。各機能サービスは、エンティティを追加する能力を有している。1つまたは複数の実施形態は、ランタイム・モデルが単一のXML文書に広がることができるようにする。他の実施形態では、機能サービスは、ひとまとまりXML文書全体に広がるランタイム・モデル内のエンティティを構築する。
【0100】
1つまたは複数の実施形態では、再生成サービスは、新しいモデルを構築する一方で、古いランタイム・モデルのコピーを維持しない。ただし、他の実施形態では、再生成プロセスが失敗した場合、再生成サービスが元のランタイム・モデルを戻せるように、古いランタイム・モデルが記憶される。さらに、ランタイム・モデルのバックアップ・コピーにより、新しいモデルが再生成される際に、それを古いモデルと比較できるようにすることが可能となり得る。
【0101】
1つまたは複数の実施形態では、再生成サービスは、過去の再生成と比較して、現在の再生成中にランタイム・モデルから除去されたXMLエンティティの「転送アドレス」リストを維持する。機能サービスが、前回、生成したのとは異なるエンティティを再生成し、作成する場合には、新しいエンティティに対する古いエンティティのマッピングが転送アドレス・リストに追加される。除去されたエンティティを参照する可能性がある後の機能サービスは、再生成サービスによって「救助」されることが可能である。再生成サービスは、転送アドレス・リストを使用し、その参照を新しいエンティティに向けて自動的に「曲げる(bend)」ことができる。
【0102】
本発明の1つまたは複数の実施形態は、各エンティティを作成した機能のマッピングを維持する。これにより、いくつかのウェブ・サービスがランタイム・モデルをより効率的に扱うことができるようになる。例えば、機能リストの真中で、ユーザが機能リストを編集しようと所望するとき、システムは、編集された機能リストの後に、機能リストによって生成されたすべてのエンティティを即時に探し出すことができる。システムは、この情報を使用し、その後に作成された機能リスト内で、ユーザが参照目的でエンティティを選択するのを防止する。この参照が行われるのを防止することにより、エンティティがまだ機能リスト再生成プロセスで作成されていないために、機能リストがそのエンティティを参照できないことによって引き起こされる不必要な再生成の失敗をシステムは防止する。
【0103】
<<テーブル機能リスト>>
本発明の1つまたは複数の実施形態は、様々な機能リストの利用を提供する。例えば、1つまたは複数の実施形態によれば、テーブル機能リストを利用することができる。
【0104】
テーブル機能リストは、ページ内でXMLデータを表示するテーブルを作成する。そのような機能リストにより、ユーザは、そのテーブルをページ内の名前の付いたエンティティにバインドできるようにすることが可能である。このエンティティは、空のタグ、またはグラフィカル形式設定を定義するテーブルであることが可能である。
【0105】
1つまたは複数の実施形態では、テーブル機能リストは、以下の入力のうちの1つまたは複数を利用する。whatページ、whatプレースホルダ(ページ内の名前付きタグ)、および表示するwhat XMLパラメータ。
【0106】
機能リストは、列名としてラベルのヘッダを有する行形式のXMLデータを表示するページ内のテーブルを作成する。ユーザが、このページ上で「ページ」アクションを活動化したとき、テーブル・データがテーブル内で表示することになり、これは、名前付きタグ内容内で定義されている任意の形式設定による(すなわち、<TD>タグおよび<TR>タグの形式設定)。
【0107】
<<アクティブ列機能リスト>>
1つまたは複数の実施形態では、「アクティブ列機能リスト」と呼ばれる機能リストを利用することができる。アクティブ列機能リストは、静的な表示列(例えば、テーブル機能リストによって作成された)をアクティブ列に変換する。したがって、列のセル内容は、WSAの制御下にある。列は、アクションを起動するボタンを含むことができ、あるいはリンク、チェックボックス、またはテキストフィールド等を表示することができる。ユーザは、制御および挙動を特定する。例えば、ユーザは、列内にボタンを入れ、サービス・コールを行うために特定のテーブル行値にアクセスするファンクションに対するコールをクリック・アクションに活動化させることができる。
【0108】
1つまたは複数の実施形態では、アクティブ列機能リストは、以下の入力のうちの1つまたは複数を利用する。whatテーブル、what列名(これは位置を特定することによる新しいものであり得る)、what列エンティティ(ボタン、クリック可能リンク、隠し、チェックボックス、テキストフィールド等)。
【0109】
アクティブ列機能リストは、静的列をパラメータ化され、制御された列に変換する。この機能リストは、コントロールを列内に入れ、元の内容をその名前のようなコントロールの何らかの特性にマップすることができる。また、この機能リストは、ボタンのクリック動作を定義するなどの列上の動作も構築する。
【0110】
<<可視性制御/UI制約機能リスト>>
1つまたは複数の実施形態は、可視性制御機能リスト(UI制約機能リストとも呼ばれる)を提供する。UI制御機能リストは、サーバ上の推論エンジンを利用するウェブ・サービスに対する1つまたは複数のサービス・コールを構築する。推論エンジンは、一組のパターンを維持し、UIに対する更新を起動するようなことを、そのUI内でユーザが行ったか否かを検査するプロセスを管理する。
【0111】
動作カテゴリ内の多くの機能リストは、推論エンジンのユーザであることになる。UIコントロールの可視性からファンクションの呼出しに至るすべてを行うアクションに、モデル内の状態変化の様々な組み合わせをリンクすることができる。
【0112】
推論(inference) エンジン・ベースのウェブ・サービスに対するコールを生成する機能リストは、ユーザから入力を受け取り、再生成の一環として、モデル・ランタイム・オンロードに推論エンジン・サービス内に通される規則定義入力パラメータを構成する。また、これらの機能リストは、イベントにバインドされた更新アクションの形で、モデルに動作を追加する。このアクションは、推論エンジンに、モデルの状態に対する重要な変更を知らせる。推論エンジン・サービスは、モデルの状態を変更し、様々なアクションを呼び出すことによって応答することができる。
【0113】
例えば、ユーザが、50の状態のうちの1つまたは複数を自分が選択できるようにするドロップ・ダウン・リスト・コントロールを作成したものと想定する。さらに、このユーザが、はい/いいえのオプション、および「あなたのドライバのなかにメキシコ人はいますか?」というラベルを有するチェックボックス・コントロールを構成したものと想定する。
【0114】
次に、ユーザは、UI制御機能リストを構成する。この機能リストは、ユーザに制約の性質に関する質問をする。ユーザは、州=CAまたはTXであるとき、メキシコ人ドライバ質問チェックボックスが可視でなければならず、それ以外のときは、そうではないことを示す。
【0115】
この機能リストは、ランタイム・モデル内に適切なエンティティを構築することによって、残りのことを処理する。この機能リストは、「推論エンジン・ロード」サービスに対するコールを構築し、そのアクションをオンロード機能に追加する。この機能リストは、新しい規則(州=CA、TX−>チェックボックス可視、そうでなければ、逆)の構文を書き、このサービスに対する入力にそれを付加する。次に、この機能リストは、State Dropdown上で「On Value Change」イベントに、「推論エンジン更新」に対するコールをバインドする。次に、ユーザが状態値、およびコントロールから出るタブを変更したとき、ブラウザが、推論エンジン・サービスにその変更を知らせ、推論エンジンがチェックボックスの可視性ステータスに対する何らかの変更を行い、ページ・アクションを行うことができるようにすることになる。したがって、推論エンジンは、州の値(例えば、州が、カリフォルニアまたはテキサスからミネソタに変更されたとき)ことを知り、メキシコに関する質問を表示しないのを知ることになる。
【0116】
UI制約機能リストは、個々のコントロール、複数のコントロール、またはいくつものコントロールを制御するDIVタグのようなものの可視性に対する制御を提供することができる。さらに、この機能リストは、許容可能な値の範囲、および値のリストに対する制御を提供することができる。
【0117】
<<XML変換機能リスト>>
本発明の1つまたは複数の実施形態は、ブロックのXSL命令を含む別のタグ付きデータ・オブジェクトを使用して、XMLタグ付きデータ・オブジェクトの変換を行うバーサタイル・サービスを提供する。このサービスは、変換されたデータを表す変換されたタグ付きデータ・オブジェクトを出力する。このサービスは、LotusXSLと呼ばれるIBMからのものなどの標準XMLおよびXSLアクション・エンジンをラップすることになる。
【0118】
さらに、1つまたは複数の実施形態は、一般に、タグ付きデータ・オブジェクト・パラメータに対する参照を含む入力をユーザから受け取り、XSLのブロックを書き込み、XSLプロセッサ・サービスに対するコールを書き込む、いくつかの機能リストを構成する。
【0119】
一実施例として、列フィルタリング機能リストが、結果セットを選択するようにユーザに求め、次に、その結果セットの構造表現(スキーマ)からフィルタリングすべき(含める)一組の列を選択するようにこのユーザに求めることが可能である。この機能サービスは、XSLプロセッサ・サービスに対するサービス・コールを書き込み、ブロックのXSLデータをパラメータの形で変換のための命令として書き込み、またXMLデータを入力とし、XSLパラメータを変換ロジックとして割り当てるファンクションを書き込み、そのサービスを呼び出す。
【0120】
再生成で、そのような機能サービスは、XML変換サービスが呼び出されたとき、ランタイムで実行されるXSLブロックを動的に構築する。
【0121】
このXSLプロセッサ・サービスは、XSLブロックを書き込み、割当てを行い、またこのサービスのアクションを呼び出すいくつかの機能リストに関するワーク・ホースとして働く能力を有する。1つまたは複数の実施形態では、サービスは、2つの異なるタグ付きデータ・オブジェクトをマージしようとした機能リストによって使用されることが可能である。そのような機能リストは、2つのタグ付きデータ・オブジェクトを単一の入力XMLオブジェクトに「集中」させ、次に、データのマージング(インター・スプライシング)をXSLロジックに実行させることができる。
【0122】
<<サンプル・テンプレート>>
以上の説明によれば、本発明の1つまたは複数の実施形態は、セルラー電話(携帯電話)カタログ・システムを提供することができる。セルラー電話機カタログ・システムは、ある製造業者から入手可能な電話機を表示するのに役立つことが可能であり、表示された電話機のうちの1つの上でクリックすることにより、選択された電話機に関する詳細な情報を提供する。例えば、ユーザには、図7Aの表示700が提示されることが可能である。「詳細」ボタン702のうちの1つを選択することにより、ユーザには、図7Bの表示704として対応する行内にその電話機の詳細な説明が提示される。本発明の1つまたは複数の実施形態は、機能性を構成し、図7Aおよび7Bに示すとおりその結果を表示する能力を提供する。
【0123】
例示の目的で、以下の説明は、「セルカタログ」テンプレート(本発明の1つまたは複数の実施形態により利用されるテンプレート)の部分が、既に作成されているものと想定する。例えば、テンプレートは、いくつかのサービス・コールおよび入力ページ上のテーブル内でXMLセル電話機カタログを提示するUI制御機能リストを既に有するものと想定する。テンプレート内で提供される基本的機能性には、セル電話機XMLデータ・ソースを開き、XML変換サービスを使用してそのデータ・ソースをカタログに変換する能力が含まれる。さらに、機能性には、セル電話機ブランド名リストをXMLデータから抽出し、その情報をドロップ・ダウン・リスト710内に提示して、ユーザがブランドを選択し、ブランドによってセル電話機カタログをフィルタリングできるようにする能力が含まれる。したがって、既存のテンプレートは、詳細ボタン702を含む製品情報列なしに、静的HTMLページ(セルラー電話機の特定のブランドを選択して表示する能力を有する)の表示を提供する。
【0124】
説明した実施形態の目的は、製品仕様サービス(例えば、詳細な製品説明表示704を得るための)をシステムに呼び出させるテーブルにアクティブ列のボタンを追加することである。このサービスは、ウェブ・サービス・ディレクトリ内で公表されている。このサービスは、テーブル内の選択された行によって識別された製品に関する詳細な製品仕様を戻す。ユーザがテーブル行内の詳細ボタン702を押したとき、WSAがそのサービスを呼び出し、行特定情報をそのサービス・コールに入れ、次に、別個のページ上で出力データ704を提示する。
【0125】
1つまたは複数の実施形態によれば、既存のテンプレートを編集するため、テンプレート・オーサー・アプリケーションを使用してテンプレートを開く。図8は、テンプレート・オーサー・アプリケーションの「テンプレートを開く」スクリーン802からのセルカタログ・テンプレート800の選択を示している。
【0126】
図9は、オープン・セルカタログ・テンプレート800を示している。表示700は、このテンプレートからの出力の現在のビューを示している。表示900は、セルカタログ・テンプレート800内の機能リストの現在のリストを示している。
【0127】
<<既存する機能リスト>>
テンプレート800の既存する機能リスト(表示900内に表示される)は、本発明の1つまたは複数の実施形態に従って構成することが可能である。第1の既存する機能リストは、「ユーザ・プロファイルを得る」サービスに対するサービス・コールである。このサービスは、そのテンプレート内の他の機能リストによって参照されることが可能なそのサービス出力内のいくつかのXMLエンティティを提供する。これには、ユーザの名前dsml:givenname、membership:MemberList/dsml:dn、mail address等に関する情報が含まれる。
【0128】
第2の既存する機能リストは、ランタイム・モデルが実行されたときオンロード機能性を定義するファンクションである。この機能リストは、一連のサービス・コール・アクション、および最初のページを生成する最後のページ・アクションを定義する。テンプレート内の他の機能リストは、この機能リストが参照するサービス・コール・アクションを作成することを担う。このシーケンスは、「ユーザ・プロファイルを得る」、「変換をロードする」、「カタログをロードする」、「カタログを変換する」、「ブランド選択」、「電話機選択」、および開始ページである「ページ・アクション・セル電話機データを実行する」である。
【0129】
第3および第4の既存する機能リストはともに、「XMLファイル・リーダ」サービスに対するサービス・コールである。第3の既存する機能リストは、XMLファイルからXMLカタログをロードし、他方、第4の既存の機能リストは、XSL文書をロードする。
【0130】
第5の既存の機能リストは、「XSL変換サービス」に対するサービス・コールである。この機能リストは、第3の機能リストおよび第4の機能リストからのXMLカタログおよびXSL文書のサービス出力を入力としてこのサービス・コールに割り当てる。このサービスは、入力カタログからの特定の抽出されたデータを含む新しいXML文書を構築する。このデータのいくらかは、属性からエンティティに、またその逆に変換される。
【0131】
第6の既存する機能リストは、「インポートされたページ」である。この機能リストは、入力としてURLの名前をとり、インポートされたHTML内容を含むランタイム・モデル内でページ・エンティティを構成する。このページ内容は、再生成時にインポートされ、参照の目的で他の機能リストの利用に供される。
【0132】
第7の既存する機能リストは、テーブルである。この機能リストは、インポートされたページ内の名前付きエンティティに対するリファレンスをとり、HTMLテーブルを構築する。さらに、この機能リストは、ランタイム・モデル内の別のサービスからのサービス出力をテーブルの本文となるように割り当てる。ここで行われるのは、XSL変換サービスがデータを抽出し、それをテーブル形式で提示し、次に、別のサービスがそのテーブル・データをフィルタリングすることである。このサービス・コール(機能リスト11)からの出力が、テーブル内に入れられるものである。この結果、抽出され変換されたセル電話機カタログ・データが、インポートされたページ上に表示される。
【0133】
第8の既存する機能リストは、テーブルのヘッダを表すエンティティの固定リストを含むパラメータである。この情報は、XSL変換サービスに対するサービス・コール機能リストに対するより強力な代替案としての役割をする異なる機能リストによって自動的に作成されることが可能である。そのような機能リストは、データ抽出機能リストと呼ばれる。この機能リストは、XSL変換サービスに対するサービス・コールを構築するだけでなく、XSLデータ、およびサービス出力パラメータのスキーマを書き込むこともする。そのような機能リストは、それがXSLを書き込んでおり、したがって、そのサービスからのXML出力データがどのような構造となるのか知っているため、これらのアクションを行うことができる。この場合、出力データの構造は、パラメータ・機能リスト内に手動で符号化されたテーブル・ヘッダ名である。
【0134】
第9および第10の既存する機能リストは、インポートされたページ内のエンティティを構成するUIコントロールである。詳細には、それらの機能リストは、「電話機を示す」ボタンおよび「製造業者を選択する」ラベルである。
【0135】
第11の既存する機能リストは、「XMLテーブル・データをフィルタリングする」サービスに対するサービス・コールである。このサービス・コールは、「電話機を選択する」という名前が付いている。このサービスは、フィールド・リストおよび試験値を使用してXMLテーブルをフィルタリングする。この機能リストは、XSL変換サービスからの出力を入力としてフィルタ・サービスに割り当てる。さらに、この機能リストは、特定のブランドに関するセル電話機を探し出すのに使用する試験値として、フィルタフィールド選択コントロール(機能リスト14)からの値を割り当てる。
【0136】
第12の既存する機能リストは、電話選択アクション(機能リスト11)、およびセル電話データ・ページ・アクション(機能リスト6)を呼び出すファンクションである。このファンクションの意図は、2つのアクションをグループ化し、ユーザが「電話機を示す」ボタンを押したとき、それらのアクションが順に呼び出され得るようにすることである。
【0137】
第13の既存する機能リストは、「ユーザ・プロファイル・データを得る」サービスによって生成されたdsml:cnサービス出力から、その値を得ることである。ユーザ・プロファイルに依存して、このテキスト・フィールドは、ユーザの名前を示すように更新される。
【0138】
第14の既存する機能リストは、選択コントロールである。この機能リストは、XML電話機カタログから抽出された電話機ブランドのリストを表示するインポートされたページ内でコントロールを構築する。このリスト内で選択されたアイテムは、「電話機を選択する」サービス・コール(機能リスト11)によって使用される。
【0139】
第15および第16の既存する機能リストはそれぞれ、サービス・コールおよびパラメータである。このサービス・コールは、XSL変換サービスに対するものである。この機能リストは、「ブランドを示す」パラメータ内で供給されるブロックのXSLとともに、XML電話機カタログを入力として割り当てる。このサービス・コールは、そのサービス出力内で電話機ブランドのリストを生成する。この出力データは、フィルタリングすべき電話機のリストをユーザに提示するため、フィルタフィールド選択コントロールによって参照される。
【0140】
<<新しい機能リスト>>
ボタンの列、および詳細ボタン702のうちの1つの選択からもたらされる表示を使用可能にするため、本発明の1つまたは複数の実施形態が、様々なステップを介して、いくつかの機能リストの作成/選択を提供する。
【0141】
1.図8を参照すると、第1のステップは、前述のとおり、テンプレート・オーサー・アプリケーション内でセルカタログ・テンプレート800を開くことである。テンプレート・オーサー・アプリケーション内で、ユーザには、LDAPディレクトリ内に記憶された一組のテンプレート804、およびファイル(.tpl)内に記憶されたテンプレート806が提示される。
【0142】
2.図9を参照すると、プレビュー・ボタン902を選択したとき、再生成されたランタイム・モデルが表示700内に表示される。図9に表示された再生成されたランタイム・モデルは、結果の実行WSAによって表示されることになるものを示す。ユーザは、ドロップ・ダウン・リスト710から電話機ブランドを選択し、プレビュー・ペイン内で「電話機を示す」ボタン708を押して電話機リストをフィルタリングできることを留意されたい。
【0143】
3.次のステップは、そうでなければ静的なテーブルの第1の列として、アクティブ列の機能リストを追加することである。1つまたは複数の実施形態では、アクティブ列の機能リストは、機能リストパレットから「アクティブ列」を選択することによって作成される。図10は、「アクティブ列」機能リストUIテンプレート1000をそれが開かれた後の形で示している。次に、ユーザは、様々な設定に関する値を特定する。例えば、表示1000に示されるとおり、この設定には、以下のものが含まれる可能性がある:列がテーブル名設定1002でテーブルに入る;列の位置が、列表示位置設定1004で列1として識別される;列の型(ボタン、チェックボックス等)が、設定1006でボタンとして設定される;ボタンの押下したときのアクションが、設定1008の「オンロード」である;設定1010のボタン名「詳細」。
【0144】
4.「アクティブ列」機能リストを完成した後、プレビュー・ボタン902を選択することによってその結果をプレビューすることができる。図7Aは、新しい列712を含む結果の表示を示す。ただし、「詳細」ボタンの選択(押すことによる)は、オンロード・アクションを再び実行すること以外、まだ何もしない。どのように新しい機能リスト714が機能リスト内に現れるかに留意されたい。
【0145】
5.次のステップは、図11に示される「製品使用を得る」と呼ばれるウェブ・サービス・ディレクトリ内のサービスに対するサービス・コール機能リストを作成することである。「製品使用を得る」サービスは、テンプレート・ベースのサービスであることを留意されたい。このサービス・コールは、現在のランタイム・モデルのコンテキスト内で意味を有するローカル名で名付けられている。図12は、サービスの入力を特定するための機能リストUIテンプレートの次のページを示す。この時点で、この機能リストは、サービスの入力スキーマをルックアップし、一定値、またはランタイム・モデル内のサービス出力およびパラメータに対する参照を特定するためのUIのような形式を構築する。
【0146】
6.サービス入力特定ページ1200上で、ユーザは、2つのストリング値をこのサービスに供給することを求められる。1つは、電話ブランド名1202であり、もう1つは、電話機モデル名1204である。ユーザは、一定値を指定することができるが、定数を特定するのではなく、テーブルの現行の行内にあるブランドおよびモデル・データ値を参照することによって入力を得ることができる。テーブル機能リストがこれらの参照可能なエンティティに対するアクセスを提供するため、ユーザは、これらの参照を選択することができる。この参照機構手段を使用することは、テーブル内で選択される行に依存して、行固有の値がサービス・コール内に送り込まれることを意味する。
【0147】
7.製品仕様データを得るサービス・コールを作成した後、その結果を表示することができるインポートされたページの機能リストが必要とされる。図13は、ユーザが、形式設定情報および背景カラー等を含むHTMLページにURL1300を供給する、インポートされたページの機能リストの作成を示している。また、ユーザは、HTMLファイルに加えられた可能性のあるどのような変更でも組み込むため、再生成時にシステムがページ内容を再インポートするかどうかも決める(チェック・ボックス1302内にチェックマークを入れることにより)こともできる。
【0148】
8.次のステップは、カタログ詳細出力ページ上に、「製品仕様を得る」サービスからのXMLデータ出力を表示することになる機能リストを作成する。1つまたは複数の実施形態では、固定XMLテキスト機能リストを利用することができる。図14は、固定XMLテキスト機能リストに関するUIを示している。機能リストの入力として、ユーザは、ページ上の名前付きプレースホルダをロケータとして選択し、「詳細を示す」サービス・コールからのサービス出力を特定することができる。1つまたは複数の実施形態(提示した実施例を含む)では、この機能リストからの出力は、HTMLに従って形式設定されたブロックのXMLデータである。
【0149】
9.カタログ詳細ページは、ユーザをセル電話機データ・ページに戻すボタンを必要とする。したがって、このページ・アクションを呼び出し、次に、そのファンクション・アクションをボタン機能リストにバインドするファンクション機能リストが追加される、またはパフォーマンスを犠牲にして単純化する場合、ボタンが押されたときのオンロード・アクションに対する単純なコールを利用することができる。図15は、カタログ詳細ページ内で呼び戻されるプレースホルダに付加された「戻る」と呼ばれるボタン機能リストに関するUIを示している。
【0150】
10.図16は、「詳細を示す」と呼ばれるファンクション機能リストを追加する次のステップに関するUIを示している。このファンクションは、「詳細を示す」サービス・コールに対するコールをカタログ詳細ページ・アクションに対するコールとグループ化する。
【0151】
11.次に、アクティブ列機能リストを変更して、図17に示すとおり、選択されたファンクションを「オンロード」から「詳細を示す」に変えなければならない。
【0152】
12.これで、実施例の機能作成部分は終了する。プレビュー・コマンド902を選択してアプリケーションを見ることができる。詳細ボタンのうちの1つが選択されたとき、その出力は、データ・テーブル内の選択された行に関係するデータを含む製品仕様ページ704である。
【0153】
以上、ネットワーク・サービスを作成するための方法および装置を1つまたは複数の実施形態との関連で説明した。本発明は、特許請求の範囲およびそれと等価なものの完全な範囲によって定義される。
【図面の簡単な説明】
【図1】
本発明の1つまたは複数の実施形態によるWSAを生成するためのテンプレートの使用を例示する図である。
【図2】
本発明の1つまたは複数の実施形態によるテンプレートの構成(パラメータを含む)を例示する図である。
【図3】
本発明の1つまたは複数の実施形態によるテンプレートを使用したwebサービス・アプリケーションの生成を例示する図である。
【図4】
本発明の1つまたは複数の実施形態による再生プロセスを例示する図である。
【図5】
本発明の1つまたは複数の実施形態による、変換されたランタイム・モデルを作成するための機能および機能サービスの使用を例示する図である。
【図6】
本発明の1つまたは複数の実施形態によるテンプレートにおける使用のための機能の選択を例示する図である。
【図7A】
本発明の1つまたは複数の実施形態により生成された携帯電話システムの表示を例示する図である。
【図7B】
本発明の1つまたは複数の実施形態による、図7Aの「詳細」ボタンを押した結果として生じる表示を例示する図である。
【図8】
本発明の1つまたは複数の実施形態によるテンプレート・オーサー・アプリケーションの「テンプレートを開く」画面からのセルカタログ・テンプレートの選択を例示する図である。
【図9】
本発明の1つまたは複数の実施形態によるセルカタログを開くテンプレートを例示する図である。
【図10】
本発明の1つまたは複数の実施形態によるアクティブ列機能UIテンプレートを例示する図である。
【図11】
本発明の1つまたは複数の実施形態によるサービスの作成を例示する図である。
【図12】
本発明の1つまたは複数の実施形態による、サービスの入力を指定するための機能UIテンプレートの次のページを例示する図である。
【図13】
本発明の1つまたは複数の実施形態による、インポートされたページ機能の作成を例示する図である。
【図14】
本発明の1つまたは複数の実施形態による固定XMLテキスト機能のためのUIを例示する図である。
【図15】
本発明の1つまたは複数の実施形態による、「戻る」と呼ばれるボタン機能のためのUIを例示する図である。
【図16】
本発明の1つまたは複数の実施形態によるファンクション機能を追加するためのUIを例示する図である。
【図17】
本発明の1つまたは複数の実施形態による、図10のアクティブ列機能の、ファンクションがOnLoadからShow Detailsへ修正中である状態を例示する図である。
(発明の背景)
1.発明の分野
本発明は、ネットワーク・サービス作成の分野に関する。
【0002】
本特許明細書の開示の一部は、著作権保護を受ける事項を含む。著作権の所有者は、特許商標局のファイルまたは記録において現れるような本特許明細書または本特許の開示の、いかなるものによる複写複製にも異議を申立てないが、そうでない限りはすべての著作権を留保する。
【0003】
2.背景技術
World Wide Webはwebサイトの集まりであり、それぞれが情報、データおよび/またはある種類または別の種類のサービスを提供する。現在のインターネットおよびWebサービスによる問題は、各サービスを静的に、かつ他のサービスから独立してプログラムしなければならないことである。さらに、webサービスの機能を修正あるいは変更するには、プログラマがwebサービスのコードを修正しなければならない。この問題は、ビジネスおよびそれらによるインターネットの使用を見直すことによって、よりよく理解できる。
【0004】
多数のビジネスが、それらの機能性の一部として他のビジネスに依拠している。たとえば、製品のディストリビュータは異なる製品のメーカのすべてに依拠して、信頼性を有して製品自体を供給するだけでなく、製品の価格および可用性についての情報も供給している。メーカ自体も部分的にサプライヤに依拠して完全な製品を構築している。競争的なビジネス環境において競争するためには、会社が製品およびサービスについての迅速な応答を顧客に提供できることが必要である。これにはしばしば多数の他の会社との対話が必要となる。過去には、会社の販売員が電話をかけるか、あるいはカタログを参照して顧客の要求に回答を提供する間、顧客が快く待機している可能性があった。しかし今日は、顧客がより高速なサービス、または自分自身で情報を得る能力を要求している。他の場合、顧客は会社の販売員とまったく対話しておらず、会社のwebサイトと対話している可能性がある。この環境では、顧客はさらに高速かつ効率的なサービスを要求する。
【0005】
会社が今日のビジネス環境において競争できる状態であり続けるための1つの方法は、サード・パーティである会社のコンピュータ・システムと対話して、自社のビジネスを運用するために必要とされる情報およびサービスを得ることができる、アプリケーション・プログラム(ソフトウェア)を開発することである。しかし、従来、これらのアプリケーションを作成することは困難であった。1つの問題は、異なる会社のしばしばメーカ独自のコンピュータ・システムとの対話における困難さである。もう1つの問題は、アプリケーションを自分で記述かつデバッギングすること、ならびに状態が変化したとき、あるいはサード・パーティの会社が自社所有のシステムを変更あるいは更新したときにこれらを更新することにおける困難さである。
【0006】
ビジネスの風潮におけるこの変化も、部分的にはインターネットによって促進されてきた。インターネットは、多数のソースからの情報を容易に個人が入手できるようにした。加えて、インターネットは、会社が互いに対話する方法を変えた。ビジネスとビジネスとの対話は現在、しばしばインターネットを介して実施される。ビジネス間の関係(ディストリビュータとそのサプライヤの間など)はしばしば「チャネル関係」または「ビジネス・チャネル」と呼ばれる。
【0007】
ビジネス・チャネルを管理するためのソフトウェア・アプリケーションを作成することは、従来の技術を使用すると複雑であり、柔軟性がない。ハード・コーディングされたアプリケーションが作成された場合、経時的に作成あるいは修正される新しいチャネルに応答することができない可能性がある。記録の労力を繰り返すことが必要となる可能性がある。他の場合、ある会社が別の会社と、他の会社が気付くことなくチャネル関係にある可能性がある。たとえば、Federal Expressまたは他の運送業者を使用して商品を輸送する会社は、運送業者との明示的で公的な関係を有することなくそれを行う。運送業者にとっては、それを使用するあらゆる会社とのビジネス・チャネルを維持することは、不可能なタスクではない場合でも気力をくじくようなことである。
【0008】
従来の技術は、たとえばオブジェクト指向プログラミングを介して、アプリケーションの設計においてコードの再使用における効率に焦点を置くが、アプリケーションのランタイムでの効率またはカスタマイズ可能性を提供しない。多数の会社がサービスをインターネット上で使用可能にしているので、webサービスの組み合わせを動的に呼び出して相互接続し、それら自体をカスタマイズされたフォーマットにおいてランタイムで構成するカスタム・アプリケーションを、効率的に作成できるようにする必要性がある。現在までのところ、従来技術は効果的なソリューションを提供していない。
【0009】
現在、webが使用されて、事前定義されたwebページがユーザ/クライアントによる閲覧用に提供されている。しかし、静的なwebページを提供するよりも多くのことを行う必要性がある。webページを動的に修正あるいは作成し、webページの他の要素またはコンポーネントを考慮するメカニズム/モジュールを容易に作成することが望ましい。さらに、ユーザに様々な機能を提供するwebサービスを利用する必要性が増大しつつある。現在、webサービスを動的に生成あるいは修正するためのメカニズムはない。加えて、webサービスを、webサービスの既存の態様に基づいて修正するためのメカニズムはない。
【0010】
(発明の概要)
本発明は、ネットワーク・サービスを作成するための方法および装置を提供する。webサービス全体のプログラミングまたはハード・コーディングの代わりに、本発明の1つまたは複数の実施形態は、webサービス・アプリケーションのXML定義を提供するコード(ランタイム・モデルと呼ばれる)を生成するモジュール/メカニズム(テンプレートと呼ばれる)を容易に作成するための能力を提供する。したがって、テンプレートが形成され、利用されて、webサービス・アプリケーションの基礎を生成することができるモデルが作成される。
【0011】
各テンプレートは、機能(features)のリストおよびモデル(ランタイム・モデルまたはRTMと呼ばれる)を含む。RTMは、XMLドキュメントであり、これはwebサービス・アプリケーション(WSAと呼ばれる)の構造(structure)、機能性(functionality)および挙動(behavor) を宣言する。1つまたは複数の実施形態では、各機能が、新しいRTMにおいて出力されるXMLエンティティを生成することを担う。各機能は、1つまたは複数のユーザの入力を得ることができ、これが利用されてXMLエンティティが新しいRTMにおいて構築される。さらに、各機能を順次処理することができ、これは、すでに(たとえば、他の機能によって)RTMにおいて作成されているいかなる既存のXMLエンティティも修正するための能力を有する。したがって、機能は、アプリケーションを全体として見て、それらが担うエンティティを調整かつ修正するだけでなく、変更を既存のアプリケーション全体に実施するための能力を有する。
【0012】
本発明の1つまたは複数の実施形態では、アプリケーションに影響を与える可能性のある状態が変化したとき、テンプレートを利用してRTMを再生して、新しいwebサービスまたはXMLドキュメントを生成することができる。
【0013】
(発明の詳細な説明)
以下の説明では、多数の特定の詳細を、本発明のより十分な理解を提供するために述べる。しかし、本発明を、これらの特定の詳細がなくとも実施できることは、当業者には明らかになるであろう。他の例では、よく知られた機能を詳細に記載していないが、これは本発明を不必要に不明瞭にしないためである。
【0014】
本発明は、使用可能なwebサービスを使用するアプリケーションを作成するための方法および装置を提供する。多数のサービスがインターネットを介して、ならびに既存のAPIおよび他の技術を介して使用可能にされている。インターネットでは、多数のサービスがXMLサービスとして使用可能にされている。XML(拡張マークアップ言語、extensible markup language)は、情報を記述するため、あるいはより正確には、情報を自己記述にするために使用される言語である。従来、webページはHTMLを使用して構築されている。HTML(ハイパーテキスト・マークアップ言語)はデータのぺージのジオメトリおよび外観を記述し、実際にはデータが挿入される穴またはスロットを作成する。しかし、HTML記述におけるページ上に現れるデータの直接通信はない。ユーザには、名前、住所および電話番号など、認識可能な情報を含むページを提示することができる。しかし、HTMLでは、データは単に表示するためのテキストである。
【0015】
他方では、XMLは、使用中のデータのタイプを識別することができるプロトコルを提供する。XMLはこれを部分的には、事前定義された「スキーマ」を使用して行うことができ、これを使用して伝送中のデータのタイプを理解することができる。標準のスキーマが使用された場合、データはスキーマへの参照のみを含む必要があり、これがデータと共に移動する必要はない。カスタム・スキーマが使用された場合、これをデータの前または後に送信することができるか、あるいは、スキーマの位置への明示的な方向を提供することができる。
【0016】
本発明は、XMLベースのサービスを十分に利用することができるが、通信プロトコルを確立することができるいかなるサービスとの使用にも適用可能である。
【0017】
本発明の1つまたは複数の実施形態は、使用のために入手可能なサービスを含む、ビジネスまたは企業のためのwebサービス・ディレクトリを作成する。各サービスのためのインターフェイスが使用可能であり、これは要求および応答を、インターネットおよびバック・エンド・システム環境における使用のために適切なフォーマットに変換するためのものである。加えて、インターフェイスを利用して、コールされたサービスに渡される要求データのスキーマを定義することができ、コールされたサービスによって渡される応答データのスキーマを定義することができる。
【0018】
webサービス・アーキテクチャ(「システム」と呼ばれる)がwebサービスについてのメタデータを維持し、これらはwebサービス消費者による使用のために公開されている。システムはwebサービスのアクセス・コントロール、編成(organization)、インターフェイス定義、管理およびオペレーションを提供する。webサービス・アーキテクチャは、集中化された位置としての機能を果たし、ここからwebサービス消費者が、公開されたwebサービスのセットについてのすべての情報を得ることができる。加えて、webサービス・アーキテクチャは中心位置を提供し、個々のwebサービスの実際の作業を実行するシステム(アプリケーション)がインターネット全体に分散されているという事実に関わらず、ここからwebサービスを動作することができる。
【0019】
webサービス・アーキテクチャは、webサービス・ディレクトリおよびwebサービス・エンジンを含む。webサービス・ディレクトリはデータベースであり、webサービス・エンジンはwebサービス要求をハンドルするプロセッサである。
【0020】
<<Webサービス・アプリケーションおよびランタイム・モデル>>
webサービス・エンジンが実行するもっとも著しいアクティビティの1つが、単一のセッションのコンテキストにおける多数のwebサービスの実行である。webサービス・アーキテクチャは、ランタイム・モデルと呼ばれるXMLオブジェクトのタイプをサポートしており、これは多数のwebサービスが実行されるコンテキストを定義する。webサービス・エンジンが、このような指定されたランタイム・モデルによるモデル・ランナー・サービス(model runner service)を実行するための要求を受信したとき、システムが、webサービス・アプリケーションと呼ばれるものをセッションにおいて生成する。
【0021】
ランタイム・モデルは、いくつかのwebサービスの実行を共に連鎖する方法の宣言とは著しく異なる。本発明の1つまたは複数の実施形態は、多数のアクションを宣言するランタイム・モデルを提供し、それぞれをファンクションにおいて定義された精巧な機能性の実行にバインドすることができる。加えて、ランタイム・モデルは多数のパラメータを宣言し、これらがwebサービスの入力および出力として使用される。最後に、ランタイム・モデルが、いくつかのwebサービスの使用を引き起こし、これらが特殊なユーザ・インターフェイス・ページを出力データとして構築する。これらのページの挙動は、webサービス・エンジンに対する後続のwebサービス要求を生成すること、および実行のために、webサービス・アプリケーション・セッションにおいて定義されたアクションをコールすることである。それとして、ランタイム・モデル、およびそれが生成するwebサービス・アプリケーションは、アプリケーションの複雑な新しい形式のためのレシピである。
【0022】
WSAがないと、webサービス・アーキテクチャはアトミックとなり、場合により、webサービス・エンジンに対する要求の処理中のアクティビティが単一のwebサービスの実行のみとなることを意味する。WSAは、webサービス・エンジンが、多数のwebサービスを含む複雑なタスクを実行できるようにするための手段を提供する。加えて、WSAは、webサービス・エンジンの外側のwebサービス要求者が単一のセッション状態と、要求を通じて対話することができるようにする。
【0023】
<<Webサービス・アプリケーションのオペレーション>>
webサービス・エンジンに対する要求がWSAを呼び出したとき、システムがこの要求を処理し、応答を生成する。応答をXML、HTML、MIMEエンコード化(たとえば、.gifファイル)、またはインターネット・ワイヤ・プロトコルによってサポートされたいかなるフォーマットにすることもできる。1つまたは複数の実施形態では、webサービス要求が、ブラウザにおいて表示されるグラフィカル・ユーザ・インターフェイスの形式を取る応答を生成する。これは、要求側(webサービス消費者)がwebブラウザであるときの場合である。返されたユーザ・インターフェイスはしばしばそれらにおいて埋め込まれたコントロールを有し、これが後続のユーザ生成イベントに反応し、ブラウザに、webサービス・エンジンに返す後続のHTTP要求を生成させる。これらの要求ではしばしば同じWSAが目標とされる。webサービス・アーキテクチャでは、webサービス・エンジン上の単一のWSAセッションがその状態を、異なるユーザ・インターフェイスによって生成された異なる要求とのいくつかの対話全体で維持することが可能である。たとえば、WSAがUIの初期ページを、初期要求に対する応答として生成することが可能である。このUIはボタンを含むことができる。ユーザがボタンを押したとき、ブラウザが、同じWSAに対して目標とされた新しい要求を生成する。webサービス・エンジンがサービスを呼び出し、これにより既存のWSAが要求を処理し、別のUIページを生成することができる。
【0024】
webサービス・エンジンは、WSAのキャッシングを管理する。webサービス・ディレクトリは、webサービス、およびランタイム・モデルを構築するために使用されたテンプレートの持続的な記述を管理する。webサービス・エンジンはWSAの呼び出しを、モデル・ランナーwebサービスの使用を介して実施する。
【0025】
webサービス・アーキテクチャは、1つまたは複数のランタイム・モデルのためのwebサービスを維持する。要求側がWSAを動作することを望んだとき、要求側がHTTP要求を生成して、「モデルベース」のwebサービスと呼ばれる特殊なタイプのwebサービスを動作する。これらのwebサービスは、WSAに対応するためのランタイム・モデルを維持する責任を有する。これらのwebサービスは、モデル・ランナーと呼ばれる共通のwebサービス・ドライバも参照し、これはランタイム・モデルをサービス・パラメータとして取り、WSAを生成することを担う。
【0026】
webサービス・エンジンがモデル・ランナー・ドライバのインスタンスを呼び出し、WSAを生成した後、モデル・ランナー・ドライバが、WSAにおいて定義された特殊な名前のアクション(この実施ではOnloadと呼ばれる)をコールする。アクションは、webサービスまたはファンクション(いくつかのアクションの呼び出しを定義するもの)へのコールである。アクションは、メソッドによって実行されるオペレーションに類似している(たとえば、別のメソッド/ファンクションへのコール、または、割当てまたは連結のような単純なデータ操作を実行すること)。
【0027】
OnloadファンクションはWSAの初期状態を確立し、これは、webサービス要求に対する応答データを生成する作業単位を実行する。Onloadファンクションが動作を終了したとき、モデル・ランナー・ドライバが要求側のセッションにおけるWSAの状態を保存する。加えて、ランタイム・モデルを要求側のセッションにおいて保存することもできる。
【0028】
Pageアクションは、応答データをインタラクティブなUIの形式において生成するために使用される特殊なタイプのアクションである。Pageアクションは応答データのパケットをHTMLまたはXMLのいずれかで生成し、これはグラフィカルに提示可能な情報をユーザ・インターフェイス(UI)コントロールと共に含む。これらのコントロールの挙動を、元のWSAセッションのハンドルを使用して、webサービス・エンジンに対する後続のwebサービス要求を生成するように設定することができる。
【0029】
時として、WSAはOnloadファンクションにおいてそのすべての作業を行い、その応答データを送信して戻し、ダウンストリーム・コンタクトを確立する後続のwebサービス要求のいかなる意図もなしに終了する。他のときは、WSAにおけるアクション(またはファンクション)が、埋め込み型XMLモデル・セッション・ハンドルを含む応答データを生成する。このデータにより、ブラウザまたは他のシステムが、webサービス要求を同じWSAセッションに対して生成することができる。
【0030】
<<Webサービス・アプリケーションの機能性>>
WSAの機能性(fanctionality) は完全に、ランタイム・モデルにおけるXMLベースの宣言、および呼び出されたwebサービスによって提供された機能性によって定義される。WSAの機能性を宣言するランタイム・モデルがモデル・ランナー・サービスによって使用されて、WSAによって呼び出された、すべての呼び出されたwebサービスがインスタンス化される。加えて、ランタイム・モデルは、ロジック(機能性)、データ構造および挙動の宣言を含む。
【0031】
WSAの挙動は、ランタイム・モデルにおいて宣言されるイベントに対するアクションのバインディングのセットによって定義される。イベントの多数は、ランタイム・モデルにおいて定義されたPagesと対話するユーザによって生成されるものである。webサービスがWSAと対話するとき、WSAがPagesを応答データとして生成し、これらのPagesが、追加のwebサービスをコールするアクションへのイベントのバインディングを定義する挙動を含む。
【0032】
本発明の1つまたは複数の実施形態によれば、起動において、WSAがOnload機能性を実行する。実行中に、モデル・ランナー・サービス・ドライバが追加のwebサービスに対して内部コールを行い、これはwebサービス・エンジンが追加のサービス・ドライバをエンゲージする結果となる。webサービスを動作するための内部要求は、webサービス・エンジンから、WSAセッションにおいて存在するサービス入力のセットと共に来る。しかし、外部コールはHTTPポストの形式において来るか、あるいはwebサービス・エンジンにおけるURLへ、入力データのパケットと共に到着する。
【0033】
初期webサービス要求が処理され、応答データが送信され戻された後、webサービス・エンジンは、すでに動作中のWSAのモデル・セッションが目標とされた後続のwebサービス要求をハンドルすることができる。これらのセッション固有の要求はそれぞれモデル・ハンドルIDを含み、これによりwebサービス・エンジンが、指定されたWSAをエンゲージすることができる。これらの要求はまた、WSAにおいて実行してwebサービス要求の作業を実行するためのアクションも識別する。たとえば、WSAは最初に従業員のリストを、そのOnloadアクティビティを介して得て、この情報をページにおいて、応答としてブラウザへ送信しておくことができる。加えて、このページはボタンを含むことができる。このボタンが押されたとき、ブラウザが、同じWSAセッションにおいて指定されたアクションを動作するためのwebサービス要求を生成する。このとき、要求がWSAセッションのIDを含む。結果として、ボタンが、動作中のWSAにおいてアクションを動作するための要求を生成して、状態がWSAにおいてすでに存在する従業員についての追加の情報を得る。
【0034】
WSAの状態がXMLパラメータのセット(webサービス・コール・データ出力を含む)によって表現される。パラメータはデータのためのXMLコンテナであり、これらはXMLスキーマを有し、これらがパラメータにおいてサポートされるデータのタイプを定義する。パラメータにおけるデータは、経時的にWSAセッションにおいて変化する。ファンクションにおいて定義されたロジックによって、WSAがパラメータ値をサービス・コール入力に割り当てることができ、ならびにwebサービス・コールの出力をパラメータに向けて送ることができる。WSAは、webサービス・エンジンによって管理されたwebサービス・コールの内外へ情報を移動するためのブローカリング・システムとしての機能を果たす。
【0035】
最後に、WSAは、完全にインタラクティブなユーザ・インターフェイスの生成および更新をサポートする。ユーザ・インターフェイスは、Pagesと呼ばれる、動的に生成かつ更新されたXMLエンティティのセットからなる。PagesはXMLデータのブロックであり(HTMLはサブセットとなる)、ブラウザによる表示に適している(しかし、いかなる形でもブラウザにおける閲覧に限定されない。PageはHTMLを含まなくてもよい)。
【0036】
ユーザ・インターフェイスはWSAのオプションの特性である。いくつかのWSAは、計算をデータ入力上で実行し、UIコンポーネントを含んでいない出力データを生成する機能性を有する。これらのWSAは通常、最初のwebサービス要求の実行後にシャット・ダウンする。他のWSAは、UIを応答データにおいて生成する起動機能性を有する。この生成されたUIは、タグ付けされた挙動を含むことができ、これによりブラウザが、webサービス・エンジンに対する後続のサービス要求を静止して、動作中のWSAに接続し、追加のアクションを呼び出す。次にこれらのアクションは、サービス要求に対する応答として送信され戻される新規または更新されたページを生成する結果となる可能性がある。この対話を介して、WSAはユーザとの複雑な対話をハンドルすることができるが、同時に、インターネット全体に分散されているwebサービスをエンゲージするwebサービス・コール・アクションを実行することができる。
【0037】
<<ランタイム・モデルの構造>>
ランタイム・モデルは、いかなるXMLデータ(XMLにおいて記述されたwebサービスを含む)も表現するドキュメントのタイプである。たとえば、1つまたは複数の実施形態では、ランタイム・モデルはXMLドキュメントであり、これはWSAの構造、機能性および挙動を宣言する。もう1つの実施形態では、ランタイム・モデルが、たとえば、3Dジオメトリック・データ・エンティティまたはXSL(eXtensible Stylesheet Languageエンティティ)を表現する。1つまたは複数の実施形態では、webサービス・エンジンにおけるモデル・ランナー・ドライバがランタイム・モデルのコンテンツを、WSAを生成するために解釈する。しかし、他のタイプのサービスは、新しいアプリケーションのために使用されたランタイム・モデル・エンティティの解釈をハンドルすることができる。1つまたは複数の実施形態は、オープンかつ拡張可能であるスキーマに従うためのランタイム・モデルに備える。
【0038】
ランタイム・モデルは幅広いアレイのエンティティをサポートしており、これらが異なる態様のWSAを記述する。ランタイム・モデルは機能性を宣言することができ、多数のランタイム・モデルが、ランタイム実行中に協調するWSAに呼び出される結果となる。これは、ランタイム・モデルにwebサービスへのコールを宣言させることによって実施され、webサービスは他のランタイム・モデルへの参照を作成する。
【0039】
<<モデル>>
1つまたは複数の実施形態では、ランタイム・モデルがModelと呼ばれるルート・ノードを有することができる。Modelエンティティはサブノードのセットを含む。この実施では、これがPages、ServiceCalls、Triggers、ParametersおよびBehaviorsを含む。以下で参照するように、XMLの機能性および使用は、共通に利用されるものに基づいている。さらに、本明細書で利用されたXML記述は、記述のためのものであり、XMLデータは空のタグからなる可能性がある。空のタグは<タグ名/>としてフォーマットされる。XMLデータは、満たされたタグを、<タグ名>他の<タグ付けされたデータ>さらなるデータ</タグ付けされたデータ>を含むデータ</タグ名>の形式で含むことができる。加えて、XMLの構造をスキーマ言語において定義することはできず、ランタイム・モデルは、いかなるXMLスキーマにも従ういかなるXMLデータも含むことができる。
【0040】
たとえば、以下のXMLは1つまたは複数の実施形態を記述し、これはランタイム・モデルにおいて利用することができるいくつかのエンティティを含む。
【表1】
【0041】
Pages
ランタイム・モデルのPagesエンティティは、個々のページ・エンティティのセットを含む。ランタイム・モデルはいかなる数のページを有することもできる。Pagesは、ブラウザにおける表示のために適切にフォーマットされるコンテンツおよびUIのための媒介物としての機能を果たす。
【0042】
モデル・ランナー・サービス・ドライバがWSAを生成した後、これはWSAにおいて機能性のブロックを実行し(以下のサービス・コールおよびトリガのセクションを参照)、これが最終的に応答を要求側に送信して戻す。多くの回数、応答はページの形式であり、ブラウザにおける表示に適している。
【0043】
ページは単に、WSAセッションにおいてパラメータ化されたXMLデータの別のタイプであるので、WSAはページを出力としてサービス要求に利用するか、あるいは入力として別のwebサービスに利用することができる。これは、WSAがページを入力として様々なwebサービスに送信できることを意味する。たとえば、WSAはページをeメールのwebサービスへ、メッセージのコンテンツとして送信することができる。
【0044】
Pageエンティティは、以下のエンティティを含む。
【表2】
【0045】
PageにおけるContentsエンティティは、ネストされたXMLを含むいかなるタイプのHTMLも含む。ContentセクションはXMLエンティティも含み、これがデータおよびコントロールのためのプレースホルダを表現する。
【0046】
WSAにおいてコールすることができるアクションの1つが、Pageアクションである。このアクションはwebサービスを呼び出し、これが変換をPageエンティティのセットに、データをサービス要求に対する応答として送信するための準備において適用する。Pageアクションにより、システムがパラメータ・データを、Pageエンティティにおいて宣言されたデータ・プレースホルダに挿入し、コールバックをPageにおいて、そのPageのためのランタイム・モデルにおいて定義済のいかなる宣言された挙動についても書き込む。たとえば、LDT:Buttonエンティティは、HTMLボタンの存在を宣言し、これはwebサービス要求をWSAにおけるアクションに対して呼び出すクリック・アクションを有する。
【0047】
<<サービス・コール>>
ランタイム・モデルのServiceCallsエンティティは、個別のServiceCallエンティティのセットを含む。サービス・コールは、webサービス・ディレクトリにおいて定義されたwebサービスを呼び出すアクションである。1つまたは複数の実施形態では、サービス・コールが、WSAの実行を管理している同じwebサービス・ディレクトリに位置するwebサービスのみを識別することができる。1つまたは複数の追加の実施形態では、webサービス・エンジンがwebサービス要求を、別のwebサービス・ディレクトリに位置するwebサービスに対して、それが動作中であるWSAに代って行うことができる。
【0048】
サービス・コールは、webサービス・ディレクトリにおけるwebサービスをコールするアクションである。サービス・コールは、名前付きのwebサービスのための入力および出力データ・スキーマ、ならびにデータのためのプレースホルダのWSA常駐表現も提供する。最後に、サービス・コールは、webサービスの入力への入力値の割当ての定義を維持することができる。これらの割り当てられた値は、定数、またはランタイム・モデルにおけるパラメータにおける値への参照にすることができる。
【0049】
ServiceCallエンティティは、以下を含む。
【表3】
【0050】
InputDefinitionsエンティティは、個別のDataDefinitionエンティティのセットを含む。これらのエンティティは入力への定数値の割当て、ならびにサービス・コールへの入力のためのデータのソースとしてのランタイム・モデルにおけるパラメータの割当てを含む。
【0051】
1つまたは複数の実施形態では、効果選択条件を、ServiceID情報の一部として含めることができる。1つまたは複数の実施形態では、サービス・コールがサービスをその名前によって識別する。さらに、1つまたは複数の実施形態では、ServiceIDが一意の識別子をLDAP識別名の代わりに利用することができる。このような実施形態では、テンプレートを容易に、あるディレクトリから別のディレクトリへ移動することができる。もう1つの実施形態では、サービス・コールが、「リリース・レベル」などの属性のための属性値を、正しいバージョンのサービスを識別する手段として識別することができる。さらに、サービス・コールは、サービスのバージョンを選択条件によって識別することができる。
【0052】
<<Triggers(ファンクションとしても知られる)>>
ランタイム・モデルのTriggersエンティティは、Actionエンティティのセットを含む。Triggersはクラスにおけるメソッド、およびスクリプトされたHTMLページにおけるファンクションに相当するものである。
【0053】
トリガは実行ロジックのブロックであり、識別ハンドルとしての機能を果たすアクションを有する。ランタイム・モデルは、アクション・ハンドルをイベントにバインドすることができ、これは挙動の概念を構成するものである。ランタイム・モデルにおける挙動は、イベントへのアクションのバインディングとして定義される。
【0054】
1つまたは複数の実施形態では、トリガがアクションのシーケンスとして定義される。トリガのアクションが呼び出されたとき、システムはトリガによって指定されたアクションを呼び出す。別の実施形態では、トリガが、分岐を含む多数の形式のロジック処理をサポートする。
【0055】
Triggerエンティティは以下を含む。
【表4】
【0056】
Actionsエンティティは、Triggerが呼び出されたときに実行されるアクションのロジックおよびフローを記述する情報を含む。これを、単純なアクションのリストにすることができる。
【0057】
Actionsは、ランタイム・モデルにおいて機能的に定義されたものへのハンドルである。1つまたは複数の実施形態では、ランタイム・モデルにおいて各サービス・コール、トリガおよびページに関連付けられたアクションがある可能性がある。
【0058】
<<パラメータ>>
Parametersエンティティは、いかなるタイプおよび数のXMLエンティティを含むこともできる。これは、パラメータがいかなる形式のデータも表現できることを意味する。
【0059】
Parameterはデータのためのプレース・ホルダであるが、データの構造表現のためのプレース・ホルダでもある。すなわち、各パラメータについて、システムがXMLエンティティを維持し、これは許容可能なコンテンツ、およびパラメータにおけるデータのための構造(すなわち、スキーマ)を定義する。
【0060】
パラメータの構造表現を、パラメータに関連付けられたデータが出現するよりも長く前に満たすことができる。
【0061】
<<挙動>>
挙動(behaviors) のエンティティは、アクションへのイベントのマッピングを定義する。この実施では、挙動はPagesにおいてのみ、コントロールを介して定義される。コントロールは、そのイベントの1つに関連付けられたアクションを識別することができる。この実施では、これらのアクションを、webサービス・エンジンに戻されるwebサービス要求にのみすることができる。
【0062】
<<テンプレート>>
1つまたは複数の実施形態では、ランタイム・モデルが個別にハード・コーディングかつプログラムされる。しかし、このようなランタイム・モデルをコーディングかつ維持することは困難であり、これは関係するwebサービス(ランタイム・モデルの一部としてコールすることができるもの)の常に変化し続ける特性、および異なるユーザのためのランタイム・モデルの間で必要とされる可変性の量が高いことによる。結果として、本発明の1つまたは複数の実施形態は、ランタイム・モデルを構築するための命令を記録するシステムを提供する。これらの命令は機能と呼ばれ、これらはテンプレートと呼ばれるオブジェクトにおいて記録される。
【0063】
テンプレートは、容易にランタイム・モデルを生成するためのメカニズムを提供し、これがWSAの構造、機能性および挙動を生成あるいは宣言する。さらに、テンプレートは、単に明示的なハード・コーディングされたランタイム・モデル・ベースのサービスのためのwebサービス要求を発行するのではなく、WSAを呼び出すための強力かつ汎用のモデルを提供する。テンプレートは、ランタイム・モデルをハード・コーディングするのではなく、動的にランタイム・モデルを生成するための能力を提供する。
【0064】
1つまたは複数の実施形態では、テンプレートが特殊なタイプのランタイム・モデル(高レベルの命令を使用して書かれたもの)であり、これが子ランタイム・モデルの動的な構成に(テンプレートによって表現されたランタイム・モデルを実行することによって)備える。上述のランタイム・モデルに類似して、子(チャイルド)ランタイム・モデルは、WSAの下にある構造を表現し、WSAに変わることができる。しかし、テンプレートおよび機能は、ランタイム・モデルとしてではなくまったく異なるフォーマットにおいて実施することができる。たとえば、1つまたは複数の実施形態では、webサービスがテンプレートのコンテンツを、リレーショナル・データベースからのデータのブロックとして検索することができる。したがって、テンプレートは、ランタイム・モデルを構築するための高レベル命令のセットの使用に備える中間オブジェクトである。
【0065】
上述のように、ランタイム・モデルはパラメータを有し、これらがデータまたはデータの構造表現のためのプレース・ホルダとして利用される。テンプレートのパラメータの1つがランタイム・モデルである(子またはネストされたランタイム・モデルと呼ばれる)。そのため、テンプレートは、WSAに変換されて動作されたとき、それが実行できる別のランタイム・モデルをその内部に生成するランタイム・モデルである。
【0066】
図1は、WSAを生成するためのテンプレートの使用を例示する。図1の実施形態では、テンプレート100がランタイム・モデルである。しかし、テンプレート100がランタイム・モデルではない可能性があり、この場合、ランタイム・モデル102はいかなるランタイム・モデルの子でもなく、単にテンプレート100によって作成されたランタイム・モデルである。テンプレート100によって表現されたランタイム・モデルはWSAに変えられ、実行される。WSAの出力は子ランタイム・モデル102である。子ランタイム・モデル102はwebサービス・アプリケーション104を表現し、これを生成するために使用することができる。したがって、テンプレートはランタイム・モデルの構成を自動化する。
【0067】
上述のように、ランタイム・モデルのパラメータ・セクションは様々なタイプのXMLデータをサポートすることができる。したがって、本発明の1つまたは複数の実施形態は、子ランタイム・モデル102を一種の「ワーク・ベンチ」として、パラメータ・セクションの内部でネストする。さらに、ランタイム・モデルがWSAの機能性および挙動を定義することができるので、本発明の1つまたは複数の実施形態はランタイム・モデル(すなわち、テンプレート100)を使用して子ランタイム・モデル102を定義かつ構築し、これは、機能サービスとして知られるwebサービスへの一連のwebサービス・コールを介して行う。機能サービスは、ランタイム・モデルへの参照を入力として、他のパラメータと共に受け入れ、変換されたランタイム・モデルを出力として生成する特性を有する。別の実施形態では、子ランタイム・モデル102を、実際のサービスではなく「機能クリエータ」と呼ばれるコードを使用して構築することができる。機能クリエータを、たとえばサービス(たとえば、機能サービス)またはJavaクラスとして実施することができる。
【0068】
上述のように、テンプレート100はランタイム・モデルであり、これはいくつかの特殊なタイプのデータをそのパラメータ・セクションにおいて有し、ならびにネストされたランタイム・モデル102を生成するいくつかのwebサービス・コールを有する。
【0069】
テンプレートのパラメータ・セクションにおける特殊なタイプのデータは、以下のエンティティを含むことができる。
【表5】
【0070】
図2は、テンプレート100の構成(パラメータを含む)を例示する。ランタイム・モデル102は1つのパラメータである。第2のパラメータは、機能リスト202のものである。モデル・エンティティ/パラメータは上述のようなランタイム・モデルである。したがって、テンプレートがWSAに変わったとき、WSAによって使用されたパラメータの1つがランタイム・モデルである。以下に記載するように、このランタイム・モデルはWSAによって、完全な子ランタイム・モデル102が生成されるまで、修正される。したがって、子ランタイム・モデルは、ランタイム・モデル・パラメータを修正することによって生成される。ランタイム・モデル・パラメータは、他のパラメータ・エンティティ−機能によって提供された仕様に従って修正される。
【0071】
図3は、テンプレートを使用したwebサービス・アプリケーションの生成を例示する。最初に、webサービス・エンジン300がテンプレート・ベースのサービスのための要求を受信する。webサービス・エンジン300がこの要求をモデル・ランナー302に送信する。モデル・ランナー302はランタイム・モデルをロードし、WSAを生成するように構成される。したがって、モデル・ランナー302はテンプレート100をロードし、対応するWSA304を生成する。WSA304は機能202を含み、これが利用されて子ランタイム・モデル102が修正かつ作成される。WSA304は、機能202によって識別された機能サービスまたは機能クリエータへのコールを行い、子ランタイム・モデル102を生成する。次いで、モデル・ランナー302が利用されて、子ランタイム・モデル102がロードされ、これがWSA306に変換される。したがって、テンプレート100が利用されてランタイム・モデル102が生成され、これはシステムによって利用することができるwebサービス・アプリケーションに対応する。
【0072】
<<機能>>
テンプレート100の機能エンティティ/パラメータは、エンティティを構築あるいは生成して子ランタイム・モデル102を生成するための能力を提供する。機能エンティティは機能のリストを含み、これは機能リストとして知られるものを含む。機能リストは命令セットであり、webサービス(再生として知られる)が子ランタイム・モデルをどのように構築するべきであるかを記述し、これは「サイド・キック」webサービス(機能サービスまたは機能クリエータと呼ばれる)のセットおよび入力値(機能入力パラメータと呼ばれる)のセットの使用を介して行う。
【0073】
機能リスト202における機能はランタイム・モデル204を入力として利用し、機能がリストされる順序において実行される。各機能は、入力として使用された既存のランタイム・モデル204を修正あるいは変更することができる。この実行プロセスは再生と呼ばれる。標準プログラムの代替物として、再生プロセスをWSAの形式(以下で詳細に記載する)にすることができる。再生プロセスは、ネストされたランタイム・モデル102のコンテンツを、機能リストにおいて各機能について定義される入力パラメータに基づいて生成する。図4は、本発明の1つまたは複数の実施形態による再生プロセスを例示する。再生WSA400が機能リスト202およびランタイム・モデル204を入力として利用して、変換されたランタイム・モデル102を生成する。
【0074】
1つまたは複数の実施形態では、再生プロセスを、テンプレートの作成において即時に実行することができる。再生プロセスをこのようなときに実行することによって、ランタイム・モデルを、webサービスが動作するように要求されたときに生成する必要がない。しかし、このシナリオでは、完成されたランタイム・モデルを永続メモリに格納しなければならない。他の実施形態では、再生プロセスが、webサービスが動作するように要求されたときに、動的に実行される。再生プロセスをこのようなときに実行することによって、ユーザがより十分に、機能によって参照されるいかなるwebサービスも最新バージョンのサービスであること、および、利用されたいかなる入力/出力スキーマ・データも最新データであることを確信することができる。しかし、モデルまたはWSAを動的に生成することによって、処理時間が長くなる可能性がある。
【0075】
機能(feature) は、2つのコンポーネント、すなわち機能ユーザ・インターフェイス・テンプレートおよび機能サービスからなる。機能ユーザ・インターフェイス・テンプレートは、入力をユーザまたは他のアプリケーションから得ること、および、機能ブロックを機能リストにおいて構築し、続いて維持することを担う。ユーザにより機能ユーザ・インターフェイス・テンプレートに供給された入力が、機能ブロックにおいて識別された機能サービスのための入力パラメータの作成において利用される。機能サービスは、ランタイム・モデル102において機能パラメータに基づいてエンティティを生成する作業を実行する。1つまたは複数の実施形態では、機能ユーザ・インターフェイス・テンプレートが入力をユーザから得て、次いで機能ブロックを生成する。このデータのブロックは順次機能リストに配置される。機能ブロックは、入力パラメータ、およびランタイム・モデル・エンティティを構築する作業を行う機能サービスの名前を含む。1つまたは複数の実施形態では、ユーザが機能UIテンプレートに供給する入力が、UIテンプレートが機能ブロックに入れるものと同じでない可能性がある。たとえば、1つの機能においては、UIテンプレートがユーザからリレーショナル・データベース・テーブルの名前およびクエリーを行う列についての入力を取り、次いでこれらをSQL(構造化照会言語,structured query language) データ入力として機能ブロックに書く。そのため、機能UIテンプレートが、入力における変換を、これらを機能ブロックに配置する前に実行することができる。ユーザが機能を修正した場合、機能UIテンプレートが逆マッピングも実行して機能ブロック入力を取り、これらをUIへ、ユーザが修正するためにマップし戻す。
【0076】
テンプレートにおける各機能がXMLデータのブロックによって表現され、これは、機能のための入力パラメータ値のセット、および、機能入力値を使用してランタイム・モデル204をランタイム・モデル102に変換するための作業を実行する機能サービスの名前を定義する。各機能サービスが効果的にランタイム・モデル204をその入力の1つとして取り、変換されたランタイム・モデル102をその出力として生成する。図5は、変換されたランタイム・モデル102を作成するための機能および機能サービスの使用を例示する。機能1のための機能ユーザ・インターフェイス・テンプレートは、機能1入力パラメータ500を得ることができる。機能サービス1は機能1入力パラメータ500およびランタイム・モデル204を利用して、変換されたランタイム・モデル102を生成する。次いで、機能サービス2が、変換されたランタイム・モデル102および機能2入力パラメータ502を入力として利用して、新しい変換されたランタイム・モデル102を生成する。機能リストにおける各機能に対応する機能サービスが、変換されたランタイム・モデルを、機能入力パラメータとの組み合わせにおいて処理して、最終的な子ランタイム・モデル102を生成する。
【0077】
機能サービスが順次実行されるので、各機能サービスが、変換されたランタイム・モデルを全体として望むように修正することができる。したがって、各機能は、動的に既存のランタイム・モデルを調べ、このモデルをランタイム・モデルの存在、不在または状態に基づいて修正するための能力を有する。このような能力は、プログラムがハード・コーディングされ、個別のユニットのみを既存のプログラムとは独立して修正することしかできない通常のプログラミングに勝る、著しい利点を提供する。加えて、ハード・コーディングされたプログラムは動作することしかできない。実行中に、ハード・コーディングされたプログラムは、その挙動を変更する手段として、環境に対して反応することしかできない。テンプレートでは、機能がプログラムをその動作前に構築する。したがって、プログラムは別のレベルの適合を有し、これがプログラムに、その動作の前に注入され、あるいはそれにおいて同期化される。したがって、機能は既存のランタイム・モデルのいかなる態様も修正することができ、1つの機能が、いかなる実行前の機能の効果も、望むなら反転させることができる。
【0078】
単純な機能の一例が、インポートされたページ機能(ランタイム・モデルにおけるPageエンティティのHTMLバックグラウンド・コンテンツを構築するもの)である。この機能は機能入力パラメータを有し、これは、インポートされたページのコンテンツのための基本または開始ポイントとして機能するページへのURLを指定するためのものである。たとえば、機能ユーザ・インターフェイス・テンプレートはURLをユーザまたは他のサービスから要求することができる。URLが得られた後、機能ユーザ・インターフェイス・テンプレートがURLを機能サービスへ、さらなる処理のために転送することができる。別法として、機能UIテンプレートが機能ブロックを書くことができ、これは、機能サービスに渡されることを再生サービスが保証するデータを含む。上述のように、指定されたURLに位置するページを、機能サービスへの入力として利用することができ、これが最終的にエンド・ユーザへの伝送用のページを生成する。この機能は、インポートされたURLコンテンツを使用するランタイム・モデルにおいて構築するべきページ数を指定するための入力も有する。その2つの入力のために供給された値に基づいて、ランタイム・モデルにおいてインポートされたページを構築する機能サービスは、正しい数のページ・エンティティをランタイム・モデルにおいて生成し、ページが、(現在の機能の前の機能によって)ランタイム・モデルにおいて構築されている他のエンティティに関して一意のIDを有することを保証する。
【0079】
1つまたは複数の実施形態では、1つまたは複数の機能が静的なHTMLドキュメントを入力として(たとえば、URLによって指定されたようなもの)有することができ、ランタイム・モデルからの出力はサービス使用可能なwebページである。サービス使用可能なwebページは、エンド・ユーザ/閲覧者がドキュメントのある部分を選択することによってサービスを呼び出すことを許可することができる。たとえば、表がwebページ上に表示された場合、ユーザは、表における項目をソートするための列を選択することができる可能性がある。このようなアクションが、選択された入力(たとえば、選択された列の値)に基づいて情報をソートする能力を有するwebサービスを呼び出すことができる。別法として、ユーザが表の特定の行を選択し、その行に関係するより詳細な情報を得ることができる可能性がある(たとえば、行が従業員および従業員の給与を表した場合、その行をクリックすることにより、その従業員に関係するより詳細な情報を生成することができる)。所望のアクションをwebサービスの一部として完了するには、あるいはwebページをサービス使用可能にするには、1つまたは複数の機能を利用する必要がある可能性がある。各機能は1つまたは複数のエンティティからなる。
【0080】
機能エンティティは、たとえば以下のエンティティからなり得る。
【表6】
【0081】
FeatureServiceIDエンティティは、この機能のためのランタイム・エンティティを構築する作業を、再生プロセス中に実行する機能サービスの名前である。
【0082】
FeatureModifyTriggerエンティティは、Feature Serviceに供給される入力値を収集するためのUIを提供するテンプレートの名前である。このUIが呼び出されるのは、ユーザが最初に機能をテンプレートにおいて作成したとき、ならびにユーザが、機能に供給された入力値のいくつかを変更することを望んだときである。
【0083】
FeatureInputsエンティティは、機能の入力パラメータのための値割当て情報を含む。この情報を、定数値、またはランタイム・モデルにおける他のパラメータの値への参照の形式において供給することができる。
【0084】
1つまたは複数の実施形態では、機能が単に、機能サービス、および、エンティティをランタイム・モデルにおいて構築するための機能サービスを可能にする入力パラメータのセットを識別するテンプレートにおけるメタデータのブロックである。
【0085】
別法として、1つまたは複数の実施形態では、機能エンティティが、たとえば以下のエンティティからなり得る。
【表7】
【0086】
FeatureClassnameエンティティは、この機能のためのランタイム・エンティティを構築する作業を、再生プロセス中に実行する機能クリエータの名前である。
【0087】
FeatureModifyTemplateエンティティは、機能クリエータに供給される入力値を収集するためのUIを提供するテンプレートの名前である。このUIが呼び出されるのは、ユーザが最初に機能をテンプレートにおいて作成したとき、ならびにユーザが、機能に供給された入力値のいくつかを変更することを望んだときである。
【0088】
<<機能選択>>
ユーザは、テンプレート・オーサー・アプリケーションを使用することによって作成のための機能を選択することができる。1つまたは複数の実施形態では、テンプレート・オーサー・アプリケーションは、ユーザが単に所望の機能を選択し(例えば、カーソルが所望の機能上に配置されているときにマウス・ボタンをクリックすることにより)、その機能をテンプレート内にドラッグ・アンド・ドロップすることを可能にする。そのような実装形態は、ユーザ・インターフェース機能およびドラッグ・アンド・ドロップ機能を生成するWSAによって提供され得る。そのような実施形態のユーザ・インターフェースは、ユーザがそれを介して、テンプレート内に機能を入れるのに使用する機能入力パラメータを供給する機構を提供することができる。テンプレート・オーサー・アプリケーションは、入力値をとり、テンプレートの機能セクション内に機能メタデータ・ブロックを書き込む。
【0089】
図6は、本発明の1つまたは複数の実施形態によるテンプレート内で使用する機能の選択を示している。テンプレート604内に配置するための機能を選択するには、ユーザは、テンプレート作成者(オーサー)アプリケーション602内の機能タイプのリストから機能を選択する。システムは、特定の機能に関する入力値を得るためにユーザと対話するための適切なUIを生成するように設計されたテンプレート・ベースのウェブ・サーバを起動する。「機能編集」UI600として知られるこのUIは、ユーザから機能の入力パラメータに関する値を得ることを担う。これらの値は、ユーザによって供給された明示的値(数「123」または「http://www.bowstreet.com」のようなURLのような)であることが可能であり、あるいはランタイム・モデル内のエンティティに対するユーザ供給されるリファレンス(「123」のような数またはURLを含むパラメータ「pdq」に対するリファレンスのような)であることが可能である。
【0090】
リファレンスの使用の一実施例は、ボタン機能の場合である。ボタン機能に対する入力パラメータのうちの1つは、このボタンがそこに追加される一組のページである。ユーザは、特定のページを名前で参照すること、あるいは「すべて」などのキーワードを特定することができる。ボタン機能は、機能入力パラメータとして供給される値に応じて、正しい数のボタンを正しい数のページ上に構築することができる。
【0091】
ユーザが機能編集UI600に値を供給し終わると、機能編集UI WSA600は、機能ブロックと呼ばれる1つのブロックのXMLデータを編集中のテンプレート604内に書き込む。機能編集UIは、このブロックのデータを編集中のテンプレート604内のパラメータの機能セクション606内に、テンプレート604内に既に存在する最後の機能の後に書き込む。
【0092】
ユーザがテンプレート・オーサーWSAに新しい機能の作成プロセスを開始するように指示する仕方は、WSA内のアクションを実行するウェブ・サービス要求を行う(テンプレート・オーサーUI内の機能上でクリックする)ことによってである。このアクションは、特定の機能編集UIテンプレート600に関するテンプレート・ベースのウェブ・サービスを起動する。このテンプレート・ベースのサービスは、ユーザから入力を得るためにそれ自体のUIを生成し、また最終的に、機能入力値をそれに指示し、テンプレート・オーサーWSAが機能メタデータ・ブロックを作成できるようにするテンプレート・オーサーWSA602内のアクションを呼び出す。
【0093】
機能UIテンプレートとテンプレート・オーサーWSAが合同で機能ブロックを書き込んだ後、テンプレート・オーサーWSA602は、再生成ウェブ・サービスを起動する。おのウェブ・サービスは、テンプレート内に書き込まれたばかりの機能ブロックと関連する機能サービスを実行する。(再生成は、機能リスト606内の機能に対応する機能サービス610のすべてを実行するのを担うことを留意されたい。)機能サービス610は、その入力パラメータ値をランタイム・モデル608(機能サービスはこれを分析し、判断を下す基準として使用することができる)とともに使用して、変換されたランタイム・モデルを生成する。
【0094】
機能は、ランタイム・モデルを変換するプロセス・ステップのうちの1つをキャプチャする。テンプレート内の一組の機能は、ウェブ・サービス・エンジンによるWSAへのインスタンス化の準備が整ったランタイム・モデルに空のランタイム・モデルを変換するのに必要な一連の変換の全体を協働して定義する。
【0095】
機能の一特性(プロパティ)は、アプリケーション開発者によって通常、手動で行われる一組のプロセス・ステップの実行をキャプチャし、自動化することである。従来のアプリケーション開発ツールは、開発者の設計意図をキャプチャすることができない明示的モデリング手法、ならびにアプリケーションを構築する際に行われるプロセス全体をサポートする。Java開発製品およびC++開発製品を含む従来のツールは、手動設計プロセスの最終結果を表すデータ(すなわち、ソース・コード)をキャプチャする。このため、従来のアプリケーションは、構築するのに時間がかかり、変更するのが困難である。開発者は、変更を行うのにコードを削除し、新しいコードを作成しなければならない。開発者は、変更が完全に伝播されるのを確実にすることを担う。従来のアプリケーション編集ツールは、アプリケーションが壊れているかを判定するのを助けることができ、アプリケーションを分解工学してその問題を診断しようと試みることができる。ただし、アプリケーションの構築がそれに従って行われた製法の記述はないので、その製法の記述からアプリケーションを再生成する簡単な手段は存在しない。
【0096】
本発明の1つまたは複数の実施形態によれば、機能は、ランタイム・モデルだけではなく、どの型のXMLもでの構築にも適用することができる。例えば、XMLベースのメッセージを構築するために、一組の機能を作成することができる。
【0097】
機能の一特性は、モデル内のエンティティに対する参照である機能入力値を有するのが可能なことである。この特性により、機能は、モデルにエンティティを追加するだけでなく、エンティティを「過去のもの」としてマーク付けすることもできる。機能は、それが適用されるモデルに非常に深い変換をもたらすことができる。
【0098】
<<機能再生成>>
前述のとおり、再生成プロセスは、テンプレート内に特定された機能に基づいてWSAを作成する。機能再生成ウェブ・サービスは、機能リストおよびランタイム・モデルに対して動作する。完全な再生成は、ゼロからランタイム・モデルを再構築することに関わり、他方、部分的再生成は、機能のいくつかだけのためにランタイム・モデルを変更することに関わる。例えば、本発明の1つまたは複数の実施形態は、ある状況でいくつかの機能の使用を提供することができ、また別の状況では、別の一組の機能の使用を提供することができる(両組の機能は、同じテンプレート内に存在している)。
【0099】
再生成サービスは、機能サービスを実行したとき、ランタイム・モデルをサービス内に通し、それがランタイム・モデル内のエンティティを参照できるようにする。各機能サービスは、エンティティを追加する能力を有している。1つまたは複数の実施形態は、ランタイム・モデルが単一のXML文書に広がることができるようにする。他の実施形態では、機能サービスは、ひとまとまりXML文書全体に広がるランタイム・モデル内のエンティティを構築する。
【0100】
1つまたは複数の実施形態では、再生成サービスは、新しいモデルを構築する一方で、古いランタイム・モデルのコピーを維持しない。ただし、他の実施形態では、再生成プロセスが失敗した場合、再生成サービスが元のランタイム・モデルを戻せるように、古いランタイム・モデルが記憶される。さらに、ランタイム・モデルのバックアップ・コピーにより、新しいモデルが再生成される際に、それを古いモデルと比較できるようにすることが可能となり得る。
【0101】
1つまたは複数の実施形態では、再生成サービスは、過去の再生成と比較して、現在の再生成中にランタイム・モデルから除去されたXMLエンティティの「転送アドレス」リストを維持する。機能サービスが、前回、生成したのとは異なるエンティティを再生成し、作成する場合には、新しいエンティティに対する古いエンティティのマッピングが転送アドレス・リストに追加される。除去されたエンティティを参照する可能性がある後の機能サービスは、再生成サービスによって「救助」されることが可能である。再生成サービスは、転送アドレス・リストを使用し、その参照を新しいエンティティに向けて自動的に「曲げる(bend)」ことができる。
【0102】
本発明の1つまたは複数の実施形態は、各エンティティを作成した機能のマッピングを維持する。これにより、いくつかのウェブ・サービスがランタイム・モデルをより効率的に扱うことができるようになる。例えば、機能リストの真中で、ユーザが機能リストを編集しようと所望するとき、システムは、編集された機能リストの後に、機能リストによって生成されたすべてのエンティティを即時に探し出すことができる。システムは、この情報を使用し、その後に作成された機能リスト内で、ユーザが参照目的でエンティティを選択するのを防止する。この参照が行われるのを防止することにより、エンティティがまだ機能リスト再生成プロセスで作成されていないために、機能リストがそのエンティティを参照できないことによって引き起こされる不必要な再生成の失敗をシステムは防止する。
【0103】
<<テーブル機能リスト>>
本発明の1つまたは複数の実施形態は、様々な機能リストの利用を提供する。例えば、1つまたは複数の実施形態によれば、テーブル機能リストを利用することができる。
【0104】
テーブル機能リストは、ページ内でXMLデータを表示するテーブルを作成する。そのような機能リストにより、ユーザは、そのテーブルをページ内の名前の付いたエンティティにバインドできるようにすることが可能である。このエンティティは、空のタグ、またはグラフィカル形式設定を定義するテーブルであることが可能である。
【0105】
1つまたは複数の実施形態では、テーブル機能リストは、以下の入力のうちの1つまたは複数を利用する。whatページ、whatプレースホルダ(ページ内の名前付きタグ)、および表示するwhat XMLパラメータ。
【0106】
機能リストは、列名としてラベルのヘッダを有する行形式のXMLデータを表示するページ内のテーブルを作成する。ユーザが、このページ上で「ページ」アクションを活動化したとき、テーブル・データがテーブル内で表示することになり、これは、名前付きタグ内容内で定義されている任意の形式設定による(すなわち、<TD>タグおよび<TR>タグの形式設定)。
【0107】
<<アクティブ列機能リスト>>
1つまたは複数の実施形態では、「アクティブ列機能リスト」と呼ばれる機能リストを利用することができる。アクティブ列機能リストは、静的な表示列(例えば、テーブル機能リストによって作成された)をアクティブ列に変換する。したがって、列のセル内容は、WSAの制御下にある。列は、アクションを起動するボタンを含むことができ、あるいはリンク、チェックボックス、またはテキストフィールド等を表示することができる。ユーザは、制御および挙動を特定する。例えば、ユーザは、列内にボタンを入れ、サービス・コールを行うために特定のテーブル行値にアクセスするファンクションに対するコールをクリック・アクションに活動化させることができる。
【0108】
1つまたは複数の実施形態では、アクティブ列機能リストは、以下の入力のうちの1つまたは複数を利用する。whatテーブル、what列名(これは位置を特定することによる新しいものであり得る)、what列エンティティ(ボタン、クリック可能リンク、隠し、チェックボックス、テキストフィールド等)。
【0109】
アクティブ列機能リストは、静的列をパラメータ化され、制御された列に変換する。この機能リストは、コントロールを列内に入れ、元の内容をその名前のようなコントロールの何らかの特性にマップすることができる。また、この機能リストは、ボタンのクリック動作を定義するなどの列上の動作も構築する。
【0110】
<<可視性制御/UI制約機能リスト>>
1つまたは複数の実施形態は、可視性制御機能リスト(UI制約機能リストとも呼ばれる)を提供する。UI制御機能リストは、サーバ上の推論エンジンを利用するウェブ・サービスに対する1つまたは複数のサービス・コールを構築する。推論エンジンは、一組のパターンを維持し、UIに対する更新を起動するようなことを、そのUI内でユーザが行ったか否かを検査するプロセスを管理する。
【0111】
動作カテゴリ内の多くの機能リストは、推論エンジンのユーザであることになる。UIコントロールの可視性からファンクションの呼出しに至るすべてを行うアクションに、モデル内の状態変化の様々な組み合わせをリンクすることができる。
【0112】
推論(inference) エンジン・ベースのウェブ・サービスに対するコールを生成する機能リストは、ユーザから入力を受け取り、再生成の一環として、モデル・ランタイム・オンロードに推論エンジン・サービス内に通される規則定義入力パラメータを構成する。また、これらの機能リストは、イベントにバインドされた更新アクションの形で、モデルに動作を追加する。このアクションは、推論エンジンに、モデルの状態に対する重要な変更を知らせる。推論エンジン・サービスは、モデルの状態を変更し、様々なアクションを呼び出すことによって応答することができる。
【0113】
例えば、ユーザが、50の状態のうちの1つまたは複数を自分が選択できるようにするドロップ・ダウン・リスト・コントロールを作成したものと想定する。さらに、このユーザが、はい/いいえのオプション、および「あなたのドライバのなかにメキシコ人はいますか?」というラベルを有するチェックボックス・コントロールを構成したものと想定する。
【0114】
次に、ユーザは、UI制御機能リストを構成する。この機能リストは、ユーザに制約の性質に関する質問をする。ユーザは、州=CAまたはTXであるとき、メキシコ人ドライバ質問チェックボックスが可視でなければならず、それ以外のときは、そうではないことを示す。
【0115】
この機能リストは、ランタイム・モデル内に適切なエンティティを構築することによって、残りのことを処理する。この機能リストは、「推論エンジン・ロード」サービスに対するコールを構築し、そのアクションをオンロード機能に追加する。この機能リストは、新しい規則(州=CA、TX−>チェックボックス可視、そうでなければ、逆)の構文を書き、このサービスに対する入力にそれを付加する。次に、この機能リストは、State Dropdown上で「On Value Change」イベントに、「推論エンジン更新」に対するコールをバインドする。次に、ユーザが状態値、およびコントロールから出るタブを変更したとき、ブラウザが、推論エンジン・サービスにその変更を知らせ、推論エンジンがチェックボックスの可視性ステータスに対する何らかの変更を行い、ページ・アクションを行うことができるようにすることになる。したがって、推論エンジンは、州の値(例えば、州が、カリフォルニアまたはテキサスからミネソタに変更されたとき)ことを知り、メキシコに関する質問を表示しないのを知ることになる。
【0116】
UI制約機能リストは、個々のコントロール、複数のコントロール、またはいくつものコントロールを制御するDIVタグのようなものの可視性に対する制御を提供することができる。さらに、この機能リストは、許容可能な値の範囲、および値のリストに対する制御を提供することができる。
【0117】
<<XML変換機能リスト>>
本発明の1つまたは複数の実施形態は、ブロックのXSL命令を含む別のタグ付きデータ・オブジェクトを使用して、XMLタグ付きデータ・オブジェクトの変換を行うバーサタイル・サービスを提供する。このサービスは、変換されたデータを表す変換されたタグ付きデータ・オブジェクトを出力する。このサービスは、LotusXSLと呼ばれるIBMからのものなどの標準XMLおよびXSLアクション・エンジンをラップすることになる。
【0118】
さらに、1つまたは複数の実施形態は、一般に、タグ付きデータ・オブジェクト・パラメータに対する参照を含む入力をユーザから受け取り、XSLのブロックを書き込み、XSLプロセッサ・サービスに対するコールを書き込む、いくつかの機能リストを構成する。
【0119】
一実施例として、列フィルタリング機能リストが、結果セットを選択するようにユーザに求め、次に、その結果セットの構造表現(スキーマ)からフィルタリングすべき(含める)一組の列を選択するようにこのユーザに求めることが可能である。この機能サービスは、XSLプロセッサ・サービスに対するサービス・コールを書き込み、ブロックのXSLデータをパラメータの形で変換のための命令として書き込み、またXMLデータを入力とし、XSLパラメータを変換ロジックとして割り当てるファンクションを書き込み、そのサービスを呼び出す。
【0120】
再生成で、そのような機能サービスは、XML変換サービスが呼び出されたとき、ランタイムで実行されるXSLブロックを動的に構築する。
【0121】
このXSLプロセッサ・サービスは、XSLブロックを書き込み、割当てを行い、またこのサービスのアクションを呼び出すいくつかの機能リストに関するワーク・ホースとして働く能力を有する。1つまたは複数の実施形態では、サービスは、2つの異なるタグ付きデータ・オブジェクトをマージしようとした機能リストによって使用されることが可能である。そのような機能リストは、2つのタグ付きデータ・オブジェクトを単一の入力XMLオブジェクトに「集中」させ、次に、データのマージング(インター・スプライシング)をXSLロジックに実行させることができる。
【0122】
<<サンプル・テンプレート>>
以上の説明によれば、本発明の1つまたは複数の実施形態は、セルラー電話(携帯電話)カタログ・システムを提供することができる。セルラー電話機カタログ・システムは、ある製造業者から入手可能な電話機を表示するのに役立つことが可能であり、表示された電話機のうちの1つの上でクリックすることにより、選択された電話機に関する詳細な情報を提供する。例えば、ユーザには、図7Aの表示700が提示されることが可能である。「詳細」ボタン702のうちの1つを選択することにより、ユーザには、図7Bの表示704として対応する行内にその電話機の詳細な説明が提示される。本発明の1つまたは複数の実施形態は、機能性を構成し、図7Aおよび7Bに示すとおりその結果を表示する能力を提供する。
【0123】
例示の目的で、以下の説明は、「セルカタログ」テンプレート(本発明の1つまたは複数の実施形態により利用されるテンプレート)の部分が、既に作成されているものと想定する。例えば、テンプレートは、いくつかのサービス・コールおよび入力ページ上のテーブル内でXMLセル電話機カタログを提示するUI制御機能リストを既に有するものと想定する。テンプレート内で提供される基本的機能性には、セル電話機XMLデータ・ソースを開き、XML変換サービスを使用してそのデータ・ソースをカタログに変換する能力が含まれる。さらに、機能性には、セル電話機ブランド名リストをXMLデータから抽出し、その情報をドロップ・ダウン・リスト710内に提示して、ユーザがブランドを選択し、ブランドによってセル電話機カタログをフィルタリングできるようにする能力が含まれる。したがって、既存のテンプレートは、詳細ボタン702を含む製品情報列なしに、静的HTMLページ(セルラー電話機の特定のブランドを選択して表示する能力を有する)の表示を提供する。
【0124】
説明した実施形態の目的は、製品仕様サービス(例えば、詳細な製品説明表示704を得るための)をシステムに呼び出させるテーブルにアクティブ列のボタンを追加することである。このサービスは、ウェブ・サービス・ディレクトリ内で公表されている。このサービスは、テーブル内の選択された行によって識別された製品に関する詳細な製品仕様を戻す。ユーザがテーブル行内の詳細ボタン702を押したとき、WSAがそのサービスを呼び出し、行特定情報をそのサービス・コールに入れ、次に、別個のページ上で出力データ704を提示する。
【0125】
1つまたは複数の実施形態によれば、既存のテンプレートを編集するため、テンプレート・オーサー・アプリケーションを使用してテンプレートを開く。図8は、テンプレート・オーサー・アプリケーションの「テンプレートを開く」スクリーン802からのセルカタログ・テンプレート800の選択を示している。
【0126】
図9は、オープン・セルカタログ・テンプレート800を示している。表示700は、このテンプレートからの出力の現在のビューを示している。表示900は、セルカタログ・テンプレート800内の機能リストの現在のリストを示している。
【0127】
<<既存する機能リスト>>
テンプレート800の既存する機能リスト(表示900内に表示される)は、本発明の1つまたは複数の実施形態に従って構成することが可能である。第1の既存する機能リストは、「ユーザ・プロファイルを得る」サービスに対するサービス・コールである。このサービスは、そのテンプレート内の他の機能リストによって参照されることが可能なそのサービス出力内のいくつかのXMLエンティティを提供する。これには、ユーザの名前dsml:givenname、membership:MemberList/dsml:dn、mail address等に関する情報が含まれる。
【0128】
第2の既存する機能リストは、ランタイム・モデルが実行されたときオンロード機能性を定義するファンクションである。この機能リストは、一連のサービス・コール・アクション、および最初のページを生成する最後のページ・アクションを定義する。テンプレート内の他の機能リストは、この機能リストが参照するサービス・コール・アクションを作成することを担う。このシーケンスは、「ユーザ・プロファイルを得る」、「変換をロードする」、「カタログをロードする」、「カタログを変換する」、「ブランド選択」、「電話機選択」、および開始ページである「ページ・アクション・セル電話機データを実行する」である。
【0129】
第3および第4の既存する機能リストはともに、「XMLファイル・リーダ」サービスに対するサービス・コールである。第3の既存する機能リストは、XMLファイルからXMLカタログをロードし、他方、第4の既存の機能リストは、XSL文書をロードする。
【0130】
第5の既存の機能リストは、「XSL変換サービス」に対するサービス・コールである。この機能リストは、第3の機能リストおよび第4の機能リストからのXMLカタログおよびXSL文書のサービス出力を入力としてこのサービス・コールに割り当てる。このサービスは、入力カタログからの特定の抽出されたデータを含む新しいXML文書を構築する。このデータのいくらかは、属性からエンティティに、またその逆に変換される。
【0131】
第6の既存する機能リストは、「インポートされたページ」である。この機能リストは、入力としてURLの名前をとり、インポートされたHTML内容を含むランタイム・モデル内でページ・エンティティを構成する。このページ内容は、再生成時にインポートされ、参照の目的で他の機能リストの利用に供される。
【0132】
第7の既存する機能リストは、テーブルである。この機能リストは、インポートされたページ内の名前付きエンティティに対するリファレンスをとり、HTMLテーブルを構築する。さらに、この機能リストは、ランタイム・モデル内の別のサービスからのサービス出力をテーブルの本文となるように割り当てる。ここで行われるのは、XSL変換サービスがデータを抽出し、それをテーブル形式で提示し、次に、別のサービスがそのテーブル・データをフィルタリングすることである。このサービス・コール(機能リスト11)からの出力が、テーブル内に入れられるものである。この結果、抽出され変換されたセル電話機カタログ・データが、インポートされたページ上に表示される。
【0133】
第8の既存する機能リストは、テーブルのヘッダを表すエンティティの固定リストを含むパラメータである。この情報は、XSL変換サービスに対するサービス・コール機能リストに対するより強力な代替案としての役割をする異なる機能リストによって自動的に作成されることが可能である。そのような機能リストは、データ抽出機能リストと呼ばれる。この機能リストは、XSL変換サービスに対するサービス・コールを構築するだけでなく、XSLデータ、およびサービス出力パラメータのスキーマを書き込むこともする。そのような機能リストは、それがXSLを書き込んでおり、したがって、そのサービスからのXML出力データがどのような構造となるのか知っているため、これらのアクションを行うことができる。この場合、出力データの構造は、パラメータ・機能リスト内に手動で符号化されたテーブル・ヘッダ名である。
【0134】
第9および第10の既存する機能リストは、インポートされたページ内のエンティティを構成するUIコントロールである。詳細には、それらの機能リストは、「電話機を示す」ボタンおよび「製造業者を選択する」ラベルである。
【0135】
第11の既存する機能リストは、「XMLテーブル・データをフィルタリングする」サービスに対するサービス・コールである。このサービス・コールは、「電話機を選択する」という名前が付いている。このサービスは、フィールド・リストおよび試験値を使用してXMLテーブルをフィルタリングする。この機能リストは、XSL変換サービスからの出力を入力としてフィルタ・サービスに割り当てる。さらに、この機能リストは、特定のブランドに関するセル電話機を探し出すのに使用する試験値として、フィルタフィールド選択コントロール(機能リスト14)からの値を割り当てる。
【0136】
第12の既存する機能リストは、電話選択アクション(機能リスト11)、およびセル電話データ・ページ・アクション(機能リスト6)を呼び出すファンクションである。このファンクションの意図は、2つのアクションをグループ化し、ユーザが「電話機を示す」ボタンを押したとき、それらのアクションが順に呼び出され得るようにすることである。
【0137】
第13の既存する機能リストは、「ユーザ・プロファイル・データを得る」サービスによって生成されたdsml:cnサービス出力から、その値を得ることである。ユーザ・プロファイルに依存して、このテキスト・フィールドは、ユーザの名前を示すように更新される。
【0138】
第14の既存する機能リストは、選択コントロールである。この機能リストは、XML電話機カタログから抽出された電話機ブランドのリストを表示するインポートされたページ内でコントロールを構築する。このリスト内で選択されたアイテムは、「電話機を選択する」サービス・コール(機能リスト11)によって使用される。
【0139】
第15および第16の既存する機能リストはそれぞれ、サービス・コールおよびパラメータである。このサービス・コールは、XSL変換サービスに対するものである。この機能リストは、「ブランドを示す」パラメータ内で供給されるブロックのXSLとともに、XML電話機カタログを入力として割り当てる。このサービス・コールは、そのサービス出力内で電話機ブランドのリストを生成する。この出力データは、フィルタリングすべき電話機のリストをユーザに提示するため、フィルタフィールド選択コントロールによって参照される。
【0140】
<<新しい機能リスト>>
ボタンの列、および詳細ボタン702のうちの1つの選択からもたらされる表示を使用可能にするため、本発明の1つまたは複数の実施形態が、様々なステップを介して、いくつかの機能リストの作成/選択を提供する。
【0141】
1.図8を参照すると、第1のステップは、前述のとおり、テンプレート・オーサー・アプリケーション内でセルカタログ・テンプレート800を開くことである。テンプレート・オーサー・アプリケーション内で、ユーザには、LDAPディレクトリ内に記憶された一組のテンプレート804、およびファイル(.tpl)内に記憶されたテンプレート806が提示される。
【0142】
2.図9を参照すると、プレビュー・ボタン902を選択したとき、再生成されたランタイム・モデルが表示700内に表示される。図9に表示された再生成されたランタイム・モデルは、結果の実行WSAによって表示されることになるものを示す。ユーザは、ドロップ・ダウン・リスト710から電話機ブランドを選択し、プレビュー・ペイン内で「電話機を示す」ボタン708を押して電話機リストをフィルタリングできることを留意されたい。
【0143】
3.次のステップは、そうでなければ静的なテーブルの第1の列として、アクティブ列の機能リストを追加することである。1つまたは複数の実施形態では、アクティブ列の機能リストは、機能リストパレットから「アクティブ列」を選択することによって作成される。図10は、「アクティブ列」機能リストUIテンプレート1000をそれが開かれた後の形で示している。次に、ユーザは、様々な設定に関する値を特定する。例えば、表示1000に示されるとおり、この設定には、以下のものが含まれる可能性がある:列がテーブル名設定1002でテーブルに入る;列の位置が、列表示位置設定1004で列1として識別される;列の型(ボタン、チェックボックス等)が、設定1006でボタンとして設定される;ボタンの押下したときのアクションが、設定1008の「オンロード」である;設定1010のボタン名「詳細」。
【0144】
4.「アクティブ列」機能リストを完成した後、プレビュー・ボタン902を選択することによってその結果をプレビューすることができる。図7Aは、新しい列712を含む結果の表示を示す。ただし、「詳細」ボタンの選択(押すことによる)は、オンロード・アクションを再び実行すること以外、まだ何もしない。どのように新しい機能リスト714が機能リスト内に現れるかに留意されたい。
【0145】
5.次のステップは、図11に示される「製品使用を得る」と呼ばれるウェブ・サービス・ディレクトリ内のサービスに対するサービス・コール機能リストを作成することである。「製品使用を得る」サービスは、テンプレート・ベースのサービスであることを留意されたい。このサービス・コールは、現在のランタイム・モデルのコンテキスト内で意味を有するローカル名で名付けられている。図12は、サービスの入力を特定するための機能リストUIテンプレートの次のページを示す。この時点で、この機能リストは、サービスの入力スキーマをルックアップし、一定値、またはランタイム・モデル内のサービス出力およびパラメータに対する参照を特定するためのUIのような形式を構築する。
【0146】
6.サービス入力特定ページ1200上で、ユーザは、2つのストリング値をこのサービスに供給することを求められる。1つは、電話ブランド名1202であり、もう1つは、電話機モデル名1204である。ユーザは、一定値を指定することができるが、定数を特定するのではなく、テーブルの現行の行内にあるブランドおよびモデル・データ値を参照することによって入力を得ることができる。テーブル機能リストがこれらの参照可能なエンティティに対するアクセスを提供するため、ユーザは、これらの参照を選択することができる。この参照機構手段を使用することは、テーブル内で選択される行に依存して、行固有の値がサービス・コール内に送り込まれることを意味する。
【0147】
7.製品仕様データを得るサービス・コールを作成した後、その結果を表示することができるインポートされたページの機能リストが必要とされる。図13は、ユーザが、形式設定情報および背景カラー等を含むHTMLページにURL1300を供給する、インポートされたページの機能リストの作成を示している。また、ユーザは、HTMLファイルに加えられた可能性のあるどのような変更でも組み込むため、再生成時にシステムがページ内容を再インポートするかどうかも決める(チェック・ボックス1302内にチェックマークを入れることにより)こともできる。
【0148】
8.次のステップは、カタログ詳細出力ページ上に、「製品仕様を得る」サービスからのXMLデータ出力を表示することになる機能リストを作成する。1つまたは複数の実施形態では、固定XMLテキスト機能リストを利用することができる。図14は、固定XMLテキスト機能リストに関するUIを示している。機能リストの入力として、ユーザは、ページ上の名前付きプレースホルダをロケータとして選択し、「詳細を示す」サービス・コールからのサービス出力を特定することができる。1つまたは複数の実施形態(提示した実施例を含む)では、この機能リストからの出力は、HTMLに従って形式設定されたブロックのXMLデータである。
【0149】
9.カタログ詳細ページは、ユーザをセル電話機データ・ページに戻すボタンを必要とする。したがって、このページ・アクションを呼び出し、次に、そのファンクション・アクションをボタン機能リストにバインドするファンクション機能リストが追加される、またはパフォーマンスを犠牲にして単純化する場合、ボタンが押されたときのオンロード・アクションに対する単純なコールを利用することができる。図15は、カタログ詳細ページ内で呼び戻されるプレースホルダに付加された「戻る」と呼ばれるボタン機能リストに関するUIを示している。
【0150】
10.図16は、「詳細を示す」と呼ばれるファンクション機能リストを追加する次のステップに関するUIを示している。このファンクションは、「詳細を示す」サービス・コールに対するコールをカタログ詳細ページ・アクションに対するコールとグループ化する。
【0151】
11.次に、アクティブ列機能リストを変更して、図17に示すとおり、選択されたファンクションを「オンロード」から「詳細を示す」に変えなければならない。
【0152】
12.これで、実施例の機能作成部分は終了する。プレビュー・コマンド902を選択してアプリケーションを見ることができる。詳細ボタンのうちの1つが選択されたとき、その出力は、データ・テーブル内の選択された行に関係するデータを含む製品仕様ページ704である。
【0153】
以上、ネットワーク・サービスを作成するための方法および装置を1つまたは複数の実施形態との関連で説明した。本発明は、特許請求の範囲およびそれと等価なものの完全な範囲によって定義される。
【図面の簡単な説明】
【図1】
本発明の1つまたは複数の実施形態によるWSAを生成するためのテンプレートの使用を例示する図である。
【図2】
本発明の1つまたは複数の実施形態によるテンプレートの構成(パラメータを含む)を例示する図である。
【図3】
本発明の1つまたは複数の実施形態によるテンプレートを使用したwebサービス・アプリケーションの生成を例示する図である。
【図4】
本発明の1つまたは複数の実施形態による再生プロセスを例示する図である。
【図5】
本発明の1つまたは複数の実施形態による、変換されたランタイム・モデルを作成するための機能および機能サービスの使用を例示する図である。
【図6】
本発明の1つまたは複数の実施形態によるテンプレートにおける使用のための機能の選択を例示する図である。
【図7A】
本発明の1つまたは複数の実施形態により生成された携帯電話システムの表示を例示する図である。
【図7B】
本発明の1つまたは複数の実施形態による、図7Aの「詳細」ボタンを押した結果として生じる表示を例示する図である。
【図8】
本発明の1つまたは複数の実施形態によるテンプレート・オーサー・アプリケーションの「テンプレートを開く」画面からのセルカタログ・テンプレートの選択を例示する図である。
【図9】
本発明の1つまたは複数の実施形態によるセルカタログを開くテンプレートを例示する図である。
【図10】
本発明の1つまたは複数の実施形態によるアクティブ列機能UIテンプレートを例示する図である。
【図11】
本発明の1つまたは複数の実施形態によるサービスの作成を例示する図である。
【図12】
本発明の1つまたは複数の実施形態による、サービスの入力を指定するための機能UIテンプレートの次のページを例示する図である。
【図13】
本発明の1つまたは複数の実施形態による、インポートされたページ機能の作成を例示する図である。
【図14】
本発明の1つまたは複数の実施形態による固定XMLテキスト機能のためのUIを例示する図である。
【図15】
本発明の1つまたは複数の実施形態による、「戻る」と呼ばれるボタン機能のためのUIを例示する図である。
【図16】
本発明の1つまたは複数の実施形態によるファンクション機能を追加するためのUIを例示する図である。
【図17】
本発明の1つまたは複数の実施形態による、図10のアクティブ列機能の、ファンクションがOnLoadからShow Detailsへ修正中である状態を例示する図である。
Claims (24)
- XMLモデルを作成するためのシステムであって、
XMLモデルを備え、
前記XMLを生成するように構成されたテンプレートを備え、前記テンプレートは1つまたは複数の機能を含み、
前記XMLモデルにおいてエンティティを生成するように構成された1つまたは複数の前記機能を備えている
システム。 - 1つまたは複数の前記機能が、前記XMLモデルにおいてエンティティを修正するように構成される、請求項1に記載のシステム。
- 前記XMLモデルがランタイム・モデルである、請求項1に記載のシステム。
- 前記ランタイム・モデルを利用してネットワーク・サービスを構築することができる、請求項3に記載のシステム。
- 前記テンプレートがXMLにおけるものである、請求項1に記載のシステム。
- 前記テンプレートがランタイム・モデルである、請求項1に記載のシステム。
- 1つまたは複数の前記機能がランタイム・モデルを入力として利用する、請求項1に記載のシステム。
- 1つまたは複数の前記機能が入力をユーザから得るように構成される、請求項1に記載のシステム。
- 前記1つまたは複数の各機能が、機能リストにおいてリストされている前記機能リストの順序において実行される、請求項1に記載のシステム。
- 機能への入力が、前記ランタイム・モデルにおけるエンティティへの参照である、請求項1に記載のシステム。
- 1つまたは複数の前記機能が、機能サービスおよび機能ユーザ・インターフェイスを含む、請求項1に記載のシステム。
- 前記XMLモデルがXMLベースのメッセージを表現する、請求項1に記載のシステム。
- XMLモデルを作成するための方法であって、
テンプレートベースのサービスの要求を得るステップと、
1つまたは複数の機能を含むテンプレートを得るステップと、
1つまたは複数の前記機能を実行してXMLモデルを作成するステップと
を備えている方法。 - 前記XMLモデルが1つまたは複数のエンティティを含み、前記1つまたは複数のエンティティが1つまたは複数の前記機能によって作成される、請求項12に記載の方法。
- 1つまたは複数の前記機能が、前記XMLモデルにおいてエンティティを修正するように構成される、請求項12に記載の方法。
- 前記テンプレートがランタイム・モデルであり、前記テンプレートを得るステップが、
テンプレートをロードすること、および
1つまたは複数の機能を含むアプリケーションを、前記テンプレートを利用して生成することを含んでいる、
請求項12に記載の方法。 - 前記XMLモデルがランタイム・モデルであり、
前記XMLモデルをロードするステップと、
ネットワーク・サービスを、前記XMLモデルを利用して生成するステップとをさらに含む、請求項15に記載の方法。 - 前記1つまたは複数の機能がランタイム・モデルを入力として利用することをさらに含む、請求項12に記載の方法。
- 前記1つまたは複数の機能が入力をユーザから得ることをさらに含む、請求項12に記載の方法。
- 前記1つまたは複数の各機能が、前記機能が機能リストにおいてリストされる順序において実行される、請求項12に記載の方法。
- 前記1つまたは複数の機能が、ランタイム・モデルにおけるエンティティへの参照を入力として利用することをさらに含む、請求項12に記載の方法。
- 1つまたは複数の前記機能が、実行中に機能サービスおよび機能ユーザ・インターフェイスを利用することをさらに含む、請求項12に記載の方法。
- 前記XMLモデルがXMLベースのメッセージを表現する、請求項12に記載の方法。
- ユーザが新しい機能をテンプレート・オーサーにおいて作成すること、
ユーザが機能入力値をユーザ・インターフェイスに供給すること、および
ユーザ・インターフェイス・テンプレートが機能ブロックを、前記機能入力値および新しい機能を利用して作成すること
をさらに含む、請求項12に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/329,677 US6560633B1 (en) | 1999-06-10 | 1999-06-10 | Method for creating network services by transforming an XML runtime model in response to an iterative input process |
PCT/US2000/040186 WO2000077654A1 (en) | 1999-06-10 | 2000-06-09 | Method and apparatus for creating services |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004500619A true JP2004500619A (ja) | 2004-01-08 |
Family
ID=23286519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001503068A Pending JP2004500619A (ja) | 1999-06-10 | 2000-06-09 | サービスを作成するための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (3) | US6560633B1 (ja) |
EP (1) | EP1185938A4 (ja) |
JP (1) | JP2004500619A (ja) |
AU (1) | AU775814B2 (ja) |
CA (1) | CA2376794A1 (ja) |
MX (1) | MXPA01012818A (ja) |
WO (1) | WO2000077654A1 (ja) |
Families Citing this family (164)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2364468A1 (en) * | 1999-03-06 | 2000-09-14 | Coppercom, Inc. | System and method for administrating call and call feature set-up in a telecommunications network |
US6792605B1 (en) * | 1999-06-10 | 2004-09-14 | Bow Street Software, Inc. | Method and apparatus for providing web based services using an XML Runtime model to store state session data |
US6560633B1 (en) * | 1999-06-10 | 2003-05-06 | Bow Street Software, Inc. | Method for creating network services by transforming an XML runtime model in response to an iterative input process |
US6892230B1 (en) * | 1999-06-11 | 2005-05-10 | Microsoft Corporation | Dynamic self-configuration for ad hoc peer networking using mark-up language formated description messages |
US6910068B2 (en) * | 1999-06-11 | 2005-06-21 | Microsoft Corporation | XML-based template language for devices and services |
US7200809B1 (en) * | 1999-08-04 | 2007-04-03 | Oracle International Corporation | Multi-device support for mobile applications using XML |
US6907564B1 (en) * | 1999-08-30 | 2005-06-14 | International Business Machines Corporation | Representing IMS messages as XML documents |
US6732330B1 (en) * | 1999-09-30 | 2004-05-04 | International Business Machines Corporation | Scripting language blocks to support multiple scripting languages in a single web page |
US6981212B1 (en) * | 1999-09-30 | 2005-12-27 | International Business Machines Corporation | Extensible markup language (XML) server pages having custom document object model (DOM) tags |
US7266766B1 (en) * | 1999-09-30 | 2007-09-04 | International Business Machines Corporation | Method for developing a custom tagbean |
US6981211B1 (en) * | 1999-09-30 | 2005-12-27 | International Business Machines Corporation | Method for processing a document object model (DOM) tree using a tagbean |
US6978367B1 (en) * | 1999-10-21 | 2005-12-20 | International Business Machines Corporation | Selective data encryption using style sheet processing for decryption by a client proxy |
US6941459B1 (en) * | 1999-10-21 | 2005-09-06 | International Business Machines Corporation | Selective data encryption using style sheet processing for decryption by a key recovery agent |
US6961849B1 (en) * | 1999-10-21 | 2005-11-01 | International Business Machines Corporation | Selective data encryption using style sheet processing for decryption by a group clerk |
CA2389375C (en) * | 1999-11-01 | 2005-12-20 | Lockheed Martin Corporation | System and method for the storage and access of electronic data in a web-based computer system |
US6898790B1 (en) * | 1999-12-06 | 2005-05-24 | International Business Machines Corporation | Mapping actions to tasks within customer service processing systems |
US20020032706A1 (en) * | 1999-12-23 | 2002-03-14 | Jesse Perla | Method and system for building internet-based applications |
US20020035645A1 (en) * | 1999-12-30 | 2002-03-21 | Tuatini Jeffrey T. | Application Architecture |
US20010044813A1 (en) * | 2000-01-10 | 2001-11-22 | Frank Kenneth B. | Document production platform |
US7072896B2 (en) * | 2000-02-16 | 2006-07-04 | Verizon Laboratories Inc. | System and method for automatic loading of an XML document defined by a document-type definition into a relational database including the generation of a relational schema therefor |
US6980533B1 (en) * | 2000-04-19 | 2005-12-27 | Lucent Technologies Inc. | Load balancing technique for a wireless internet access system |
US7577834B1 (en) * | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
US6789077B1 (en) * | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment |
US6973493B1 (en) * | 2000-05-09 | 2005-12-06 | Sun Microsystems, Inc. | Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment |
US7072967B1 (en) * | 2000-05-09 | 2006-07-04 | Sun Microsystems, Inc. | Efficient construction of message endpoints |
US6868447B1 (en) * | 2000-05-09 | 2005-03-15 | Sun Microsystems, Inc. | Mechanism and apparatus for returning results of services in a distributed computing environment |
US8082491B1 (en) * | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US8135796B1 (en) | 2000-05-09 | 2012-03-13 | Oracle America, Inc. | Mechanism and apparatus for accessing and addressing services in a distributed computing environment |
US7716492B1 (en) | 2000-05-09 | 2010-05-11 | Oracle America, Inc. | Method and apparatus to obtain service capability credentials |
US6970869B1 (en) * | 2000-05-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus to discover services and negotiate capabilities |
US7080078B1 (en) * | 2000-05-09 | 2006-07-18 | Sun Microsystems, Inc. | Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment |
US6862594B1 (en) * | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US7373422B1 (en) | 2000-08-04 | 2008-05-13 | Oracle International Corporation | Techniques for supporting multiple devices in mobile applications |
US7013329B1 (en) | 2000-08-04 | 2006-03-14 | Oracle International Corporation | Techniques for programming event-driven transactions in mobile applications |
US8600783B2 (en) | 2000-08-18 | 2013-12-03 | The Crawford Group, Inc. | Business to business computer system for communicating and processing rental car reservations using web services |
US6850956B1 (en) | 2000-09-08 | 2005-02-01 | Corel Inc. | Method and apparatus for obtaining and storing data during automated data processing |
US6925593B1 (en) | 2000-09-08 | 2005-08-02 | Corel Corporation | Method and apparatus for transferring data during automated data processing |
US6944865B1 (en) * | 2000-09-08 | 2005-09-13 | Corel Corporation | Method and apparatus for saving a definition for automated data processing |
US7853833B1 (en) | 2000-09-08 | 2010-12-14 | Corel Corporation | Method and apparatus for enhancing reliability of automated data processing |
US6938030B1 (en) | 2000-09-08 | 2005-08-30 | Corel Corporation | Method and apparatus for facilitating accurate automated processing of data |
US7747673B1 (en) * | 2000-09-08 | 2010-06-29 | Corel Corporation | Method and apparatus for communicating during automated data processing |
US7296238B1 (en) | 2000-09-08 | 2007-11-13 | Corel Corporation | Method and apparatus for triggering automated processing of data |
US6961922B1 (en) | 2000-09-08 | 2005-11-01 | Corel Corporation | Method and apparatus for defining operations to be performed during automated data processing |
US7000223B1 (en) | 2000-09-08 | 2006-02-14 | Corel Corporation | Method and apparatus for preparing a definition to control automated data processing |
US6868193B1 (en) | 2000-09-08 | 2005-03-15 | Corel Inc. | Method and apparatus for varying automated data processing |
US6938087B1 (en) * | 2000-09-12 | 2005-08-30 | Hewlett-Packard Development Company, L.P. | Distributed universal communication module for facilitating delivery of network services to one or more devices communicating over multiple transport facilities |
US7596564B1 (en) * | 2000-09-29 | 2009-09-29 | Vignette Corporation | Method and system for cache management of a cache including dynamically-generated content |
US7321901B1 (en) * | 2000-09-29 | 2008-01-22 | Microsoft Corporation | Application service provider model for manufacturers product specification data |
US6718336B1 (en) * | 2000-09-29 | 2004-04-06 | Battelle Memorial Institute | Data import system for data analysis system |
US7260536B1 (en) | 2000-10-06 | 2007-08-21 | Hewlett-Packard Development Company, L.P. | Distributed voice and wireless interface modules for exposing messaging/collaboration data to voice and wireless devices |
US7043687B2 (en) * | 2000-12-27 | 2006-05-09 | G. E. Information Services, Inc. | Document/message management |
US20020129059A1 (en) * | 2000-12-29 | 2002-09-12 | Eck Jeffery R. | XML auto map generator |
US20020091733A1 (en) * | 2001-01-05 | 2002-07-11 | Chen Tong S. | System and method for dynamically generating tables of web pages |
US20020101880A1 (en) * | 2001-01-30 | 2002-08-01 | Byoung-Jo Kim | Network service for adaptive mobile applications |
US7107336B2 (en) * | 2001-02-23 | 2006-09-12 | International Business Machines Corporation | Method and apparatus for enhanced server page execution |
US7240125B2 (en) * | 2001-03-06 | 2007-07-03 | International Business Machines Corporation | Apparatus and method for using a directory service for a user registry |
US7216095B2 (en) * | 2001-03-13 | 2007-05-08 | Sony Corporation | Method and system for distributing product information |
FI113302B (fi) * | 2001-05-25 | 2004-03-31 | Metso Automation Oy | Tilannekuvien käyttäminen teollisuusautomaatioprosessin ohjausjärjestelmässä |
US20020188703A1 (en) * | 2001-06-04 | 2002-12-12 | Mckesson Information Solutions Holdings Ltd. | Graphical tool for developing computer programs via specifications |
JP2005514673A (ja) * | 2001-06-22 | 2005-05-19 | オモイグイ,ノサ | 知識の取得、管理、伝達、及び提示のシステム及び方法 |
US6785685B2 (en) * | 2001-08-22 | 2004-08-31 | International Business Machines Corporation | Approach for transforming XML document to and from data objects in an object oriented framework for content management applications |
US7343428B2 (en) * | 2001-09-19 | 2008-03-11 | International Business Machines Corporation | Dynamic, real-time integration of software resources through services of a content framework |
US7035944B2 (en) | 2001-09-19 | 2006-04-25 | International Business Machines Corporation | Programmatic management of software resources in a content framework environment |
US6985939B2 (en) * | 2001-09-19 | 2006-01-10 | International Business Machines Corporation | Building distributed software services as aggregations of other services |
US8914807B2 (en) * | 2001-09-28 | 2014-12-16 | International Business Machines Corporation | Method, system, and program for generating a program capable of invoking a flow of operations |
US8924408B2 (en) * | 2001-09-28 | 2014-12-30 | International Business Machines Corporation | Automatic generation of database invocation mechanism for external web services |
US8166006B2 (en) * | 2001-09-28 | 2012-04-24 | International Business Machines Corporation | Invocation of web services from a database |
US7313617B2 (en) | 2001-09-28 | 2007-12-25 | Dale Malik | Methods and systems for a communications and information resource manager |
US7472187B2 (en) * | 2001-09-28 | 2008-12-30 | At&T Intellectual Property I, L.P. | Communications and information resource manager |
US20030093465A1 (en) * | 2001-10-31 | 2003-05-15 | International Business Machines Corporation | Management strategies for internationalization in a distributed computer environment |
CN1669014B (zh) | 2001-11-20 | 2016-05-04 | 诺基亚技术有限公司 | 帮助访问可在一个或多个网络上获得的功能性的网络*** |
US7254614B2 (en) * | 2001-11-20 | 2007-08-07 | Nokia Corporation | Web services push gateway |
MXPA04005064A (es) * | 2001-11-28 | 2004-09-10 | Bow Street Software Inc | Metodo y aparato para crear objetos de programa. |
US7251674B2 (en) * | 2002-01-08 | 2007-07-31 | International Business Machines Corporation | Internationalization of the web services infrastructure |
US20030131144A1 (en) * | 2002-01-10 | 2003-07-10 | Ncr Corporation | Data wedge |
US7603469B2 (en) * | 2002-01-15 | 2009-10-13 | International Business Machines Corporation | Provisioning aggregated services in a distributed computing environment |
US20030139917A1 (en) * | 2002-01-18 | 2003-07-24 | Microsoft Corporation | Late binding of resource allocation in a performance simulation infrastructure |
US20030145252A1 (en) * | 2002-01-25 | 2003-07-31 | James Grey | Test executive system having XML object representation capabilities |
US20030145280A1 (en) * | 2002-01-25 | 2003-07-31 | James Grey | Test executive system having XML reporting capabilities |
US7058890B2 (en) * | 2002-02-13 | 2006-06-06 | Siebel Systems, Inc. | Method and system for enabling connectivity to a data system |
US6845380B2 (en) * | 2002-03-04 | 2005-01-18 | Hewlett-Packard Development Company, L.P. | Method and system of valuing transformation between extensible markup language (XML) documents |
US20040015564A1 (en) * | 2002-03-07 | 2004-01-22 | Williams Scott Lane | Method of developing a web service and marketing products or services used in developing a web service |
AU2003228775A1 (en) | 2002-05-03 | 2003-11-17 | Coco Communications Corp | Method and apparatus for persistent connections to a device through the use of multiple physical network connections and connection hand-offs between multiple bands, modes and networks |
CA2390348A1 (en) * | 2002-06-10 | 2003-12-10 | Ibm Canada Limited-Ibm Canada Limitee | Systems, methods and computer programs for implementing and accessing webservices |
US7149747B1 (en) * | 2002-06-27 | 2006-12-12 | Siebel Systems, Inc. | Dynamic generation of user interface components |
US7650566B1 (en) | 2002-06-28 | 2010-01-19 | Microsoft Corporation | Representing list definitions and instances in a markup language document |
US7523394B2 (en) * | 2002-06-28 | 2009-04-21 | Microsoft Corporation | Word-processing document stored in a single XML file that may be manipulated by applications that understand XML |
US7562295B1 (en) | 2002-06-28 | 2009-07-14 | Microsoft Corporation | Representing spelling and grammatical error state in an XML document |
US7565603B1 (en) | 2002-06-28 | 2009-07-21 | Microsoft Corporation | Representing style information in a markup language document |
US7584419B1 (en) * | 2002-06-28 | 2009-09-01 | Microsoft Corporation | Representing non-structured features in a well formed document |
US7533335B1 (en) | 2002-06-28 | 2009-05-12 | Microsoft Corporation | Representing fields in a markup language document |
US7607081B1 (en) | 2002-06-28 | 2009-10-20 | Microsoft Corporation | Storing document header and footer information in a markup language document |
FR2843260B1 (fr) * | 2002-07-31 | 2005-04-08 | Cit Alcatel | Systeme de gestion de reseau par regles comportant un moteur d'inference |
IL166717A0 (en) * | 2002-08-26 | 2006-01-15 | Computer Ass Think Inc | Web services apparatus and methods |
US7467391B2 (en) * | 2002-10-30 | 2008-12-16 | International Business Machines Corporation | Allowing client applications to programmatically access web sites |
US20040133633A1 (en) * | 2002-12-05 | 2004-07-08 | Neopost Inc. | Method and apparatus for adaptive client communications |
US20040207659A1 (en) * | 2003-04-02 | 2004-10-21 | International Business Machines Corporation | Program creation by combining web services using graphic user interface controls |
US7530015B2 (en) * | 2003-06-25 | 2009-05-05 | Microsoft Corporation | XSD inference |
US20040268321A1 (en) * | 2003-06-27 | 2004-12-30 | Kreiner Barrett M | System and method for cross-platform computer access |
US8069435B1 (en) * | 2003-08-18 | 2011-11-29 | Oracle America, Inc. | System and method for integration of web services |
EP1665084A1 (en) * | 2003-09-17 | 2006-06-07 | Research In Motion Limited | System and method for dynamic generation and customization of web service client applications for terminals |
DE602004006308T2 (de) * | 2003-12-10 | 2008-01-03 | International Business Machines Corp. | Verfahren zum umlenken von client-anforderungen zu web-diensten |
US7694140B1 (en) | 2003-12-30 | 2010-04-06 | Sap Ag | Web service client extensions |
US7552170B2 (en) * | 2004-02-26 | 2009-06-23 | Research In Motion Limited | Apparatus and method for aggregating web services |
US7467399B2 (en) | 2004-03-31 | 2008-12-16 | International Business Machines Corporation | Context-sensitive confidentiality within federated environments |
US7698429B1 (en) * | 2004-04-22 | 2010-04-13 | Perot Systems Corporation | System and method for customizing a core product |
US7877726B2 (en) * | 2004-07-13 | 2011-01-25 | The Mitre Corporation | Semantic system for integrating software components |
US7823123B2 (en) * | 2004-07-13 | 2010-10-26 | The Mitre Corporation | Semantic system for integrating software components |
US8615731B2 (en) * | 2004-08-25 | 2013-12-24 | Mohit Doshi | System and method for automating the development of web services that incorporate business rules |
US8631386B2 (en) * | 2004-08-25 | 2014-01-14 | Mohit Doshi | System and method for automating the development of web services |
US7584245B2 (en) * | 2004-09-29 | 2009-09-01 | Microsoft Corporation | Web service generation |
US8032540B1 (en) | 2004-10-29 | 2011-10-04 | Foundry Networks, Inc. | Description-based user interface engine for network management applications |
US20060230339A1 (en) * | 2005-04-07 | 2006-10-12 | Achanta Phani G V | System and method for high performance pre-parsed markup language |
US20060265469A1 (en) * | 2005-05-20 | 2006-11-23 | Estrade Brett D | XML based scripting framework, and methods of providing automated interactions with remote systems |
US8078671B2 (en) | 2005-09-21 | 2011-12-13 | Sap Ag | System and method for dynamic web services descriptor generation using templates |
US20070067388A1 (en) * | 2005-09-21 | 2007-03-22 | Angelov Dimitar V | System and method for configuration to web services descriptor |
US20070067384A1 (en) * | 2005-09-21 | 2007-03-22 | Angelov Dimitar V | System and method for web services configuration creation and validation |
US7673028B2 (en) | 2005-09-28 | 2010-03-02 | Sap Ag | Method and system for container-managed configuration and administration |
US20070106496A1 (en) * | 2005-11-09 | 2007-05-10 | Microsoft Corporation | Adaptive task framework |
US7822699B2 (en) * | 2005-11-30 | 2010-10-26 | Microsoft Corporation | Adaptive semantic reasoning engine |
US7606700B2 (en) * | 2005-11-09 | 2009-10-20 | Microsoft Corporation | Adaptive task framework |
US20070130134A1 (en) * | 2005-12-05 | 2007-06-07 | Microsoft Corporation | Natural-language enabling arbitrary web forms |
US7831585B2 (en) * | 2005-12-05 | 2010-11-09 | Microsoft Corporation | Employment of task framework for advertising |
US7933914B2 (en) * | 2005-12-05 | 2011-04-26 | Microsoft Corporation | Automatic task creation and execution using browser helper objects |
US7882547B2 (en) * | 2005-12-12 | 2011-02-01 | Microsoft Corporation | Securely calling web services from macros |
US8010695B2 (en) * | 2005-12-30 | 2011-08-30 | Sap Ag | Web services archive |
US7814060B2 (en) * | 2005-12-30 | 2010-10-12 | Sap Ag | Apparatus and method for web service client deployment |
US8024425B2 (en) * | 2005-12-30 | 2011-09-20 | Sap Ag | Web services deployment |
US7996783B2 (en) | 2006-03-02 | 2011-08-09 | Microsoft Corporation | Widget searching utilizing task framework |
US20070264985A1 (en) * | 2006-04-17 | 2007-11-15 | Flextronics Software Systems | Method and system for rapid creation of applications in communication devices |
US7890478B2 (en) * | 2006-04-24 | 2011-02-15 | Sap Ag | Projected business objects |
US7900190B2 (en) * | 2006-09-21 | 2011-03-01 | Sap Ag | Business object templates |
US9178793B1 (en) * | 2006-09-29 | 2015-11-03 | Yahoo! Inc. | Engine for processing content rules associated with locations in a page |
CA2664941C (en) | 2006-10-06 | 2017-09-12 | The Crawford Group, Inc. | Method and system for communicating vehicle repair information to a business-to-business rental vehicle reservation management computer system |
JP4629646B2 (ja) * | 2006-11-01 | 2011-02-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アプリケーションプログラムを生成するための装置、方法、及びプログラム |
US8160906B2 (en) | 2006-12-12 | 2012-04-17 | The Crawford Group, Inc. | System and method for improved rental vehicle reservation management |
US20080222074A1 (en) * | 2007-02-22 | 2008-09-11 | Peter Lieberwirth | Method or corresponding system employing templates for creating an organizational structure of knowledge |
US8782182B2 (en) * | 2007-05-24 | 2014-07-15 | Foundry Networks, Llc | Generating device-specific configurations |
US20090024979A1 (en) * | 2007-07-20 | 2009-01-22 | International Business Machines Corporation | Method and system for configuring a user interface |
US8160907B2 (en) | 2007-07-25 | 2012-04-17 | The Crawford Group, Inc. | System and method for allocating replacement vehicle rental costs using a virtual bank of repair facility credits |
US9081463B2 (en) | 2007-12-05 | 2015-07-14 | Adobe Systems Incorporated | Systems and methods for run-time editing of a web page |
US8387006B1 (en) * | 2007-12-05 | 2013-02-26 | Adobe Systems Incorporated | System and method for authoring a web page to be run-time editable |
US8146110B2 (en) * | 2007-12-10 | 2012-03-27 | Microsoft Corporation | Service platform for in-context results |
US20090228804A1 (en) * | 2008-03-05 | 2009-09-10 | Microsoft Corporation | Service Preview And Access From an Application Page |
WO2009122128A1 (en) * | 2008-03-31 | 2009-10-08 | British Telecommunications Public Limited Company | Dynamic service generation in ims network |
ATE468697T1 (de) * | 2008-09-10 | 2010-06-15 | Sap Ag | Sichere zusammensetzung von webdiensten |
US8255490B1 (en) * | 2008-10-22 | 2012-08-28 | Amazon Technologies, Inc. | Dynamic service-oriented architecture using customization code |
US9355469B2 (en) * | 2009-01-09 | 2016-05-31 | Adobe Systems Incorporated | Mode-based graphical editing |
US20100242064A1 (en) * | 2009-03-18 | 2010-09-23 | Tandberg Television, Inc. | Systems and methods for providing a dynamic user interface for a settop box |
US8074117B2 (en) * | 2009-09-25 | 2011-12-06 | Microsoft Corporation | Inference of contract using declarative program definition |
US20130067432A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Application development toolkit |
US20140019515A1 (en) * | 2012-07-10 | 2014-01-16 | International Business Machines Corporation | Adaptive business logic configurator |
US9231819B2 (en) * | 2012-11-30 | 2016-01-05 | Red Hat Israel, Ltd. | Abstracting restful web service HTTP between a client and a server |
US9158534B2 (en) | 2013-03-15 | 2015-10-13 | Wolters Kluwer United States Inc. | Smart endpoint architecture |
US9246990B2 (en) | 2014-02-14 | 2016-01-26 | Google Inc. | Methods and systems for predicting conversion rates of content publisher and content provider pairs |
US9461936B2 (en) | 2014-02-14 | 2016-10-04 | Google Inc. | Methods and systems for providing an actionable object within a third-party content slot of an information resource of a content publisher |
US10019238B2 (en) | 2015-06-23 | 2018-07-10 | Open Text Sa Ulc | Compositional entity modeling systems and methods |
US10262006B2 (en) | 2016-04-29 | 2019-04-16 | Microsoft Technology Licensing, Llc | Contextually triggered entry point |
US20170322716A1 (en) * | 2016-05-04 | 2017-11-09 | Open Text Sa Ulc | Reusable entity modeling systems and methods |
US10719777B2 (en) * | 2016-07-28 | 2020-07-21 | At&T Intellectual Propery I, L.P. | Optimization of multiple services via machine learning |
US10404549B2 (en) * | 2016-07-28 | 2019-09-03 | At&T Intellectual Property I, L.P. | Applying machine learning to heterogeneous data of existing services to generate a new service |
US10693738B2 (en) * | 2017-05-31 | 2020-06-23 | Cisco Technology, Inc. | Generating device-level logical models for a network |
US20230209359A1 (en) * | 2021-12-23 | 2023-06-29 | Rakuten Mobile, Inc. | Method and apparatus for flexibly constructing a network service |
US12012110B1 (en) | 2023-10-20 | 2024-06-18 | Crawford Group, Inc. | Systems and methods for intelligently transforming data to generate improved output data using a probabilistic multi-application network |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE514994C2 (sv) | 1993-12-03 | 2001-05-28 | Ericsson Telefon Ab L M | Sätt och anordning för utvinning av data ur en grupp av data |
US5592597A (en) | 1994-02-14 | 1997-01-07 | Parametric Technology Corporation | Real-time image generation system for simulating physical paint, drawing media, and feature modeling with 3-D graphics |
US5875331A (en) * | 1994-09-30 | 1999-02-23 | International Business Machines Corp. | System and method for generating target language code utilizing an object oriented code generator |
WO1996014622A1 (en) | 1994-11-03 | 1996-05-17 | Parametric Technology Corporation | Computer system for reconstructing 3d object using transormations between screen and model space |
US5832503A (en) | 1995-02-24 | 1998-11-03 | Cabletron Systems, Inc. | Method and apparatus for configuration management in communications networks |
AU4985096A (en) | 1995-03-02 | 1996-09-18 | Parametric Technology Corporation | Computer graphics system for creating and enhancing texture maps |
US5701451A (en) * | 1995-06-07 | 1997-12-23 | International Business Machines Corporation | Method for fulfilling requests of a web browser |
US5649186A (en) | 1995-08-07 | 1997-07-15 | Silicon Graphics Incorporated | System and method for a computer-based dynamic information clipping service |
US5784562A (en) | 1995-10-10 | 1998-07-21 | U S West Advanced Technologies, Inc. | System for using a dialog session context to process electronic forms data on the world wide web |
US5754772A (en) | 1996-03-26 | 1998-05-19 | Unisys Corporation | Transaction service independent HTTP server-to-transaction gateway |
US5870737A (en) | 1996-04-15 | 1999-02-09 | International Business Machines Corporation | Dynamic prioritized replacement of language |
US5835712A (en) | 1996-05-03 | 1998-11-10 | Webmate Technologies, Inc. | Client-server system using embedded hypertext tags for application and database development |
US5802518A (en) | 1996-06-04 | 1998-09-01 | Multex Systems, Inc. | Information delivery system and method |
US5860004A (en) | 1996-07-03 | 1999-01-12 | Sun Microsystems, Inc. | Code generator for applications in distributed object systems |
US5892909A (en) | 1996-09-27 | 1999-04-06 | Diffusion, Inc. | Intranet-based system with methods for co-active delivery of information to multiple users |
US5884317A (en) | 1997-08-20 | 1999-03-16 | Bea Systems, Inc. | Service interface repository |
US5865144A (en) * | 1997-08-29 | 1999-02-02 | Semenuk; Michael | Ventilated cage for laboratory animal |
US20100049603A1 (en) * | 1997-09-11 | 2010-02-25 | Digital Delivery Networks, Inc. | Locally driven advertising system |
US5860068A (en) | 1997-12-04 | 1999-01-12 | Petabyte Corporation | Method and system for custom manufacture and delivery of a data product |
US6151624A (en) * | 1998-02-03 | 2000-11-21 | Realnames Corporation | Navigating network resources based on metadata |
US7028312B1 (en) * | 1998-03-23 | 2006-04-11 | Webmethods | XML remote procedure call (XML-RPC) |
US6067559A (en) | 1998-04-23 | 2000-05-23 | Microsoft Corporation | Server architecture for segregation of dynamic content generation applications into separate process spaces |
US6167564A (en) * | 1998-09-17 | 2000-12-26 | Unisys Corp. | Software system development framework |
US6125391A (en) | 1998-10-16 | 2000-09-26 | Commerce One, Inc. | Market makers using documents for commerce in trading partner networks |
US7937325B2 (en) * | 1998-12-08 | 2011-05-03 | Yodlee.Com, Inc. | Interactive bill payment center |
US6725425B1 (en) * | 1998-12-08 | 2004-04-20 | Yodlee.Com | Method and apparatus for retrieving information from semi-structured, web-based data sources |
US6574791B1 (en) * | 1999-01-15 | 2003-06-03 | International Business Machines Corporation | Component based designer for modifying and specializing wizards |
US7660868B1 (en) * | 1999-04-26 | 2010-02-09 | John Albert Kembel | Apparatus and method for interacting with internet content via one or more applications that do not include native web browsing navigation control features |
US6560633B1 (en) * | 1999-06-10 | 2003-05-06 | Bow Street Software, Inc. | Method for creating network services by transforming an XML runtime model in response to an iterative input process |
-
1999
- 1999-06-10 US US09/329,677 patent/US6560633B1/en not_active Expired - Fee Related
-
2000
- 2000-06-09 MX MXPA01012818A patent/MXPA01012818A/es unknown
- 2000-06-09 JP JP2001503068A patent/JP2004500619A/ja active Pending
- 2000-06-09 CA CA002376794A patent/CA2376794A1/en not_active Abandoned
- 2000-06-09 AU AU69520/00A patent/AU775814B2/en not_active Ceased
- 2000-06-09 EP EP00957974A patent/EP1185938A4/en not_active Withdrawn
- 2000-06-09 WO PCT/US2000/040186 patent/WO2000077654A1/en active IP Right Grant
-
2003
- 2003-01-24 US US10/351,054 patent/US7447733B2/en not_active Expired - Fee Related
-
2008
- 2008-09-23 US US12/235,937 patent/US7783697B2/en not_active Expired - Fee Related
Non-Patent Citations (6)
Title |
---|
CSNB200100063001, 日本ユニシス株式会社情報技術研究会編, 「WWWにおけるXMLの活用」, 19990420, 初版, 第72〜76頁及び第183〜184頁, JP, 東京電機大学出版局 * |
CSND199700873007, Rohit Khare(外1名), "「XMLでWWWが知的ネットワークに変わる」", 日経エレクトロニクス, 19980105, 第706号(1998年1月5日号), 第221〜232頁, JP, 日経BP社 * |
CSND199801398013, 門馬敦仁, "「4 地歩を固めるXML」", Software Design, 19980818, 1998年8月号(通巻160号,発刊94号), 第139〜145頁, JP, 株式会社技術評論社 * |
JPN6010058905, 門馬敦仁, "「4 地歩を固めるXML」", Software Design, 19980818, 1998年8月号(通巻160号,発刊94号), 第139〜145頁, JP, 株式会社技術評論社 * |
JPN6010058906, Rohit Khare(外1名), "「XMLでWWWが知的ネットワークに変わる」", 日経エレクトロニクス, 19980105, 第706号(1998年1月5日号), 第221〜232頁, JP, 日経BP社 * |
JPN6010058907, 日本ユニシス株式会社情報技術研究会編, 「WWWにおけるXMLの活用」, 19990420, 初版, 第72〜76頁及び第183〜184頁, JP, 東京電機大学出版局 * |
Also Published As
Publication number | Publication date |
---|---|
AU6952000A (en) | 2001-01-02 |
US20030135584A1 (en) | 2003-07-17 |
AU775814B2 (en) | 2004-08-19 |
WO2000077654A9 (en) | 2002-08-01 |
EP1185938A4 (en) | 2005-09-28 |
WO2000077654A1 (en) | 2000-12-21 |
US6560633B1 (en) | 2003-05-06 |
EP1185938A1 (en) | 2002-03-13 |
CA2376794A1 (en) | 2000-12-21 |
US7783697B2 (en) | 2010-08-24 |
US20090019359A1 (en) | 2009-01-15 |
US7447733B2 (en) | 2008-11-04 |
MXPA01012818A (es) | 2003-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004500619A (ja) | サービスを作成するための方法および装置 | |
US10379710B2 (en) | Modeling system for graphic user interface | |
US7366723B2 (en) | Visual query modeling for configurable patterns | |
US7953767B2 (en) | Developing applications using configurable patterns | |
US7080092B2 (en) | Application view component for system integration | |
AU774999B2 (en) | Method and apparatus for providing network services | |
US8914807B2 (en) | Method, system, and program for generating a program capable of invoking a flow of operations | |
US8924408B2 (en) | Automatic generation of database invocation mechanism for external web services | |
US8838627B2 (en) | Systems and methods for providing template based output management | |
US8126937B2 (en) | Visual database modeling | |
US20020143774A1 (en) | Dynamic, hierarchical data exchange system | |
US20030093436A1 (en) | Invocation of web services from a database | |
US20080010074A1 (en) | Systems and methods for providing a mockup data generator | |
US20050257210A1 (en) | Upgrading pattern configurations | |
CN101421726A (zh) | 偶尔连接的应用服务器 | |
WO2003034182A2 (en) | System and method for invoking business functionality for a workflow | |
US20070094289A1 (en) | Dynamic, hierarchical data exchange system | |
Jansons et al. | Web-Enabled Database Connectivity: A Comparison of Programming, Scripting, and Application-Based Access. | |
Silva et al. | A multimedia database supporting a generic computer-based quality management system | |
Ibáñez et al. | DERIVED ELEMENTS | |
AU2002347920A1 (en) | Application view component for system integration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A625 | Written request for application examination (by other person) |
Free format text: JAPANESE INTERMEDIATE CODE: A625 Effective date: 20070606 |
|
A625 | Written request for application examination (by other person) |
Free format text: JAPANESE INTERMEDIATE CODE: A625 Effective date: 20070606 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101019 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110322 |