JP2006510955A - Xml処理タスクの管理および実行のためのコンテキスト独立フレームワークのシステムおよび方法 - Google Patents
Xml処理タスクの管理および実行のためのコンテキスト独立フレームワークのシステムおよび方法 Download PDFInfo
- Publication number
- JP2006510955A JP2006510955A JP2004528803A JP2004528803A JP2006510955A JP 2006510955 A JP2006510955 A JP 2006510955A JP 2004528803 A JP2004528803 A JP 2004528803A JP 2004528803 A JP2004528803 A JP 2004528803A JP 2006510955 A JP2006510955 A JP 2006510955A
- Authority
- JP
- Japan
- Prior art keywords
- xml
- xsa
- data
- management system
- request
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
XML処理タスクの管理および事項のためのコンテキスト独立フレームワーク・システムを提供する。XML処理タスクを、ここではXSAエンジンと呼ぶモジュールによって、特殊目的XML系プログラミング言語で書かれた電子文書として用意された既定の1組の命令にしたがって実行する。命令集合は、3つのクラスの処理モジュールへの参照を収容し、その実行を制御する。3つのクラスの処理モジュールは、独立してXML処理サブタスクを遂行し、合同して1つのXML処理タスクを達成する。フレームワークは、いずれの特定の実行コンテキストからも切断されており、殆どあらゆる所望の用途において、標準化XML処理を適用できることを意味する。特殊目的プログラミング言語は、汎用プログラミング言語を用いた場合と比較して、XML処理タスクの開発の生産性を高め、カスタム・コードを書いて異なる形式のXML処理サブタスクにリンクしてXML処理タスクを遂行する必要性を低下させている。
Description
特殊目的プログラミング言語を用いた構造型データのコンテキスト独立処理を含むタスクの実行管理システム。
殆どのコンピュータ・アプリケーションは、あるタスク(複数のタスク)を遂行し、プロセスにおいてその人間のユーザのために楽な生活をもたらすように設計されている。コンピュータ・ネットワークおよびインターネットは、コンピュータ・アプリケーションによって生活を楽にする新しい機会を導入した。今日、会社または組織内におけるコンピュータは殆ど全て何らかのコンピュータ・ネットワークに接続されており、更にインターネットにも接続されているのが一般的である。
近年、拡張可能マークアップ言語(XML:Extensible mark-up language)が、あらゆる形式の構造化データを記述する共通の方法として出現した。XMLに対する広範な業界支援およびXML開発の遍在により、何らかの形式のXML対応をアプリケーションに設けるコンピュータ・アプリケーションの供給業者数が増加しつつある。ある新しいアプリケーションが提供するXML対応の一種に、ウェブ・サービスと呼ばれるものがある。ウェブ・サービスは、ソフトウェア・コンポーネントであり、予め規定したXMLインターフェースを、一般にインターネットを通じてアクセス可能な、そのデータおよびサービスに公開する(expose)。
XMLは、電子出版の分野、特に出版が依頼に応じて行われ、コンピュータ・ネットワークを通じたデータの移動を伴う場合に、頻繁に用いられている。例えば、全てのブラウザ・アプリケーションは、ある形式のXMLまたはXML関連データ・フォーマット(例えば、HTML、XHTML、WML)を理解し、これらをその人間のユーザに提供する。他の種類の電子的表現に対する他の表現フォーマットは、XMLまたはXML系であっても、なくてもよいが、一般にXMLは出版アプリケーションには非常に適している。
電子業務は、XMLおよびインターネットが主要な役割を果たす別の分野である。電子業務は、多くの場合自動的な、電子業務トランザクションを既定の規則に応じた組織と呼び出し基準(invocation criteria)との間で行うことを伴う。EDIは、共通の非XML系電子業務フレームワークであるが、現在出現しつつある連続フレームワーク(例えば、BizTalk、ebXMLなど)は全て、XMLおよびインターネットに大きく頼っている。
コンピュータ・ネットワーキングの全体的な採用にも拘わらず、多くのアプリケーションは、たとえネットワーク上で他のアプリケーションと自由に通信することが効果的であっても、これを行うことができない。殆どのアプリケーションは、ネットワーク上で外部アプリケーションからデータをインポートし、外部アプリケーションにデータをエクスポートする何らかの機能を有している。しかしながら、生憎、現行のアプリケーションの殆どは、一般に、企業固有のデータ・フォーマットおよびプロトコルを必要とし、アプリケーション間の、恐らくは有益な、通信を難しくしている。これが意味するのは、アプリケーション間の自動情報交換(統合)は多くの場合非常に望ましいが、特注であることが多いミドルウェア(またはインタープリタ・ソフトウェア)によってデータを導出しプロトコル間で変換することが必要であり、そうして初めてアプリケーションが自由に通信しデータ/情報を交換できるようになるということである。
これに関連して、組織が統合統一インターフェースを1つよりも多いバック・エンド・アプリケーション(back-end application)にアクセスさせたいときに、統合化の問題が起こることが多い。このようなアプリケーションは自由に通信しない場合が多いので、単一のアプリケーションが、多くのシステムからのデータに対するビュー(view)を備えたインターフェースを提供することができない。この問題に対する唯一の解法は、ポータル・ソフトウェア・ミドルウェアを導入することであるが、このためには、必要とされるシステム全てに通信することができ、全てのデータを適宜融合かつ統一し、次いで全てのアプリケーションからのデータ/サービスに対して統合化したビューを備えた、一貫性のあるインターフェースを設ける必要がある。しかしながら、ポータル・ソフトウェアは、多くのシステムからのデータ複製に頼るという欠点を有することがときどきある。
電子出版においては、別の統合化問題も発生する。多くのアプリケーションの表現能力には限界があるので、そのインターフェースに対する人間の双方向処理を1種類のメディアのみでしか提供できない場合が多い。これが意味するのは、新たな表現の必要性が生じた場合、アプリケーションのインターフェースを拡張するためには、特注であることが多いミドルウェア・ソフトウェアの導入が必要となるということである。
また、これに関連して、多くの電子表現フォーマット(例えば、AdobeのPDF文書、MSWordの文書)には、コンテンツ・データと表現データとの間に殆どまたは全く分離がないという事実の中に、別の表現の問題がある。これが意味するのは、新たな表現の必要性が生じた場合、既存の文書を新たなフォーマットに適合化することが困難または不可能であるということである。
以上の問題の一部は、組織が彼らの古いアプリケーションを新しいものと交換すれば、救済することができ、あるいは解消できることさえある。しかしながら、多くの組織は、企業アプリケーション統合(Enterprise Application Integration)を導入することによって問題を軽減しようとしてきた。これは、大抵の場合、ミドルウェアをインストールして、アプリケーションの既存のインターフェースを改良または拡張するか、あるいはアプリケーションが他のアプリケーションと通信できるようにすることによって、既存のアプリケーションの有効範囲をいくらか拡張できるようにすることを伴う。
XMLは、構造化データに頼るあらゆるアプリケーションに非常に適している。XMLの独特な特性および例外的に広い業界の対応によって、これは統合化、電子業務および出版の用途に非常に有用であることがわかっている。多くの分析者は、XMLには、アプリケーションが実際に互いに通信しあうことを可能にし、したがってそのユーザの生活を一層楽にする見込みがあることを確信している。実際には、これは、XMLが解決策に関与する場合の統合化コストの低下を意味する。少なくともXMLおよびXML関連技術が統合化、電子業務および出版ソフトウェアに今日広くそしてしかるべく理由で用いられていることは、明白である。
この分野の専門家の殆どは、XLMおよびXML関連技術を利用することは、異種システムの統合化、電子業務および出版に用いる必要があるアプリケーションのような、ある種のアプリケーションを開発するときに意味があると確信している。しかしながら、これらのアプリケーションにおけるその使用は、殆ど標準化されていないか、またはその場限りであることが多い。現状については、ある組織は情報処理能力があってXMLを利用しより良いアプリケーションを構築しているが、ある組織はそうしていないと言うことによって、記述することができると思われる。これらの殆どは、既存のXML関連の仕様書が何をするのか彼らに指示しないと、その場限りでそれを用いるに過ぎない。XML処理の世界は、狭く定義されたタスクのための小さなモジュールで満たされているが、これらを一緒に統一して管理する、明確なフレームワークが欠けている。これが意味するのは、現行のXMLに基づく解決策の殆どは、ある程度、その場限りのプログラミングの「切り貼り」(glue)に頼って、異なるXML系モジュールを共にリンクしているということである。
このため、XML処理タスクの管理および実行のためのフレームワークの方法およびシステムを影響することが望ましい。更に、このようなフレームワークは、あらゆる特定的な実行コンテキストからも切断されており、XML処理の管理フレームワークに価値があると思われる全ての場合を扱うことができるように十分な柔軟性があることは重要である。
更に、このような管理フレームワークは、各々が既存のXML処理規格または仕様によって支配されている多くの異なる形式のXML処理タスクを共に継ぎ合わせるために汎用プログラム言語を用いる必要性を減少または解消するために、XML処理タスクを定義する特殊目的プログラミング言語に頼ることが好ましい。このようなXML処理タスク用特殊目的プログラム言語によって、開発者はXML処理タスクを定義しつつ、汎用プログラミング言語で可能なよりも遥かに生産性を向上することができる。
統合、出版、電子業務、または他の分野においてXML処理が有効な場合に伴う問題の一部は、本発明の好適な実施形態が克服または軽減する。XML処理タスクの管理および実行のためのフレームワークの方法およびシステムを提供する。このフレームワークは、いずれの特定の実行コンテキストからも切断することができ、管理フレームワークを、XML処理を必要とするアプリケーション内であればどこにでも適用できることを意味する。
本発明は、サーバ側XMLアプリケーション、即ち、XML処理が重要な役割を担う、または重要な役割を担い得るあらゆるサーバ側コンピュータ・アプリケーションに関する。XMLアプリケーションは、企業アプリケーション統合、電子出版、電子業務処理のような分野においては一般的である。更に特定すれば、本発明は、処理タスクを定義する特殊目的プログラミング言語を基にしたXML処理タスクの管理、定義、および実行のための、標準化し構造化したフレームワークのための方法およびシステムに関する。
更に、本発明の好適な一実施形態によれば、XML管理フレームワークは、異なるXML処理サブタスクを互いにリンクする目的のために設計された特殊目的プログラミング言語を拠り所とし、XML処理の技術分野では周知の規格、方法または使用によって各サブタスクを統括する。特殊目的プログラミング言語は、XML処理タスクの管理のために特定的に設計されており、XML処理タスクの開発者が、汎用プログラミング言語で可能なよりも、生産性を高めることを可能とし、XML処理タスクを遂行するために異なるタイプのXML処理サブタスクをリンクするカスタム・コードを書く必要性を軽減する。有用なアプリケーションの例は、業務メッセージの変換および配信、異種システムの統合、およびウェブ出版である。
本発明の一態様は、XML処理サブタスクの管理および連結のために特定して設計した特殊目的プログラミング言語で書かれた電子文書として用意された既定の1組の命令にしたがって、XML処理タスクを定義し実行する方法およびシステムを含む。ここで、各サブタスクは、周知のXML関連規格、仕様または方法によって調整する。特殊目的プログラミング言語で書かれた電子文書における特定の命令集合によって定義された各XML処理タスクは、ここでは、XMLサービス・アクションまたは単にXSAと呼ばれることが多い。XSA−sを実行可能なソフトウェア・モジュールを、XSAエンジンと呼ぶ。XMLサービス・アクション電子文書をどのように作成するかを定義し、XML処理タスクを管理するように設計されている特殊目的プログラミング言語のフォーマットおよびシンタックスは、高精度に定義することができ、特殊目的プログラミング言語のシンタックスを、XMLに基づくマークアップに指定することが好ましい。
この方法は、外部要求によってシステムを呼び出し、特定の1組の処理命令、即ち、特殊目的プログラミング言語で書かれた特定のXSA電子文書を実行することを含む。呼び出しは、実行するXSAがどれかという指示を含み、更に呼び出しの発信元および目的に関するその他の情報も含むことができる。呼び出しを受けると、XSAエンジンは、該当するXSA電子文書を突き止め、その中に定義されている命令を実行しようとし、適宜、実行した特定のXSA内にある命令に従って応答を返す。
本発明の好適な実施形態によれば、XML管理フレームワークおよび特殊目的プログラミング言語は、3つの異なるクラスのXML処理モジュールを基本とし、これらが合同して、更に本発明の別の部分と共に、特定のXSAで定義したXML処理タスクを遂行する。特殊目的プログラミング言語にしたがって書かれた各XSAは、一般に、これら3つのクラスのXML処理モジュールの各々の少なくとも1つを参照し、その機能を制御する。XMLサービス・アクションは、これら3タイプのモジュールがどのように相互作用し、一体となってXML処理タスクを遂行するかを定義し、修正し、制御する。3タイプのモジュールを、ここでは、生成器、変換器、およびシンクと呼ぶ。殆どのXML処理サブタスクは、正しく定義されているか、またはXML処理の技術分野では周知であり、サブタスクの生成、サブタスクの変換/操作、またはサブタスクの配出(sink)に分類することができる。
いずれの所与のXML処理タスクにおいても、いずれのXSAによって定義されても、生成器モジュールは、XMLソース・データを生成することを担当し、変換器モジュールは、XMLソース・コンテンツを変換または操作して異なるのXMLデータを形成する(処理したXMLデータ)ことを担当し、最後にシンク・モジュールは処理したXMLデータを解釈し、これに反応し、またはこれを配信することを担当する。生成器は、XMLソース・コンテンツを生成し、一般に、外部システムにおいて発生したデータを公開する。生成器の一例は、外部システム、例えば、JDBC準拠のデータベースと通信を行い、更なるXML処理のために用意されている、XMLフォーマットで外部システムによって提供されるコンテンツまたはサービスに公開する。各生成器は、それ自体のXMLシンタックスを定義し、それが通信するバック・エンド・システム(複数のバック・エンド・システム)が提供するコンテンツまたはサービスに、固有の様式で(natural way)公開する。
XMLソース・データを更に処理、解釈、または操作して、特定のXSAに定義されている、要求を受けたXML処理タスクを実行するために、1つ以上の変換器がXMLコンテンツを総合的に変換、解釈、有効性判断、反応、または何らかの方法で操作して、一般に異なるの(または少なくとも検査し有効性が認められた)XMLデータが得られる。これを、ここでは、処理済XMLデータと呼ぶ。変換器は、XMLデータを入力および出力双方として有するモジュールであり、多くの変換器を直列に用いることができる。変換器の一例は、拡張可能スタイルシート言語変換(XSLT)で書かれた所与のスタイルシートにしたがってXMLを変換する、ソフトウェア・モジュールである。その目的に応じて、各タイプの変換器が、生成器または別の変換器から受け取ったそのXML入力データに制約を課することも、課さないこともある。また、各変換器は、処理済XML出力データの形式を定義する。
いずれの所与のXSAで定義したXML処理タスクの実行でも、最終部分は、シンク・モジュールを用いて行われる。シンク・モジュールは、変換器から受け取った、処理済XMLデータで何を行うかを定義する。異なるタイプのシンクが、XSAの目的に応じて、異なるタスクを実行する。共通のタスクの1つは、XMLフォーマットでないことが多い、処理済XMLデータを何らかの方法で公表(publish)し、XSAの実行を要求したクライアントに返送することである。シンクの中には、受け取ったXMLデータを解釈し、例えば、何らかのアクションを実行することによって、これに反応するか否か、そしてどのように反応するか判断するものもある。シンク出力の一例は、HTMLまたはWMLのようなそのXML入力データを出力し、別の例は、それをPDF電子文書として公表する。他のタイプのシンクには、得られたXMLをインターネットを通じてXML業務文書として配信するものもあり、更に別のシンクには、受け取ったXML内の情報を用いて、タスクを実行するか否か判断するものもある。タスクとは、通知の目的のための電子メール送信、データベースへのデータ書き込み、または統合化の目的のための別のシステムへのXMLの送信等である。
前述のように、本発明は、好ましくはXMLサービス・アクション仕様にしたがって特殊目的プログラミング言語で書かれた、XMLサービス・アクション電子文書の実行システムを含む。XMLサービス・アクション仕様は、本発明の主旨におけるXSAの有効なシンタックスを正確に定義する。本システムは、いずれのアプリケーション特定コンテキストからも切断され、汎用インターフェースのみを設けた、XSAエンジンを含む。本発明の好適な実施形態によれば、本システムは、ここではアダプタと呼ぶ、ソフトウェア・モジュールを拠り所として、特定のアプリケーション・コンテキストに適応する。アダプタは、ネットワーク・デバイス、ワイヤレス・デバイス、またはその他のコンピュータ・システムというような、種々のタイプの外部クライアントからの、特定のXSA−sの実行要求または呼び出しを受け付けることを担当する。アダプタは、外部クライアントとの通信全てを扱うことによって全てのアプリケーションまたはコンテキスト特定の通信をカプセル化し、全体的に特定のタイプの通信プロトコルに適応し、特定のXSAの実行を要求することによって、その汎用インターフェースを通じてXSAエンジンと双方向処理を行うソフトウェア・モジュールである。したがって、アダプタ・コンポーネントは、汎用XSAエンジンを、特定のアプリケーション・コンテキストに適応させる。XSA実行要求毎にアダプタ・コンポーネントを通じて要求が到達すると、アダプタ・コンポーネントは、XSAが実行するコンテキストを定義する。これは、特定のXML処理タスクに相応しいと思われる、計算アプリケーションの実世界から、XSAエンジンへのリンクを設ける。XSAエンジンが提供する汎用インターフェースを通じて、アダプタはXSAエンジンに、着信した要求に関する情報を提供することができる。この着信要求は、恐らくは、XML系フォーマットまたはパラメータ名称−値対の形式となっている。XSAの実行が終了すると、当該特定のXSAに定義されている処理の結果に基づいて、XSAエンジンを呼び出したアダプタ・コンポーネントを通じて、しかるべき応答を要求基外部クライアントに返送するのが一般的である。特定の生成器、変換器、またはシンクは、どの特定のタイプのアダプタがこれらと適合性があるかについて、制約を課する場合もある。
いずれのXSAも、種々の方法で特定のタイプの生成器、変換器およびシンクを用いて、所望のXML処理タスクを遂行することができる。XSAにおいて定義されているXML処理は、例えば、XML電子文書の合併または分割によって、1つよりも多い実行のスレッドにおいて行われる場合がある。XSAエンジンは、多くの異なるタイプのソフトウェア・モジュールを拠り所として、前述の3つのクラスのXML処理モジュールを用いて、XMLデータの柔軟で精巧な処理および流れの可能性を実現する。これらのソフトウェア・モジュールは、エラーの扱い、有効性判断、特定のXSA実行に関連するメタ・データへのアクセス、セッション制御、ユーザ管理、認証、許可、およびその他の同様の補助機能というような、補助または支援機能を設けることができる。
XMLソフトウェア・アクションは、大きく異なるアプリケーションにおいて大きく異なる計算タスクを遂行する際に用いることができる。用いるシステム・コンポーネントは、更に多くてもまたは少なくても可能であり、本発明は、前述のシステム・コンポーネントには限定されない。本発明は、必ずしも、いずれのソフトウェア・コンポーネントの存在も必要としない。これは、明確なXML処理サブタスクの管理またはリンクのためのみに定義され、特殊目的プログラミング言語で書かれたXMLサービス・アクション電子文書によって定義された、XML処理タスクの実行方法およびシステムについて記載する。これは、ここに記載される抽象的処理モジュールの具体的な実現例を用いて、その所望の機能を遂行する。本発明はここでは常にXML処理タスクに関して記載されているが、本方法およびシステムは、必ずしもXMLフォーマットではない、構造化データのあらゆる処理にも等しく適用することができる。実世界において有用であるために、制御するXMLサービス・アクション電子文書のフォーマットおよび処理モジュールを正確に定義する、特殊目的プログラミング言語に対する指定に応じた特定のソフトウェア・モジュールおよびコンポーネントの実現例を設けなければならない。
本発明の好適な実施形態によれば、各XMLサービス・アクション電子文書は、特定のシンタックスで定義されるべき、特殊目的プログラミング言語で書かれており、XML系であってもなくてもよい。XSAエンジンは、XSA電子文書を解釈し実行する役割を担う。XSA電子文書は、動的な生成によってXSAエンジンが利用でき、あるいは要求元クライアントまたはコンピュータ・システムにおけるいずれかのストレージから入手できる。本発明の主旨で書かれた仕様に従って、有効な特殊目的プログラミング言語で書かれたXMLサービス・アクション電子文書を実行可能なシステムは、通常のコンピュータ・システムにおいて実施することができる。
XSAフレームワークは、いずれの特定の実行コンテキストとも切断され、標準化され、構造化された柔軟で精巧な手段を提供し、出版、業務メッセージ配信、企業アプリケーション統合、および構造化データを処理し操作することに価値があるその他の分野において、多くの問題を一層正しく簡単に解決することができる。
XSAフレームワークは、既存の技術に対して相補的である。これは、XML処理タスクの管理用フレームワークであって、いずれの特定のタイプの既存のXML処理技術に対する代用ではない。例えば、これは、XML文書をどのように変換するのか定義せず、特定的な実施形態は、その目的のためにいずれの既存の方法でも用いることができる。XML処理タスクの管理に特定して設計された上位特殊目的プログラミング言語を要求し利用することによって、汎用プログラミング言語でカスタム・コードを作成し、XML処理サブタスクを互いに張り合わせる必要性を低下または解消さえする。ここで、各サブタスクは、周知のXML処理規格、仕様または方法によって調整される。該当する類似物をあげるとすれば、次のようなものであろう。XSLTエンジン、XML実証器(validator)、HTML−XML変換器、XML直列化器、または特定のタイプのXML処理タスクを実行するその他のあらゆるモジュールを、プログラムであると見なす。すると、XSAエンジンは、これらのプログラム間の相互動作を調整するオペレーティング・システムに似ている。XSAエンジンは、特殊目的プログラミング言語で書かれたXSA電子文書を解釈し実行することができ、ここに記載されているXSAフレームワークの一般的な主旨の実現例と見なすことができ、したがって、XSAフレームワークは、オペレーティング・システム・ファミリまたは規格に類似するものと考えることができる。
本発明の特定的な一好適実施形態では、本方法およびシステムは、ワイヤレス・デバイスに、当該デバイスが理解することができるフォーマットの電子文書内の情報を要求することを可能にするために用いられる。デバイスとの通信が可能な適したアダプタ(例えば、HTTPアダプタ)を通じて、特定のXSAを呼び出してXSAエンジン内で実行することができる。このXSA内に定義されているXML処理タスクは、バック・エンド・システムからデータを検索し、特定のタイプの生成器を用いてそれをXMLフォーマットに変換し、変換器を用いて、それを要求元デバイスに適したフォーマットに変換し、最後にシンクがそれをアダプタを通じてデバイスに配信することができる。
例えば、本発明の好適な実施形態によれば、ワイヤレス・デバイスから、ハイパーテキスト転送プロトコル(HTTP)準拠のブラウザ・ソフトウェアを用いて特定のURLに誘導することによって、現在の天候に関する情報を要求することができる。XSAエンジンは、天候データ源から得た情報からどのように所望の応答を派生するか定義する、特定のXSA電子文書にアクセスし、それを要求元のデバイスにHTTPアダプタを通じて配信することができる。この要求は、HTTPを通じて要求元クライアントと通信することができるHTTPアダプタが受信する。次いで、アダプタはXSAエンジンを呼び出し、要求された特定のXSAの実行を開始する。このXSAは、天候データベースに接続することができる、特定のタイプの生成器への参照を収容している。XSA内にある命令は、生成器に天候データを検索するように命令し、次いでこれをXMLソース・データに変換する。XSAは、更に、1つ以上の特定のタイプの変換器(例えば、XSLTを用いてXMLを変換する変換器)への参照、およびこれに対する命令も収容することができ、XMLソース・データを変換して、要求元デバイスにおけるブラウザによる表示に適したワイヤレス・マークアップ言語(WML)フォーマットのXML電子文書を形成することができる。最後に、XSAは、WML電子文書を要求元デバイスにHTTPアダプタ・モジュールを通じて配信することができる、特定のタイプのシンクへの参照、およびこれに対する命令も収容している。問題の特定のXSA電子文書は、特殊目的プログラミング言語で書かれており、XSAプログラミング言語仕様において正確に定義することができる。しかしながら、本発明は、HTTP通信、ワイヤレス・デバイス、あるいはデータベースに限定されるのではない。その他のデータ、プロトコル、ネットワーク・デバイス、または外部システムも用いることができる。
本発明の好適な実施形態の前述のおよびその他の特徴および利点は、添付図面と関連付けて本発明の実施形態の詳細な説明を検討することにより、当業者には一層容易に理解されよう。
本発明の先に引用した利点およびその他の利点が得られる態様を一層深く理解するために、添付の図面を参照しながら本発明の更に詳細な説明を行う。更に、本発明の具合的な実施形態の説明も、添付図面を参照しながら例示する。これらの図面は本発明の典型的な実施形態のみを図示し、したがってその範囲を限定するとは見なさないことを理解した上で、本発明を説明するために添付図面を用い、本発明を行い用いる現時点において最良と理解される態様について、例示の目的のためにのみ、更に詳しく説明する。
ここに記載する実施形態は、それで全てであることも、本発明を開示した形態そのものに限定することも意図してはいない。逆に、説明に選択した実施形態は、当業者がその教示を利用できるように記載されている。最も留意すべきは、ここではXML処理に頻繁に言及するが、本発明はXML処理にもXMLサービス側アプリケーションにも限定される訳ではなく、あらゆる構造化データに等しく適用可能であることである。
以下の論述は、本発明を実施可能な、相応しい計算環境の端的かつ総合的な説明を行うことを意図している。本発明は、パーソナル・コンピュータによって実行する、プログラム・モジュールのような、コンピュータ実行命令に関して一般的に説明するが、そうしなければならないという訳ではない。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、特定のタスクを実行したり、あるいは特定の抽象的データ形式を実装する。更に、当業者には認められようが、本発明は、ハンドヘルド・デバイス、多重プロセッサ・システム、マイクロプロセッサを用いたまたはプログラム可能な消費者用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータなどを含む、その他のコンピュータ・システム構成でも実施可能である。また、本発明は、通信ネットワークを通じて連結したリモート処理デバイスによってタスクを実行する、分散型計算環境においても実施可能である。分散計算環境では、プログラム・モジュールは、ローカルおよびリモート・メモリ記憶デバイス双方に配置することもできる。
ここで用いる場合、「ソフトウェア・モジュール」または「モジュール」という用語は、コンピュータ・プログラム内において特定的な論理機能を実行すると別個に認められるあらゆる実行可能命令の集合を意味することとする。
図1は、XML処理システム10の基本コンポーネントを示すブロック図である。XML処理システム10は、概略的に、汎用インターフェースを備えたXSAエンジン16と、外部クライアントにXSAエンジン16と双方向処理を行わせる1つ以上のアダプタ・モジュール12とを含む。XSAエンジン16は、XML処理タスクの管理のために設計された特殊目的プログラミング言語を用いて、XSA電子文書18にエンコードされている命令を実行することができる。XSAエンジン16は、汎用インターフェースを提供するだけであるので、XSAエンジン16の呼び出しは、アダプタ・コンポーネント12を通じて行われ、これによって、一方では1つまたは複数のタイプの外部クライアント40と、そして他方ではXSAエンジン16と通信することができる。外部クライアント30からの各呼び出しまたは要求は、アダプタ・モジュール12がどのXSA電子文書18を実行するのか判定するために用いることができる情報またはデータを収容していなければならない。要求または呼び出しを受信すると、アダプタ・モジュール12は、XSAエンジンに、要求の発信元および目的に関する情報を提供することができる。この情報は、XSAエンジンにはアクセス可能であり、ここではコンテキスト・モジュール14で代表する。XSAエンジン16は、コンテキスト・モジュール14を利用して、XML処理タスクの管理のために特定的に設計された、特殊目的の明確な上位プログラミング言語で書かれた、要求XSA電子文書18に定義されているXML処理タスクを初期化し、実行する。このような特殊目的の上位プログラム言語を有することは、具体的なXML処理タスクの作成が、汎用プログラミング言語で可能なよりも簡単にそして迅速に行えることを意味する。XML処理タスクにしか適用できないが、このようなタスクの作成は、特殊目的プログラミング言語を用いれば、遥かに速くそして簡単に行うことができる。また、恐らくはグラフィカル・ユーザ・インターフェースを用い、しかも直接カスタム・コードを書く必要性を完全に排除して、開発者に上位インターフェースを通じて具体的なXSA文書を作成させる、ソフトウェア・プログラムを作成することもできる。開発者のこのような上位インターフェースとの双方向処理は、恐らくグラフィック・コンポーネントを利用して、テキストを用いたコードを書くことを全く必要とせずに、具体的なXSAを生成することを可能にする場合もある。
本発明は、XML処理タスクを3つのクラスのXML処理ステップまたはサブタスク、XML生成、XML変換、およびXML配信/反応に分割する。これは、各XSA電子文書18が一般に3つのクラスのXML処理モジュールの具体的な実現例に対する引用(reference)を含んでおり、各クラスがこれらのサブタスクの1つに対応するという事実に反映されている。XML生成器モジュール20は、外部バック・エンド・システム40に接続し、そのコンテンツ、サービスおよび/または業務ロジックを、XML変換器モジュール22による更なる処理のために利用可能なXMLデータとして公開する役割を担っている。このステップは、多くの場合、外部システムへの接続と、外部システムのネーティブ・データ構造のXMLフォーマットへのマッピングの定義という双方を伴う。XML変換器モジュール22は、XML生成器20から受け取ったXMLデータを、異なるXMLフォーマットに変換する。XSA電子文書18は、XMLデータの順次処理のために、1つよりも多いXML変換器を順次定義することができる(以下で更に詳しく説明する)。XMLシンク・モジュール24は、XML変換器モジュール22から受けたXMLデータに反応するか、またはこれらを配信する。これら3つの抽象的XML処理モジュール・タイプの各々は、アダプタ・モジュール12が提供し、ここではダイナミックXSAコンテキスト・モジュール14によって表されるメタ情報にアクセスすることができる。XSAコンテキスト・モジュール14内のメタ情報は、特定のXSAの実行が開始する前にアダプタ・モジュール12によって提供され、XSAの実行の間中存続する。これは、実行に関与する全てのモジュールにアクセス可能である。コンテキスト・モジュール14が表すメタ情報は、XSAが実行するコンテキストを定義する。3つの抽象的XML処理モジュールの各々は、受動リソース・レポジトリ26にもアクセスすることができる。受動リソース・レポジトリ26には、電子フォーマットの種々のリソースが、記憶媒体内に格納されている。XSA電子文書は、1つ以上のXML生成器モジュール、0個以上のXML変換器モジュール、および1つ以上のXMLシンク・モジュールを定義し制御することができる。
図2は、具体的な生成器、変換器およびシンクを参照し、特定目的の上位プログラミング言語で指定され、XML処理タスクの管理のために設計された、これらの相互動作を管理することによって、XSA電子文書がどのようにして1つの個別XML処理タスクを定義するかを示す。
図3は、XSA電子文書を実行しているときのXML処理タスクの実行を示すブロック図である。また、この図は、生成器からシンクまでにおいて、その間に0回以上の変換を受ける、XMLデータの流れを示す。
図4は、本発明によるXML処理システムにおけるXSAの実行を開始し完了する一連のイベントを示すフロー・チャートである。外部クライアントからの呼び出し即ち要求が行われる(1)。要求は情報を収容しており、これを用いれば、どのXSA電子文書を実行すべきか判定することができる。更に、情報は他のコンテキストに左右される情報も収容することができる。全要求情報は、暗示的であれ直接であれ、要求プロパティ(2)と呼ぶこともある。特定のアダプタ・モジュールは、要求元クライアントとの通信が可能であり、要求を受け取り、しかるべきコンテキストに左右される情報にアクセスすることができる場合、XSAエンジンにXSAコンテキスト・モジュール(4)を供給することによって、XSA実行(3)のコンテキストを定義する。アダプタ・モジュールは、XSAエンジン・モジュール内において特定のXSAの実行を開始する。XSAエンジンは、XSAコンテキスト・モジュール内の情報を用いて、特殊目的プログラミング言語で書かれた、要求されたXSA電子文書(5)の実行の準備を行う。要求されたXSAに定義されている具体的なタイプの生成器が、所与のXSA(6)における命令にしたがってXMLソース・コンテンツを生成する。その際、一般に、ある外部バック・エンド・システムと通信し、取得したデータをXMLに変換する。その結果は、処理が行われる前のXMLソース・データ(7)である。次に、0個以上のXML変換器(8)が、要求されたXSA内の命令にしたがって、XMLソース・データを変換し、その結果異なる形式のXMLデータ(9)が得られる。最後に、XMLシンク・モジュールが何らかの方法でXMLコンテンツを配信するか、またはこれに反応する(11)ことによって、XML処理タスクを終了する。このステップは、処理したXMLデータの解釈を伴っても、伴わなくてもよい。一般に、ある種の応答が、XMLシンク(12)が完了したタスクの結果として、アダプタ・モジュールを通じて、要求元のクライアントに戻される。
図5は、XMLサービス・アクション・モデルによって定義した、生成器の役割および典型的な構造を示すブロック図である。この図は、一般に、生成器がまず外部システムに接続し、次いでXMLフォーマットで外部システムからのデータを公開するという二重のタスクに直面していることを示す。
図6は、XMLサービス・アクション・モデルによって定義した変換器の役割を示すブロック図である。この図は、いずれの数の変換器でも順次適用してもよく、そして各1つが入力および出力双方としてXMLデータを有することを示す。
図7は、XMLサービス・アクション・モデルによって定義したシンクの役割を示すブロック図である。一般に、シンクは、XML入力データを何らかの外部データ・フォーマットに変換して要求元のクライアントに配信または公表するか、あるいは処理したXML入力にしたがって何らかの方法で解釈または反応するかのいずれかである。反応は、シンクの目的次第でいずれでもよく、必ずしも要求元クライアントへの応答を伴う必要は全くない。
本発明の好適な一実施形態は、プレゼンテーション・システムであり、相容れない表現の要求がある多くの異なるタイプのネットワーク・クライアント、例えば、多くの異なるタイプの移動デバイスへの、バック・エンド・システム内に常駐するデータの公表を容易にする。このプレゼンテーション・システムは、例えば、HTTPプロトコルを通じて、クライアントと通信可能なアダプタ・モジュールを含む。また、プレゼンテーション・システムは、バック・エンド・システム(複数のバック・エンド・システム)と通信し、バック・エンド・システムのデータをXMLフォーマットで公開することができる、特定のタイプの生成器モジュールも備えている。また、このプレゼンテーション・システムは、汎用ソースXMLデータをバック・エンド・システムから、ネットワーク・クライアント・デバイスの各々における表示に適した多くの異なるフォーマットに変換することができる、特定のタイプの変換器モジュールも内蔵している。また、このシステムは、個別製作したコンテンツを要求元クライアント・デバイスに、要求を送ったアダプタを通じて返送することができるシンクも内蔵している。また、このシステムは、特殊目的プログラミング言語で書かれた特定のXSA電子文書も収容しており、XMLデータの処理を管理し、どのクライアントがコンテンツの要求を行ったかに応じて、該当する生成器、変換器、およびシンクが必ず用いられるようにする。プレゼンテーション・システムは、本質的に、XSAフレームワークのため拡張可能であり、生のコンテンツ・データのプレゼンテーション情報からの完全な分離を促進する。新たなバック・エンド・システム、新たなクライアント、または新たな通信プロトコルに対応するにも、単に新たな生成器、変換器またはアダプタを追加するだけで済む。
本発明の別の実施形態は、メッセージング・システムであり、一般には安全な方法で一方の外部システムから他方へインターネットを通じて、ebXMLまたはBizTalkのような標準化された業務メッセージング・プロトコルを用いて、業務メッセージを配信する。このシステムは、当該プロトコルを用いて通信することができるアダプタ・モジュールを必要とする。また、このシステムは、通信システムからXMLフォーマットのデータを抽出することができる特定のタイプの生成器モジュールも内蔵している。更に、これは、システム・データを配信に向けた業務メッセージに変えることができる種々の変換器も内蔵することができる。また、このシステムは、該当するアダプタ・モジュールを通じてメッセージをその宛先に配信することができる特定のシンク・モジュールも内蔵している。また、このシステムは、異なる規格の業務メッセージ間で翻訳が可能な特定のタイプの変換器も内蔵することができる。最後に、このシステムは、特殊目的プログラミング言語で書かれ、XML処理を管理および制御する、特定のXSA電子文書と、これらの文書を実行する要求があったときに、それを行うことができるXSAエンジンとを内蔵している。
本発明の更に別の実施形態は、異質な発信源と宛先のアプリケーションとの間でデータを統合化することができる統合システムである。この種の統合システムは、XSAエンジン、特殊目的プログラミング言語で書かれた特定のXSA電子文書、発信元および宛先アプリケーション間で通信することができる特定のアダプタ・モジュール、発信元および宛先アプリケーションのネーティブ・データ構造をXMLフォーマットに変換することができる特定の発生器、ソース・アプリケーションから入力されるXMLを宛先アプリケーションへの配信に適したXMLフォーマットに変換することができる特定の変換器、および最後に、処理(変換)したXMLデータを宛先アプリケーションに配信することができるシンク・コンポーネントを備えている。
以下に、本発明の更に別の好適な実施形態を詳細に説明する。以後、これを実施形態Aと呼ぶことにする。実施形態Aは、XMLサービス・アクション電子文書に可能な1つのフォーマットを高精度に定義する特殊目的プログラミング言語の仕様であり、そのセマンティックス(semantics)を説明し、更に実施形態Aによって定義された仕様にしたがって書かれたXSAエンジンの実現例によって、それがどのように解釈されるかについて説明する。実施形態Aは、XML処理タスクの管理のために設計された、特殊目的プログラミング言語のXMLサービス・アクション仕様の一例として記述することができ、当業者であれば、これを利用して、通常のコンピュータ・システムにおいて本発明の具体的な実現例を作成することができる。実施形態Aは、前述の他の実施形態全てについても、正確に述べたフレームワークとして用いることもできる。
実施形態Aによれば、XSA電子文書は、文書形式定義(DTD)に従うXMLフォーマットに基づいて、特殊目的プログラミング言語で書かれている。XML電子文書は、有効はXSA文書を構成し、ここではXSA定義と呼ぶこともある。
以下に、実施形態Aの記述に用いられる用語の定義を示す。
XSA実行エンジン:実施形態Aのために定義されたXSA定義を実行することができるソフトウェア実現例。
XSA実行エンジン:実施形態Aのために定義されたXSA定義を実行することができるソフトウェア実現例。
XSA定義:実行する各XSAはXML文書として指定される。文書の場所や形態は、実施形態Aの仕様には全く制約されず、記憶媒体から読み取ったり、実行時に機械で生成したり、あるいはその他のいずれの方法でも取得することができる。実施形態Aについて定義されたXSAの1つのインスタンスを記述するXML文書を、XSA定義と呼ぶ。
XML動作:各XSA定義は、多数のXML動作で構成されている。XML動作とは、XSAにおける実行の単位であり、これらはXSA定義に定義されているように順次実行される。
XSAコンポーネント:XML動作において用いられるコンポーネントをXSAコンポーネントと呼ぶ。XSAコンポーネントの例には、生成器、変換器およびシンクのような、実行パイプラインのブロックが含まれる。
XSAコンポーネントは常にXSA定義内において参照されるが、使用する実際のコンポーネントは、XSA定義の外側で定義され、使用するコンポーネントのプログラミング言語、実現例、および構成において完全な自由を実施者に与える。
生成器:生成器は、何らかの特定的な方法でXMLデータを生成するコンポーネントである。生成器がXMLを作成するために用いる方法は、用いられる生成器コンポーネントの実現例によって異なる。
変換器:変換器は、ある特定の方法でXMLデータを変換するコンポーネントである。XMLに変換する際に用いる方法は、用いられる変換器コンポーネントの実現例によって異なる。
シンク:シンクは、処理後のXMLデータを配信するコンポーネントである。配信は、XMLデータを内部形式でメモリに保持することから、何らかの外部フォーマットにそれをシリアル化し、データベースに格納することまでのいずれでも含むことができる。
パイプライン:パイプラインは、生成器、一連の変換器、およびシンクを組み合わせて、一連の実行を形成する。XMLデータは、生成器から変換器を介してシンクまで流れる。
条件付き動作:条件付き動作を用いて、どのパイプラインを実行するかを判断し、実行の流れを制御することができる。
XSAコンテキスト:各XSA実行は、コンテキストにおいて行われ、名称のある数個のスコープを通じて、1組の名称のある変数へのアクセスを与える。
XSAコンテキスト:各XSA実行は、コンテキストにおいて行われ、名称のある数個のスコープを通じて、1組の名称のある変数へのアクセスを与える。
スコープ:XSAコンテキストは、名称のある全ての変数をスコープに格納する。スコープは、要求、セッション、クライアント、ユーザ、およびアプリケーションである。各スコープは、本明細書において後に実施形態Aについて定義するような意味を有する。
変数:変数という用語は、XSAコンテキストに格納される名称−値対に対して用いられる。変数は、名称および値を有し、あるスコープに属する。
以下に、実施形態Aによる、XML動作を定義する際に用いられる、XSA定義の基本的シンタックス・エレメントの説明を行う。
以下に、実施形態Aによる、XML動作を定義する際に用いられる、XSA定義の基本的シンタックス・エレメントの説明を行う。
実施形態Aのこの仕様にしたがって書かれる各XSA定義は、DOCTYPE宣言を含み、公表識別子を"-//Dimon//DTD XSA 1.1//EN"に設定しなければならない。このDTDは次の通りである。
[表1]
<!--
実施形態AのXMLサービス・アクション仕様
Namespace=http://www.dimon.is/namespaces/xsa
このDTDモジュールは、このPUBLIC識別子、
PUBLIC "-//Dimon//DTD XSA 1.1//EN"
およびこのカノニカル・システム識別子によって識別する。
SYSTEM"http://www.dimon.is/dtds/xsa/1.1/xsa/dtd"
システム識別子は変化する場合がある。DOCTYPE宣言は次のように示すことができる。
<!DOCTYPE xsa PUBLIC "-..Dimon//DTD XSA 1.1//EN""xsa.dtd">
Review:DRAFT
-->
<!--サーバ内のどこかで定義し構成したコンポーネントのIDを参照-->
<!ENTITY % refid"refid CDATA #required">
<!--所与の範囲における名称のある変数の仕様-->
<!ENTITY % variablespec"
scope (request||session|client|user|application) #required
name CDATA #required">
<!--アクションの一般的サブパーツ-->
<!ENTITY % XML Operation "(pipeline|setvariable|removevariable|lif|operation)">
<!--あらゆる値の指定子。out-param-valueは特殊な場合であり、out-paramの下位としてのみ用いることができる。その他はvaluespecがコンテンツ・モデル内であればどこでも用いることができる-->
<!ENTITY % valuespec "(null|literal|getvariable|mapping|out-param-value)">
<!--条件の一括表現-->
<!ENTITY % anycondition “(and|or|not|isdefined|isoftype|equlas|condition)”>
<!-入力/出力パラメータ割り当ての一括表現a
<!ENTITY %inoutparam "(out-param|in-param)">
<!--あらゆるアクション仕様のルート・エレメント-->
<!ELEMENT xsa (support*,errordef*,(%XMLOperation;)+)>
<!ATTLIST xsa
version CDATA #required
xmin CDATA 'http://www.dimon.is/namespaces/xsa'
>
<!-- 所与のアダプタに対する対応を示す。対応エレメントが現れない場合、いずれのアダプタでも、このXSAを呼び出すことができると想定することができる
-->
<!ELEMENT supports EMPTY>
<!ATTLIST supports
adaptername CDATA #required
>
<!-- エラー、およびこのエラーの場合に呼び出すXSAを定義する。
このコンテンツは、英語の記述的エラー・メッセージとすることができる。
名称属性はエラーの名称であり、呼び出しはこのエラーの場合に呼び出すXSAへの参照を与えなければならない。
-->
<!ELEMENT errodef #PCDATA>
<!ATTLIST errordef
name CDATA #required
invokes CDATA #required
>
<!--XMLパイプラインを実行する動作を表す。
生成器、変換器、およびシンクはネスト状エレメントによって指定する-->
<!ELEMENT pipeline ((generator|raiseerror), (transformer||raiseerror)*, (sink|raiseerror))>
<!--スコープにおいて変数を設定する動作を表す。
内容は設定する値を指定する-->
<!ELEMENT setvariable (%valuespec;)>
<!ATTLIST setvariable
%variablespec;
failonerror (true|false) "true"
>
<!--スコープにおいて変数を除去する動作を表す-->
<!ELEMENT removevariable EMPTY>
<!ATTLIST removevariable
%variablespec;
failonerror (true|false) "true"
>
<!--条件を評価することによって2つの動作リスト間で選択を行った後、その1つにおける各動作を実行する動作を表す-->
<!ELEMENT if (%anycondition;,then,else?)>
<!--条件を評価して真になったときに実行するXML動作のコンテナ-->
<!ELEMENT then ((%XML Operation;)*)>
<!--条件を評価して真になったときに実行するXML動作のコンテナ-->
<!ELEMENT else ((%XML Operation;)*)>
<!--SAXチェーンを開始する生成器のインスタンス化を表す。
いずれかの場所で構成された生成器ファクトリを参照し、それを呼び出すためのパラメータを指定する-->
<!ELEMENT generator ((%inoutparam;)*)>
<!ATTLIST generator
%refid;
>
<!--SAXチェーンの一部としての変換器のインスタンス化を表す。
いずれかの場所で構成された変換器ファクトリを参照し、それを呼び出すためのパラメータを指定する-->
<!ELEMENT transformer ((%inoutparam;)*)>
<!ATTLIST transformer
%refid;
>
<!--SAXチェーンを終了するシンクのインスタンス化を表す。
いずれかの場所で構成されたシンク・ファクトリを参照し、それを呼び出すためのパラメータを指定する-->
<!ELEMENT sink ((%inoutparam;)*)>
<!ATTLIST sink
%refid;
>
<!-- XPathを評価して真になった場合、エラーを出す。
エラー属性は、出すエラーの名称を収容していなければならず、検査属性は評価するXPathを収容していなければならない-->
<!ELEMENT raiseerror EMPTY>
<!ATTLIST raiseerror
error CDATA #required
test CDATA #required
>
<!--所与の変数の値を得ることを表す-->
<!ELEMENT getvariable EMPTY>
<!ATTLIST getvariable
%variablespec;
>
<!--どこかで定義された条件を参照する
ネストされたin-paramエレメントによって割り当てられた入力パラメータを取る場合もある-->
<!ELEMENT condition (in-param*)>
<!ATTLIST condition
%refid;
>
<!--AND条件、全てのネストされた条件が真となる場合にのみ、真となる-->
<!ELEMENT and ((%anycondition;)+)>
<!--包含的OR条件、ネストされた条件の1つが真となる場合にのみ、真となる-->
<!ELEMENT or ((%anycondition;)+)>
<!--否定条件、ネストされた条件の否定を出す-->
<!ELEMENT not ((%anycondition;))>
<!-- is-defined条件、全てのネストされた値(あらゆるオブジェクト)がヌルでないか否かを出す。
ネストされた値がない縮退の場合に真を出す-->
<!ELEMENT isdefined ((%valuespec;)*)>
<!-- is-of-type 条件、最初のネストされた値(いずれかのオブジェクト)が2番目のネストされた値(ストリング)によって命名されたクラスのものであるか否かを出す。いずれかがヌルの場合偽を出す-->
<!ELEMENT isoftype ((%valuespec;),(%valuespec;))>
<--等価条件、最初のネストされた値が、イコール・メソッドによって判定された、その他の各々と等しいか否かを出す。全てがヌルの場合真を出す。一部がヌルであり、一部がそうでない場合、偽を出す。
ネストされた値が1つのみの縮退の場合に真を出す
-->
<!ELEMENNT equals ((%valuespec;)+)>
<!--名称付入力パラメータに値を割り当てることを表す-->
<!ELEMENT in-param(%valuespec;)>
<!ATTLIST in-param
name CDATA #required
>
<!--1つ以上の入力パラメータを取り込み、結果値を出すマッピングを表す。入力パラメータは、ネストされたin-paramによって与えられる-->
<!ELEMENT mapping (in-param*)>
<!ATTLIST mapping
%refid;
>
<!--出力パラメータを変数に割り当てることを表す-->
<!ELEMENT out-param (setvariable)>
<!ATTLIST out-param
name CDATA #required
>
<!-- out-paramエレメントの子孫として用いられるときに、出力パラメータの値を表す。それ以外の場合にはいずれも違法-->
<!ELLEMENT out-param-value EMPTY>
<!-- ヌル(duh)の値を表す-->
<!ELEMENT null EMPTY>
<!-- 文字で指定された値を表す-->
<!ELEMENT literal (#PCDATA)>
<!-- 所与のパーザ・クラスによって構成されるカスタムXML動作を表す。パーザ・クラスは、XSAパーザ・クラスローダ内になければならず、デフォルトのコンストラクタを有していなければならない。
このエレメントは任意のXMLを収容している場合がある。XMLが別個の名称空間にあるか(このDTDとの障害を避けるため)、またはこのDTDを解析の時点で実行しないかのいずれかが必要である。
-->
<!ELEMENT operation EMPTY>
<!ATTLIST operation
parserClass CDATA #required
>
DOCTYPE宣言の一例は、次の通りである。
<!--
実施形態AのXMLサービス・アクション仕様
Namespace=http://www.dimon.is/namespaces/xsa
このDTDモジュールは、このPUBLIC識別子、
PUBLIC "-//Dimon//DTD XSA 1.1//EN"
およびこのカノニカル・システム識別子によって識別する。
SYSTEM"http://www.dimon.is/dtds/xsa/1.1/xsa/dtd"
システム識別子は変化する場合がある。DOCTYPE宣言は次のように示すことができる。
<!DOCTYPE xsa PUBLIC "-..Dimon//DTD XSA 1.1//EN""xsa.dtd">
Review:DRAFT
-->
<!--サーバ内のどこかで定義し構成したコンポーネントのIDを参照-->
<!ENTITY % refid"refid CDATA #required">
<!--所与の範囲における名称のある変数の仕様-->
<!ENTITY % variablespec"
scope (request||session|client|user|application) #required
name CDATA #required">
<!--アクションの一般的サブパーツ-->
<!ENTITY % XML Operation "(pipeline|setvariable|removevariable|lif|operation)">
<!--あらゆる値の指定子。out-param-valueは特殊な場合であり、out-paramの下位としてのみ用いることができる。その他はvaluespecがコンテンツ・モデル内であればどこでも用いることができる-->
<!ENTITY % valuespec "(null|literal|getvariable|mapping|out-param-value)">
<!--条件の一括表現-->
<!ENTITY % anycondition “(and|or|not|isdefined|isoftype|equlas|condition)”>
<!-入力/出力パラメータ割り当ての一括表現a
<!ENTITY %inoutparam "(out-param|in-param)">
<!--あらゆるアクション仕様のルート・エレメント-->
<!ELEMENT xsa (support*,errordef*,(%XMLOperation;)+)>
<!ATTLIST xsa
version CDATA #required
xmin CDATA 'http://www.dimon.is/namespaces/xsa'
>
<!-- 所与のアダプタに対する対応を示す。対応エレメントが現れない場合、いずれのアダプタでも、このXSAを呼び出すことができると想定することができる
-->
<!ELEMENT supports EMPTY>
<!ATTLIST supports
adaptername CDATA #required
>
<!-- エラー、およびこのエラーの場合に呼び出すXSAを定義する。
このコンテンツは、英語の記述的エラー・メッセージとすることができる。
名称属性はエラーの名称であり、呼び出しはこのエラーの場合に呼び出すXSAへの参照を与えなければならない。
-->
<!ELEMENT errodef #PCDATA>
<!ATTLIST errordef
name CDATA #required
invokes CDATA #required
>
<!--XMLパイプラインを実行する動作を表す。
生成器、変換器、およびシンクはネスト状エレメントによって指定する-->
<!ELEMENT pipeline ((generator|raiseerror), (transformer||raiseerror)*, (sink|raiseerror))>
<!--スコープにおいて変数を設定する動作を表す。
内容は設定する値を指定する-->
<!ELEMENT setvariable (%valuespec;)>
<!ATTLIST setvariable
%variablespec;
failonerror (true|false) "true"
>
<!--スコープにおいて変数を除去する動作を表す-->
<!ELEMENT removevariable EMPTY>
<!ATTLIST removevariable
%variablespec;
failonerror (true|false) "true"
>
<!--条件を評価することによって2つの動作リスト間で選択を行った後、その1つにおける各動作を実行する動作を表す-->
<!ELEMENT if (%anycondition;,then,else?)>
<!--条件を評価して真になったときに実行するXML動作のコンテナ-->
<!ELEMENT then ((%XML Operation;)*)>
<!--条件を評価して真になったときに実行するXML動作のコンテナ-->
<!ELEMENT else ((%XML Operation;)*)>
<!--SAXチェーンを開始する生成器のインスタンス化を表す。
いずれかの場所で構成された生成器ファクトリを参照し、それを呼び出すためのパラメータを指定する-->
<!ELEMENT generator ((%inoutparam;)*)>
<!ATTLIST generator
%refid;
>
<!--SAXチェーンの一部としての変換器のインスタンス化を表す。
いずれかの場所で構成された変換器ファクトリを参照し、それを呼び出すためのパラメータを指定する-->
<!ELEMENT transformer ((%inoutparam;)*)>
<!ATTLIST transformer
%refid;
>
<!--SAXチェーンを終了するシンクのインスタンス化を表す。
いずれかの場所で構成されたシンク・ファクトリを参照し、それを呼び出すためのパラメータを指定する-->
<!ELEMENT sink ((%inoutparam;)*)>
<!ATTLIST sink
%refid;
>
<!-- XPathを評価して真になった場合、エラーを出す。
エラー属性は、出すエラーの名称を収容していなければならず、検査属性は評価するXPathを収容していなければならない-->
<!ELEMENT raiseerror EMPTY>
<!ATTLIST raiseerror
error CDATA #required
test CDATA #required
>
<!--所与の変数の値を得ることを表す-->
<!ELEMENT getvariable EMPTY>
<!ATTLIST getvariable
%variablespec;
>
<!--どこかで定義された条件を参照する
ネストされたin-paramエレメントによって割り当てられた入力パラメータを取る場合もある-->
<!ELEMENT condition (in-param*)>
<!ATTLIST condition
%refid;
>
<!--AND条件、全てのネストされた条件が真となる場合にのみ、真となる-->
<!ELEMENT and ((%anycondition;)+)>
<!--包含的OR条件、ネストされた条件の1つが真となる場合にのみ、真となる-->
<!ELEMENT or ((%anycondition;)+)>
<!--否定条件、ネストされた条件の否定を出す-->
<!ELEMENT not ((%anycondition;))>
<!-- is-defined条件、全てのネストされた値(あらゆるオブジェクト)がヌルでないか否かを出す。
ネストされた値がない縮退の場合に真を出す-->
<!ELEMENT isdefined ((%valuespec;)*)>
<!-- is-of-type 条件、最初のネストされた値(いずれかのオブジェクト)が2番目のネストされた値(ストリング)によって命名されたクラスのものであるか否かを出す。いずれかがヌルの場合偽を出す-->
<!ELEMENT isoftype ((%valuespec;),(%valuespec;))>
<--等価条件、最初のネストされた値が、イコール・メソッドによって判定された、その他の各々と等しいか否かを出す。全てがヌルの場合真を出す。一部がヌルであり、一部がそうでない場合、偽を出す。
ネストされた値が1つのみの縮退の場合に真を出す
-->
<!ELEMENNT equals ((%valuespec;)+)>
<!--名称付入力パラメータに値を割り当てることを表す-->
<!ELEMENT in-param(%valuespec;)>
<!ATTLIST in-param
name CDATA #required
>
<!--1つ以上の入力パラメータを取り込み、結果値を出すマッピングを表す。入力パラメータは、ネストされたin-paramによって与えられる-->
<!ELEMENT mapping (in-param*)>
<!ATTLIST mapping
%refid;
>
<!--出力パラメータを変数に割り当てることを表す-->
<!ELEMENT out-param (setvariable)>
<!ATTLIST out-param
name CDATA #required
>
<!-- out-paramエレメントの子孫として用いられるときに、出力パラメータの値を表す。それ以外の場合にはいずれも違法-->
<!ELLEMENT out-param-value EMPTY>
<!-- ヌル(duh)の値を表す-->
<!ELEMENT null EMPTY>
<!-- 文字で指定された値を表す-->
<!ELEMENT literal (#PCDATA)>
<!-- 所与のパーザ・クラスによって構成されるカスタムXML動作を表す。パーザ・クラスは、XSAパーザ・クラスローダ内になければならず、デフォルトのコンストラクタを有していなければならない。
このエレメントは任意のXMLを収容している場合がある。XMLが別個の名称空間にあるか(このDTDとの障害を避けるため)、またはこのDTDを解析の時点で実行しないかのいずれかが必要である。
-->
<!ELEMENT operation EMPTY>
<!ATTLIST operation
parserClass CDATA #required
>
DOCTYPE宣言の一例は、次の通りである。
[表2]
<!DOCTYPE xsa
PUBLIC "-//Dimon//DTD XSA 1.1//EN"
"http://www.dimon.is/dtds/xsa/1.1/xsa/dtd">
XSA定義のルート・エレメントは<xsa>である。XSAが実施形態Aのこの仕様にしたがって書かれたのであれば、これは、1.1の値を有するバージョン属性を収容していなければならない。空のルート・エレメントの一例は、次のようにすることができる。
<!DOCTYPE xsa
PUBLIC "-//Dimon//DTD XSA 1.1//EN"
"http://www.dimon.is/dtds/xsa/1.1/xsa/dtd">
XSA定義のルート・エレメントは<xsa>である。XSAが実施形態Aのこの仕様にしたがって書かれたのであれば、これは、1.1の値を有するバージョン属性を収容していなければならない。空のルート・エレメントの一例は、次のようにすることができる。
[表3]
<xsa version="1.1" xmlns="http://www.dimon.is/namespaces/xsa">
</xsa>
ルートの内側では、XSA定義は、以下で論ずるように、いずれの数のエレメントでも収容する。これらのエレメントの殆どは、XML動作に対応する。XML動作のタイプについては、後に以下で更に詳しく論ずるが、以下のリストは、本発明の実施形態Aによるルート・エレメントの内側で許される各タイプのXMLエレメントについて端的に記述する。
<xsa version="1.1" xmlns="http://www.dimon.is/namespaces/xsa">
</xsa>
ルートの内側では、XSA定義は、以下で論ずるように、いずれの数のエレメントでも収容する。これらのエレメントの殆どは、XML動作に対応する。XML動作のタイプについては、後に以下で更に詳しく論ずるが、以下のリストは、本発明の実施形態Aによるルート・エレメントの内側で許される各タイプのXMLエレメントについて端的に記述する。
パイプライン:パイプラインは、<pipeline>エレメントによって定義される。パイプラインは、生成器、変換器およびシンクを組み合わせ、XMLデータを処理するために基本的エレメントを用いる。
変数:<setvariable>および<removevariable>エレメントによって操作され、<getvariable>エレメントによってアクセスされる。変数は、制御情報を外部のXSA実行に受け渡し、そしてXSA実行から受け取り、更に内部においてXSAのコンポーネント間で受け渡す手段である。
変数は、XSAコンテンツの一部である。これについては、以下で詳しく論ずる。
条件:条件は、<if>エレメントによって定義される。これらは、どのXML動作を実行し、どのXML動作を実行しないか制御する際に用いることができる。
条件:条件は、<if>エレメントによって定義される。これらは、どのXML動作を実行し、どのXML動作を実行しないか制御する際に用いることができる。
カスタム動作:カスタム動作は、<operation>エレメントによって定義される。これらは、いずれのカスタムXML動作を行うときにでも用いることができる。
各XML動作のシンタックスについては、以下で論ずる。実施形態Aの仕様によるXSA定義の一例は、次のようにすることができる。
各XML動作のシンタックスについては、以下で論ずる。実施形態Aの仕様によるXSA定義の一例は、次のようにすることができる。
[表4]
<?xml version='1.0'?>
<!DOCTYPE xsa
PUBLIC "-..Dimon..DTD XSA 1.1//EN"
"http://www.dimon.is/dtds/xsa/1.1/xsa.dtd">
<xsa version="1.1" xmlns="http://www.dimon.is/namespaces/xsa">
<setvariable scope="request" name="http.response.Content-Type">
<literal>text/plain</literal>
</setvariable>
<pipeline>
<generator refid="index"/>
<transformer refid="resourcetrax">
<in-param name="xsl">
<literal>index.xsl</literal>
</in-param>
</transformer>
<sink refid="clipsersink">
<in-param name="outputStream">
<getvariable scope="request" name="http.responsestream"/>
</in-param>
</sink>
</pipeline>
</xsa>
実施形態Aにおいて記述された特殊目的プログラミング言語の仕様によれば、XSA定義は線形の順序で実行される。これが意味するのは、各XML動作を完全に評価した後に、リスト中の次のXML動作を評価するということである。実現例は、この順序付けに従わなければならない。何故なら、変数の設定は、実行の順序に左右される可能性があるからである。
<?xml version='1.0'?>
<!DOCTYPE xsa
PUBLIC "-..Dimon..DTD XSA 1.1//EN"
"http://www.dimon.is/dtds/xsa/1.1/xsa.dtd">
<xsa version="1.1" xmlns="http://www.dimon.is/namespaces/xsa">
<setvariable scope="request" name="http.response.Content-Type">
<literal>text/plain</literal>
</setvariable>
<pipeline>
<generator refid="index"/>
<transformer refid="resourcetrax">
<in-param name="xsl">
<literal>index.xsl</literal>
</in-param>
</transformer>
<sink refid="clipsersink">
<in-param name="outputStream">
<getvariable scope="request" name="http.responsestream"/>
</in-param>
</sink>
</pipeline>
</xsa>
実施形態Aにおいて記述された特殊目的プログラミング言語の仕様によれば、XSA定義は線形の順序で実行される。これが意味するのは、各XML動作を完全に評価した後に、リスト中の次のXML動作を評価するということである。実現例は、この順序付けに従わなければならない。何故なら、変数の設定は、実行の順序に左右される可能性があるからである。
以下に、実施形態Aの実行コンテキストの記述を示す。
XSAは、XSA定義内に定義されている処理を活性化するために実行する。XSAを実行する毎に、XSAコンテキストにアクセスする。XSAコンテキストは、スコープ内に定義されている1組の変数を公開する。この仕様では、特定の変数名を定義しないが、全ての変数は、次の名称付スコープの1つに属さなければならない。
XSAは、XSA定義内に定義されている処理を活性化するために実行する。XSAを実行する毎に、XSAコンテキストにアクセスする。XSAコンテキストは、スコープ内に定義されている1組の変数を公開する。この仕様では、特定の変数名を定義しないが、全ての変数は、次の名称付スコープの1つに属さなければならない。
実施形態Aのこの仕様は、変数のスコープとは無関係に、特定の変数へのリード/ライト・アクセスを定義しない。実施形態の中には、必要に応じてある変数へのアクセスを制限してこの要件を満たそうとする場合もあり、一例を示せば、ユーザ・スコープ内の変数にはリード・アクセスを許すが、ライト・アクセスは許さないというものであろう。設定した制限に違反した場合、エラーを発生しなければならず、以下で説明するエラー処理を、それに応じて呼び出さなければならない。どんなエラーが生じたかは、実現例の詳細である。
XSAコンテキストに変数を設定するには、その変数への書き込みが実現例によって許される限り、その変数に以前にあった値を上書きしなければならない(いずれかの値が存在している場合)。以下のスコープが、実施形態Aのこの実施形態において定義されている。これらのスコープのランタイム環境へのマッピングは、この実施形態Aの仕様による実現例次第である。実施するマッピングは、以下に与える記述に従わなければならない。
要求:要求スコープは、現XSAの実行後も存続している必要があるが、それ以上存続する必要はない。これは、XSAの呼び出し側(invoker)が初期化したデータを収容し、XSAの実行によって、このスコープに定義されている変数を変更することができる。全ての実現例は、要求スコープに対応していなければならない。
セッション:セッション・スコープは、同じセッションが用いられている限り、複数の要求の間は存続している必要がある。「セッション」の定義は、実現例に委ねられるが、自明な例は、XSAモデルを用いたウェブ・サーバの場合におけるHTTPセッションである。セッション・スコープに対応するのはオプションである。
クライアント:クライアント・スコープは、直接的または間接的にXSAを呼び出したクライアントに適用されるデータのために用いられる。クライアントの定義は、実現例に委ねられるが、一例は、XSAモデルを用いたウェブ・ページを呼び出すブラウザである。クライアント・スコープに対応するのはオプションである。
ユーザ:ユーザ・スコープは、直接的または間接的にXSAを呼び出したユーザ・アイデンティティ(通例、人)に関連するデータのために用いられる。ユーザの観念は、実施形態Aのこの仕様の多くの実現例には適用できない場合もあるので、ユーザ・スコープに対応するのはオプションである。ある実現例がユーザ識別に対応しても、ユーザ・スコープはオプションである。
アプリケーション:アプリケーション・スコープは、XSAが実行しているアプリケーションに関連するデータのために用いられる。アプリケーションの定義は、XSA仕様の実現例に委ねられる。アプリケーション・スコープに対応するのはオプションである。
本発明の実施形態Aの仕様は、複数の変数のスコープが一体となってXSAコンテキストと呼ばれるものを形成することを述べている。XSAコンテキストは、XSAの実行前に初期化すると有用であるが、望ましいのであれば、XSA実行の間に再度使用することもできる。その場合、実現例は、XSAコンテキストがいつ、そしてどのような場合に再度使用されているか明確に定義し、潜在的なセキュリティ・ホール(security hole)を回避しなければならない。
以下に、本発明の実施形態Aのパイプラインについての概念を詳細に説明する。
パイプラインは、一連のXML生成器、変換器、およびシンクを定義する。パイプライン・エレメントは、XSA定義のXML動作である。
パイプラインは、一連のXML生成器、変換器、およびシンクを定義する。パイプライン・エレメントは、XSA定義のXML動作である。
パイプラインは、<pipeline>エレメントによって定義される。これは、エレメントを順序付けたリストを収容しており、リストは、必須の生成器から始まり、続いていずれかの数の変換器、そして必須のシンクで終了する。
データ・フローは、生成器において始まり、処理すべきXML文書(複数の文書)を作成し、変換器を通過して、XMLデータの構造およびコンテンツを修正し、最後にシンクにて終了し、指定された形態のデータを配信するかまたはこれに反応する。
パイプラインの種々の部分間を流れるデータは、XML形式となっている。この実現例は、このデータをいずれの特定の形式で保持することも必要ではなく、SAXおよびDOMのような共通APIを用いることもできる。コンポーネント間を流れるデータに加えて、入力および出力パラメータもコンポーネント毎に用いることができる。これらのパラメータの評価順序には、この仕様では制約がない。これは、パイプラインにおける前方のコンポーネントからの出力パラメータは、パイプラインにおける後方のコンポーネントへの入力には利用できない場合もあることを意味する。唯一の制約は、パイプラインは、XSAにおける次のXML動作を実行する前に、そのパラメータ評価および実行を完了しなければならないことである。以下に、パイプラインにおいて用いられるXSAコンポーネント・タイプを説明する。まず、全コンポーネント・タイプに共通な属性の説明から開始する。
XSAコンポーネントは、パイプライン実行中におけるある形態の作業を実行するために、パイプライン内において用いられる。XSAコンポーネントは、外部で定義され、XSA定義から引用される。XSAコンポーネントを定義するために用いられる方法、XSAコンポーネントを引用するために用いられる指名方法、およびXSAコンポーネントによって実施されるインターフェースは、実施形態Aのこの仕様では扱われない、実現例の詳細である。
用いるコンポーネント・インスタンスの名称は、XSAコンポーネントのrefid属性において与えられる。この参照は、常に、使用中のプログラミング言語によって定義されるのと同じオブジェクト・インスタンスを引用しなければならず、何らかの方法でオブジェクトが変更された場合、これを引用している全てのXSA定義もそれに応じて更新しなければならない。
外部から引用されることに加えて、XSAコンポーネントは、1つ以上の共通能力(ability)、即ち、入力および出力パラメータを共有する。
各XSAコンポーネントは、いずれの数の名称付入力および出力パラメータでも定義することができる。XSA定義の中では、入力パラメータは<in-param>エレメントと共に与えられ、出力パラメータは、<out-param>エレメントと共に与えられる。
<in-param>エレメントのフォーマットは次の通りである。
各XSAコンポーネントは、いずれの数の名称付入力および出力パラメータでも定義することができる。XSA定義の中では、入力パラメータは<in-param>エレメントと共に与えられ、出力パラメータは、<out-param>エレメントと共に与えられる。
<in-param>エレメントのフォーマットは次の通りである。
[表5]
<in-param name="xsl">
<!-- Value specification -->
</in-param>
<out-param>エレメントのフォーマットは次の通りである。
<in-param name="xsl">
<!-- Value specification -->
</in-param>
<out-param>エレメントのフォーマットは次の通りである。
[表6]
<out-param name="xsl">
<setvariable ...>
...
</setvariable>
</out-param>
各入力および出力パラメータの名称は、コンポーネントの実現例によって定義される。
<out-param name="xsl">
<setvariable ...>
...
</setvariable>
</out-param>
各入力および出力パラメータの名称は、コンポーネントの実現例によって定義される。
以下に、本発明の実施形態Aについて指定した生成器コンポーネントを説明する。
生成器は、パイプラインにおいて処理するXMLデータを作成するために用いられるXSAコンポーネントである。どのように生成器がXMLを作成するかは、実現例毎に様々であり、その例には、XMLをファイルから読み出し、それをネットワークを通じて取り込み、データベースにアクセスしデータをXMLに変換することが含まれる。生成器の出力は、常にXMLの実現例の内部表現において正しく形成されている必要がある。XSA実行エンジンは、この要件を各生成器に強制するが、そうしなくてもよい。
生成器は、パイプラインにおいて処理するXMLデータを作成するために用いられるXSAコンポーネントである。どのように生成器がXMLを作成するかは、実現例毎に様々であり、その例には、XMLをファイルから読み出し、それをネットワークを通じて取り込み、データベースにアクセスしデータをXMLに変換することが含まれる。生成器の出力は、常にXMLの実現例の内部表現において正しく形成されている必要がある。XSA実行エンジンは、この要件を各生成器に強制するが、そうしなくてもよい。
生成器は常にパイプラインの先頭において定義され、全てのパイプラインにおいて必要である。<generator>エレメントは、パイプラインにおいて生成器を定義するために用いられる。全てのXSAコンポーネントと同様、生成器は、名称付入力および出力パラメータに対応する。<generator>エレメントの形式は、次の通りである。
[表7]
<generator refid="mygen">
<in-param name="myinparam">
...
</in-param>
...
<out-param name="myoutparam">
...
</out-param>
...
</generator>
以下に、本発明の実施形態Aにおいて指定した、変換器コンポーネントについて説明する。
<generator refid="mygen">
<in-param name="myinparam">
...
</in-param>
...
<out-param name="myoutparam">
...
</out-param>
...
</generator>
以下に、本発明の実施形態Aにおいて指定した、変換器コンポーネントについて説明する。
変換器は、データをあるXML形式から別の形式に変換する際に用いられるXSAコンポーネントである。変換器がどのようにXMLを処理するかは、実現例毎に様々であり、その例には、XSLTを用いる、カスタム・コード化変更(custom coded modification)をテキスト・ノードに適用する、ソートする、有効性を判断する等が含まれる。変換器の出力は、常にXMLの実現例の内部表現において正しく形成されていることが要求され、その入力も、生成器または別の変換器のいずれから来るのであり、これら双方は正しく形成されたXMLを生成することが要求されているので、正しく形成されている。XSA実行エンジンは、この要件を各変換器に強制するが、そうしなくてもよい。変換器は、パイプライン定義の中では必要でない。変換器が現れるときは、常に生成器の後ろで、シンクの前に現れる。<transformer>エレメントは、パイプラインにおいて変換器を定義する際に用いられる。全てのXSAコンポーネントと同様、変換器は名称付入力および出力に対応する。<transformer>エレメントの形式は次の通りである。
[表8]
<transformer refid="mytran">
<in-param name="myinparam">
...
</in-param>
...
<out-param name="myoutparam">
...
</out-param>
...
</transformer>
以下に、本発明の実施形態Aにおいて指定されているシンク・コンポーネントについて説明する。
<transformer refid="mytran">
<in-param name="myinparam">
...
</in-param>
...
<out-param name="myoutparam">
...
</out-param>
...
</transformer>
以下に、本発明の実施形態Aにおいて指定されているシンク・コンポーネントについて説明する。
シンクは、パイプラインにおいて実行した処理から得られたXMLデータの内部表現を扱うために用いられるXSAコンポーネントである。シンクがXMLで何を行うかは、実現例毎に様々であり、その例には、XMLをファイルに書き込む、それをHTMLとしてウェブ・ブラウザに送る、またはそれからPDFを生成することが含まれる。生成器または変換器は常にシンクへの入力を生成するので、これは正しく形成される。シンクからの出力には何の制限も設定されない。
シンクは、常に、パイプラインの終端において定義され、全てのパイプラインにおいて必要とされる。<sink>エレメントは、パイプラインにおいてシンクを定義する際に用いられる。全てのXSAコンポーネントと同様、シンクは名称付入力および出力パラメータに対応する。<sink>エレメントの形式は次の通りである。
[表9]
<sink refid="mysink">
<in-param name="myinparam">
...
</in-param>
...
<out-param name="myoutparam">
...
</out-param>
...
</sink>
以下に、本発明の実施形態AのXSA仕様による変数および値の仕様について説明する。
<sink refid="mysink">
<in-param name="myinparam">
...
</in-param>
...
<out-param name="myoutparam">
...
</out-param>
...
</sink>
以下に、本発明の実施形態AのXSA仕様による変数および値の仕様について説明する。
XSAにおける変数動作は、常にXSAコンテキストにおける変数に適用される。
XSA定義のルート・レベル上および条件内では、変数を設定し除去することができる。変数を設定するには、<setvariable>エレメントを用い、変数を除去するには、<removevariable>エレメントを用いる。failonerror属性は、エラーが発生した場合に、動作を中止するか否かを定義し、デフォルトでは真になっている。
以下に、本発明の実施形態Aの仕様による<setvariable>エレメントのフォーマットを示す。
XSA定義のルート・レベル上および条件内では、変数を設定し除去することができる。変数を設定するには、<setvariable>エレメントを用い、変数を除去するには、<removevariable>エレメントを用いる。failonerror属性は、エラーが発生した場合に、動作を中止するか否かを定義し、デフォルトでは真になっている。
以下に、本発明の実施形態Aの仕様による<setvariable>エレメントのフォーマットを示す。
[表10]
<setvariable scope="request" name="var" failonerror="true">
<!--値の指定-->
</setvariable>
以下に、本発明の実施形態Aの仕様による<removevariable>エレメントのフォーマットを示す。
<setvariable scope="request" name="var" failonerror="true">
<!--値の指定-->
</setvariable>
以下に、本発明の実施形態Aの仕様による<removevariable>エレメントのフォーマットを示す。
[表11]
<removevariable scope="request" name="var" failonerror="true"/>
スコープ属性が必要であり、要求、セッション、クライアント、ユーザ、またはアプリケーションの内いずれか1つに設定しなければならない。
<removevariable scope="request" name="var" failonerror="true"/>
スコープ属性が必要であり、要求、セッション、クライアント、ユーザ、またはアプリケーションの内いずれか1つに設定しなければならない。
名称属性が必要であり、指定されたスコープ内における変数の名称を指定する。
<null>、<literal>、<getvariable>、<mapping>、および<out-param-value>エレメントを用いて、異なる値指定を定義することができる。これらについて以下で順に説明する。特定のXSAコンテキストでは、値の指定によってある値を求め、<setvariable>動作への入力として用いる。
<null>、<literal>、<getvariable>、<mapping>、および<out-param-value>エレメントを用いて、異なる値指定を定義することができる。これらについて以下で順に説明する。特定のXSAコンテキストでは、値の指定によってある値を求め、<setvariable>動作への入力として用いる。
<null>値指定は、Javaプログラミング言語では常にヌルの参照(null reference)を求め、または他の言語とのからみ(binding)ではその同等値を求める。このエレメントには、コンテンツも属性もない。変数をヌルに設定すると、変数を全く設定しないのと同じ効果がある。<literal>値指定は、当該値に用いられる文字データを定義する。これは、XSAコンテキストには関係なく、<literal>エレメントに収容されているテキストを求める。コンポーネントは、これを数値、日付、またはその他の単純な形式に変換することができるが、このような形式変更(typing)は、XSA仕様および実現例の範囲外のことである。<literal>エレメントの例は、次の通りである。
[表12]
<literal>これは文字値である</literal>
<getvariable>変数指定は、所与のスコープにおいて所与の名称を有する変数の値を求める。スコープおよび名称は属性として与えられる。<getvariable>にはコンテンツが許されていない。<getvariable>エレメントの例は、次の通りである。
<literal>これは文字値である</literal>
<getvariable>変数指定は、所与のスコープにおいて所与の名称を有する変数の値を求める。スコープおよび名称は属性として与えられる。<getvariable>にはコンテンツが許されていない。<getvariable>エレメントの例は、次の通りである。
[表13]
<getvariable scope="request" name="var"/>
スコープおよび名称属性が必要であり、スコープ属性は、要求、セッション、クライアント、ユーザ、またはアプリケーションの内いずれか1つに設定しなければならない。
<getvariable scope="request" name="var"/>
スコープおよび名称属性が必要であり、スコープ属性は、要求、セッション、クライアント、ユーザ、またはアプリケーションの内いずれか1つに設定しなければならない。
<mapping>値指定は、実施形態AのXSA仕様によって定義されないカスタム値指定を参照する際に用いられる。これは、先に定義したように、XSAコンポーネントと同様の入力パラメータを有することができるが、出力パラメータを有することはできない。<mapping>エレメントの例は、次の通りである。
[表14]
<mapping refd="mymapping">
<in-param name="myparam">
<literal>literalValue</literal>
</in-param>
</mapping>
<out-param-value>値指定は、<out-param>エレメントの子孫としてのみ用いることができ、<out-param>エレメントは、パイプラインにおけるXSAコンポーネントにおいて用いられ、先に定義した。<out-param>エレメントの内側にある場合、<out-param-value>が出力パラメータの値を収容し、例えば、出力パラメータの値を格納するために、他の動作の入力として用いることができる。<out-param>エレメントのコンテキストにおける<out-param-value>エレメントの例は、次の通りである。
<mapping refd="mymapping">
<in-param name="myparam">
<literal>literalValue</literal>
</in-param>
</mapping>
<out-param-value>値指定は、<out-param>エレメントの子孫としてのみ用いることができ、<out-param>エレメントは、パイプラインにおけるXSAコンポーネントにおいて用いられ、先に定義した。<out-param>エレメントの内側にある場合、<out-param-value>が出力パラメータの値を収容し、例えば、出力パラメータの値を格納するために、他の動作の入力として用いることができる。<out-param>エレメントのコンテキストにおける<out-param-value>エレメントの例は、次の通りである。
[表15]
<out-param name="out">
<setvariable scope="request" name="var">
<out-param-value/>
</setvariable>
</out-param>
以下に、本発明の実施形態Aの仕様によって定義した、条件付き動作について説明する。
<out-param name="out">
<setvariable scope="request" name="var">
<out-param-value/>
</setvariable>
</out-param>
以下に、本発明の実施形態Aの仕様によって定義した、条件付き動作について説明する。
条件付き動作は、どのXML動作を実行するか制御する際に用いることができる。これらは、実行すべき異なるパイプライン間で選択することを意図している。
全ての条件は、ルート<if>エレメント内で与えられる。条件付き動作は、ブール論理エレメントであり、真であると、<then>エレメント内に収容されているXML動作が実行される。ブール・エレメントの評価で偽となった場合、オプションの<else>エレメントが、その場合に実行するXML動作を収容することができる。尚、<if>自体はXML動作エレメントであるので、条件付き動作をネストできることを注記しておく。
<if>XML動作のフォーマットは、次の通りである。
全ての条件は、ルート<if>エレメント内で与えられる。条件付き動作は、ブール論理エレメントであり、真であると、<then>エレメント内に収容されているXML動作が実行される。ブール・エレメントの評価で偽となった場合、オプションの<else>エレメントが、その場合に実行するXML動作を収容することができる。尚、<if>自体はXML動作エレメントであるので、条件付き動作をネストできることを注記しておく。
<if>XML動作のフォーマットは、次の通りである。
[表16]
<if>
<!--ブール論理エレメント、and、or、not、isdefined、isoftype、equals、conditionのいずれか -->
<then>
...
</then>
<else>
...
</else>
</if>
以下に、本発明の実施形態Aの仕様による<if>エレメント内で用いられるように定義した種々のブール論理エレメントについて説明する。
<if>
<!--ブール論理エレメント、and、or、not、isdefined、isoftype、equals、conditionのいずれか -->
<then>
...
</then>
<else>
...
</else>
</if>
以下に、本発明の実施形態Aの仕様による<if>エレメント内で用いられるように定義した種々のブール論理エレメントについて説明する。
<and>エレメントは、ANDブール論理演算子を定義する。<and>エレメントの内容は、1つ以上のブール論理エレメントである。
<or>エレメントは、ORブール論理演算子を定義する。<or>エレメントの内容は、1つ以上のブール論理エレメントである。
<or>エレメントは、ORブール論理演算子を定義する。<or>エレメントの内容は、1つ以上のブール論理エレメントである。
<not>エレメントは、NOTブール論理演算子を定義する。<not>エレメントの内容は、別のブール論理エレメントである。
<isdefined>エレメントは、先に定義したように、0個以上の値指定を収容し、実現例言語結合(implementation language binding)によって定義されているように、全ての値が非ヌルの場合、真となる。値指定が全く含まれていない場合、<isdefined>エレメントは真となる。
<isdefined>エレメントは、先に定義したように、0個以上の値指定を収容し、実現例言語結合(implementation language binding)によって定義されているように、全ての値が非ヌルの場合、真となる。値指定が全く含まれていない場合、<isdefined>エレメントは真となる。
<isoftype>エレメントは、先に定義したように、2つの値指定を収容しなければならず、最初の値が2番目の値によって指定されたタイプである場合、真となる。ここで、「タイプ」の意味は、実現例言語結合によって定義されている。いずれの値もヌルである場合、このエレメントは偽となる。
<equals>エレメントは、先に定義したように1つ以上の値指定を収容し、実現例言語結合によって定義されているように、全ての値が「等しい」ときにのみ、真となる。
全ての値がヌルである場合、<equals>エレメントは真となる。一部がヌルであるが全てではない場合、偽となる。1つの値指定のみが指定されている場合、<equals>は真となる(値がヌルであっても)。
全ての値がヌルである場合、<equals>エレメントは真となる。一部がヌルであるが全てではない場合、偽となる。1つの値指定のみが指定されている場合、<equals>は真となる(値がヌルであっても)。
<condition>エレメントは、カスタム条件を定義する際に用いられる。これは、出力パラメータに対応していないことを除いて、先に定義したように、XSAコンポーネントと同じ定義を有する。ブール結果がどのように評価されるかは、カスタム条件の実現例によって異なる。以下に、本発明の実施形態Aによるエラー・ハンドリング仕様について説明する。
エラー・ハンドリングは、エレメントAによるXSAを用いる場合には二重となる。最初に、エラー定義があり、エラーを定義し、当該エラーの場合に何をすべきか定義する際に用いることができる。第2に、エラーは、パイプライン実行中いつでも発生する可能性がある。
名称付エラーの意味は、実施形態Aのこの仕様では、指定されていない。即ち、この仕様では、規定のエラーは与えられていない。
実施形態Aのこの仕様による各実現例は、汎用フォールバック・エラー機構(generic fall-back error mechanism)を有する必要があり、これは、XSA定義に対して定義したエラーの中で一致が得られない場合に、エラー・ハンドリングに対処する。この仕様は、このエラー・ハンドリングがどのように作用するか、またエラーの場合に何をすべきかについて定義していない。
実施形態Aのこの仕様による各実現例は、汎用フォールバック・エラー機構(generic fall-back error mechanism)を有する必要があり、これは、XSA定義に対して定義したエラーの中で一致が得られない場合に、エラー・ハンドリングに対処する。この仕様は、このエラー・ハンドリングがどのように作用するか、またエラーの場合に何をすべきかについて定義していない。
エラーは、名称によって定義され、各XSA指定は、ある名称付エラーが発生した場合、何をするか指定することができる。エラーは、いずれのXML動作の前にでも、XSA定義のルートにおいて定義する。エラー定義において用いられる名称は、ツリー構造に従わなければならず、ドット(.)キャラクタが、各ツリー・レベルにおいて名称を分離する。各レベルにおいて、全ての英数字ASCIIキャラクタが許されている。正しいエラー名称の一例に、something.error.specificをあげることができる。この構造は、エラーが呼び出されたときに、どのエラー定義を用いるべきか選択するために用いられる。
<errordef>エレメントは、エラーを定義する際に用いられる。名称属性は、エラーの名称を収容し、呼び出し属性は、XSA定義への参照を与え、エラーが発生した場合に呼び出すようにしなければならない。<errodef>エレメントの内容は、人が読むことのできるエラーの説明を収容することができ、ログへの印刷のように、デバッグのためにのみ用いられる。<errordef>エレメントの形式は、次の通りである。
[表17]
<errordef name="some.error.name" invokes="erroHandling.xsa"/>
パイプライン実行中のいつでも、XPath条件をチェックすることができる。XPath条件が真(XPath仕様によって定義されているように)となった場合、エラー定義を探索して、最も近い一致を求める。
<errordef name="some.error.name" invokes="erroHandling.xsa"/>
パイプライン実行中のいつでも、XPath条件をチェックすることができる。XPath条件が真(XPath仕様によって定義されているように)となった場合、エラー定義を探索して、最も近い一致を求める。
照合機構は、ドットによって、エラー名称をトークン化する。例えば、エラーsomething.errorspecifcをsomething、errorおよびspecificにトークン化する。最も一致度が高く同じ順序のトークンを含むエラー定義を用いる。この同じ例では、エラー定義がerrors something.bogus、something.errorおよびsomething.error.morespecificに対して存在する場合、something.errorエラー定義から引用したXSA定義を呼び出す。何故なら、something.error.morespecificは一致でないからである。
<raiseerror>エレメントの形式は、次の通りである。
<raiseerror>エレメントの形式は、次の通りである。
[表18]
<raiseerror test="/some/xpath/to/test" error ="some.error.name"/>
与えられたXPathは、フォーマット$scope:variable-nameを用いて、XPathパラメータ全体を通じて全てのスコープ変数(scoped variable)にアクセスできなければならない。
<raiseerror test="/some/xpath/to/test" error ="some.error.name"/>
与えられたXPathは、フォーマット$scope:variable-nameを用いて、XPathパラメータ全体を通じて全てのスコープ変数(scoped variable)にアクセスできなければならない。
一実現例では、それ自体のエラー名称を自由に定義でき、XSA定義はXSAエンジンにおいて実行エラーを扱うことが可能となる。一例は、数個のリソースが失われて、エラーが発生する可能性があり、XSA定義がその場合に何をすべきか定義できるという場合であろう。この実現例は、エラー・コードを公表しなければならず、エラーを保存(reserve)しなくてもよい。即ち、XSA定義では全てのエラーを無視することができる。
また、エラーの原因となったXSA定義に用いられていたのと同じXSAコンテンツを用いてエラー・ハンドリングXSA定義を実行しなければならない実現例もある。
以下に、本発明の実施形態Aの仕様によるカスタム動作について説明する。
以下に、本発明の実施形態Aの仕様によるカスタム動作について説明する。
<operation>エレメントは、カスタムXML動作を参照する際に用いることができる。定義されている唯一の構成は、ParseClass属性であり、用いるパーザに名称を付けてカスタムXML動作の内容を解析する際に用いなければならない。この名称をパーザの実現例にマップする方法、およびパーザが実現しなければならないプログラミング・レベルのインターフェースは、各XSA実現例に特定的である。
<operation>エレメントの内容は、用いられるパーザが利用できなければならず、パーザはこれを用いて動作を定義することができる。エレメントの内容は、XSA名称空間とは別個の名称空間に入力し、現在および今後起こり得る競合を回避するようにするとよい。
以下に、本発明の実施形態Aの仕様によるXSA実行について説明する。
XSA実行エンジンは、1つのXSAコンテキスト内において常にXSA定義を実行していなければならない。XSAコンテンツを作成しXSAを実行する全体を、アダプタと呼ぶ。アダプタの一例は、HTTPアダプタであり、HTTP要求を取り込み、XSA定義を選択し、HTTP要求内にある情報に基づいてそのコンテキストを作成し、次いでXSA定義を実行する。
XSA実行エンジンは、1つのXSAコンテキスト内において常にXSA定義を実行していなければならない。XSAコンテンツを作成しXSAを実行する全体を、アダプタと呼ぶ。アダプタの一例は、HTTPアダプタであり、HTTP要求を取り込み、XSA定義を選択し、HTTP要求内にある情報に基づいてそのコンテキストを作成し、次いでXSA定義を実行する。
アダプタの名称には規則や登録は要求されない。これは、各XSAの実現例に特定的と考えられる。しかし、実現例は、アダプタ名称を定義できるので、XSA定義は、アダプタが有意にXSAを実行することができる情報を埋め込むことができる。1つの属性adapternameを有する<supports>エレメントを用いると、これが行える。いずれのXML動作の前でも、XSA定義の開始には、あらゆる数の<supports>エレメントを置くことができる。<supports>エレメントが出てこない場合、XSA実現例は、いずれのアダプタでもXSAを呼び出すことができると想定しなければならない。
<supports>リストの一例を提示し、以下に示す。この例は、XSA定義がアダプタHTTPおよびFTPにおいてのみ実行してもよいことを示す。FILEという名称のアダプタは、XSA実現例によって、このXSAを実行することを禁止しなければならない。
[表19]
<xsa>
<supports adaptername="HTTP"/>
<supports adaptername="FTP"/>
...
</xsa>
前述の実施形態Aの詳細な説明を用いれば、当業者であれば、Javaプログラミング言語のような、プログラミング言語への結合を形成することができる。本発明の実施形態Aによって定義した詳細なXSA仕様に基づいた、有効なXMLサービス・アクション文書の一例を以下に示す。これは、実施形態Aによって定義したXSA仕様の特徴全てを示す訳ではない。
<xsa>
<supports adaptername="HTTP"/>
<supports adaptername="FTP"/>
...
</xsa>
前述の実施形態Aの詳細な説明を用いれば、当業者であれば、Javaプログラミング言語のような、プログラミング言語への結合を形成することができる。本発明の実施形態Aによって定義した詳細なXSA仕様に基づいた、有効なXMLサービス・アクション文書の一例を以下に示す。これは、実施形態Aによって定義したXSA仕様の特徴全てを示す訳ではない。
[表20]
<?xml version='1.0'?>
<!DOCTYPE xsa
PUBLIC "-//Dimon//DTD XSA 1.1//EN"
"http://www.dimon.is/dtds/xsa/1.1/xsa.dtd">
<xsa version="1.1" xmlns="http://www.dimon.is/namespaces/xsa">
<supports adaptername="HTTP"/>
<if>
<isdefined>
<getvariable scope="request" name="http.get.param"/>
</isdefined>
<then>
<pipeline>
<generator refid="index"/>
<transformer refid="resourcetrax">
<in-param name="xsl">
<literal>index.xsl</literal>
</in-param>
</transformer>
<sink refid="clipsersink">
<in-param name="outStream">
<getvariable scope="request" name="http.responsetream"/>
</in-param>
</sink>
</pipeline>
</then>
<else>
<pipeline>
<generator refid="alt"/>
<transformer refid="alttrax">
<in-param name="xsl">
<literal>alt.xsl</literal>
</in-param>
</transformer>
<sink refid="clipsersink">
<in-param name="outputStream">
<getvariable scope="request" name="http.responsestream"/>
</in-param>
</sink>
</pipeline>
</else>
</if>
<xsa>
これで、本発明の実施形態Aによって定義された、特殊目的プログラミング言語の詳細なXSA仕様の説明を終了する。
<?xml version='1.0'?>
<!DOCTYPE xsa
PUBLIC "-//Dimon//DTD XSA 1.1//EN"
"http://www.dimon.is/dtds/xsa/1.1/xsa.dtd">
<xsa version="1.1" xmlns="http://www.dimon.is/namespaces/xsa">
<supports adaptername="HTTP"/>
<if>
<isdefined>
<getvariable scope="request" name="http.get.param"/>
</isdefined>
<then>
<pipeline>
<generator refid="index"/>
<transformer refid="resourcetrax">
<in-param name="xsl">
<literal>index.xsl</literal>
</in-param>
</transformer>
<sink refid="clipsersink">
<in-param name="outStream">
<getvariable scope="request" name="http.responsetream"/>
</in-param>
</sink>
</pipeline>
</then>
<else>
<pipeline>
<generator refid="alt"/>
<transformer refid="alttrax">
<in-param name="xsl">
<literal>alt.xsl</literal>
</in-param>
</transformer>
<sink refid="clipsersink">
<in-param name="outputStream">
<getvariable scope="request" name="http.responsestream"/>
</in-param>
</sink>
</pipeline>
</else>
</if>
<xsa>
これで、本発明の実施形態Aによって定義された、特殊目的プログラミング言語の詳細なXSA仕様の説明を終了する。
以上、本発明について、例示の実施形態を有するものとして説明したが、この特許出願は、その一般的原理を用いてあらゆる変形、仕様、または改造をも包含することを意図している。更に、この特許出願は、これが属する技術分野内における公知のまたは慣習的な実施に該当するような、本開示からの逸脱も包含することを意図している。本発明の精神および範囲は、添付した特許請求の範囲の用語によってのみ限定されるものとする。
Claims (25)
- 構造化データのコンテキスト独立処理を含むタスクの実行のための管理システムであって、
−外部クライアントから要求を受ける手段と、
−コンテキスト独立エンジンと、
−前記外部クライアントと前記コンテキスト独立エンジンとの間で通信を行い、前記コンテキスト独立エンジンを特定のアプリケーション・コンテキストに適応させる少なくとも1つのアダプタ・モジュールと、
−コンピュータ・ネットワーク上に常駐する少なくとも1つのバック・エンド・システムに接続され、前記少なくとも1つのバック・エンド・システム・データを、更なる処理のために準備ができている構造化データとして公開するように構成された少なくとも1つの生成器モジュールと、
−前記少なくとも1つの変換器に接続され、前記処理した構造化データを受け、該処理した構造化データに応じての解釈および反応と、前記アダプタ・モジュールを通じての前記要求元の外部クライアントへの前記処理した構造化データの返送と、の一方または双方を行うように構成された、少なくとも1つのシンク・モジュールと、
を備えており、
前記外部クライアントと前記コンテキスト独立エンジンとの間の通信は、あらゆる構造化データの処理を管理するために設計された、特殊目的プログラミング言語で書かれた電子文書に定義されている既定の1組の命令にしたがって、前記構造化データの処理を実行するため、少なくとも1つの生成器モジュールと少なくとも1つのシンク・モジュールとを選択する手段を備えている、管理システム。 - 請求項1記載の管理システムにおいて、前記少なくとも1つの生成器モジュールに接続され、前記構造化データを前記少なくとも1つの生成器から受け取って、処理した構造化データに変換するように構成された、1つまたは数個の変換器モジュールを備えている、管理システム。
- 請求項1記載の管理システムにおいて、前記コンテキスト独立エンジンは、前記特殊目的プログラミング言語で書かれた前記電子文書を読み取って解釈し、それによって前記管理システム内における実行を制御する、管理システム。
- 請求項1から3のいずれかに記載の管理システムにおいて、前記構造化データの処理を、拡張可能マークアップ言語(XML)フォーマットで実行する、管理システム。
- 請求項1から4のいずれかに記載の管理システムにおいて、前記アダプタ・モジュールは、ハイパーテキスト転送プロトコル(HTTP)によって受けた要求を受け、該要求に応答可能である、管理システム。
- 請求項1から5のいずれかに記載の管理システムにおいて、前記アダプタ・モジュールは、ショート・メッセージ・サービス(SMS)によって受けた要求を受け、該要求に応答可能である、管理システム。
- 請求項1から6のいずれかに記載の管理システムにおいて、前記アダプタ・モジュールは、マルチメディア・メッセージ・サービス(MMS)によって受けた要求を受け、該要求に応答可能である、管理システム。
- 請求項1から7のいずれかに記載の管理システムにおいて、前記アダプタ・モジュールは、シンプル・オブジェクト・アクセス・プロトコル(SOAP)によって受けた要求を受け、該要求に応答可能である、管理システム。
- 請求項1から8のいずれかに記載の管理システムにおいて、前記変換器モジュールは、拡張可能スタイルシート言語変換(XSLT:Stylesheet Language Transformations)を用いてXMLデータを変換可能である、管理システム。
- 請求項1から9のいずれかに記載の管理システムにおいて、前記少なくとも1つの生成器モジュールは、以下のバック・エンド・システム
−あらゆるODBCまたはJDBC準拠データベース、
−前記管理システムを実行中のコンピュータ上のファイル・システム、
−ハイパーテキスト転送プロトコル(HTTP)を用いて通信可能なあらゆるデータ源、
−シンプル・オブジェクト・アクセス・プロトコル(SOAP)を用いて通信可能なあらゆるデータ源、
−マイクロソフトExchangeTM個人情報管理(PIM)システム、
−ロータスDominoTM個人情報管理(PIM)システム、
−軽量ディレクトリ・アクセス・プロトコル(LDAP)によるあらゆるディレクトリ・サービス、
−シンプル・メール転送プロトコル(SMTP)、ポスト・オフィス・プロトコル(POP/POP3)またはインターネット・メッセージ・アクセス・プロトコル(IMAP)によるあらゆる電子メール・システム、
の少なくとも1つと通信し、それらのネーティブ・データ・フォーマットをXMLフォーマットに変換するように構成されている、管理システム。 - 請求項1から10のいずれかに記載の管理システムにおいて、該システムはプレゼンテーション・システムであり、
−少なくとも1つのネットワーク・クライアントから、バック・エンド・システム内に常駐するコンテンツに対する要求を受ける少なくとも1つのアダプタ・モジュールと、
−少なくとも1つのステップで、XMLソース・コンテンツを、前記少なくとも1つのクライアントに適したマークアップに変換する変換器モジュールであって、
−前記XMLソース・コンテンツをクライアントには独立したマークアップに変換し、
−前記クライアント独立マークアップを、前記コンテンツを要求した特定のタイプのクライアントに適したバージョンに適応させること、
を含む前記の変換器モジュールと、
−前記マークアップを前記クライアントに配信するシンク・モジュールと、
を備えている、管理システム。 - 請求項1から11のいずれかに記載の管理システムにおいて、前記少なくとも1つのクライアントからの要求のフォーマットは、以下のフォーマット
−移植可能文書フォーマット(PDF)、
−クライアント特定ハイパーテキスト・マークアップ言語(HTML)、
−クライアント特定ワイヤレス・マークアップ言語(WML)、
−ショート・メッセージ・サービス(SMS)、
−マルチメディア・メッセージ・サービス(MMS)、および
−コンパクトHTML(cHTML)、
−xHTML、
の内の1つである、管理システム。 - 請求項1から12のいずれかに記載の管理システムにおいて、該システムはメッセージング・システムであり、
−標準化電子業務プロトコルを通じて外部システムと通信するように構成された少なくとも1つのアダプタ・モジュールと、
−発信元および宛先システムから業務データを抽出し、それをXMLとして公開するように構成された少なくとも1つの生成器モジュールと、
−関連するXML業務ソース・データを業務メッセージに変換するように構成された少なくとも1つの変換器モジュールと、
−前記業務メッセージを配信するように構成された少なくとも1つのシンク・モジュールと、
を備えている、管理システム。 - 請求項1から13のいずれかに記載の管理システムにおいて、前記標準化業務プロトコルは、電子業務XML(ebXML)である、管理システム。
- 請求項1から14のいずれかに記載の管理システムにおいて、該システムは統合システムであり、
−外部クライアントからの呼び出しなしで、XML処理タスクの実行を開始する手段と、
−異種の発信元および宛先システム間でのデータ同期手段であって、
・少なくとも1つの生成器モジュールが前記発信元システムからデータを抽出し、それをXMLソース・データに変換し、
・少なくとも1つの変換器モジュールが、前記XMLソース・データを、前記宛先システムへの配信に適合するXMLフォーマットに変換し、
・少なくと1つのシンク・モジュールが、前記処理したXMLを前記宛先システムに配信する手段を有する、
前記のデータ同期手段と、
−業務プロセス管理および実行のための手段であって、業務プロセスの個々の各タスクを定義し、単一のXML処理タスクとして実行する、手段と、
−実行中の業務プロセスのステータスに関する情報と共に、ハイパーテキスト・ファイル集合をワールド・ワイド・ウェブ上に公表する手段と、
を備えている、管理システム。 - 請求項1から15のいずれかに記載の管理システムにおいて、前記外部クライアントからの要求は情報またはデータを収容し、これを前記アダプタ・モジュールが使用して、どの電子文書を実行するか判断する、管理システム。
- 複数のネットワーク・デバイスを備えたネットワークにおいて、構造化データ処理タスクを管理し実行する方法であって、
−外部クライアントから、命令集合によって定義された、既定のコンテキスト依存構造化データ処理タスクの実行要求を受けるステップであって、前記構造化データ処理タスクの各々を、あらゆる構造化データの処理の管理用に設計した特殊目的上位プログラミング言語を用いて、命令集合にエンコードするステップと、
−前記命令集合を解釈して有効性を判断し、前記命令集合と、前記外部クライアントからの要求において発見した情報とに基づいて、コンテキスト依存実行環境を設定するステップと、
−前記コンテキスト依存構造化データ処理タスクを実行するステップであって、該実行が、
・前記ネットワーク上のバック・エンド・システムに接続し、ネーティブ・バック・エンド・システム・データを構造化ソース・データに変換するステップと、オプションとして、
・前記ソース構造化データを、処理した構造化データに変換するステップと、
・前記処理した構造化データへの反応と、何らかの方法での前記要求元クライアントへの前記処理した構造化データの返送と、の一方または双方を行うステップと、
を含む、ステップと、
を備えている、方法。 - 請求項17記載の方法において、前記構造化データの処理は、拡張可能マークアップ言語(XML)フォーマットで実行する、方法。
- 請求項17または18記載の方法において、前記要求は、ハイパーテキスト転送プロトコル(HTTP)によって受信する、方法。
- 請求項17から19までのいずれかに記載の方法において、前記要求は、ショート・メッセージ・サービス(SMS)によって受ける、方法。
- 請求項17から20までのいずれかに記載の方法において、前記要求は、マルチメディア・メッセージ・サービス(MMS)によって受ける、方法。
- 請求項17から21までのいずれかに記載の方法において、前記要求は、シンプル・オブジェクト・アクセス・プロトコル(SOAP)によって受ける、方法。
- 請求項17から22までのいずれかに記載の方法において、前記XMLデータは、拡張可能スタイルシート言語変換(XSLT)を使用して変換する、方法。
- 請求項17から23までのいずれかに記載の方法において、前記ソース構造化データを、処理した構造化データに変換することは、以下のバック・エンド・システム
−ODBCまたはJDBC準拠データベース、
−前記管理システムを実行中のコンピュータ上のファイル・システム、
−ハイパーテキスト転送プロトコル(HTTP)を通して通信可能なあらゆるデータ源、
−シンプル・オブジェクト・アクセス・プロトコル(SOAP)を通して通信可能なあらゆるデータ源、
−マイクロソフトExchangeTM個人情報管理(PIM)システム、
−ロータスDominoTM個人情報管理(PIM)システム、
−軽量ディレクトリ・アクセス・プロトコル(LDAP)によるあらゆるディレクトリ・サービス、
−シンプル・メール転送プロトコル(SMTP)、ポスト・オフィス・プロトコル(POP/POP3)またはインターネット・メッセージ・アクセス・プロトコル(IMAP)によるあらゆる電子メール・システム、
の内少なくとも1つに対応するフォーマットから、XMLフォーマットへの変換を含む、方法。 - 請求項17から24までのいずれかに記載の方法を、中央演算装置に実行させる命令を格納したコンピュータ読み取り可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US40364102P | 2002-08-16 | 2002-08-16 | |
IS6509 | 2002-08-16 | ||
PCT/IS2003/000024 WO2004017230A1 (en) | 2002-08-16 | 2003-08-15 | System and method for a context-independent framework for management and execution of xml processing tasks |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006510955A true JP2006510955A (ja) | 2006-03-30 |
Family
ID=36790989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004528803A Pending JP2006510955A (ja) | 2002-08-16 | 2003-08-15 | Xml処理タスクの管理および実行のためのコンテキスト独立フレームワークのシステムおよび方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1540528A1 (ja) |
JP (1) | JP2006510955A (ja) |
AU (1) | AU2003249590A1 (ja) |
WO (1) | WO2004017230A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1666074B1 (de) | 2004-11-26 | 2008-05-28 | BÄ*RO GmbH & Co. KG | Entkeimungsleuchte |
US7328199B2 (en) | 2005-10-07 | 2008-02-05 | Microsoft Corporation | Componentized slot-filling architecture |
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 |
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 |
US7672957B2 (en) * | 2006-02-10 | 2010-03-02 | Make Technologies, Inc. | User interface configured to display mechanical fabric and semantic model of a legacy computer application generated, graphical view navigating links between mechanical nodes and semantic nodes based on relevant business rules |
US7996783B2 (en) | 2006-03-02 | 2011-08-09 | Microsoft Corporation | Widget searching utilizing task framework |
WO2008039929A1 (en) * | 2006-09-27 | 2008-04-03 | Educational Testing Service | Method and system for xml multi-transform |
CN114489950A (zh) * | 2022-01-27 | 2022-05-13 | 上海富数科技有限公司 | 一种组件适配方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826597B1 (en) * | 1999-03-17 | 2004-11-30 | Oracle International Corporation | Providing clients with services that retrieve data from data sources that do not necessarily support the format required by the clients |
US6810429B1 (en) * | 2000-02-03 | 2004-10-26 | Mitsubishi Electric Research Laboratories, Inc. | Enterprise integration system |
AU2001281253A1 (en) * | 2000-08-11 | 2002-02-25 | Manugistics, Inc. | System and method for integrating disparate networks for use in electronic communication and commerce |
US7149969B1 (en) * | 2000-10-18 | 2006-12-12 | Nokia Corporation | Method and apparatus for content transformation for rendering data into a presentation format |
-
2003
- 2003-08-15 WO PCT/IS2003/000024 patent/WO2004017230A1/en not_active Application Discontinuation
- 2003-08-15 AU AU2003249590A patent/AU2003249590A1/en not_active Abandoned
- 2003-08-15 JP JP2004528803A patent/JP2006510955A/ja active Pending
- 2003-08-15 EP EP03788000A patent/EP1540528A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP1540528A1 (en) | 2005-06-15 |
WO2004017230A1 (en) | 2004-02-26 |
AU2003249590A1 (en) | 2004-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060155529A1 (en) | System and method for a context-independent framework for management and execution of xml processing tasks | |
US8326856B2 (en) | Method and apparatus of automatic method signature adaptation for dynamic web service invocation | |
US6925631B2 (en) | Method, computer system and computer program product for processing extensible markup language streams | |
US7194683B2 (en) | Representing and managing dynamic data content for web documents | |
US7165239B2 (en) | Application program interface for network software platform | |
US7188158B1 (en) | System and method for component-based software development | |
US7162687B2 (en) | JSP tag libraries and web services | |
US7962925B2 (en) | System and method for XML data binding | |
US7194733B2 (en) | Transformation of an asynchronous transactional messaging language into a web services compatible language | |
US9116762B2 (en) | XML remote procedure call (XML-RPC) | |
US8626803B2 (en) | Method and apparatus for automatically providing network services | |
US20030115548A1 (en) | Generating class library to represent messages described in a structured language schema | |
US20020099738A1 (en) | Automated web access for back-end enterprise systems | |
US20030037181A1 (en) | Method and apparatus for providing process-container platforms | |
JP2006510955A (ja) | Xml処理タスクの管理および実行のためのコンテキスト独立フレームワークのシステムおよび方法 | |
US6829758B1 (en) | Interface markup language and method for making application code | |
Chowdhury et al. | Integration of legacy systems in software architecture | |
Jacobsen et al. | Modeling interface definition language extensions | |
US7305667B1 (en) | Call back structures for user defined DOMs | |
KR100420103B1 (ko) | 엑스엠엘 기반의 웹 어플리케이션 구현 시스템 및 방법 | |
Zdun et al. | Content conversion and generation on the web: A pattern language | |
Emir et al. | Scalable programming abstractions for XML services | |
Käbisch et al. | XML-based Web service generation for microcontroller-based sensor actor networks | |
Manola | Some Web Object Model Construction Technologies | |
Scherer | Description languages for REST APIs-state of the art, comparison, and transformation |