JP2007004608A - 連携処理システム及び装置及び方法 - Google Patents

連携処理システム及び装置及び方法 Download PDF

Info

Publication number
JP2007004608A
JP2007004608A JP2005185416A JP2005185416A JP2007004608A JP 2007004608 A JP2007004608 A JP 2007004608A JP 2005185416 A JP2005185416 A JP 2005185416A JP 2005185416 A JP2005185416 A JP 2005185416A JP 2007004608 A JP2007004608 A JP 2007004608A
Authority
JP
Japan
Prior art keywords
data
input
holding object
output
stream
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.)
Granted
Application number
JP2005185416A
Other languages
English (en)
Other versions
JP4852906B2 (ja
Inventor
Shigehisa Kawabe
惠久 川邉
Setsu Kunitake
節 國武
Akira Suzuki
明 鈴木
Katsuhide Tanaka
克英 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2005185416A priority Critical patent/JP4852906B2/ja
Priority to US11/289,730 priority patent/US8028018B2/en
Priority to CNB2006100062925A priority patent/CN100470483C/zh
Publication of JP2007004608A publication Critical patent/JP2007004608A/ja
Application granted granted Critical
Publication of JP4852906B2 publication Critical patent/JP4852906B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】ストリームを取り扱えないデータ処理コンポーネント同士の連携を可能にする。
【解決手段】第1ホスト1−1上に存在する第1データ処理コンポーネント20−1は、保持するデータをストリーム60へと出力する機能を少なくとも備えた出力保持オブジェクト40a、を処理結果として出力する。パイプライン手段14−1及び14−2は、前記出力保持オブジェクト40aに、該出力保持オブジェクト40aが保持するデータを第2ホスト1−2宛のストリーム60へと出力させると共に、該ストリーム60を入力とする入力保持オブジェクト30bを該第2ホスト1−2に生成させ、該入力保持オブジェクト30bにストリーム60からのデータを格納させる。第2ホスト1−2上に存在する第2データ処理コンポーネント20−2は、入力保持オブジェクト60を引数として入力して処理する。
【選択図】図4

Description

本発明は複数のデータ処理コンポーネントを連携させて一連の処理を行わせる分散データ処理技術に関する。
複数のデータ処理コンポーネントを連携させて一連の処理を実行させる分散データ処理方法として、例えば特許文献1に示される方法がある。この方法では、結合処理の手続き情報および中間結果情報を転送情報単位としてネットワーク内を巡回させ、一方各部分処理を実行して結果を保持する各ノードはネットワークから転送情報単位を取得し、この転送情報単位の手続き情報に基づき、当該ノードの保持する部分処理結果と該取得した中間結果情報とを用いて、結合処理の一部を行い、この結果により中間結果情報を更新し、手続き情報とともにネットワークに送出する。
また、特許文献2には、ウェブサーバ上の原料ファイルをHTTPサーバ上で動作する処理サーバ(データ処理コンポーネント)に処理させ、複数の処理サーバの処理を連携させることで、複雑な加工を施した処理結果を求めるシステムが開示されている。このシステムでは、ウェブブラウザは、原料ファイルを手続名、パラメータ、コンピュータ名等で修飾した第1の仮想URL(Uniform Resource Locator)によりリクエストを送出する。複数の部分処理を組み合わせた複合的な処理が第1の仮想URLで表記されている。複合的な処理を構成するには、部分処理を、第2の仮想URLとして表現し、第2の仮想URLが、第1の仮想URL中に引数として記述する。このことから、あたかも関数合成式を構成するように、仮想URLを引数とし、複合的な処理を表す別の仮想URLを階層的に構成できる。各処理サーバは、自分宛の仮想URLを解釈してその中に含まれ、かつ、処理できない引数(仮想URL)を抽出し、それをリクエストとして処理可能な第2の処理サーバにHTTP(Hypertext Transfer Protocol)で転送し、第1の処理サーバはレスポンスとして処理結果を取得し、それを入力データとして自分の処理に利用する。このように、入力された仮想URLを、多重に入れ子になった計算処理式とみなし、最内側から順に、かつ分散的に実行することをなし得ている。この場合、各コンポーネントはHTTPプロトコルで接続され、相互に通信を行って、分散的なパイプライン処理を実現する。
また特許文献3には、1台のホストコンピュータ上で実行される1つのアプリケーション内で、複数のHTTPモジュールをイベント駆動で連携動作させることで、外部からの1つのHTTPリクエストを処理する方式が開示される。この方式では、外部からのHTTPリクエストを論理的に表現し、そのHTTP要求に関連する少なくとも1つのプロパティをカプセル化するコンテキストオブジェクトを生成する。そして、コンテキストオブジェクトに対応しそれぞれが対応するイベントを有する複数の要求イベントを有するイベントパイプラインを形成し、要求イベントに対応するイベントが生じたとき、および、その要求イベントに関連してアプリケーションとモジュールのうち少なくとも1つが登録されたときにコールバックを生成し、コンテキストオブジェクトを処理するための前記コールバックに応答して、前記要求イベントに関連付けて登録される各アプリケーションと各モジュールを開始する。
特開平10−027164号公報 特開2000−076118号公報 特開2003−076560号公報
特許文献1の方法では、ネットワーク内に巡回させる転送処理単位に中間処理結果のデータ実体が含まれるので、各処理コンポーネントは中間処理結果のデータ実体を授受するための通信を考慮したプログラミングを行う必要がある。このため、処理コンポーネントのプログラミングが難しいという問題がある。
この問題は、1つのコンピュータ装置上の複数のデータ処理コンポーネントを連携させる場合にも生じることである。UNIX(登録商標)等のOS(オペレーティングシステム)が提供するパイプライン処理機能は、パイプラインを構成する各プログラムをOSが最初に並列に起動し、それらプログラムの標準出力ストリームを、パイプラインにおける次のプログラムの標準入力ストリームに結合することで、連携処理を実現している。しかしながら、このような方式では、各コンポーネントは、ストリームによるデータ通信を実現しなくてはならない。ストリームでないデータやオブジェクトを引数とし、メソッド呼び出しを行うような簡単なプログラミングに適応できない。
ネットワークを跨ったデータ処理コンポーネント間の連携を考えた場合、中間処理結果のデータはHTTP等のネットワーク通信プロトコルを用いてネットワーク経由で受け渡すことになる。この種のネットワーク通信プロトコルでは、ネットワークを転送するデータはストリームの形となることが多い。ストリーム送受信の機能のプログラミングは一般に困難である。また、データ処理コンポーネントは、実行する処理の内容が重要であって、その処理のための入出力の制御はいわば副次的なものである。そのような副次的な入出力制御のためにプログラミングのための資源が利用されることは好ましいとはいえない。例えば、ワークフローシステムの要素となる個々のビジネスロジックを実現するデータ処理コンポーネントを開発するベンダは、ビジネスロジックのプログラミングに注力するものであり、入出力制御のプログラミングにはあまり資源を割きたくないであろう。
また、特許文献2の方式では、各データ処理コンポーネントを、HTTPのリクエストを入力としHTTPのレスポンスを出力とするように実現する必要があり、特許文献1の方式と同じ問題がある。
また、特許文献3の方式は、同一ホストコンピュータ内、特に同一アプリケーション内のHTTPモジュールを連携させるものであり、この方式はそのままではネットワークを跨るホストコンピュータ間での処理コンポーネントの連携には適用できない。すなわち、同一ホスト内ならば処理対象となるオブジェクトをそのままHTTPモジュール同士の間で受け渡せばよいが、ネットワークを経由する場合はそのような簡単な受け渡し方式は実行不可能である。
本発明は、データ通信ネットワークを跨って複数のデータ処理コンポーネントが連携する連携処理システムにおいて、ストリームを取り扱う複雑なデータ入出力機構を持たないデータ処理コンポーネントでも、ネットワーク経由でのデータの受け渡しを伴う連携を実現できるようにするための技術を提供する。
1つの側面では、本発明は、第1のホストコンピュータ上に存在する第1のデータ処理コンポーネントであって、保持するデータをストリームへと出力する機能を少なくとも備えた出力保持オブジェクト、を処理結果として出力する第1のデータ処理コンポーネントと、前記第1のデータ処理コンポーネントが出力した前記出力保持オブジェクトに、該出力保持オブジェクトが保持するデータを第2のホストコンピュータ宛のストリームへと出力させると共に、該ストリームを入力とする入力保持オブジェクトを該第2のホストコンピュータに生成させ、該入力保持オブジェクトに前記ストリームからのデータを格納させるパイプライン手段と、前記第2のホストコンピュータ上に存在する第2のデータ処理コンポーネントであって、前記入力保持オブジェクトを引数として入力して処理する第2のデータ処理コンポーネントと、を備える連携処理システムを提供する。
別の側面では、本発明は、コンピュータ装置であって、第1の処理を実行する第1のデータ処理コンポーネントであって、前記第1の処理により得られるデータをストリームとして出力する機能を備えた出力保持オブジェクト、を前記第1の処理の結果として出力する第1のデータ処理コンポーネントと、前記第1のデータ処理コンポーネントの前記第1の処理により得られるデータを前記コンピュータ装置とは異なる第2のコンピュータ装置上の第2のデータ処理コンポーネントに対して提供して第2の処理を実行させる場合に、前記出力保持オブジェクトに対し、該出力保持オブジェクトが持つデータを、第2のホストコンピュータ宛のストリームとして出力させる出力側パイプ手段と、を備えるコンピュータ装置を提供する。
更に別の側面では、本発明は、コンピュータ装置であって、第1の処理を実行する第1のデータ処理コンポーネントと、外部装置からのストリームを入力とする入力保持オブジェクトを生成し、該ストリームを介して転送されてくる入力データを該入力保持オブジェクトに格納させる入力側パイプ手段と、前記入力保持オブジェクトを引数として前記第1のデータ処理コンポーネントに入力することにより、前記第1のデータ処理コンポーネントに前記入力データを処理させる処理指示手段と、を備えるコンピュータ装置を提供する。
更に別の側面では、本発明は、次のような連携処理方法を提供する。すなわち、この連携処理方法では、第1のホストコンピュータが、保持するデータをストリームへと出力する機能を備えた出力保持オブジェクト、を処理結果として出力する第1のデータ処理コンポーネントを実行し、パイプライン手段が、前記第1のデータ処理コンポーネントが出力した前記出力保持オブジェクトに、該出力保持オブジェクトが保持するデータを第2のホストコンピュータ宛のストリームへと出力させると共に、該ストリームを入力とする入力保持オブジェクトを該第2のホストコンピュータに生成させ、該入力保持オブジェクトに前記ストリームからのデータを格納させ、第2のホストコンピュータが、前記第1のデータ処理コンポーネントの処理結果を用いて処理を行う第2のデータ処理コンポーネントであって、前記入力保持オブジェクトを引数として入力して処理する第2のデータ処理コンポーネントを実行する。
以下、図面を参照して本発明の好適な実施形態を説明する。
本実施形態では、図1に示すように、複数のホストコンピュータ(以下、に「ホスト」と呼ぶ)1が、クライアント2からの要求に応じ、インターネット3等のHTTPを利用可能なネットワークを介して処理の連携を行う。
各ホスト1が有する連携処理のためのソフトウエアは、図2に示すように、処理制御部クラス10,データ処理コンポーネントクラス20,入力側HTTPケイパブルクラス30,及び出力側HTTPケイパブルクラス40の4種類のオブジェクトのクラスを有する。
データ処理コンポーネントクラス20は、単位的なデータ処理を実行するデータ処理コンポーネントのオブジェクトのクラスである。単位的なデータ処理(以下「単位処理」という)の内容には特に限定はない。例えば、文書の要約、複数文書のマージ(併合)など、さまざまなものが単位処理の例として考えられる。データ処理コンポーネントクラス20は、当該データ処理コンポーネントに定義された単位処理の実行を指示するためのexecuteメソッド22("execute()")を備える。文書要約や文書マージと言った個別具体的な単位処理のクラスは、このデータ処理コンポーネントクラス20を継承する子孫クラスとして実現される。個別具体的な単位処理のオブジェクトのexecuteメソッド22を呼び出すことで、そのオブジェクトにその単位処理を実行させることができる。本実施形態のシステムでは、このような個別具体的な単位処理のデータ処理コンポーネントを、インターネット3等のネットワークを跨いで連携させることで、クライアント2に提供するサービスのための一連のデータ処理を実現する。なお、データ処理コンポーネントクラス20やその子孫の個別具体的な処理用のコンポーネントのクラスは、executeメソッド22以外のメソッドを有していても構わない。
データ処理コンポーネントクラス20及びその子孫クラスである個別具体的な処理コンポーネントのクラスは、処理対象となる入力データとして後述する入力側HTTPケイパブル(capable)クラス30(或いはその子孫クラス)のオブジェクトを取り、処理結果として後述する出力HTTPケイパブルクラス40のオブジェクトを出力するよう構成される。それらのクラスは、データストリームの入出力のための機能(メソッド)は持たなくてよい。
処理制御部クラス10は、それら複数のデータ処理コンポーネントの連携を制御するオブジェクトのクラスであり、例えばJava(登録商標)のサーブレットとして実装することができる。処理制御部クラス10の主たる役割は、クライアント2や他のホスト1から指示された処理に対応するデータ処理コンポーネントのオブジェクトを起動して、その処理を実行させることである。処理制御部クラス10は、evalメソッド12("eval()")とpipeメソッド14("pipe()")を有する。
evalメソッド12は、当該ホスト1上の処理制御部クラス10のオブジェクトをクライアント2や他のホスト1が呼び出す際に用いるメソッドであり、このメソッドの引数には、当該ホスト1に実行させたい処理の内容を示す情報、例えば個別具体的なデータ処理コンポーネントの識別名やそのコンポーネントに与える処理パラメータなどが含まれる。また、複数のデータ処理コンポーネントの処理の順序を示したスクリプトや、そのスクリプトの識別情報などをevalメソッド12の引数に指定することもできる。後者の場合、処理制御部クラス10のオブジェクトは、そのスクリプトの識別情報に対応するスクリプト実体データを当該ホスト1内又はネットワーク上に存在するスクリプトサーバから取得して利用する。
pipeメソッド14は、あるホスト1上のデータ処理コンポーネントの処理結果をインターネット20等のネットワークを介して別のホスト1上のデータ処理コンポーネントに受け渡すためのメソッドである。ネットワークを介したデータの受け渡しには、様々な通信プロトコルが利用可能であるが、以下では一例としてHTTPを用いる場合の例を説明する。
ネットワーク経由のデータの受け渡しには、例えば、次の2つの方式が考えられる。一つは、プッシュ方式であり、処理を実行した前段のホスト1がその次の処理の実行要求を示すHTTPリクエストを後段のホスト1へと送り、前段のホスト1の処理結果のデータ(すなわち後段のホスト1の処理対象データ)をそのHTTPリクエストのストリームを介して転送する。もう一つは、プル方式であり、後段の処理を実行するホストが前段の処理を実行したホストに処理対象データを要求するHTTPリクエストを送り、このリクエストに対するHTTPレスポンスで前段のホストがその処理結果のデータを後段のホストへと転送する。本実施形態では、これら2つの方式のどちらを採用することもできる。pipeメソッド14は、上記2つの方式のうちから選んだ1つの方式でのデータ転送を実現するために呼び出される。例えば、プッシュ方式の場合は、前段の処理を実行したホスト1が後段の処理を実行するホスト1に送るHTTPリクエストにて、その後段のホスト1の処理制御部クラス10のpipeメソッド14を呼び出す。プル方式の場合は、後段のホスト1が前段のホスト1に処理結果のデータを要求するHTTPリクエストにて、前段のホスト1の処理制御部クラス10のpipeメソッド14を呼び出す。なお、1つのシステムで上記2つの方式の両方を許容する場合は、方式ごとに異なるメソッドを用意すればよい。
なお、pipeメソッド14そのものは、HTTPリクエスト(及びプル方式の場合は更にHTTPレスポンス)を発行する機能を備えていればよく、データ処理コンポーネントの処理結果をHTTPストリームとして送信したり受信したりする機能は持たなくてもよい。そのようなストリームの送信及び受信の機能は、後で詳述する出力側HTTPケイパブルクラス40及び入力側HTTPケイパブルクラス30がそれぞれ備えている。
なお、処理制御部クラス10は、evalメソッド12やpipeメソッド14以外のメソッドを有していても構わない。
この例では、ネットワークを跨ったデータの転送機能を処理制御部クラス10のpipeメソッド14として構成したが、この代わりに処理制御部クラス10とは別のパイプラインクラスを定義し、ネットワークを跨ったデータの転送機能をこのパイプラインクラスのオブジェクトに実行させるようにしてもよい。
出力側HTTPケイパブルクラス40は、データ処理コンポーネントの出力する処理結果データを保持し、保持したデータをHTTPストリーム経由で出力する機能を備えたオブジェクトのクラスである。本実施形態のデータ処理コンポーネントクラス20又はその子孫クラスのオブジェクトは、当該オブジェクトのデータ処理の結果として、この出力側HTTPケイパブルクラス40のオブジェクト(出力側HTTPケイパブルオブジェクトと呼ぶ)を出力する。すなわち、データ処理コンポーネントオブジェクトが処理結果として出力する出力側HTTPケイパブルオブジェクトは、データ処理コンポーネントオブジェクトの処理結果データを保持している。この処理結果データには、HTTPのヘッダ情報又はボディ情報又はその両方が含まれる。出力側HTTPケイパブルクラス40は、HTTPのヘッダ情報の出力するためのoutputHeaderメソッド42("outputHeader()")と、HTTPのボディ情報を出力するためのoutputBodyメソッド44("outputBody()")とを有する。outputHeaderメソッド42及びoutputBodyメソッド44は、それらHTTPヘッダ及びHTTPボディのデータの出力先となるデータ出力ストリーム(の識別名)を引数にとる。他の装置やプログラム、オブジェクトは、データ出力ストリームを引数として出力側HTTPケイパブルオブジェクトのoutputHeaderメソッド42を呼び出すことで、その出力側HTTPケイパブルオブジェクトが持つデータ(すなわち当該オブジェクトを生成したデータ処理コンポーネントオブジェクトの処理結果)のうちのHTTPヘッダを、そのオブジェクトからデータ出力ストリーム上に出力させることができる。同様に、出力側HTTPケイパブルオブジェクトのoutputBodyメソッド44をデータ出力ストリームを引数として呼び出せば、そのオブジェクトが持つHTTPボディのデータをデータ出力ストリームに出力させることができる。
なお、以上ではデータ出力コンポーネントは処理結果として出力側HTTPケイパブルクラス40のオブジェクトを出力するとしたが、これに限らず、出力側HTTPケイパブルクラス40を継承する子孫クラスを処理結果として出力するようにしてもよい。以下では、特に区別する必要がない限り、子孫クラスのオブジェクトも出力側HTTPケイパブルオブジェクトと呼ぶ。
入力側HTTPケイパブルクラス30は、データ処理コンポーネントに対しインターネット3等のネットワーク経由でHTTPストリームとして送られてくるデータの受け皿となるオブジェクトのクラスである。すなわちクラス30は、HTTPストリームとして送られてくるデータ処理コンポーネントへの入力データを、データ処理コンポーネントに代わって受信して保持するオブジェクトのクラスである。入力側HTTPケイパブルクラス30は、constructor(コンストラクタ)メソッド32("constructor()")を有する。constructorメソッド32は、入力側HTTPケイパブルクラス30のオブジェクト(以下、入力側HTTPケイパブルオブジェクトと呼ぶ)を生成するためのメソッドである。constructorメソッド32は、データ入力ストリームを引数にとる。他の装置やプログラム、オブジェクトは、データ入力ストリームを引数として入力側HTTPケイパブルクラス30のconstructorメソッド32を呼び出すことで、入力側HTTPケイパブルオブジェクトを生成することができる。生成された入力側HTTPケイパブルオブジェクトは、そのデータ入力ストリームからデータをHTTPに従って受け取り、当該オブジェクト内に格納する。データ処理コンポーネントは、この入力側HTTPケイパブルオブジェクトを引数として受け取ることで、そのオブジェクトに保持されたデータを取得し、そのデータに対して当該コンポーネントの処理を施すことができる。
なお、以上ではネットワーク経由で送られてくる処理対象のデータが入力側HTTPケイパブルクラス30のオブジェクトにより受信されるとしたが、これに限らず、入力側HTTPケイパブルクラス30を継承する子孫クラスのオブジェクトにより受信されるようにすることもできる。以下では、特に区別する必要がない限り、子孫クラスのオブジェクトも入力側HTTPケイパブルオブジェクトと呼ぶ。
なお、以上に説明したクラス30及び40の名称における「HTTPケイパブル」という用語は、そのクラスがHTTPストリームに対するデータの出力又はHTTPストリームからのデータの入力が可能で、データをHTTPに準拠した形で保持できるということを意味する。HTTPケイパブルクラス50のオブジェクトは、HTTP要求を読み出して所定のデータ型に応じてデータを解析して保持し、自身が保持するデータから必要に応じてHTTPストリームを再現できると言う意味で、HTTPリクエストをカプセル化したものである。特許文献3の技術におけるコンテキストオブジェクトはHTTPリクエストをカプセル化したものではあるが、それはHTTPリクエストのプロパティをカプセル化したに過ぎず、コンポーネントの処理対象又は処理結果となるデータを含むとは限らないし、またそのようなデータをHTTPストリームとして再現する機能は持たない。
また、入力側HTTPケイパブルクラス30及び出力側HTTPケイパブルクラス40又はそれらの子孫クラスは、上述したメソッド以外のメソッドを備えていても構わない。
また、以上の例では入力側HTTPケイパブルクラス30と出力側HTTPケイパブルクラス40の2つのクラスを用意したが、この代わりに、上述のconstructorメソッド32、outputHeaderメソッド42及びoutputBodyメソッド44を全て備えた、図3に示すようなHTTPケイパブルクラス50を用意してもよい。HTTPケイパブルクラス50又はその子孫クラスのオブジェクトは、上述の入力側HTTPケイパブルオブジェクト及び出力側HTTPケイパブルオブジェクトの両方の機能を果たすことができる。
以上、連携処理システムを構成するホスト1のソフトウエア構成について説明した。ホスト1のハードウエア構成は、一般的な汎用コンピュータと同様のものでよい。
次に、複数のホスト1上のデータ処理コンポーネント同士の連携処理の流れを説明する。前述のように、連携処理は、データ処理コンポーネントの処理結果(連携処理全体で見れば中間処理結果)をネットワーク経由で他のデータ処理コンポーネントへと渡す方式により、プッシュ方式とプル方式の2つの方式に大別できる。まず、プッシュ方式の場合の連携処理について説明する。
図4は、第1ホスト1−1上のデータ処理コンポーネント(オブジェクト)20−1の処理結果を、リモートの第2ホスト1−2上の別のデータ処理コンポーネント20−2に、HTTPリクエストによるプッシュ方式で受け渡す場合の連携処理の流れを説明する図である。以下、この流れを順に説明する。
1.まずクライアント2又は他のホスト1等の外部装置から、処理を要求するHTTPリクエストReq1が到来する。このHTTPリクエストReq1は、例えばリクエスト送信側の装置にて次のようなURLから生成される。
http://host1.domain/Evaluator?method=eval&script=script1.groovy…(1)
このURLにおいて、"host1"は第1ホスト1−1のホスト名、"domain"はそのホスト1−1が存在するドメインの名前、"Evaluator"は処理制御部クラス10のクラス名である。また、クエリ部("?"以降)における"method=eval"は呼び出すメソッド12"eval"を示し、"&script=script1.groovy"はそのevalメソッド12が処理するスクリプトの名前script1.groovyを示す。
このようなURLに対応するHTTPリクエストReq1を受け取った第1ホスト1−1では、処理制御部クラス10のオブジェクトである第1処理制御部10−1が生成される。そして、第1処理制御部10−1のevalメソッド12が、リクエストReq1中で指定されたスクリプト名に対応するスクリプトを第1ホスト1−1又はネットワーク上のスクリプトサーバから取得し、そのスクリプトに示される命令を順に処理していく。スクリプト記述の具体例を以下に示す。
id0 = Component1.execute(url1); …(2)
id1 = Evaluator.eval(host1, "scriptA.groovy", id0) … (3)
id2 = Evaluator.eval(host2, "scriptB.groovy", id1) … (4)
このスクリプト記述は、(2), (3), (4)の3つの式からなるものであり、第1ホスト1−1(ホスト名が"host0"であるとする)の第1処理制御部10−1のevalメソッド12により実行されるスクリプトの一部である。第2ホスト1−2のホスト名を"host1"とし、図4には図示しない第3のホストのホスト名を"host2"とする。"Component1"は第1データ処理コンポーネント20−1のクラス名であり、"Evaluator"は処理制御部クラス10のクラス名である。例えば(2)式は、第1ホスト1−1内の第1データ処理コンポーネント20−1に、"url1"に示されるURLから入手できるデータを処理対象として処理を実行させることを示す。そのコンポーネント20−1の処理結果である第1HTTPケイパブルオブジェクト40aの識別子が変数"id0"にセットされる。また(3)式の命令は、第2ホスト"host1"に対し、スクリプト"scriptA.groovy"を、"id0"で示されるオブジェクト40aを引数として実行させ、その実行の結果(すなわちそのスクリプトに示される一連のデータ処理コンポーネント群の最終処理結果)である出力側HTTPケイパブルオブジェクトの識別子を変数"id1"にセットする旨の指示を示している。次の(4)式の命令は、この"id1"が示す処理結果を処理対象データとして、第3ホスト"host2"が、スクリプト"scriptB.groovy"を実行することを示している。
スクリプトには、反復や条件分岐などの制御構造を記述することもできるが、ここでは説明を省略する。スクリプトを用いた複数のデータ処理コンポーネント間での連携処理については、本願と同時係属中の特願2004−321445号(2004年11月5日出願)に詳しく説明されており、参照のためその出願の明細書、特許請求の範囲、図面、及び要約書をここに組み込むものとする。
このようにスクリプト中の各命令は、起動するデータ処理コンポーネントと、そのデータ処理コンポーネントに対する入力データを示す引数とを含んでいる。したがって、スクリプト中の命令を順に実行していく過程で、第1処理制御部10−1は、命令に示されるデータ処理コンポーネント(第1データ処理コンポーネント20−1)を起動(すなわちインスタンス生成)し、そのコンポーネントに処理を実行させることになる。
以上では、HTTPリクエストReq1に、第1ホスト1−1が実行すべきスクリプトが指定されている例を示したが、リクエストReq1には、スクリプトの代わりに、第1ホスト1−1が実行すべき単位処理(この例では第1データ処理コンポーネント20−1)が指定されてもよい。
2.第1処理制御部10−1が起動するデータ処理コンポーネントが処理対象のデータを必要とするものである場合、そのコンポーネントの起動の前にその処理対象のデータを入手し、そのコンポーネントに入力可能な形にする必要がある。このため第1処理制御部10−1の第1パイプライン処理部14−1は、HTTPリクエストReq1に対応する入力データの受け皿として、入力側HTTPケイパブルクラス30又はHTTPケイパブルクラス50のオブジェクトである第0HTTPケイパブルオブジェクト30aを生成する。第1パイプライン処理部14−1は、pipeメソッド14の機能を実行するプログラムモジュールである。
第1データ処理コンポーネント20−1への入力データは、例えば外部装置からのHTTPリクエストReq1中に含まれる。ここで、HTTPリクエストReq1中の、例えば上述のURL例(1)におけるメソッド名やその引数のスクリプト名の後にその入力データの実体が続く場合、第1パイプライン処理部14−1は、そのHTTPリクエストReq1により形成されたHTTPストリームのストリーム名を引数として、constructorメソッド32を呼び出すことで、第0HTTPケイパブルオブジェクト30aを生成することができる。生成された第0HTTPケイパブルオブジェクト30aは、そのHTTPストリームのデータ(より厳密には上述のメソッド名やその引数の後に続くデータ部分)を受信し、それを保持する。HTTPリクエストReq1中に含まれるのが入力データの実体ではなく参照(例えばその入力データのURL)である場合は、第1パイプライン処理部14−1は、その参照が示すデータ源に対して入力データを要求するHTTPリクエストを発し、これに対するデータ源からのレスポンスのHTTPストリームを引数としてconstructorメソッド32を呼び出し、第0HTTPケイパブルオブジェクト30aを生成する。また、データ処理コンポーネントへの入力データへの参照が、スクリプト中の命令の中に、メソッドの引数として記述される場合もあるが、この場合も同様に、第1パイプライン処理部14−1がその参照が示すデータを要求するHTTPリクエストを発行し、これに対するレスポンスを受け取るオブジェクト30aを生成すればよい。
3.第0HTTPケイパブルオブジェクト30aが生成されると、第1処理制御部10−1は、そのオブジェクト30aのデータを処理すべき第1データ処理コンポーネント20−1のexecuteメソッド22を、そのオブジェクト30aの識別子を引数として呼び出すことにより、第1データ処理コンポーネント20−1を起動する。
4.起動された第1データ処理コンポーネント20−1は、第0HTTPケイパブルオブジェクト30aが保持するデータを受け取り、このデータに対して処理を施す。
5.そして第1データ処理コンポーネント20−1は、その処理の結果のデータを保持した第1HTTPケイパブルオブジェクト40aを出力する。このオブジェクト40aは、出力側HTTPケイパブルクラス40又はHTTPケイパブルクラス50のオブジェクトである。一例として、この出力処理は、第1データ処理コンポーネント20−1が、自身のデータ出力ストリームを引数としてconstructorメソッド32を呼び出すことで実現することができる。
6.第1データ処理コンポーネント20−1は、自身の処理を実行すると、その処理結果のステータスを含んだ応答を第1処理制御部10−1に返す。処理が成功した場合、その応答には、そのコンポーネント20−1が出力した第1HTTPケイパブルオブジェクト40aの識別子が含まれる。
7.第1処理制御部10−1が実行しているスクリプトの中に、第1データ処理コンポーネント20−1の実行命令の次に第2ホスト10−2上で実行されるスクリプトの実行命令が記述されていた場合(例えば上記(3)式)、或いは第2ホスト10−2上の第2データ処理コンポーネント20−2の実行命令が記述されていた場合、第1処理制御部10−1は第1パイプライン処理部14−1に対し、第2ホスト10−2への処理要求発行を指示する。これを受けた第1パイプライン処理部14−1は、第2データ処理コンポーネント20−2の実行を第2ホスト10−2の第2パイプライン処理部14−2に対して要求するHTTPリクエストReq2を発行する。例えば上記(3)式を実行する場合には、第1処理制御部10−1は、その式に示される宛先ホスト名及びスクリプト名を含んだ、第2ホスト10−2宛のHTTPリクエストReq2を作成し、発行する。
8.また第1パイプライン処理部14−1は、HTTPリクエストReq2の発行により形成されたHTTPストリーム60を引数として第1HTTPケイパブルオブジェクト40a(これは、(2),(3)式において変数"id0"で示される)のoutputHeaderメソッド42及びoutputBodyメソッド44を順に、或いはそれらメソッド42又は44の一方を呼び出すことで、第1HTTPケイパブルオブジェクト40aにデータ出力を指示する。
9.この出力指示に応じ、第1HTTPケイパブルオブジェクト40aは、自身が保持するデータをHTTPストリーム60へと出力する。
10.一方、第2ホスト10−2は、第1ホスト10−1からのHTTPリクエストReq2に応じ、上述のパイプライン機能を果たす第2パイプライン処理部14−2を備えた第2処理制御部10−2を起動する。そして、第2パイプライン処理部14−2は、HTTPストリーム60を引数としてconstructorメソッド32を呼び出すことで、入力側HTTPケイパブルクラス30又はHTTPケイパブルクラス50の第2HTTPケイパブルオブジェクト30bを生成する。生成された第2HTTPケイパブルオブジェクト30bは、HTTPストリーム60から入力されるデータ(HTTPヘッダ又はHTTPボディ又はその両方)を取得し、保持する。この処理により生成される第2HTTPケイパブルオブジェクト30bは、第1ホスト1−1上の第1HTTPケイパブルオブジェクト40aのレプリカ(複製物)となる。
11.第2HTTPケイパブルオブジェクト30bの生成が成功すると、第2処理制御部10−2は、第2HTTPケイパブルオブジェクト30bを入力データとして、リクエストReq2で指定されたスクリプトを実行する。例えば、そのスクリプトの中での最初の処理が、そのオブジェクト30bを引数とした第2データ処理コンポーネント20−2の実行である場合、第2処理制御部10−2は、オブジェクト30bの識別子を引数として第2データ処理コンポーネント20−2を起動する。
12.起動された第2データ処理コンポーネント20−2は、オブジェクト30bが保持するデータを取得し、このデータに対して当該コンポーネント20−2自身の処理を施す。
13.第2データ処理コンポーネント20−2は、その処理の結果を、出力側HTTPケイパブルクラス40又はHTTPケイパブルクラス50の第3HTTPケイパブルオブジェクト40bとして出力する。また、第2データ処理コンポーネント20−2は、第2処理制御部10−2に対し、このオブジェクト40bの識別子を返す。
この後、オブジェクト40bの持つデータは、そのデータに対して処理を施す後続のデータ処理コンポーネントに渡される。後続のデータ処理コンポーネントが、HTTPリクエストReq2を発行した第1ホスト10−1上にある場合は、そのHTTPリクエストReq2に対するHTTPレスポンスのストリームに乗せて、そのオブジェクト40bの持つデータが第1ホスト10−1に返される。また、後続のデータ処理コンポーネントがその他のホストである場合は、上述と同様、そのホストのパイプライン処理部に対してHTTPリクエストを発行し、そのHTTPのストリームを介してオブジェクト40bのデータを転送すればよい。
以上、データ処理コンポーネントの処理結果を、第1ホスト10−1と第2ホスト10−2との間でプッシュ方式で受け渡す場合の処理の流れを説明した。次に、その受け渡しをプル方式で行う場合の流れを、図5を参照して説明する。
プル方式では、ホスト1−1と1−2の間でやりとりされるHTTPリクエストに2つの種類がある。すなわち、ある処理を実行した第1ホスト1−1から、その次の処理を実行する第2ホスト1−2に後続の処理の実行を要求するHTTPリクエストReq4(処理要求リクエストと呼ぶ)と、当該後続の処理の対象データ(すなわち第1ホスト1−1の処理結果)を第2ホスト1−2から第1ホスト1−1に要求するHTTPリクエストReq5(データ要求リクエスト)の2種類である。処理実行を要求するリクエストReq4には、宛先のホストが実行すべきスクリプト又はデータ処理コンポーネントの指定と、その対象データへの参照(例えば、その対象データを持つ出力側HTTPケイパブルオブジェクトの識別子)とが含まれ、その対象データの実体は含まれない。対象データを要求するリクエストReq5は、その参照の情報を含む。
以下、プル方式の場合の連携処理の流れを順に説明する。プル方式は、データ処理コンポーネント間の処理結果の受け渡しの流れはプッシュ方式と異なるが、他の部分はプッシュ方式と類似しているので、以下ではプッシュ方式の場合と重複する説明は適宜省略する。
1.まず第1ホスト10−1に対して外部装置(クライアント2又は他のホスト1)から処理を要求するHTTPリクエストReq3が到来する。この処理要求リクエストReq3には、第1ホスト1−1が処理すべきスクリプト、又は第1ホスト1−1が実行すべきデータ処理コンポーネントを特定する情報が含まれる。
2.リクエストReq3中のスクリプト又は実行すべきデータ処理コンポーネントの指定に従い、第1処理制御部10−1は第1データ処理コンポーネント20−1を起動して処理を実行させる。図示は省略したが、第1データ処理コンポーネント20−1が処理対象データを必要とし、その処理対象データを指す参照情報がリクエストReq3中に含まれている場合は、プッシュ方式の場合と同様第1処理制御部10−1は、その参照情報が示すデータ源からその処理対象データを取得してこれを入力側HTTPケイパブルオブジェクトに格納し、第1データ処理コンポーネント20−2を、この入力側HTTPケイパブルオブジェクトを引数として起動する。
3.第1データ処理コンポーネント20−1の処理結果は、出力側HTTPケイパブルオブジェクトである第1HTTPケイパブルオブジェクト40aとして出力される。
4.第1データ処理コンポーネント20−1は、処理を実行すると、その処理結果である第1HTTPケイパブルオブジェクト40aの識別子を含んだ応答を第1処理制御部10−1に返す。
5.第1データ処理コンポーネント20−1の次に、第2ホスト10−2上の第2データ処理コンポーネント20−2を実行する必要がある場合、第1処理制御部10−1は、その処理コンポーネントの実行を指示するHTTPリクエストReq4を発行する。第2データ処理コンポーネント20−2が処理対象のデータを特定できるようにするために、このHTTPリクエストReq4には、第1HTTPケイパブルオブジェクト40aの識別子、又は第1データ処理コンポーネント10−1(インスタンスオブジェクト)の識別情報などの情報が、引数として含まれる。
6.HTTPリクエストReq4を受け取った第2ホスト1−2の第2処理制御部10−2は、第2データ処理コンポーネント20−2を起動する前に、第2パイプライン処理部14−2により、そのコンポーネントの処理対象データを要求するHTTPリクエストReq5を第1ホスト1−1へと送る。このHTTPリクエストReq5には、処理対象データを特定する識別情報が含まれる。この識別情報はHTTPリクエストReq4から求められる。
7.HTTPリクエストReq5を受け取った第1ホスト1−1の第1パイプライン処理部14−1は、そのリクエストReq5に対するHTTPレスポンスRes1を第2パイプライン処理部14−2へと返す。
8.次に第1パイプライン処理部14−1は、HTTPリクエストReq5に含まれる識別情報に対応する第1HTTPケイパブルオブジェクト40aを特定し、HTTPレスポンスRes1のHTTPストリーム70を引数としてそのオブジェクト40aのoutputHeaderメソッド42又はoutputBodyメソッド44又はその両方を呼び出すことで、第1HTTPケイパブルオブジェクト40aにデータ出力を指示する。
9.この出力指示に応じ、第1HTTPケイパブルオブジェクト30aは、自身が保持するデータをHTTPストリーム70へと出力する。
10.一方、第2ホスト10−2の第2パイプライン処理部14−2は、第1ホスト10−1からのHTTPレスポンスRes1に応じ、HTTPストリーム70を引数としてconstructorメソッド32を呼び出すことで、入力側HTTPケイパブルオブジェクトである第2HTTPケイパブルオブジェクト30bを生成する。生成された第2HTTPケイパブルオブジェクト30bは、HTTPストリーム70から入力されるデータを取得し、保持する。
これ以降の処理11〜13は、プッシュ方式の場合と同様でよい。
以上、データ処理コンポーネントの処理結果を異なるホスト間でネットワーク経由で受け渡すための2つの方式について説明したが、この他に同一ホスト内の別のデータコンポーネントにその処理結果を受け渡す場合もある。この場合は、図6に示すように、第1処理制御部10−1は、第1データ処理コンポーネント20−1の処理結果である第1HTTPケイパブルオブジェクト40aの識別子を引数として、その次のデータ処理コンポーネント20−3を起動すればよい。
以上説明したように、本実施形態によれば、HTTPストリームの入出力制御は入力側HTTPケイパブルオブジェクト又は出力側HTTPケイパブルオブジェクトにより実行される。これにより、単位処理を行うデータ処理コンポーネントは、単にそれらのオブジェクト型のデータを入出力できるようにプログラミングすればよくなる。すなわち、本実施形態によれば、HTTPストリームによるデータの入出力を、ストリーム型でないオブジェクト型のデータ入出力に置き換えることができるので、データ処理コンポーネントの開発が容易になり、生産性が高まる。
なお、以上の例では、各ホスト1が、データ処理コンポーネントの実行命令又は他のスクリプトの実行命令を1個以上並べたスクリプトを実行する場合の例であった。しかし、本発明は、このようなスクリプトを用いる場合に限られるものではない。例えば、ホストから他のホスト上のデータ処理コンポーネントの実行を(スクリプト経由ではなく)直接指示することもできる。この場合、スクリプトを実行する処理制御部クラス10は本質的なものではなくなる。各ホスト1には、処理制御部クラス10の代わりに、パイプライン処理部14−1,14−2の機能を実現するオブジェクトのクラスを用意すればよい。また、別の方法として、データ処理コンポーネントクラス20に、パイプライン機能を果たすpipeメソッドを組み込んでもよい。
次に、本実施形態の変形例について説明する。
まず第1の変形例について説明する。上記実施形態では特に言及しなかったが、HTTPケイパブルオブジェクトに対し(入力側も出力側も)、データ型を持たせることができる。たとえばバイナリ型のHTTPケイパブルオブジェクトは、HTTPリクエスト又はレスポンスのHTTPストリームのボディパート(HTTPボディ)(入力側の場合)、又はデータ処理コンポーネントの処理結果データ(出力側の場合)をバイナリデータとして解釈し、バイト配列として保持する。同様に、テキスト型のHTTPケイパブルオブジェクトは、HTTPストリームからの入力データ又はデータ処理コンポーネントの処理結果のデータを文字配列として保持する。また、XML(eXtensible Markup Language)型のHTTPケイパブルオブジェクトは、HTTPストリームからの入力データ又はデータ処理コンポーネントの処理結果のデータをテキストで表現されたXMLデータとして解釈し、そのXMLデータをパースし、そのパースの結果をパースツリーとして保持する。またCSV(Comma Separated Value)型のHTTPケイパブルオブジェクトは、HTTPストリームからの入力データ又はデータ処理コンポーネントの処理結果のデータをテキストデータで表現されたCSVデータとして解釈し、このCSVデータをパースし、2次元の表構造(2次元配列)として保持する。それぞれの型のHTTPケイパブルオブジェクトは、内部で保持するデータに応じたアクセスメソッドを提供する。たとえば、CSV型のHTTPケイパブルオブジェクトは、2次元配列におけるインデックスを指定して該当するデータにアクセスするようなメソッドを提供する。
このようにデータ型ごとに異なるように実現されたHTTPケイパブルオブジェクトをあつかうために、第1の変形例では、出力側HTTPケイパブルオブジェクトのヘッダ出力メソッド"outputHeader"は、そのオブジェクト自身のデータ型をHTTPリクエスト又はレスポンスのヘッダのHTTPエンティティタイプ(ヘッダ属性ContentTypeの値部分。MIME(Multipurpose Internet Mail Extensions)のメディアタイプ)として出力するようにする。また、図7に示すように、ホスト(図7では代表として第2ホスト1−2を示す)にHTTPケイパブルファクトリ35を持たせる。HTTPケイパブルファクトリ35は、受信したHTTPストリームのヘッダ情報に含まれるHTTPエンティティタイプを解析し、指定されたデータ型の入力側HTTPケイパブルオブジェクトのコンストラクタ(constructor)メソッドを起動する。これにより、出力側の第1HTTPケイパブルオブジェクト40aと同じデータ型であることが保証されている第2HTTPケイパブルオブジェクト30bを生成することができ、このオブジェクト30bを第2データ処理コンポーネント20−2の引数とすることができる。
次に第2の変形例について説明する。
上記第1の変形例では、受け側のホスト1のHTTPケイパブルファクトリ35が、送り側のホスト1の出力側HTTPケイパブルオブジェクトのデータ型と同じデータ型の入力側HTTPケイパブルオブジェクトを生成していた。ところが、送り側の第1データ処理コンポーネント20−1が処理結果として出力するオブジェクトのデータ型と、第1データ処理コンポーネント20−1の処理結果を利用する第2データ処理コンポーネント20−2が入力として受け入れるオブジェクトのデータ型とが一致するとは限らない。例えば、XMLデータは、単なるテキストデータ(文字配列)として解釈することも、またバイナリデータ(バイト配列)として解釈することもできる。したがってXML型HTTPケイパブルオブジェクトから送信されたデータは、XML型HTTPケイパブルオブジェクトで受信することができるのはもちろんのこと、テキスト型やバイナリ型のHTTPケイパブルオブジェクトで受信して処理することもできる。このように、前段と後段のデータ処理コンポーネントの間でデータ型が一致しない場合でも、データ処理コンポーネント間でデータを受け渡して連携処理することが可能な場合がある。
このような場合に、この第2の変形例では、HTTPケイパブルオブジェクトのデータ型の変換(キャスト)を行う。このための機能ブロックは、図7に示した第1の変形例のものと同様である。ただし、第2パイプライン処理部14−2の機能が第1の変形例の場合と異なる。
すなわち、第2の変形例では、第2ホスト1−2の第2パイプライン処理部14−2は、第2HTTPケイパブルオブジェクト30bを生成しようとする際、そのオブジェクト30bを処理する第2データ処理コンポーネント20−2又はそのコンポーネント20−2を起動して制御する第2処理制御部10−2に対し、該コンポーネント20−2が要求する引数(入力側HTTPケイパブルオブジェクト)のデータ型を問い合わせる。これには例えばJava(登録商標)のAPI(Application Programming Interface)の一つであるreflectionを用いることができる。そして第2パイプライン処理部14−2は、この問合せによって得たデータ型をHTTPケイパブルファクトリ35に指定する。これより、HTTPケイパブルファクトリ35は、他のホストからのHTTPリクエスト又はレスポンスから得られるエンティティタイプに変えて、第2パイプライン処理部14−2から指定されたデータ型を持つ第2HTTPケイパブルオブジェクト30bを生成し、第2データ処理コンポーネント20−2の引数とする。
なお、キャストが可能なデータ型同士の関係は決まっており、そのような関係に合致する場合にのみ上記のキャスト処理を行うものとする。
次に第3の変形例について説明する。
この第3の変形例は、図5に示したプル方式の実施例の変形例である。この変形例では、図8に示すように、各ホスト1(図では第2ホスト1−2を代表として示す)は、入力側HTTPケイパブルオブジェクトを一時的に保存するキャッシュ80を備える。
第2パイプライン処理部14−2は、第1ホスト1−1からのHTTPレスポンスから第1HTTPケイパブルオブジェクト40a(図5参照)のレプリカである第2HTTPケイパブルオブジェクト30bを生成すると、そのオブジェクト30bをそのオブジェクト30bを、ID82と対応づけてキャッシュ80に登録する。キャッシュ80としては、例えば、Java(登録商標)のハッシュマップ(HashMap)クラスのオブジェクトを用いることができる。ID82は、キャッシュしたオブジェクト30bの元である第1HTTPケイパブルオブジェクト40aを一意的に特定する識別情報である。ID82としては、例えば第1HTTPケイパブルオブジェクト40aのURLやURI(Uniform Resource Identifier)を用いることが好適であるが、これに限られるものではない。
図5の実施例では、第2パイプライン処理部14−2は、第2データ処理コンポーネント20−2の処理対象データが必要になった場合、その処理対象データを保持した第1HTTPケイパブルオブジェクト40aを取得するHTTPリクエストReq5を発行した。これに対し、この第3の変形例では、第2パイプライン処理部14−2は、HTTPリクエストReq5を発行する前に、キャッシュ80を検索し、そのオブジェクト40aのレプリカ(オブジェクト30b)が存在するかどうかを調べる。この処理では、URL等のオブジェクト40aのID82をキーとしてキャッシュ80内を検索する。取得しようとするオブジェクト40aのIDは、HTTPリクエストReq5を生成するために必要なものなので、第2パイプライン処理部14−2はそれを知っており、そのIDを用いて検索ができる。この検索で取得対象のオブジェクトのIDに対応するオブジェクト30bがキャッシュ80から見つかれば(キャッシュ・ヒット)、第2パイプライン処理部14−2は、そのオブジェクト30bを引数として第2データ処理コンポーネント20−2を起動する。一方、キャッシュ80がヒットしなれば、第2パイプライン処理部14−2は、オブジェクト40aを要求するHTTPリクエストReq5を第1ホスト1−1へと発行し、オブジェクト40aのレプリカ生成を行う(図5参照)。
なお、キャッシュ80は、例えばLRU(Last Recently Used)方式などの既存のキャッシュ保守方式に従い、久しく使われないオブジェクトを削除するなどの保守を行うことも好適である。
この変形例によれば、あるホスト(第1ホストと呼ぶ)があるデータ処理コンポーネント(第1コンポーネントと呼ぶ)のために他のホストから取得したデータが、再度その第1コンポーネント又は第1ホスト内の他のデータ処理コンポーネントで使用される場合、キャッシュ80からそのデータを取得できるので、処理の速度を向上させることができる。
また、従来のように各データ処理コンポーネントの処理結果を入出力のストリームを介して受け渡したのでは、各コンポーネントごとの処理結果がコンピュータ装置上に残らないため、デバッグなどの様に、途中の処理結果を調べたい場合には不十分であったのに対し、第3の変形例では、キャッシュ80に処理結果が残るので、途中の処理結果を調べたい場合などに有益な情報を提供できる。
次に第4の変形例について、図9を参照して説明する。
上記第3の変形例において、第2データ処理コンポーネント20−2(図8参照)のために取得されキャッシュ80に保持されたオブジェクト30bが、後で別のデータ処理コンポーネント20−4に再利用される場合を考える。このような場合、引数とするオブジェクトのデータ型がコンポーネント20−2と20−4とで異なる場合が生じ得る。このような場合に対応するため第4の変形例では、ホスト1にコンバータファクトリ90を設けた。コンバータファクトリ90は、データ型変換のためのコンバータプログラムを複数種類備えると共に、それら各コンバータプログラムがどのようなデータ型変換に使用できるかを示す変換表を備える。変換表の一例を以下に示す。
[表1]
入力型 出力型 コンバータ
text/xml text/html XSLTranslater
text/html text/csv HTMLTableConverter
text/xml text/csv XMLTableConverter
この表において、「入力型」はコンバータへの入力(すなわちキャッシュ80内のオブジェクト)のデータ型を、「出力型」はコンバータの出力(すなわちそのオブジェクトをこれから使用しようとするデータ処理コンポーネントの引数のデータ型)を示す。そして、「コンバータ」は、「入力型」を「出力型」に変換するコンバータプログラムの識別名である。例えばHTMLTableConverterは、HTMLのデータを解析し、Table要素を取り出して解釈して表を作成し、その表をCSV形式で出力するコンバータである。HTMLのTable要素からのCSVの作成は、それを行う既存のアプリケーション(HC95 http://www.smfknife.com/ht/hc95.php 等)を利用することで可能である。XMLTableConverterもこれと同様である。
第2パイプライン処理部14−2は、データ処理コンポーネント20−4の処理に用いるデータとして、キャッシュ80から第2HTTPケイパブルオブジェクト30bを見つけた場合、そのコンポーネント20−4の待ち受けデータ型(引数のデータ型)をそのコンポーネント20−4自身又は第2処理制御部10−2に問合せる。そして、オブジェクト30bのデータ型を入力型とし、データ処理コンポーネント20−4の引数のデータ型を出力型とするコンバータを変換表から特定する。そして、そのコンバータを起動することで、データ処理コンポーネント20−4の入力データ型に適合した第3HTTPケイパブルオブジェクト30cをオブジェクト30bから生成し、そのオブジェクト30cをデータ処理コンポーネント20−4の引数とする。
第4の変形例の使用例として、次のようなものが考えられる。すなわち、XML(text/xml)のデータを、XSLT(Extensible Stylesheet Language Transformations)のスタイルを指定して、XSLプロセッサでHTML(text/html)データに変換することは良く知られている。キャッシュ80内のオブジェクト30bのデータ型がtext/xmlであって、データ処理コンポーネント20−4の待ち受けデータ型がtext/htmlであれば、コンバータファクトリ90は、上記変換表から"XSLTranslater"というコンバータを引き当て、そのコンバータを用いてオブジェクト30cを得る。
従来、データ実体のシグニチャ(データ処理コンポーネントが入力、あるいは出力するデータのタイプと並び)が異なるデータ処理コンポーネント同士の間でデータを受け渡した場合、後段のデータ処理コンポーネントでタイプミスマッチが発生し、連携できなかった。これに対し、第4変形例では、前後のコンポーネント同士のシグニチャの組合せが、コンバータファクトリ90で変換可能なものであれば、それらコンポーネント同士の連携処理が可能となる。
上記第3及び第4の変形例では各ホスト1にキャッシュ80を設けたが、この代わりにキャッシュ80の機能を持つキャッシュサーバを、ネットワーク上に設けるようにすることも可能である。この場合、ホスト1からキャッシュサーバへと上述のプッシュ方式でデータ転送を行うことで、ホスト1内のデータ処理コンポーネントの処理結果である出力側HTTPケイパブルオブジェクトのレプリカをキャッシュサーバに送信する。キャッシュサーバは、その出力側HTTPケイパブルオブジェクトのIDと対応づけてそのレプリカを保存する。また、ホスト1のパイプライン処理部1は、ホスト1内のデータ処理コンポーネントの処理対象データが必要となった場合、まずキャッシュサーバからのデータ取得を試み、それに失敗した場合に、その処理対象データを持つホスト1から取得を行う。
以上では、ホスト間のデータの受け渡しにHTTPを用いる例を示したが、本発明は、HTTPに限らず、ホスト間のデータをストリームとして受け渡すプロトコル全般に適用可能である。
以上に説明した実施形態及びその変形例は、本発明の実施例の一例に過ぎない。本発明の技術的思想の範囲内で、この他にも様々な変形が可能である。
本発明が適用されるネットワークシステムの概要を示す図である。 システムを構成する各ホストコンピュータが持つプログラムモジュール群の構成の例を示す図である。 システムを構成する各ホストコンピュータが持つプログラムモジュール群の構成の別の例を示す図である。 中間処理結果をプッシュ方式で受け渡す場合の連携処理の流れを説明する図である。 中間処理結果をプル方式で受け渡す場合の連携処理の流れを説明する図である。 同一ホスト内のデータ処理コンポーネント間での処理結果の受け渡しを説明するための図である。 第1及び第2変形例でのHTTPケイパブルオブジェクトのデータ型の制御を説明するための図である。 HTTPケイパブルオブジェクトのキャッシュを備える第3変形例のホストの構成を示す図である。 コンバータファクトリを備える第4変形例のホストの構成を示す図である。
符号の説明
1−1 第1ホスト、1−2 第2ホスト、10−1 第1処理制御部、10−2 第2処理制御部、14−1 第1パイプライン処理部、14−2 第2パイプライン処理部、20−1 第1データ処理コンポーネント、20−2 第2データ処理コンポーネント、30a 第0HTTPケイパブルオブジェクト、30b 第2HTTPケイパブルオブジェクト、40a 第1HTTPケイパブルオブジェクト、40b 第3HTTPケイパブルオブジェクト。

Claims (29)

  1. 第1のホストコンピュータ上に存在する第1のデータ処理コンポーネントであって、保持するデータをストリームへと出力する機能を備えた出力保持オブジェクト、を処理結果として出力する第1のデータ処理コンポーネントと、
    前記第1のデータ処理コンポーネントが出力した前記出力保持オブジェクトに、該出力保持オブジェクトが保持するデータを第2のホストコンピュータ宛のストリームへと出力させると共に、該ストリームを入力とする入力保持オブジェクトを該第2のホストコンピュータに生成させ、該入力保持オブジェクトに前記ストリームからのデータを格納させるパイプライン手段と、
    前記第2のホストコンピュータ上に存在する第2のデータ処理コンポーネントであって、前記入力保持オブジェクトを引数として入力して処理する第2のデータ処理コンポーネントと、
    を備える連携処理システム。
  2. 前記パイプライン手段は、前記第1のホストコンピュータ上に存在する出力側パイプ手段と、前記第2のホストコンピュータ上に存在する入力側パイプ手段と、を有し、
    前記入力側パイプ手段は、前記第2のデータ処理コンポーネントに処理を実行させる場合に、該処理のために必要なデータを保持する出力保持オブジェクトを示す識別情報を含んだデータリクエストを前記出力側パイプ手段に対して発行し、
    前記出力側パイプ手段は、前記入力側パイプ手段からの前記データリクエストに応じたレスポンスを発行し、前記データリクエスト中の識別情報に対応する前記出力保持オブジェクトにその保持するデータを該レスポンスのストリームへと出力させ、
    前記入力側パイプ手段は、前記出力側パイプ手段からのレスポンスのストリームを入力とする前記入力保持オブジェクトを生成し、該入力保持オブジェクトに前記ストリームからのデータを格納させる、
    ことを特徴とする請求項1記載の連携処理システム。
  3. 前記パイプライン手段は、入力保持オブジェクトを、該入力保持オブジェクトの元になった出力保持オブジェクトの識別情報と対応づけて保存するキャッシュ手段、を更に備え、
    前記入力側パイプ手段は、前記第2のデータ処理コンポーネントに処理を実行させる場合に、前記データリクエストを発行する前に、該処理のために必要なデータを保持する出力保持オブジェクトの識別情報に対応づけられた入力保持オブジェクトを前記キャッシュ手段から検索し、該当する入力保持オブジェクトが検索できた場合は、前記データリクエスト発行を取りやめ、検索された入力保持オブジェクトを前記第2のデータ処理コンポーネントに引数として与える、
    ことを特徴とする請求項2記載の連携処理システム。
  4. 前記パイプライン手段は、前記キャッシュ手段に保存された前記入力保持オブジェクトのデータ型と、該入力保持オブジェクトが保持するデータを処理する前記第2のデータ処理コンポーネントの入力データ型とが異なる場合に、前記入力保持オブジェクトを該入力データ型に型変換し、この型変換結果のオブジェクトを前記第2のデータ処理コンポーネントに引数として与える、
    ことを特徴とする請求項3記載の連携処理システム。
  5. 前記パイプライン手段は、前記第1のホストコンピュータ上に存在する出力側パイプ手段と、前記第2のホストコンピュータ上に存在する入力側パイプ手段と、を有し、
    前記出力側パイプ手段は、前記入力側パイプ手段に対してリクエストを発行し、前記出力保持オブジェクトに、保持するデータを該リクエストのストリームへと出力させ、
    前記入力側パイプ手段は、前記出力側パイプ手段からのリクエストのストリームを入力とする前記入力保持オブジェクトを生成し、該入力保持オブジェクトに前記ストリームからの入力データを格納させる、
    ことを特徴とする請求項1記載の連携処理システム。
  6. 前記出力保持オブジェクト及び前記入力保持オブジェクトはデータ型を有し、
    前記パイプライン手段は、前記第2のホストコンピュータ上に入力保持オブジェクトを生成するためのオブジェクトファクトリを有し、
    前記オブジェクトファクトリは、データ型の異なる複数種類の入力保持オブジェクトを生成する機能を備え、それら複数種類の入力保持オブジェクトのうち、前記出力保持オブジェクトのデータ型に対応するデータ型の入力保持オブジェクトを生成する、
    ことを特徴とする請求項1記載の連携処理システム。
  7. 前記出力保持オブジェクト及び前記入力保持オブジェクトはデータ型を有し、
    前記パイプライン手段は、前記第2のホストコンピュータ上に入力保持オブジェクトを生成するためのオブジェクトファクトリを有し、
    前記オブジェクトファクトリは、データ型の異なる複数種類の入力保持オブジェクトを生成する機能を備え、前記第2のデータ処理コンポーネントの引数のデータ型に対応するデータ型の入力保持オブジェクトを生成する、
    ことを特徴とする請求項1記載の連携処理システム。
  8. 前記入力保持オブジェクトは、入力保持オブジェクトクラス又はこれを継承する子孫クラスのインスタンスであり、
    前記入力保持オブジェクトクラスは、引数として指定されたストリームを入力とし、該ストリームから入力されるデータを保持する入力保持オブジェクトを生成するコンストラクタメソッドを備えることを特徴とする請求項1記載の連携処理システム。
  9. 前記出力保持オブジェクトは、出力保持オブジェクトクラス又はこれを継承する子孫クラスのインスタンスであり、
    前記出力保持オブジェクトクラスは、出力保持オブジェクトが保持するデータを、引数として指定されたストリームに出力するデータ出力メソッド、
    を備えることを特徴とする請求項1記載の連携処理システム。
  10. 前記出力保持オブジェクト及び前記入力保持オブジェクトは、データ保持オブジェクトクラス又はこれを継承する子孫クラスのインスタンスであり、
    前記データ保持オブジェクトクラスは、
    引数として指定されたストリームを入力とし、該ストリームから入力されるデータを保持するデータ保持オブジェクトクラスのインスタンスを前記出力保持オブジェクトとして生成するコンストラクタメソッドと、
    前記入力保持オブジェクトとしてのデータ保持オブジェクトクラスのインスタンスが保持するデータを、引数として指定されたストリームに出力するデータ出力メソッドと、
    を備えることを特徴とする請求項1記載の連携処理システム。
  11. 前記ストリームは、HTTPリクエスト又はHTTPレスポンスの発行に応じて形成されるデータストリームであることを特徴とする請求項1記載の連携処理システム。
  12. 第1のコンピュータを、
    第1の処理を実行する第1のデータ処理コンポーネントであって、前記第1の処理により得られるデータをストリームとして出力する機能を備えた出力保持オブジェクト、を前記第1の処理の結果として出力する第1のデータ処理コンポーネント、
    前記第1のデータ処理コンポーネントの前記第1の処理により得られるデータを前記コンピュータとは異なる第2のコンピュータ上の第2のデータ処理コンポーネントに対して提供して第2の処理を実行させる場合に、前記出力保持オブジェクトに対し、該出力保持オブジェクトが持つデータを、第2のホストコンピュータ宛のストリームとして出力させる出力側パイプ手段、
    として機能させるプログラム。
  13. 前記第1のコンピュータを、
    外部装置からのストリームを入力とする入力保持オブジェクトを生成し、該ストリームを介して転送されてくる入力データを該入力保持オブジェクトに格納させる入力側パイプ手段、
    前記入力保持オブジェクトを引数として前記第1のデータ処理コンポーネントに入力することにより、前記第1のデータ処理コンポーネントに前記入力データを処理させる処理指示手段、
    として更に機能させる請求項12記載のプログラム。
  14. 前記入力側パイプ手段は、前記第1のデータ処理コンポーネントに処理を実行させる場合に、該処理のために必要な原料データを示す識別情報を含んだデータリクエストを、該データを保持する前記外部装置へと送信し、該データリクエストに対するレスポンスのストリームを入力とする前記入力保持オブジェクトを生成する、ことを特徴とする請求項13記載のプログラム。
  15. 前記入力側パイプ手段は、
    生成した入力保持オブジェクトを、該入力保持オブジェクトの元になった前記原料データの識別情報と対応づけて保存するキャッシュ手段を備え、
    前記第1のデータ処理コンポーネントに処理を実行させる場合に、前記データリクエストを発行する前に、該処理のために必要な原料データの識別情報に対応づけられた入力保持オブジェクトを前記キャッシュ手段から検索し、該当する入力保持オブジェクトが検索できた場合は、前記データリクエスト発行を取りやめ、検索された入力保持オブジェクトを前記第2のデータ処理コンポーネントに引数として与える、
    ことを特徴とする請求項14記載のプログラム。
  16. 前記入力側パイプ手段は、前記キャッシュ手段に保存された前記入力保持オブジェクトのデータ型と、該入力保持オブジェクトが保持するデータを処理する前記第1のデータ処理コンポーネントの入力データ型とが異なる場合に、前記入力保持オブジェクトを該入力データ型に型変換し、この型変換結果のオブジェクトを前記第1のデータ処理コンポーネントに引数として与える、ことを特徴とする請求項15記載のプログラム。
  17. 前記出力側パイプ手段は、前記第2のコンピュータに対し前記第2のデータ処理コンポーネントの実行を要求するリクエストを発行し、前記出力保持オブジェクトに、保持するデータを該リクエストのストリームへと出力させる、ことを特徴とする請求項12記載のプログラム。
  18. 前記出力保持オブジェクトは、前記ストリームに対し、自身の保持するデータに加え、自身のデータ型を示す型情報を出力することを特徴とする請求項12記載のプログラム。
  19. 前記入力側パイプ手段は、前記ストリームを介して転送されてくるデータのデータ型に対応したデータ型を持つ入力保持オブジェクトを生成することを特徴とする請求項13記載のプログラム。
  20. 前記入力側パイプ手段は、前記第1のデータ処理コンポーネントの引数のデータ型に対応するデータ型の入力保持オブジェクトを生成することを特徴とする請求項13記載のプログラム。
  21. 前記第1のコンピュータを、第3の処理を実行する第3のデータ処理コンポーネント、として機能させると共に、
    前記出力側パイプ手段は、前記第1のデータ処理コンポーネントの前記第1の処理により得られるデータを前記第3のデータ処理コンポーネントに対して提供して処理させる場合、入力データを示す引数として前記出力保持オブジェクトを示す情報を指定して前記第3のデータ処理コンポーネントを起動する、
    ことを特徴とする請求項12記載のプログラム。
  22. 前記入力保持オブジェクトは、入力保持オブジェクトクラス又はこれを継承する子孫クラスのインスタンスであり、
    前記入力保持オブジェクトクラスは、引数として指定されたストリームを入力とし、該ストリームから入力されるデータを保持する入力保持オブジェクトを生成するコンストラクタメソッドを備える、
    ことを特徴とする請求項13記載のプログラム。
  23. 前記出力保持オブジェクトは、出力保持オブジェクトクラス又はこれを継承する子孫クラスのインスタンスであり、
    前記出力保持オブジェクトクラスは、出力保持オブジェクトが保持するデータを、引数として指定されたストリームに出力するデータ出力メソッド、
    を備えることを特徴とする請求項12記載のプログラム。
  24. 前記出力保持オブジェクト及び前記入力保持オブジェクトは、データ保持オブジェクトクラス又はこれを継承する子孫クラスのインスタンスであり、
    前記データ保持オブジェクトクラスは、
    引数として指定されたストリームを入力とし、該ストリームから入力されるデータを保持するデータ保持オブジェクトクラスのインスタンスを前記出力保持オブジェクトとして生成するコンストラクタメソッドと、
    前記入力保持オブジェクトとしてのデータ保持オブジェクトクラスのインスタンスが保持するデータを、引数として指定されたストリームに出力するデータ出力メソッドと、
    を備えることを特徴とする請求項13記載のプログラム。
  25. 前記ストリームは、HTTPリクエスト又はHTTPレスポンスの発行に応じて形成されるデータストリームであることを特徴とする請求項12記載のプログラム。
  26. コンピュータを、
    第1の処理を実行する第1のデータ処理コンポーネント、
    外部装置からのストリームを入力とする入力保持オブジェクトを生成し、該ストリームを介して転送されてくる入力データを該入力保持オブジェクトに格納させる入力側パイプ手段、
    前記入力保持オブジェクトを引数として前記第1のデータ処理コンポーネントに入力することにより、前記第1のデータ処理コンポーネントに前記入力データを処理させる処理指示手段、
    として機能させるプログラム。
  27. コンピュータ装置であって、
    第1の処理を実行する第1のデータ処理コンポーネントであって、前記第1の処理により得られるデータをストリームとして出力する機能を備えた出力保持オブジェクト、を前記第1の処理の結果として出力する第1のデータ処理コンポーネントと、
    前記第1のデータ処理コンポーネントの前記第1の処理により得られるデータを前記コンピュータ装置とは異なる第2のコンピュータ装置上の第2のデータ処理コンポーネントに対して提供して第2の処理を実行させる場合に、前記出力保持オブジェクトに対し、該出力保持オブジェクトが持つデータを、第2のホストコンピュータ宛のストリームとして出力させる出力側パイプ手段と、
    を備えるコンピュータ装置。
  28. コンピュータ装置であって、
    第1の処理を実行する第1のデータ処理コンポーネントと、
    外部装置からのストリームを入力とする入力保持オブジェクトを生成し、該ストリームを介して転送されてくる入力データを該入力保持オブジェクトに格納させる入力側パイプ手段と、
    前記入力保持オブジェクトを引数として前記第1のデータ処理コンポーネントに入力することにより、前記第1のデータ処理コンポーネントに前記入力データを処理させる処理指示手段と、
    を備えるコンピュータ装置。
  29. 第1のホストコンピュータが、保持するデータをストリームへと出力する機能を備えた出力保持オブジェクト、を処理結果として出力する第1のデータ処理コンポーネントを実行し、
    パイプライン手段が、前記第1のデータ処理コンポーネントが出力した前記出力保持オブジェクトに、該出力保持オブジェクトが保持するデータを第2のホストコンピュータ宛のストリームへと出力させると共に、該ストリームを入力とする入力保持オブジェクトを該第2のホストコンピュータに生成させ、該入力保持オブジェクトに前記ストリームからのデータを格納させ、
    第2のホストコンピュータが、前記第1のデータ処理コンポーネントの処理結果を用いて処理を行う第2のデータ処理コンポーネントであって、前記入力保持オブジェクトを引数として入力して処理する第2のデータ処理コンポーネントを実行する、
    連携処理方法。
JP2005185416A 2005-06-24 2005-06-24 連携処理システム及び装置 Expired - Fee Related JP4852906B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005185416A JP4852906B2 (ja) 2005-06-24 2005-06-24 連携処理システム及び装置
US11/289,730 US8028018B2 (en) 2005-06-24 2005-11-29 System, device, and method for cooperative processing
CNB2006100062925A CN100470483C (zh) 2005-06-24 2006-01-25 用于协作处理的系统,设备及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005185416A JP4852906B2 (ja) 2005-06-24 2005-06-24 連携処理システム及び装置

Publications (2)

Publication Number Publication Date
JP2007004608A true JP2007004608A (ja) 2007-01-11
JP4852906B2 JP4852906B2 (ja) 2012-01-11

Family

ID=37583426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005185416A Expired - Fee Related JP4852906B2 (ja) 2005-06-24 2005-06-24 連携処理システム及び装置

Country Status (3)

Country Link
US (1) US8028018B2 (ja)
JP (1) JP4852906B2 (ja)
CN (1) CN100470483C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019198080A (ja) * 2019-06-06 2019-11-14 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222506A1 (en) * 2008-02-29 2009-09-03 Evident Software, Inc. System and method for metering and analyzing usage and performance data of a virtualized compute and network infrastructure
JP2012053511A (ja) * 2010-08-31 2012-03-15 Canon Inc サーバ装置、情報処理装置、サービス処理装置、ネットワークシステム、ジョブ処理方法及びプログラム
US20120331038A1 (en) * 2011-06-23 2012-12-27 Lin Yang Systems and methods for processing web service piped network requests
CN103179173B (zh) * 2011-12-26 2018-03-02 腾讯科技(深圳)有限公司 超文本传输系统、客户端和超文本传输方法
US9992269B1 (en) * 2013-02-25 2018-06-05 EMC IP Holding Company LLC Distributed complex event processing

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105704A (ja) * 1998-06-26 2000-04-11 Sun Microsyst Inc バイト・コ―ドおよびシリアル化オブジェクト・ストリ―ムの適時配信のための方法および装置
JP2003076560A (ja) * 2001-06-29 2003-03-14 Microsoft Corp Asp.nethttpランタイム
WO2003052589A2 (en) * 2001-12-14 2003-06-26 Koninklijke Philips Electronics N.V. Method for data processing in a multi-processor data processing system and a corresponding data processing system
JP2004295897A (ja) * 2003-03-26 2004-10-21 Microsoft Corp 初期タイプの初期オブジェクトを最終タイプの最終オブジェクトに変形する方法
JP2004295894A (ja) * 2003-03-26 2004-10-21 Microsoft Corp ストリームのためのメッセージ処理パイプライン
JP2004342107A (ja) * 2003-05-12 2004-12-02 Microsoft Corp オブジェクト指向パイプラインを用いるシステム及び方法
JP2005519376A (ja) * 2002-02-28 2005-06-30 アクサルト・エス・アー 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ
JP2006134005A (ja) * 2004-11-05 2006-05-25 Fuji Xerox Co Ltd 連携処理装置及びシステム及び方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
JPH1027164A (ja) 1996-07-10 1998-01-27 Nippon Telegr & Teleph Corp <Ntt> 分散処理方法
US6173327B1 (en) * 1996-07-11 2001-01-09 Jeroen De Borst Object-oriented method and apparatus for information delivery
US6263426B1 (en) * 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6266769B1 (en) * 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
JP2000076118A (ja) 1998-09-03 2000-03-14 Fuji Xerox Co Ltd 分散ファイル処理装置および分散ファイル処理方法
US7016966B1 (en) * 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
GB2383495A (en) * 2001-12-20 2003-06-25 Hewlett Packard Co Data processing devices which communicate via short range telecommunication signals with other compatible devices
US7114160B2 (en) * 2002-04-17 2006-09-26 Sbc Technology Resources, Inc. Web content customization via adaptation Web services
US7092973B2 (en) * 2002-12-23 2006-08-15 Sap Aktiengesellschaft Conflict detection in a distributed system landscape
US20040210663A1 (en) * 2003-04-15 2004-10-21 Paul Phillips Object-aware transport-layer network processing engine
US7810093B2 (en) * 2003-11-14 2010-10-05 Lawrence Livermore National Security, Llc Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes
US8010670B2 (en) * 2003-12-23 2011-08-30 Slipstream Data Inc. Meta-data based method for local cache utilization
US7954051B2 (en) * 2004-01-13 2011-05-31 International Business Machines Corporation Methods and apparatus for converting markup language data to an intermediate representation
CN1735015A (zh) 2004-08-03 2006-02-15 中兴通讯股份有限公司 Java实现web服务器主动发起向浏览器发送数据的方法
US20080140695A1 (en) * 2006-12-12 2008-06-12 Paragen, Inc. Intellectual property related method and computer program

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105704A (ja) * 1998-06-26 2000-04-11 Sun Microsyst Inc バイト・コ―ドおよびシリアル化オブジェクト・ストリ―ムの適時配信のための方法および装置
JP2003076560A (ja) * 2001-06-29 2003-03-14 Microsoft Corp Asp.nethttpランタイム
WO2003052589A2 (en) * 2001-12-14 2003-06-26 Koninklijke Philips Electronics N.V. Method for data processing in a multi-processor data processing system and a corresponding data processing system
JP2005519376A (ja) * 2002-02-28 2005-06-30 アクサルト・エス・アー 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ
JP2004295897A (ja) * 2003-03-26 2004-10-21 Microsoft Corp 初期タイプの初期オブジェクトを最終タイプの最終オブジェクトに変形する方法
JP2004295894A (ja) * 2003-03-26 2004-10-21 Microsoft Corp ストリームのためのメッセージ処理パイプライン
JP2004342107A (ja) * 2003-05-12 2004-12-02 Microsoft Corp オブジェクト指向パイプラインを用いるシステム及び方法
JP2006134005A (ja) * 2004-11-05 2006-05-25 Fuji Xerox Co Ltd 連携処理装置及びシステム及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019198080A (ja) * 2019-06-06 2019-11-14 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
US20070011241A1 (en) 2007-01-11
CN1885266A (zh) 2006-12-27
JP4852906B2 (ja) 2012-01-11
CN100470483C (zh) 2009-03-18
US8028018B2 (en) 2011-09-27

Similar Documents

Publication Publication Date Title
JP7043780B2 (ja) マイクロサービスベースのデータ処理装置、方法及びプログラム
US10313451B2 (en) System and method for providing a configuration wizard for use in creating representational state transfer services for execution in a service bus runtime
US8352423B2 (en) Apparatus and method for providing streaming data
US7958515B2 (en) Publish/subscribe mechanism for web services
JP7036597B2 (ja) ネットワーク上のデータソースへの照会
RU2419837C2 (ru) Рабочие потоки, ориентированные на данные
US10210029B2 (en) System and method for supporting representational state transfer services natively in a service bus runtime
US20050251527A1 (en) System and method for integrating disparate data and application sources using a web services orchestration platform with business process execution language (BPEL)
Falazi et al. Smart contract invocation protocol (SCIP): A protocol for the uniform integration of heterogeneous blockchain smart contracts
JP2015008016A (ja) グラフ型計算の分散サービス
US20060095274A1 (en) Execution engine for business processes
Burke RESTful Java with JAX-RS 2.0: Designing and developing distributed web services
JP2002183116A (ja) 文書合成方法および文書合成装置
WO2009043033A4 (en) Network operating system
JP4852906B2 (ja) 連携処理システム及び装置
Wainer et al. Standardizing DEVS Simulation Middleware
US11552868B1 (en) Collect and forward
Jayasinghe Quickstart apache axis2
Indrasiri Beginning WSO2 ESB
Peters Building rich internet applications with node. js and express. js
CN106453250B (zh) 一种大数据rpc的处理方法
US7861001B2 (en) Transport independent redirection
KR101270746B1 (ko) 웹 서비스 중개 장치 및 방법
Tran Build a GraphQL application with Node. js and React
Daly et al. Toward a Reference Architecture for Digital and Model-Based Engineering Information Systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110422

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110927

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111010

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4852906

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees