図面 (/)

技術 計算機が実行可能なコードを生成する方法及び計算機が実行可能なコードを生成するために使用されるコンポーネントを提供する方法

出願人 コードバリーコープピーティーワイリィミティッド
発明者 ロビーサ、ノエル、ウィリアムローレイ、エリック、フィリップ
出願日 2012年7月23日 (7年1ヶ月経過) 出願番号 2012-162763
公開日 2012年11月22日 (6年10ヶ月経過) 公開番号 2012-230710
状態 拒絶査定
技術分野 ストアードプログラム
主要キーワード 連続構成 初期カウンタ値 スイッチコンポーネント 設計選択肢 最下レベル 加算コード カスタム仕様 メインコンポーネント
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2012年11月22日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

所望の機能を実行する実行可能コードを生成する。

解決手段

方法は、所望の機能に基づいてコンポーネントの組み合わせを定義することを含み、コンポーネントの組み合わせは、実装されるコンポーネント及びコンポーネント間の接続を示す。そして、コンポーネントの組み合わせを使用して、コンポーネントの組み合わせにおけるコンポーネントが実装され、コンポーネントは接続を使用して通信し且つコードフラグメントを生成する。コンポーネントのうちの少なくとも2つは、コンテキスト確定するように通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定されたコンテキストに基づく。生成されたコードフラグメントは結合され、それにより、適当な処理システムによって実行されると処理システムに対して所望の機能を実行させる実行可能コードを形成する。

概要

背景

背景技術の説明)
本明細書におけるいずれの従来技術への参照も、従来技術が通常の一般的な常識を成すと認めるものではなく、又は示唆ものでもない。また、そのように解釈されるべきではない。

現在のソフトウェア開発技法には、たとえば以下に例示する多数の問題がある。
バグ又はミス高レベルソフトウェア欠陥
・ソフトウェアの肥大化−実行可能コードの容量が、その機能に不相応に大幅に増大すること。
複雑性限界−増大する要求による複雑性が、こうしたシステムを設計する能力脅かす
予測不能性−開発コストスケジュールパフォーマンス、又は資源使用量が予測不能である。
生産性−過去10年において開発者の生産性は著しく向上していない。

特に、これらの問題は、現在のソフトウェア生成技術に存在するものであり、現在のソフトウェア生成技術では、一般化されていないため最適化されていないライブラリを使用して、限られたレベルでのみコードを再使用することによって、走り書き(scratch)からコードを作成することが、かなりの程度まで、熟練したプログラマに必要とされる。移植性が高く且つ条件(コンテキスト;context(s))から独立したコードを生産することに重きが置かれている。

諸問題を解決するために複数の以下の試みがなされた。
・プログラマをマシンコードから切り離すことを目指した、第3世代言語、第4世代言語及び第5世代言語の開発が、初期いくらかの生産性における成功に貢献した。プログラム言語が今日まで、生産性向上を追求するにあたっての核心であり続けているほどに、初期の生産性増大は成功した。
・データを、そのデータの処理に使用されるコードと一緒カプセル化する新しいタイプの抽象化であるオブジェクト指向プログラミングが、許容を達成しているが、いかなる有効な生産性の向上も提供していない。
・大きなソフトウェアの開発の複雑性の管理を支援することを目指したコンピュータ支援ソフトウェア工学(CASE)。
・以前の知的努力を再使用しようとする取り組みであるコード再使用。
数学的証明を利用して正確性を検証するとともに、ソフトウェア開発に伴う多数の欠陥及びバグに取り組む、形式的方法。
履歴コードから知的内容を抽出するデコンパイラ

しかし、これらの構想にもかかわらず、ソフトウェア生産の向上においては、ほとんど進歩がない。

同時係属出願PCT/AU03/01474号は、実行可能コードが生成されるのを可能にするデータ処理を実行する技術について記載する。特に、このシステムは、データ処理サービスをカプセル化するためにコンポーネントを利用する。これは、コンポーネントを結合することにより、連続したデータ処理が実行されるのを可能にし、それによりコンピュータによって実行可能なコードが生成されるのを可能にする。

概要

所望の機能を実行する実行可能コードを生成する。方法は、所望の機能に基づいてコンポーネントの組み合わせを定義することを含み、コンポーネントの組み合わせは、実装されるコンポーネント及びコンポーネント間の接続を示す。そして、コンポーネントの組み合わせを使用して、コンポーネントの組み合わせにおけるコンポーネントが実装され、コンポーネントは接続を使用して通信し且つコードフラグメントを生成する。コンポーネントのうちの少なくとも2つは、コンテキストを確定するように通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定されたコンテキストに基づく。生成されたコードフラグメントは結合され、それにより、適当な処理システムによって実行されると処理システムに対して所望の機能を実行させる実行可能コードを形成する。

目的

ソフトウェア生産の向上を向上させるコード生成方法を提供する。

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

計算機で実行することにより該計算機が所望の機能を実行できる計算機が実行可能なコードを生成する方法であって、a)第1の処理システムにおいて、前記所望の機能に基づいて、i)1つ又は複数のコンポーネントサーバにより実装される複数のコンポーネントであって、各コンポーネントサーバは、前記第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントである、前記複数のコンポーネントii)該コンポーネント間の接続を示すコンポーネントの組み合わせを定義すること、b)前記第1の処理システムが前記コンポーネントの組み合わせの各コンポーネントをコンポーネントサーバにより実装することであって、各コンポーネント処理システムは前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信し、少なくともコード生成コンポーネントは実行可能なコードフラグメントを生成し、前記コンポーネント処理システムのうちの少なくとも2つは条件を確定するために前記接続を介して直接的に通信し、前記実行可能なコードフラグメントのうちの1つ又は複数は、少なくとも部分的に、前記確定された条件に基づいて生成されるようにすること、c)前記第1の処理システムが前記生成された実行可能なコードフラグメントを受け取り、該実行可能なコードフラグメントは前記コンポーネントの組み合わせに従って結合されて、前記計算機が実行可能なコードを形成すること、d)前記計算機が実行可能なコードを計算機に提供することよって該計算機が実行可能なコードの該計算機による実行により、該計算機が前記所望の機能を実行するようにすることを含む方法。

請求項2

前記計算機が実行可能なコードは、コンポーネントを実装するために使用される請求項1に記載の方法。

請求項3

前記実行可能なコードフラグメントは、計算機が実行可能なコードの断片である請求項1に記載の方法。

請求項4

前記計算機が実行可能なコードは、a)前記条件、b)前記コンポーネントの組み合わせ、c)コンポーネント間の1つ又は複数の合意、及びd)1つ又は複数のネゴシエーションによる設定のうちの少なくとも1つによって定義される方法で前記実行可能なコードフラグメントを連結することによって形成される請求項1に記載の方法。

請求項5

前記実行可能なコードフラグメントは、a)前記コンポーネントのうちの1つ又は複数、及びb)処理システムのうちの少なくとも1つによって結合されることを特徴とする請求項1に記載の方法。

請求項6

前記コンポーネントに対しデータシーケンスで提供されるデータ部分を処理させることを含み、該データ部分は、計算機が実行可能なコードの断片であり、該処理は、a)データ部分を前記シーケンスの所定の場所に追加すること、b)前記シーケンス内の第1の場所から第2の場所にデータ部分を移動させること、c)前記シーケンスから前記データ部分を除去すること、及びd)前記シーケンスの前記データ部分を変更することを含む請求項1に記載の方法。

請求項7

前記コンポーネントに対し、それらのそれぞれの条件を確定するようにネゴシエートさせることを含む請求項1に記載の方法。

請求項8

前記第1の処理システムは、少なくともメモリスタック及びレジスタを含み、前記条件は、該レジスタ、該スタック及び該メモリのうちの少なくとも1つの状態を含む、請求項1に記載の方法。

請求項9

前記条件は、a)前記定義されたコンポーネントの組み合わせにおける他のコンポーネント、b)前記定義されたコンポーネントの組み合わせにおける他のコンポーネントとの合意、c)前記定義されたコンポーネントの組み合わせにおける他のコンポーネントとのネゴシエーションの結果、及びd)偶発要因のうちの少なくとも1つを含む請求項1に記載の方法。

請求項10

前記データ処理がa)ディザリング、b)メッシング、及びc)遮蔽のうちの少なくとも1つによって条件に依存することを含む請求項1に記載の方法。

請求項11

少なくとも1つのコンポーネントに対し、他のコンポーネントの1つ又は複数のエージェントと通信する1つ又は複数のエージェントを生成することを含む請求項1に記載の方法。

請求項12

前記エージェントは、所定の順序で前記2つ以上の他のエージェントと通信する請求項11に記載の方法。

請求項13

前記順序は、a)前記コンポーネントの組み合わせ、及びb)1つ又は複数のネゴシエーションによる設定のうちの少なくとも1つによって定義される請求項12に記載の方法。

請求項14

前記第1の処理システムは通信ネットワークを介して複数のコンポーネント処理システムに接続され、各コンポーネント処理システムは、1つ又は複数のそれぞれのコンポーネントを実装するようになっている請求項1〜13のいずれかに記載の方法。

請求項15

各コンポーネント処理システムは、計算機が実行可能なコードから形成され、且つ前記コンポーネント処理システムに対し、a)所定のデータ処理サービス、及びb)それぞれの実行可能なコードフラグメントの生成のうちの少なくとも1つを実行させる、コンポーネントサーバを実装する請求項14に記載の方法。

請求項16

前記コンポーネントサーバは、請求項1の方法を使用して生成される計算機が実行可能なコードから形成される請求項15に記載の方法。

請求項17

前記第1の処理システムにおいて、且つ前記コンポーネントの組み合わせの各コンポーネントに対しa)コンポーネントの仕様を受け取ること、及びb)該コンポーネントの仕様を使用してコンポーネント要求を生成し、該コンポーネント要求はコンポーネント処理システムに転送されることによって、前記コンポーネントに対応するコンポーネントサーバの実装がもたらされることを含む請求項14に記載の方法。

請求項18

各コンポーネント処理システムに対し、a)少なくとも1つのエージェントを実装させること、及びb)前記少なくとも1つのエージェントに対し、1つ又は複数の他のコンポーネント処理システムによって実装される1つ又は複数のエージェントと通信させるようにさせることを含む、請求項17に記載の方法。

請求項19

前記コンポーネント処理システムへのエージェント接続を表す接続データを提供することによって、前記少なくとも1つのエージェントが前記1つ又は複数の他のエージェントと通信することができるようにする請求項18に記載の方法。

請求項20

前記接続データは、前記1つ又は複数の他のエージェントに対するアドレスを含み、該アドレスは、該エージェントを通信できるようにするためのエージェントメッセージが転送されるアドレスを示す請求項18に記載の方法。

請求項21

前記コンポーネント要求は前記接続データを含む請求項18に記載の方法。

請求項22

前記コンポーネントの組み合わせを確定する方法は、前記第1の処理システムにおいて、a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及びb)前記コンポーネントのそれぞれのエージェント間の接続を定義することを含む請求項14に記載の方法。

請求項23

前記第1の処理システムに対し、a)前記1つ又は複数の選択されたコンポーネントのグラフカル表現を生成させること、及びb)前記第1の処理システムの入力装置を介してユーザから受け取られた入力コマンドに応じて前記グラフィカル表現を処理することによって前記コンポーネントの組み合わせを定義させることを含む、請求項22に記載の方法。

請求項24

a)選択されたコンポーネントが1つ又は複数の選択肢を有するか否かを判断すること、及びb)肯定的な判断に応じて、i)前記選択肢のうちの1つ又は複数を設定すること、及びii)各設定された選択肢の指示を、前記対応するコンポーネントを実装するために使用される前記コンポーネント処理システムに転送することを含む、請求項22に記載の方法。

請求項25

a)コンポーネントの仕様から1つ又は複数の選択肢を確定すること、b)前記選択肢のうちの1つ又は複数を設定すること、及びc)前記設定された選択肢に基づいて更新されたコンポーネントの仕様を確定することを含む、請求項24に記載の方法。

請求項26

第2の処理システムに対し、a)いくつかのコンポーネントの詳細を確定させること、及びb)該詳細を使用して前記第1の処理システムを介して前記利用可能なコンポーネントのリストを前記ユーザに提供させることを含む、請求項22に記載の方法。

請求項27

前記コンポーネントの仕様を含む詳細は、a)それぞれのデータ処理サービスの指示、b)前記コンポーネントのグラフィカル表現、及びc)他のコンポーネントに必要な任意の接続の指示のうちの少なくとも1つを含む請求項26に記載の方法。

請求項28

前記第2の処理システムに対し、a)前記コンポーネントの前記実装に関連する1つ又は複数の基準を表すパフォーマンス情報を確定させること、及びb)前記パフォーマンス情報をユーザに提供し、該ユーザは該パフォーマンス情報に従って前記コンポーネントを選択する請求項26に記載の方法。

請求項29

前記パフォーマンス情報は、a)前記コンポーネントを実装する前記エンティティの指示、b)前記エンティティが格納される位置の指示、c)前記コンポーネントを実装するための時間の指示、d)前記それぞれのコンポーネントを実装することに関するコストの指示、及びe)前記コンポーネントの出来を示す格付けのうちの少なくとも1つを含む請求項28に記載の方法。

請求項30

各コンポーネントの使用に対して費用課すことにより利益を生じさせることを含む、請求項26〜29のいずれか1項に記載の方法。

請求項31

a)前記コンポーネントを実装するそれぞれのエンティティに対し前記利益の少なくとも一部を提供すること、及びb)前記第2の処理システムの運営者に対し、前記利益の少なくとも一部を保持させることを含む請求項30に記載の方法。

請求項32

計算機が所望の機能に基づいたコンポーネントの組み合わせを実装することにより該所望の機能を実行することができるように該計算機で実行できる計算機が実行可能なコードを生成する方法であって、第1の処理システムにおいて、a)前記コンポーネントの組み合わせからi)1つ又は複数のコンポーネントサーバにより実装される複数のコンポーネントであって、各コンポーネントサーバは、前記第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントである、前記複数のコンポーネントii)該コンポーネントのそれぞれの間の接続を確定すること、b)各コンポーネントに対し、任意の必要な接続を表す接続データを含み、該コンポーネントの実装を要求するコンポーネント要求を生成すること、c)前記コンポーネント要求をコンポーネント処理システムに転送することにより各該コンポーネント処理システムが前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信させ、少なくとも前記コード生成コンポーネントに実行可能なコードフラグメントを生成させ、前記コンポーネント処理システムのうちの少なくとも2つは、条件を確定するために前記接続を使用して直接的に通信し、前記実行可能なコードフラグメントのうちの1つ又は複数は、少なくとも部分的に、前記確定された条件に基づいて生成されていること、d)前記コンポーネント処理システムから前記生成された実行可能なコードフラグメントを受け取り、該実行可能なコードフラグメントは、結合されると、前記計算機が実行可能なコードを形成することを含む、計算機が実行可能なコードを生成する方法。

請求項33

a)前記計算機が実行可能なコードを形成するため前記コンポーネントの組み合わせに従って前記実行可能なコードフラグメントを結合すること、及びb)所定の順序で前記実行可能なフラグメントを受け取ることのうちの少なくとも1つを含む、請求項32に記載の方法。

請求項34

前記コンポーネントの組み合わせを確定する前記方法は、a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及びb)前記コンポーネントのそれぞれのエージェントの間の接続を定義することを含む請求項32に記載の方法。

請求項35

前記第1の処理システムにおいて、前記コンポーネントの組み合わせにおける各コンポーネントに対しa)コンポーネントの仕様を受け取ること、及びb)該コンポーネントの仕様を使用してコンポーネント要求を生成し、該コンポーネント要求はコンポーネント処理システムに転送されることによって、前記コンポーネントに対応するコンポーネントサーバの実装がもたらされるを含む、請求項34に記載の方法。

請求項36

請求項1〜31のいずれか1項に記載の方法を使用して実行される請求項32に記載の方法。

請求項37

計算機が所望の機能を実行できるように該計算機が実行できる、計算機が実行可能なコードを生成するために使用されるコンポーネントを提供する方法であって、前記方法は、実装されるコンポーネントと該コンポーネントの間の接続とを示すコンポーネントの組み合わせを使用する方法であり、前記コンポーネントは1つ又は複数のコンポーネントサーバにより実装され、各コンポーネントサーバは、第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントであるところ、コンポーネント処理システムにおいて、a)任意の必要な接続を表す接続データを含むコンポーネント要求を前記第1の処理システムから受け取ること、b)前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信することによって、条件を確定すること、c)前記確定された条件に基づいて実行可能なコードフラグメントを生成すること、及びd)前記生成された実行可能なコードフラグメントを別の処理システムに転送し、該実行可能なコードフラグメントは、他の実行可能なコードフラグメントと結合されると前記計算機が実行可能なコードを形成し、該計算機が実行可能なコードは、計算機によって実行されると、該計算機に対し前記所望の機能を実行させること、を含む方法。

請求項38

請求項1〜31のいずれか1項に記載の方法を使用して実行される請求項37に記載の方法。

請求項39

コンポーネントサーバを実装するため、計算機が実行可能なコードを生成するために使用されるコンポーネントを提供することによって、前記コンポーネントサーバがデータ処理サービスを提供することができるようにする方法であって、前記実装されるコンポーネントと該コンポーネント間の接続とを示すコンポーネントの組み合わせを使用し、前記コンポーネントは1つ又は複数のコンポーネントサーバにより実装され、各コンポーネントサーバは、第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントであり、該コンポーネントの組み合わせは少なくとも2つのコンポーネントシーケンスを含み、各コンポーネントシーケンスは前記データ処理サービスを提供するそれぞれの方法を表しているところ、コンポーネント処理システムにおいて、a)任意の必要な接続を表す接続データを含むコンポーネント要求を前記第1の処理システムから受け取ること、b)条件を確定するために、前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信すること、c)確定された条件に基づいて実行可能なコードフラグメントを生成すること、及びd)前記生成された実行可能なコードフラグメントを別の処理システムに転送し、該実行可能なコードフラグメントは、他の実行可能なコードフラグメントと結合されると前記計算機が実行可能なコードを形成し、該計算機が実行可能なコードは、計算機によって実行されると、該計算機に対しコンポーネントサーバを実装させ、該コンポーネントサーバは前記生成された実行可能なコードフラグメントのうちの少なくとも1つを実行することにより前記データ処理サービスを提供することを含む方法。

請求項40

請求項1〜31のいずれか1項に記載の方法を使用して実行される請求項39に記載の方法。

技術分野

0001

(発明の背景
本発明は、コンピュータによって実行可能なコードを生成する方法及び装置に関し、特に、各々が、それぞれのコードの断片の生成等、データを処理する各サービスに対応するコンポーネントを使用して、コンピュータによって実行可能なコードを生成する方法及び装置に関する。

背景技術

0002

背景技術の説明)
本明細書におけるいずれの従来技術への参照も、従来技術が通常の一般的な常識を成すと認めるものではなく、又は示唆ものでもない。また、そのように解釈されるべきではない。

0003

現在のソフトウェア開発技法には、たとえば以下に例示する多数の問題がある。
バグ又はミス高レベルソフトウェア欠陥
・ソフトウェアの肥大化−実行可能コードの容量が、その機能に不相応に大幅に増大すること。
複雑性限界−増大する要求による複雑性が、こうしたシステムを設計する能力脅かす
予測不能性−開発コストスケジュールパフォーマンス、又は資源使用量が予測不能である。
生産性−過去10年において開発者の生産性は著しく向上していない。

0004

特に、これらの問題は、現在のソフトウェア生成技術に存在するものであり、現在のソフトウェア生成技術では、一般化されていないため最適化されていないライブラリを使用して、限られたレベルでのみコードを再使用することによって、走り書き(scratch)からコードを作成することが、かなりの程度まで、熟練したプログラマに必要とされる。移植性が高く且つ条件(コンテキスト;context(s))から独立したコードを生産することに重きが置かれている。

0005

諸問題を解決するために複数の以下の試みがなされた。
・プログラマをマシンコードから切り離すことを目指した、第3世代言語、第4世代言語及び第5世代言語の開発が、初期いくらかの生産性における成功に貢献した。プログラム言語が今日まで、生産性向上を追求するにあたっての核心であり続けているほどに、初期の生産性増大は成功した。
・データを、そのデータの処理に使用されるコードと一緒カプセル化する新しいタイプの抽象化であるオブジェクト指向プログラミングが、許容を達成しているが、いかなる有効な生産性の向上も提供していない。
・大きなソフトウェアの開発の複雑性の管理を支援することを目指したコンピュータ支援ソフトウェア工学(CASE)。
・以前の知的努力を再使用しようとする取り組みであるコード再使用。
数学的証明を利用して正確性を検証するとともに、ソフトウェア開発に伴う多数の欠陥及びバグに取り組む、形式的方法。
履歴コードから知的内容を抽出するデコンパイラ

0006

しかし、これらの構想にもかかわらず、ソフトウェア生産の向上においては、ほとんど進歩がない。

0007

同時係属出願PCT/AU03/01474号は、実行可能コードが生成されるのを可能にするデータ処理を実行する技術について記載する。特に、このシステムは、データ処理サービスをカプセル化するためにコンポーネントを利用する。これは、コンポーネントを結合することにより、連続したデータ処理が実行されるのを可能にし、それによりコンピュータによって実行可能なコードが生成されるのを可能にする。

発明が解決しようとする課題

0008

ソフトウェア生産の向上を向上させるコード生成方法を提供する。

課題を解決するための手段

0009

[発明の概要
第1の幅広い形態において、本発明は、所望の機能を実行する実行可能コードを生成する方法を提供し、本方法は、
a)所望の機能に基づいて、
i)実装されるコンポーネント、
ii)コンポーネント間の接続
を示すコンポーネントの組み合わせを定義すること、
b)コンポーネントを組み合わせたコンポーネントであって、該コンポーネントのうちの少なくともいくつかは接続を使用して通信し且つコードフラグメントを生成し、コンポーネントのうちの少なくとも2つは条件を確定するために通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定された条件に基づいたコンポーネントが実装されるようにすること、
c)生成されたコードフラグメントを結合することによって、実行可能コードを形成すること、
d)実行可能コードを計算機の処理システムに提供することよって該実行可能コードの該処理システムによる実行により、該処理システムが所望の機能を実行するようにすること
を含む。

0010

通常、実行可能コードは、コンポーネントを実装するために使用される。

0011

通常、コードフラグメントは、実行可能コードの断片である。

0012

通常、実行可能コードは、
a)前記条件、
b)前記コンポーネントの組み合わせ、
c)コンポーネント間の1つ又は複数の合意、及び
d)1つ又は複数のネゴシエーションによる設定
のうちの少なくとも1つによって定義される方法で前記コードフラグメントを連結することによって形成される。

0013

通常、結合は、
a)コンポーネントのうちの1つ又は複数、及び
b)処理システム
のうちの少なくとも1つによって実行される。

0014

通常、本方法は、コンポーネントに対しデータシーケンスで提供されるデータ部分を処理させることを含み、データ部分は、実行可能コードの断片であり、処理は、
a)データ部分をシーケンスの所定の場所に追加すること、
b)シーケンス内の第1の場所から第2の場所にデータ部分を移動させること、
c)シーケンスからデータ部分を除去すること、及び
d)シーケンスのデータ部分を変更すること
を含む。

0015

通常、本方法は、コンポーネントに対し、それらのそれぞれの条件を確定するようにネゴシエートさせることを含む。

0016

通常、本方法は、少なくともメモリスタック及びレジスタを含む処理システムを使用して実行され、条件は、レジスタ、スタック及びメモリのうちの少なくとも1つの状態のうちの少なくとも1つを含む。

0017

通常、条件は、
a)定義されたコンポーネントの組み合わせにおける他のコンポーネント、
b)定義されたコンポーネントの組み合わせにおける他のコンポーネントとの合意、
c)定義されたコンポーネントの組み合わせにおける他のコンポーネントとのネゴシエーションの結果、及び
d)偶発要因
のうちの少なくとも1つを含む。

0018

通常、本方法は、データ処理を
a)ディザリング
b)メッシング、及び
c)遮蔽
のうちの少なくとも1つによる条件に依存することを含む。

0019

通常、本方法は、少なくとも1つのコンポーネントに対し、他のコンポーネントの1つ又は複数のエージェントと通信する1つ又は複数のエージェントを生成することを含む。

0020

通常、エージェントは、所定の順序で2つ以上の他のエージェントと通信する。

0021

通常、順序は、
a)コンポーネントの組み合わせ、及び
b)1つ又は複数のネゴシエーションによる設定
のうちの少なくとも1つによって定義される。

0022

通常、本方法は、通信ネットワークを介して1つ又は複数のコンポーネント処理システムに接続される処理システムを使用して実行され、各コンポーネント処理システムは、1つ又は複数のそれぞれのコンポーネントを実装するようになっている。

0023

通常、各コンポーネント処理システムは、実行可能コードから形成され、且つコンポーネント処理システムに対し、
a)所定のデータ処理サービス、及び
b)それぞれのコードフラグメントの生成
のうちの少なくとも1つを実行させる、コンポーネントサーバを実装する。

0024

通常、コンポーネントサーバは、本発明の第1の形態の方法を使用して生成される実行可能コードから形成される。

0025

通常、本方法は、処理システムにおいて、且つコンポーネントの組み合わせの各コンポーネントに対し
a)コンポーネントの仕様を受け取ること、及び
b)コンポーネントの仕様を使用してコンポーネント要求を生成し、コンポーネント要求は、コンポーネント処理システムに転送されることによって、コンポーネントに対応するコンポーネントサーバの実装がもたらされること
を含む。

0026

通常、本方法は、各コンポーネント処理システムに対し、
a)少なくとも1つのエージェントを実装させること、及び
b)少なくとも1つのエージェントに対し、1つ又は複数の他のコンポーネント処理システムによって実装される1つ又は複数のエージェントと通信させるようにさせることを含む。

0027

通常、本方法は、コンポーネント処理システムへのエージェント接続を表す接続データを提供することによって、少なくとも1つのエージェントが1つ又は複数の他のエージェントと通信することができるようにすることを含む。

0028

通常、接続データは、1つ又は複数の他のエージェントに対するアドレスを含み、アドレスは、エージェントを通信できるようにするためのエージェントメッセージが転送されるアドレスを示す。

0029

通常、コンポーネント要求は接続データを含む。

0030

通常、コンポーネントの組み合わせを確定する方法は、処理システムにおいて、
a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及び
b)コンポーネントのそれぞれのエージェント間の接続を定義すること
を含む。

0031

通常、本方法は、処理システムに対し、
a)1つ又は複数の選択されたコンポーネントのグラフカル表現を生成させること、及び
b)ユーザから受け取られた入力コマンドに応じてグラフィカル表現を処理することによって、コンポーネントの組み合わせを定義させること
を含む。

0032

通常、本方法は、
a)選択されたコンポーネントが1つ又は複数の選択肢を有するか否かを判断すること、及び
b)肯定的な判断に応じて、
i)選択肢のうちの1つ又は複数を設定すること、及び
ii)各設定された選択肢の指示を、対応するコンポーネントを実装するために使用されるコンポーネント処理システムに転送すること
を含む。

0033

通常、本方法は、
a)コンポーネントの仕様から1つ又は複数の選択肢を確定すること、
b)選択肢のうちの1つ又は複数を設定すること、及び
c)設定された選択肢に基づいて更新されたコンポーネントの仕様を確定すること
を含む。

0034

通常、本方法は、第2の処理システムに対し、
a)いくつかのコンポーネントの詳細を確定させること、及び
b)詳細を使用して第1の処理システムを介して利用可能なコンポーネントのリストをユーザに提供させること
を含む。

0035

通常、詳細は、
a)それぞれのデータ処理サービスの指示、
b)コンポーネントのグラフィカル表現、及び
c)他のコンポーネントに必要な任意の接続の指示
のうちの少なくとも1つを含む、コンポーネントの仕様を含む。

0036

通常、本方法は、第2の処理システムに対し、
a)コンポーネントの実装に関連する1つ又は複数の基準を表すパフォーマンス情報を確定させること、及び
b)パフォーマンス情報をユーザに提供し、ユーザはパフォーマンス情報に従ってコンポーネントを選択する、提供させること
を含む。

0037

通常、パフォーマンス情報は、
a)コンポーネントを実装するエンティティの指示、
b)エンティティが格納される位置の指示、
c)コンポーネントを実装するための時間の指示、
d)それぞれのコンポーネントを実装することに関するコストの指示、及び
e)コンポーネントの出来を示す格付け
のうちの少なくとも1つを含む。

0038

通常、本方法は、各コンポーネントの使用に対して費用課すことにより利益を生じさせることを含む。

0039

通常、本方法は、
a)コンポーネントを実装するそれぞれのエンティティに対し利益の少なくとも一部を提供すること、及び
b)第2の処理システムの運営者に対し、利益の少なくとも一部を保持させること
を含む。

0040

第2の形態において、本発明は、所望の機能に基づいて組み合わされるコンポーネントの組み合わせを実装することにより所望の機能を実行する計算機が実行可能なコードを生成する方法であって、本方法は、処理システムにおいて、
a)コンポーネントの組み合わせから
i)実装されるコンポーネント、
ii)コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、任意の必要な接続を表す接続データを含み、コンポーネントの実装を要求するコンポーネント要求を生成すること、
c)コンポーネント要求をコンポーネント処理システムに転送することによりコンポーネント処理システムのうちの少なくともいくつかに対し接続を使用して通信させ且つコードフラグメントを生成させ、コンポーネント処理システムのうちの少なくとも2つは、条件を確定するために通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定された条件に基づいていること、
d)コンポーネント処理システムからコードフラグメントを受け取り、コードフラグメントは、結合されると、実行可能コードを形成すること
を含む。

0041

通常、本方法は、
a)実行可能コードを形成するコードフラグメントを結合すること、及び
b)所定の順序でフラグメントを受け取ること
のうちの少なくとも1つを含む。

0042

通常、コンポーネントの組み合わせを確定する方法は、
a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及び
b)コンポーネントのそれぞれのエージェントの間の接続を定義すること
を含む。

0043

通常、本方法は、処理システムを使用して実行され、処理システムにおいて、且つコンポーネントの組み合わせにおける各コンポーネントに対し
a)コンポーネントの仕様を受け取ること、及び
b)コンポーネントの仕様を使用してコンポーネント要求を生成し、コンポーネント要求はコンポーネント処理システムに転送されることによって、コンポーネントに対応するコンポーネントサーバの実装がもたらされること
を含む。

0044

第3の形態において、本発明は、所望の機能を実行する実行可能コードを生成するために使用されるコンポーネントを提供する方法を提供し、本方法は、実装されるコンポーネントとコンポーネントの間の接続とを示すコンポーネントの組み合わせを使用し、処理システムにおいて、
a)任意の必要な接続を表す接続データを含むコンポーネント要求を受け取ること、
b)接続を使用して他のコンポーネント処理システムと通信することによって、条件を確定すること、
c)確定された条件に基づいてコードフラグメントを生成すること、及び
d)コードフラグメントを別の処理システムに転送し、コードフラグメントは、他のコードフラグメントと結合されると実行可能コードを形成し、実行可能コードは、適当な処理システムによって実行されると、処理システムに対し所望の機能を実行させること、
を含む。

0045

第4の形態において、本発明は、データ処理サービスを提供するためにコンポーネントサーバを実装し、計算機が実行可能なコードを生成する方法を提供し、本方法は、
a)コンポーネントの組み合わせを確定し、コンポーネントの組み合わせは少なくとも2つのコンポーネントシーケンスを含み、各コンポーネントシーケンスはデータ処理サービスを提供するそれぞれの方法を表し、コンポーネントの組み合わせは、
ii)実装されるコンポーネント、
ii)コンポーネント間の接続
を示し、
b)コンポーネントの組み合わせにおけるコンポーネントが実装されるようにし、コンポーネントのうちの少なくともいくつかは接続を使用して通信し、且つ各コンポーネントシーケンスに対応する少なくとも1つのコードフラグメントを含むコードフラグメントを生成すること、
c)生成されたコードフラグメントを結合することによって実行可能コードを生成すること、及び
d)実行可能コードを処理システムに提供し、実行可能コードの処理システムによる実行により、処理システムが、各コンポーネントシーケンスに対応する生成されたコードフラグメントのうちの少なくとも1つを実行することによってコンポーネントサーバを実装するようにすることによって、データ処理をそれぞれの方法で提供すること
を含む。

0046

通常、実行可能コードは、いずれのコードフラグメントが実行されるかを選択する機能を備えることを含む。

0047

通常、コンポーネントの組み合わせは、実装されると、選択コードフラグメントの生成をもたらす選択コンポーネントシーケンスを含み、コンポーネントサーバが実装されると、選択コードフラグメントは実行するためにコードフラグメントのうちの1つを選択する。

0048

通常、コードフラグメント選択は条件に依存する。

0049

通常、条件は、データ処理が実行される条件を反映する。

0050

通常、コードフラグメントの選択は、コンポーネントサーバと1つ又は複数の他のコンポーネントサーバとのネゴシエーションの結果に応じて実現される。

0051

通常、コードフラグメントの選択は、データ処理サービスが提供される方法に関連する選択肢に対応する。

0052

通常、選択肢は、コンポーネントサーバの実装を要求するエンティティによって選択される。

0053

通常、コンポーネントサーバは、処理結果のコンポーネントの組み合わせの一部として使用される処理結果のコンポーネントを実装するために使用される。

0054

通常、処理結果のコンポーネントは、処理結果のコンポーネントの組み合わせを実装するエンティティによって定義可能な1つ又は複数の関連選択肢を含み、選択肢は、いずれのコードフラグメントが実行されるかを選択するために使用される。

0055

通常、データ処理サービスは、処理結果のコードフラグメントの生成を含み、処理結果のコードフラグメントは、実行されるコードフラグメントによって決まる。

0056

通常、各コンポーネントは、対応するコンポーネントサーバを実装することによって実装され、各コンポーネントサーバは、適当な処理システムにおいて実行されると、処理システムに対し、
a)所定のデータ処理サービス、及び
b)それぞれのコードフラグメントの生成
のうちの少なくとも1つを実行させる実行可能コードから形成される。

0057

第5の形態において、本発明は、処理システムを使用してコンポーネントに具体化されるサービスを提供する本方法は、処理システムに対し、
a)コンポーネント要求を受け取らせること、及び
b)本発明の第1の幅広い形態の方法によって生成されるアプリケーションソフトウェアを実行させること
を含む。

0058

第6の形態において、本発明は、コンポーネントの組み合わせを実装することによりコンポーネントサーバを実装し、計算機が実行可能コードを生成する方法であって、コンポーネントの組み合わせは所望のデータ処理サービスに基づいており、且つ少なくとも2つのコンポーネントシーケンスを含み、各コンポーネントシーケンスは、データ処理サービスを提供するそれぞれの方法を表す、方法であり、処理システムにおいて、
a)コンポーネントの組み合わせから
i)実装されるコンポーネント、
ii)コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、コンポーネントの実装を要求するコンポーネント要求を生成し、コンポーネント要求は、任意の必要な接続を表す接続データを含むこと
c)コンポーネント要求をコンポーネント処理システムに転送することによって、コンポーネント処理システムのうちの少なくともいくつかに対し、接続を使用して通信させ且つ各コンポーネントシーケンスに対応する少なくとも1つのコードフラグメントを生成させること、及び
d)コンポーネント処理システムからコードフラグメントを受け取り、コードフラグメントは、結合されると、実行可能コードを形成し、実行可能コードは、適当な処理システムによって実行されると、処理システムに対しコンポーネントサーバを実装させ、コンポーネントサーバは、生成されたコードフラグメントのうちの少なくとも1つを実行することによりデータ処理サービスを提供すること
を含む。

0059

第7の形態において、本発明は、コンポーネントサーバを実装するため計算機が実行可能なコードを生成するために使用されるコンポーネントを提供することによって、コンポーネントサーバがデータ処理サービスを提供することができるようにする方法であって、実装されるコンポーネントとコンポーネント間の接続とを示すコンポーネントの組み合わせを使用し、コンポーネントの組み合わせは少なくとも2つのコンポーネントシーケンスを含み、各コンポーネントシーケンスはデータ処理サービスを提供するそれぞれの方法を表し、本方法は、処理システムにおいて、
a)任意の必要な接続を表す接続データを含むコンポーネント要求を受け取ること、
b)接続を使用して他のコンポーネント処理システムと通信すること、
c)確定された条件に基づいてコードフラグメントを生成すること、及び
d)コードフラグメントを別の処理システムに転送し、コードフラグメントは、他のコードフラグメントと結合されると実行可能コードを形成し、実行可能コードは、適当な処理システムによって実行されると、処理システムに対しコンポーネントサーバを実装させ、コンポーネントサーバは生成されたコードフラグメントのうちの少なくとも1つを実行し、それによりデータ処理サービスを提供すること
を含む。

0060

第8の形態において、本発明は、第1のコンポーネントと第2のコンポーネントとの間のネゴシエーションを実行する方法であって、各コンポーネントはそれぞれのデータ処理サービスを具体化し、本方法は、処理システムにおいて、
a)第1のコンポーネントに関連する第1のネゴシエーションデータを確定すること、第1のネゴシエーションデータは、
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第1のネゴシエーションリストを示し、
b)第2のコンポーネントに関連する第2のネゴシエーションデータを確定すること、第2のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第2のネゴシエーションリストを示し、
c)第1のネゴシエーションリストを第2のネゴシエーションリストと比較すること、並びに
d)比較及びそれぞれの重み付けの結果を使用してネゴシエーションの選択肢のうちの1つを選択すること
を含む。

0061

通常、本方法は、所定のアルゴリズムを使用してネゴシエーション選択肢のうちの1つを選択することを含む。

0062

通常、本方法は、
a)両ネゴシエーションリストに共通の任意のネゴシエーション選択肢を選択すること、及び
b)各選択された共通のネゴシエーション選択肢に対し、各ネゴシエーションリストにおけるそれぞれの重み付けから形成される結合された重み付けを確定すること、及び
c)確定された結合された重み付けに従って共通のネゴシエーションの選択肢のうちの1つを選択すること
により、処理システムにおけるネゴシエーションリストを比較することを含む。

0063

通常、本方法は、処理システムにおいて、
a)各ネゴシエーションリストにおける重み付けを正規化すること、
b)各ネゴシエーションリストにおけるそれぞれの重み付けの平均を確定することにより、結合された重み付けを確定すること
を含む。

0064

通常、本方法は、1つの共通のネゴシエーション選択肢を、処理システムにおいて、
a)結合された重み付けが最も高い重み付けを有する共通のネゴシエーションの選択肢を選択すること、並びに
b)少なくとも2つの共通のネゴシエーションの選択肢が等しく最も高い結合された重み付けを有する場合、
i)少なくとも2つの共通のネゴシエーションの選択肢の各々に対して確定される平均自乗誤差、及び
ii)任意の規則の使用
のうちの少なくとも1つを使用すること
によって選択することを含む。

0065

通常、本方法は、処理システムにおいて、negotiationコンポーネントを実装することであって、それによりネゴシエーションを実装することを含む。

0066

通常、処理システムは、第1のコンポーネントに対応する第1のコンポーネントサーバを実装する。

0067

通常、本方法は、処理システムにおいて、
a)コンポーネント要求を受け取ること、及び
b)コンポーネント要求に応じて第1のコンポーネントサーバを実装すること
を含む。

0068

通常、本方法は、処理システムにおいて、第2のコンポーネントに対応する第2のコンポーネントサーバを実装する第2の処理システムから第2のネゴシエーションデータを受け取ることを含む。

0069

通常、本方法は、処理システムにおいて、
a)少なくとも1つのエージェントを実装すること、及び
b)少なくとも1つのエージェントに対し、第2のコンポーネントサーバによって実装される1つ又は複数のエージェントと通信させることよって、第2のネゴシエーションデータを確定すること
を含む。

0070

通常、本方法は、コンピュータシステムにおいて、
a)接続要求の一部として接続データを受け取ることであって、接続データは、第2のコンポーネントサーバに関連する1つ又は複数のエージェントのエージェントアドレスを含む、受け取ること、及び
b)接続要求に応じて第1のコンポーネントサーバを実装すること
を含む。

0071

通常、本方法は、処理システムにおいてコードフラグメントを生成し、コードフラグメントはネゴシエーションの結果によって決まることを含む。

0072

通常、各コンポーネントは、対応するコンポーネントサーバを実装することによって実装され、各コンポーネントサーバは、適当な処理システムで実行されると、処理システムに対し、
a)ネゴシエーション、
b)所定のデータ処理サービス、及び
c)それぞれのコードフラグメントの生成
のうちの少なくとも1つを実行させる実行可能コードから形成される。

0073

第9の形態において、本発明は、所望の機能を実行する実行可能コードを生成する方法を提供し、本方法は、
a)所望の機能に基づいてコンポーネントの組み合わせを定義し、コンポーネントの組み合わせは、ネゴシエーションを実行する少なくとも2つのコンポーネントを含むこと、及び
b)コンポーネントの組み合わせにおけるコンポーネントが実装されるようにし、コンポーネントのうちの少なくともいくつかが通信して、結合されると実行可能コードを形成するコードフラグメントを生成し、少なくとも2つのコンポーネントは、共通のネゴシエーションの選択肢を確定するために通信するようになっており、コードフラグメントのうちの少なくとも1つは、確定されたネゴシエーションの選択肢に少なくとも部分的に依存して生成されること
を含む。

0074

通常、本方法は、所定のアルゴリズムを使用していくつかのあり得るネゴシエーション選択肢から共通のネゴシエーション選択肢を選択することを含む。

0075

通常、ネゴシエーションデータは、プロトコルに従って定義され、プロトコルは、いくつかの最小の所定のネゴシエーション選択肢を定義する。

0076

通常、本方法は、少なくとも2つのコンポーネントの相対的な実装に関する条件を定義するために使用される。

0077

第10の幅広い形態において、本発明は、コンポーネントの組み合わせを実装することにより所望の機能を実行し、計算機が実行可能なコードを生成する方法であって、コンポーネントの組み合わせは所望の機能に基づき、且つネゴシエーションを実行する少なくとも2つのコンポーネントを含み、本方法は、
a)コンポーネントの組み合わせから
i)実装されるコンポーネント、
ii)コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、コンポーネントの実装を要求するコンポーネント要求を生成し、コンポーネント要求は、任意の必要な接続を表す接続データを含むこと、
c)コンポーネント要求をコンポーネント処理システムに転送することによって、コンポーネント処理システムの少なくともいくつかに対し、接続を使用して通信させ且つコードフラグメントを生成させ、コンポーネント処理システムのうちの少なくとも2つは、いくつかの利用可能なネゴシエーションの選択肢から共通のネゴシエーションの選択肢を確定するために通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に共通のネゴシエーション選択肢に基づいていること、
d)コンポーネント処理システムからコードフラグメントを受け取り、コードフラグメントは、結合されると、実行可能コードを形成すること
を含む。

0078

第11の形態において、本発明は、コンポーネントの組み合わせにおける少なくとも1つの他のコンポーネントとのネゴシエーションを実行するコンポーネントであって、当該コンポーネントは、適当にプログラムされた処理システムで実装されると、処理システムに対し、
a)第1のコンポーネントに関連する第1のネゴシエーションデータを確定させ、第1のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第1のネゴシエーションリストを示し、
b)コンポーネントに関連する第2のネゴシエーションデータを確定させ、第2のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第2のネゴシエーションリストを示し、
c)第1のネゴシエーションリストを第2のネゴシエーションリストと比較させ、且つ、
d)比較の結果及びそれぞれの重み付けを使用してネゴシエーション選択肢のうちの1つを選択させる、コンピュータによって実行可能なコードによって具体化される。

0079

別の形態において、本発明は、第1のコンポーネント群と第2のコンポーネント群との間のネゴシエーションを実行する方法であって、各コンポーネントはそれぞれのデータ処理サービスを具体化し、本方法は、処理システムにおいて、
a)第1のコンポーネント群に関連する第1のネゴシエーションデータを確定し、第1のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第1のネゴシエーションリストを示し、
b)第2のコンポーネント群に関連する第2のネゴシエーションデータを確定し、第2のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第2のネゴシエーションリストを示し、
c)第1のネゴシエーションリストを第2のネゴシエーションリストと比較すること、及び
d)比較の結果及びそれぞれの重み付けを使用してネゴシエーション選択肢のうちの1つを選択すること
を含む。

0080

別の形態において、本発明は、所望の機能を実行し、計算機が実行可能なコードを生成する方法を提供し、本方法は、
a)所望の機能に基づいてコンポーネントの組み合わせを定義することであって、コンポーネントの組み合わせは、ネゴシエーションを実行する少なくとも2つのコンポーネント群を含み、コンポーネントの組み合わせは、
i)実装されるコンポーネント
ii)コンポーネント間の接続
を示し、
b)コンポーネントの組み合わせにおけるコンポーネントが実装されるようにし、コンポーネントのうちの少なくともいくつかは、接続を使用して通信し且つコードフラグメントを生成し、コードフラグメントは、結合されると実行可能コードを形成し、少なくとも2つのコンポーネント群は、共通のネゴシエーション選択肢を確定するために通信するようになっており、コードフラグメントのうちの少なくとも1つは、確定されたネゴシエーション選択肢に少なくとも部分的に依存して生成されること
を含む。

0081

通常、各コンポーネント群は、
a)1つ又はコンポーネント、及び
b)1つ又は複数のコンポーネント群
のうちの少なくとも1つから形成される。

0082

第12の幅広い形態において、本発明は、多段階データ処理サービスを表すコンポーネントを実装する方法を提供し、本方法は、処理システムにおいて、
(a)少なくとも1つの下位コンポーネントの組み合わせを表す内部略図を確定すること、
(b)内部略図に従って各下位コンポーネントの実装をもたらすこと、
(c)各下位コンポーネントが実装されると、各下位コンポーネントの終了をもたらすこと、
(d)必要に応じてステップ(a)〜(c)を繰り返すこと
を含む。

0083

第13の形態において、本発明は、多段階データ処理サービスを具体化する多段階コンポーネントを定義する方法を提供し、本方法は、
(a)1つ又は複数の下位コンポーネントの組み合わせを表す少なくとも1つの内部仕様を定義し、各下位コンポーネントは、それぞれのデータ処理サービスを表し、それにより定義された組み合わせは必要なサービスを表すこと、
(b)いくつかのエージェントを定義し、エージェントのうちの少なくとも1つは、受け取ったデータに応じて内部略図を選択するようになっており、エージェントは、内部仕様の終了時に存続するようになっていること、及び
(c)少なくとも1つの内部略図及びエージェントを定義する仕様を生成すること
を含む。

0084

本方法は、通常、処理システムにおいて、
(a)1つ又は複数の他のコンポーネントと通信すること、及び
(b)通信に従って内部仕様を選択すること
を含む。

0085

本方法は、概して、いくつかの所定の内部仕様のうちの1つから内部仕様を選択することを含む。

0086

本方法は、概して、エージェントを使用して通信することを含む。

0087

本方法は、通常
(a)下位コンポーネントの各々に対して通知を生成させること、
(b)通知の指示を終了コンポーネントに転送すること、
(c)終了コンポーネントに対し、指示を受け取ることに応じて終了命令を生成させること、及び
(d)終了命令を下位コンポーネントに転送すること
を含む。

0088

第14の形態において、本発明は、データ処理サービスを表すコンポーネントを実装する方法を提供し、本方法は、処理システムにおいて、
(a)下位コンポーネントの組み合わせを表す内部仕様を確定し、下位コンポーネントは少なくとも1つの局所基本コンポーネントを含むこと、
(b)下位コンポーネントの各々の実装を、
(i)各非局所基本コンポーネントに関連するそれぞれの処理システムにコンポーネント要求を転送すること、及び
(ii)局所基本コンポーネントを表す所定の実行可能コードを実装すること
によりもたらすこと、並びに
(c)下位コンポーネントに対し、内部仕様に従って通信させることによって、データ処理サービスを実行すること
を含む。

0089

第15の形態において、本発明は、コンポーネントを使用してコードを生成する方法であって、各コンポーネントはそれぞれのデータ処理サービスに対応し、本方法は、処理システムにおいて、
(a)コード要求を定義するコンポーネントの組み合わせを確定し、コンポーネントは少なくとも1つの局所基本コンポーネントを含むこと、及び
(b)コンポーネントの組み合わせを実装することによって定義されたデータ処理のシーケンスを実行し、それによってコンピュータコードが生成され、局所基本コンポーネントは処理システムを使用して所定のコードを実行することにより実装されること
を含む。

0090

局所基本コンポーネントは、通常、コンポーネントインスタンスを表す実行可能コード内に埋め込まれる実行可能コードから形成される。

0091

本方法は、通常、局所基本コンポーネントに対しコンポーネントインスタンス、処理システム及び他のコンポーネントのうちの少なくとも1つと通信させることを含む。

0092

局所基本コンポーネントは、通常、所定のデータ処理サービスを具体化する。

0093

本方法は、通常、局所基本コンポーネントを使用して、
(a)内部仕様内の下位コンポーネント間で転送されるデータを監視し、
(b)処理システムからデータをロードし、且つ、
(c)処理システムにデータを保存する
ことを含む。

0094

第16の形態において、本発明は、仕様内のコンポーネントに対し終了を実行する方法であって、コンポーネントはデータ処理サービスを表し、本方法は、処理システムにおいて、
(a)コンポーネントの完了を示す指示を受け取ること、及び
(b)終了命令がコンポーネントに転送されるようにし、いくつかのコンポーネントは終了命令に応じて終了すること
を含む。

0095

コンポーネントは、第2の処理システムによって実装され、本方法は、処理システムにおいて、第2の処理システムに終了指示を転送することを含み、第2の処理システムは、終了指示に応じて、
(a)通知指示を受け取ることに応じて終了命令を生成し、且つ
(b)いくつかのコンポーネントのうちの少なくとも1つに終了命令を転送し、コンポーネントは終了命令に応じることによって終了する。

0096

本方法は、通常、処理システムにおいて、
(a)いくつかの所定の規則を確定すること、及び
(b)所定の規則に従って終了命令を生成すること
を含む。

0097

本方法は、通常、処理システムにおいて、
(a)通知指示を受け取ること、及び
(b)通知指示を使用していくつかの所定の規則を確定すること
を含む。

0098

本方法は、通常、
(a)いくつかのコンポーネントのうちの1つ、
(b)いくつかのコンポーネントのうちの複数、及び
(c)いくつかのコンポーネントの各々
を終了させることを含む。

0099

第17の形態において、本発明は、第1のコンポーネントに提供されるいくつかのエージェントに関連するエージェントバンドルを提供することにより第1のコンポーネントが第2のコンポーネントと通信することができるようにし、各コンポーネントはそれぞれのデータ処理サービスを具体化し、本方法は、第1のコンポーネントにおいて、
(a)エージェントの各々に関連するそれぞれのバンドリングコンポーネントを提供すること、
(b)各バンドリングコンポーネントに対し、
(i)それぞれのエージェントに対する接続情報を確定させ、
(ii)エージェントバンドルに対して接続情報を追加させ、
(iii)エージェントバンドルに提供されるカウンタインクリメントさせること、及び
(c)エージェントバンドルを第2のコンポーネントに転送し、第2のコンポーネントはエージェントバンドルに応じて接続情報を確定すること
を含む。

0100

第18の形態において、エージェントをいくつかのエージェントに関連するエージェントバンドルに追加する本方法は、処理システムにおいて、
(a)エージェントバンドルを受け取ること、
(b)それぞれのエージェントに対して接続情報を確定すること、
(c)接続情報をエージェントバンドルに追加すること、
(d)エージェントバンドルに提供されるカウンタをインクリメントすること、及び
(e)変更されたエージェントバンドルを提供すること
を含む。

0101

接続情報は、通常、エージェントアドレスを含む。

0102

本方法は、第2のコンポーネントにおいて、
(a)エージェントバンドルを受け取ること、
(b)エージェントの数をカウンタから確定すること、及び
(c)対応する数のエージェントを実装することによって、その数のエージェントが処理されることが可能になること
を含むことができる。

0103

さらに他の形態において、本発明は、コンポーネントを使用してコードを生成する方法であって、各コンポーネントはそれぞれのデータ処理サービスを具体化する本方法は、
(a)コンポーネントの組み合わせを確定し、コンポーネントの組み合わせは一連のデータ処理を定義し、且つ所望の機能が実現され得るようにする要求に従って定義されること、
(b)コンポーネントの組み合わせを、
(i)組み合わせにおける各コンポーネントに対応するコンポーネントサーバの実装をもたらし、各コンポーネントサーバは処理システムによって実装されること、
(ii)各コンポーネントサーバに対し、定義された一連のデータ処理に従ってそれぞれのデータ処理サービスを実行させ、コンポーネントサーバのうちの少なくともいくつかは、データシーケンスと対話することによってそれぞれのサービスを実行し、コンポーネントサーバの少なくともいくつかは
(1)1つ又は複数のコンポーネントサーバと通信すること、及び
(2)さらなるコンポーネントの実装をもたらすこと
のうちの少なくとも1つによってサービスを実行すること
によってコンピュータコードを生成するように実装すること、
(c)一連のデータ処理を実行する結果として且つデータシーケンスから、結果としてのデータシーケンスを取得し、結果としてのデータシーケンスはコンピュータコードであること、及び
(d)コンピュータコードを処理システムに提供し、処理システムによるコンピュータコードの実行により、処理システムは所望の機能を実行すること
を含む。

0104

通常、本発明の任意の形態の方法を、本発明の他の形態のうちの任意の1つの方法を使用して実行してもよい。

0105

以下、添付図面を参照して本発明の一例について説明する。

図面の簡単な説明

0106

本発明によるソフトウェア生産の一例を概説した流れ図である。
コンピュータによって実行可能なコードを生成する処理システムの一例の概略図である。
コンピュータによって実行可能なコードを生成するウェブベースシステムの一例の概略図である。
図3エンドステーションの一例の概略図である。
図3のエンティティ処理システムの一例の概略図である。
PrintNumberコンポーネントを使用する略図の例の概略図である。
PrintNumberコンポーネントを使用する略図の例の概略図である。
negotiateコンポーネントの一例の概略図である。
2つのnegotiateコンポーネントの動作の一例の概略図である。
2つのnegotiateコンポーネントの動作の一例の概略図である。
2つのnegotiateコンポーネントの動作の一例の概略図である。
図7Aのnegotiationコンポーネントによって使用されるアルゴリズムの一例のフローチャートである。
複数のnegotiationコンポーネントの動作の一例の概略図である。
DDコンポーネントの一例の概略図である。
ALERTコンポーネントの一例の概略図である。
ATCHコンポーネントの一例の概略図である。
多段階トランザクションを実装する略図の概略図である。
多段階トランザクションを実装する略図の概略図である。
多段階トランザクションを実装する略図の概略図である。
多段階トランザクションを実装する略図の概略図である。
terminateコンポーネントの一例の概略図である。
終了及び多段階トランザクションを説明する第1の特定の実施例の概略図である。
終了及び多段階トランザクションを説明する第1の特定の実施例の概略図である。
終了及び多段階トランザクションを説明する第1の特定の実施例の概略図である。
number sourceコンポーネントの概略図である。
number sourceコンポーネントの概略図である。
number sinkコンポーネントの概略図である。
number sinkコンポーネントの概略図である。
ネゴシエーション及びコンテキスト独立性を説明する第2の特定の実施例の概略図である。
ネゴシエーション及びコンテキスト独立性を説明する第2の特定の実施例の概略図である。
ネゴシエーション及びコンテキスト独立性を説明する第2の特定の実施例の概略図である。
ネゴシエーション及びコンテキスト独立性を説明する第2の特定の実施例の概略図である。
ネゴシエーション及びコンテキスト独立性を説明する第2の特定の実施例の概略図である。
多対1接続を提供するnbundleコンポーネントの使用を示す概略図である。
多対1接続を提供するnbundleコンポーネントの使用を示す概略図である。
多対1接続を提供するnbundleコンポーネントの使用を示す概略図である。
多対1接続を提供するnbundleコンポーネントの使用を示す概略図である。
多対1接続を提供するnbundleコンポーネントの使用を示す概略図である。
図17Cのtestコンポーネントの内部略図の一例である。
図17Cのtestコンポーネントの内部略図の一例である。
図17Cのtestコンポーネントの内部略図の一例である。
エージェントntreeの使用の例を示す概略図である。
エージェントntreeの使用の例を示す概略図である。
エージェントntreeの使用の例を示す概略図である。
エージェントntreeの使用の例を示す概略図である。
エージェントntreeの使用の例を示す概略図である。
エージェントntreeの使用の例を示す概略図である。
多点接続の例を示す概略図である。
多点接続の例を示す概略図である。
多点接続の例を示す概略図である。
サーバ構築の例を示す概略図である。
サーバ構築の例を示す概略図である。
サーバ構築の例を示す概略図である。

実施例

0107

[好適な実施形態の詳細な説明]
コンピュータによって実行可能なコードを生産するプロセスの一例について、これより図1を参照して概説する。

0108

図1に示すように、最初のステップは、ステップ100において、コンピュータによる実行可能なコードの作成要求があるかを決定することである。これは、結果として得られる、コンピュータによって実行可能なコードによって実装が必要な機能を考慮することによって実現する。所望の機能が決定されると、ステップ110において、複数のコンポーネントが選択される。

0109

各コンポーネントは、コンポーネントの適当な組み合わせによりコンピュータによって実行可能なコードが生産され得るようにそれぞれのデータ処理サービスを具体化する。使用の際、コンポーネントは、互いにデータを転送することによって通信する。このため、たとえば、1つのコンポーネントの出力を別のコンポーネントの入力に接続してもよく、それにより2つのサービスを連続して実行することができる。階層構造がより基本レベルのコンポーネントのうち適当なものを結合することにより、より複雑なサービスをより基本的なサービスの集まりとして実装することも可能である。

0110

その後、ステップ120において、選択されたコンポーネントの組み合わせが定義される。これにより、コンポーネントによって提供されるサービスがステップ130において実装されるときに、通信によって所望のコンピュータによって実行可能なコードが生成されるように、コンポーネントをどのように相互接続すべきかが指定される。

0111

この技術の実施態様は複数の方法で実現可能なことが理解されよう。しかし、最も広い形態では、このプロセスは、図2に例示する一つの処理システムを使用して実行することができる。

0112

具体的には、一般に、処理システム10は、少なくとも、バス24を介して図に示すように共に接続されたプロセッサ20、メモリ21、キーボード等の入力装置22、ディスプレイ等の出力装置23を備える。処理システムをデータベース11等の記憶装置に接続するために、25に示す外部インタフェースも設けることができる。

0113

使用の際に、処理システムは、利用可能なコンポーネントの詳細をデータベース11に記憶することができるようになっている。次いで、ユーザが、入力装置22及び出力装置23を使用して、選択されたコンポーネントの組み合わせを定義することができ、処理システム10がコンピュータによって実行可能なコードを生成できるようにする。これから、処理システム10がコンピュータ、ラップトップサーバ専用ハードウェア等、いずれの形態の処理システムであってもよいことが理解されよう。

0114

処理システム10を使用してコンピュータによって実行可能なコードを生成することができる方法については、同時係属出願PCT/AU03/01474号においてより詳細に説明されている。

0115

通常、システムは分散アーキテクチャを使用して実装される。その例を図3に示す。具体的には、この例では、1つ又は複数の中央処理システム10(この例では、単に明確にするために2つを示す)がベースステーション1に設けられ、ベースステーション1は、インターネット2及び/又は複数のローカルエリアネットワーク(LAN)4等の通信ネットワークを介して複数のエンドステーション3に接続される。

0116

使用の際、上述したように、コンポーネントは、処理システム10に設けられ、且つ処理システム10によって実装されることが可能である。別法として、図示するように、コンポーネントを、1つ又は複数のそれぞれのエンティティによって設けてもよく、それらエンティティの各々は、同じくインターネット2及び/又はLAN4に接続された1つ又は複数のそれぞれのエンティティステーション5(明確にするために2つのみを示す)を運用する。この例では、各エンティティステーション5は、図示するように、データベース16等の記憶装置に接続されたエンティティ処理システム15から形成される。

0117

使用の際、システムのユーザは、エンドステーション3を使用してベースステーション1と通信し、それにより適当なコンポーネントによって具体化されるサービスの提供を受けることができる。

0118

これは複数の方法で実現することができるが、この例では、単に例示を目的としてであるが、サービスへのアクセスウェブページを使用することによって提供される。したがって、これを実現するために、各エンドステーション3は、必要に応じてウェブページにアクセスしデータをベースステーション1に転送するようになっている処理システムから形成される。

0119

適当なエンドステーション3の一例を図4に示す。図示するように、エンドステーション3は、バス34を介して互いに接続されたプロセッサ30、メモリ31、キーボード等の入力装置32、ディスプレイ等の出力装置33を備える。処理システムには、必要に応じてエンドステーション3をインターネット2又はLAN4に接続する外部インタフェース35も設けられる。

0120

使用の際、プロセッサ30は、ベースステーション1に設けられた処理システム10と通信ネットワーク2、4を介して通信して、処理システムのサービスへのアクセスを可能にするようになっている。したがって、エンドステーション3を、通常、データ転送を可能にし、場合によってはウェブブラウジングを可能にするアプリケーションソフトウェアを動かしている、適当にプログラムされたPC、インターネット端末、ラップトップPC、ハンドヘルドPC等、任意の適当な処理システムから形成することができる、ということが理解されよう。

0121

コンポーネントは、コンポーネント及びコンポーネントにおいて提供されるサービスの性質に応じて、処理システム10自体に実装することができ、又はエンティティ処理システム15の1つに実装することもできる。

0122

したがって、エンティティ処理システム15は、通信ネットワーク2、4を介して処理システム10と通信できなければならない。これを実現するために、エンティティ処理システム15は、一般的に、図5に示す処理システムと同様である。

0123

図示するように、エンティティ処理システム15は、プロセッサ40、メモリ41、キーボード等の入力装置42及びモニタ等の出力装置43を備え、これらは、バス44を介して互いに接続される。処理システムにはまた、必要に応じてエンティティステーション5をインターネット2又はLAN4、同様にデータベース16に接続するための外部インタフェース45も設けられる。

0124

使用の際、プロセッサ40は、エンティティがそれぞれのコンポーネントにカプセル化されたサービスを実行できるようにするようする。したがって、エンティティステーション5を、適当にプログラムされたPC、インターネット端末、ラップトップPC、ハンドヘルドPC等の任意の適当な処理システムから形成することができることが理解されよう。サービスはデータ集約的であり得るため、エンティティ処理システム15はサーバ等から形成されることが多い。

0125

いずれの場合も、エンドステーション3及びエンティティステーションを、共通の処理システムを使用して実装してもよく、エンドステーション3とエンティティステーション5との区別は主に単に説明を目的としたものであることが理解されよう。

0126

エンドステーション3のユーザがベースステーション1を介してコンポーネントにおいて提供されるサービスにアクセスすることを依然として可能にしながら、コンポーネントをエンティティステーション5によって実装することができるようにするためには、通常、コンポーネントの少なくともいくらかの詳細がコンポーネントの仕様の形態でデータベース11に格納される。

0127

コンポーネントの仕様は、多数の形式のうちのいずれの形式であってもよく、グラフィカル表現等を含んでもよい。しかしながら、一般に、コンポーネントの仕様は、ユーザがそれぞれのコンポーネントによって具体化されるサービスのタイプを確定するために十分な情報を含む。コンポーネントの仕様は、コンポーネントを選択し使用することができるようにするために十分な情報を提供することが留意されるべきである。したがって、コンポーネントの仕様は、実行することができるデータ処理の指示を含むが、これがどのように実現されるかについては必ずしも含まない。

0128

そして、ベースステーション1は、ユーザがコンポーネントの組み合わせを定義することによって、データ処理を実行し又はコンピュータコードを生成することができるようにする、フォーラムを提供することも可能である。一例では、これは、使用されるコンポーネント及びそれらの間の通信を設定する仕様を定義することによって実現される。仕様書は、通常、エンドステーション3を介して適当なGUIを使用して定義され、したがって、それによりユーザは、フォーラムに提示されるコンポーネントを選択し、これらを略図にドラグアンドドロップし、それらコンポーネント間の適当な接続を定義してコンポーネントの通信を定義することができる。これに関して、フォーラムは、コンポーネントの仕様へのアクセスを提供するポータルとして作用する。

0129

仕様が完成すると、これを、ビルドとして知られるプロセスで実装することができる。ビルドの間、仕様の各コンポーネントに対してそれぞれのコンポーネントインスタンスを生成することができる。各コンポーネントインスタンスを、通常エンティティステーション5のそれぞれ1つを使用して実装されるそれぞれのコンポーネントサーバで作成してもよい。使用の際、システムが実装されると、データを、それぞれのコンポーネントインスタンスの間で転送することができ、コンポーネントインスタンスのうちの少なくともいくつかが受け取ったデータに対し必要なデータ処理を実行することによって、必要に応じて処理されたデータの出力が提供される。

0130

コンポーネントインスタンスは、互いに通信することができ、特に、両コンポーネントが理解できる形式で情報及びデータを転送できる、ということが理解されよう。

0131

一例では、これは、エージェントを使用して実現され、それぞれのエージェントはコンポーネントの各ポートに対して提供される。このため、1つのコンポーネントのポートに関連するエージェントは、別のコンポーネントのポートに関連するエージェントと協働する。ポートは、一般に、情報の双方向の交換に対して使用されるが、データの転送に関連する指向性があることが多く、したがって、ポートは通常入力及び出力と呼ばれる。

0132

エージェント間の通信は、通常、アドレス情報を含むヘッダと転送される任意のデータを含むペイロードとを含むメッセージを転送することによって実現される。エージェント間の通信は、1つのエージェントに対して別のエージェントにメッセージを送信させる程度に単純であってもよく、それ以上の通信は行われなくてもよい。別の方法として、実装によって通信の追加の段階を実行してもよい。

0133

ビルドプロセス中に仕様が構築される場合、仕様内のコンポーネントを提供する各エンティティに対して取得命令が送信される。そして、各エンティティは、関連する任意のエージェントとともにそれぞれのコンポーネントインスタンスを含むそれぞれのコンポーネントサーバを構築することができる。これが完了すると、エージェントは、コンポーネント間でデータを通信することにより、コンポーネントがそこにおいて具体化されるそれぞれのデータ処理を実行することが可能になる。

0134

データ処理は、多数のタイプのうちの任意の1つであってもよいが、一般に、処理コンポーネント及びコード生成コンポーネントとして知られる2つのカテゴリのうちの1つである。ビルドプロセス中、処理コンポーネントは、データを処理して出力を提供するかまたは別の動作を実行する。このため、たとえば、これは、2つの数字を受け取って加算することによって出力を提供することを含むことができる。

0135

対照的に、コンポーネントに対するコード生成により、コードの一部(コードフラグメントとして知られる)が生成され、それは、より大きい実行可能ファイルの一部として実行される場合、データ処理を提供する。このため、コンポーネントは、実行される時に2つの数字の加算が行われるようにするコードフラグメントを生成することができる。コンポーネントの2つの層を異なる方法で使用してもよいが、一般原理はコンポーネントの両タイプに適用される。したがって、明確にするために、以下の説明ではコンポーネントのタイプの間には必ずしも区別しない。このため、コンポーネントによって実行されるように説明する処理を、コンポーネント自体によって実行してもよく、又はコンポーネントによって生成されるコードフラグメントによって実行してもよい。

0136

この例では、エンティティは、コンポーネントに関連するエージェントと他のコンポーネントのエージェントとの間で形成される必要のある接続を指定する、それぞれのコンポーネントに対する取得命令を受け取る。特に、これには、コンポーネントインスタンス及び対応するエージェントが構築される時に、エージェントが他のエージェントと直接通信することができるように、他のエージェントのエージェントアドレスが含まれる。

0137

一例では、生成されたコードは、生成されたコードが以下のような要素に依存するという意味で、コンテキスト(context(s);条件)に依存するコードであってもよい。
・開始時の実行可能ファイルが既知の状態。このため、たとえば、結果としてのコンピュータによって実行可能なコードがアプリケーションである場合、開始時のアプリケーションの既知の状態はオペレーティングシステムによって確定される。
・前の命令からのレジスタの既知の状態
・スタック及びメモリの既知の状態
・レジスタ、スタック及びメモリの割り当て
プロジェクト内のそれ自体(コンポーネント)の番号
・どのコンポーネントが自分のコンポーネントに接続されるか
・コードを置くべき場所

0138

コンテキストに依存するコードは、同じタスクを実行する多くの方法があり、方法によってはシステムの他の部分に依存することを利用する。コンテキストに依存するコードを作成することによって、第3者が、あまり書き換えることなくコードを容易に再使用することが防止されるか、又はリバースエンジニアリングすることが防止される。或るレベルの依存性を越えると、リバースエンジニアリングし書き換えるよりも、コンポーネントを単に再購入するほうが経済的になる。

0139

コンテキストの依存性は、結果によって生成されるコンテキストを供給者が調べることによって実現される。各コンテキストは一意であるため、各コンテキストをカスタマイズすることが可能である。

0140

コンテキストに依存するコードを生成することにより、従来のコードに比較してコードサイズを実質的に低減することができる。さらに、コンポーネント供給者がコード生成プロセスのわずかではあるが、詳細な態様に焦点を合わせることができるようにすることによって実現することができる特殊化により、信頼性、生産性及び最適化を劇的に向上させることができる。

0141

ここで、本発明のいくつかの追加の特徴について説明する。

0142

<ネゴシエーション>
使用の際、コンポーネントは、所定のデータ処理サービスを提供するように動作する。データ処理サービスには、データの処理又は実行可能ファイルの一部の生成が含まれてもよい。したがって、コンポーネントが実装される方法は、処理されるデータのタイプ、実行される処理のタイプ及びデータが処理されるコンテキスト等、複数の要素によって決まる。

0143

たとえば、コンポーネントは数字の加算を実行するようになっていてもよく、その場合、実装は、数字のフォーマット、又はその数字が別のコンポーネントから受け取られたペイロードの一部としてレジスタで提供されるか等の複数の要素によって決まってもよい。

0144

同様に、コンポーネントは、完全な実行可能プログラムの一部として実行される場合に2つの数字の加算を実行するように動作するコードフラグメントを生成してもよい。この場合、生成された実行可能コードは、この場合もまた加算される数字によって決まり、したがってコンテキスト依存となる。

0145

このため、たとえば、図6Aは、数字をプリントするコードフラグメントを作成することに関与するPrintNumberコンポーネントを示す。これを実現するために、コンポーネントは、そのコンテキストから、コンピュータによって実行可能なコードが実行される時にその数字がどのように送られるかを判断しなければならない。

0146

概して、データ及びコンテキストのタイプは、通常、仕様内の他のコンポーネントによって決まり、そのため、それは、結果としての実行可能コードの異なる部分の動作に影響を与える。したがって、コンポーネントが複数の異なるコンポーネントと通信するために十分頑強でなければならない場合、それは異なるデータタイプ及び/又はコンテキストを操作するために十分柔軟でなければならない。

0147

これを、任意の状況においても、同じコンポーネントの実装を使用して操作されるのを可能にする一般化された機能性を提供することによって達成することができるが、これは、通常、それほど効率的ではなく、一般に実装するのがより複雑である。したがって、コンポーネントが、ビルドプロセス中にデータ及び/又はコンテキストのタイプを確定するためにネゴシエーションを利用することが一般的である。図6Aにおいて、この目的のために、コンポーネントPrintNumberにおける専用の通信接続(PrintCode)が確保され、エージェントAは、エージェントAとエージェントPrintCodeとの間の通信チャネルを介してPrintNumberコンポーネントに対して数字を送る方法を通信することに関与している。

0148

コンテキストを、コンポーネントがどのピアに接続されているかによって確定してもよい。これらのピアコンポーネントもまた、同様にそれらのそれぞれのコンテキストを確定することができる。このため、大抵の場合、コンポーネントは、それらの相互のコンテキストを確定するために通信しなければならない。この通信は、提供されているサービスの複雑性によって異なる。

0149

図6Bにおいて、コンポーネントPrintNumberは、種々の数字移送選択肢を使用して提供されるディジットをプリントする適当なコード断片を生産することができる知識を具体化する。同様に、ReadDigitコンポーネントは、キーボードから数字を読み取るコードフラグメントを作成することに関与してもよいが、また、コードが最終的に実行される時に数字をいかに送ることができるかを、そのコンテキストから確定しなければならない。

0150

PrintNumberコンポーネントは、ReadDigitコンポーネントにそのエージェントDigitを介して接続されるエージェントPrintCodeを有し、それによりそれらコンポーネントは、数字を送り/供給するためのコンテキストを発見するために通信することができる。

0151

しかしながら、通信は、このコンテキストにおいていくつかの有効なソリューションを有するコンポーネントPrintNumber及びコンポーネントReadDigitによって複雑になる。これは、コンポーネントがコンテキストの範囲で動作するために十分に柔軟であることが必要である結果である。これらのコンポーネントは、いくつかの方法のうちの任意の1つで数字を移送するためのコードフラグメントを生成することによって、それらのサービスをうまく完了することができる。しかしながら、方法によっては、他の方法より複雑であるか又はより多くのコードを送る可能性があるため、他の方法よりコストがかかる。また、移送方法が与えられて各コンポーネントに対してコードフラグメントを確定する相対的なコストは異なる可能性がある。

0152

この問題を克服するために、ネゴシエーションとして知られるプロセスが使用される。ここで、negotiateコンポーネントを利用するネゴシエーションプロセスの一例について説明する。この例示の目的で、negotiationコンポーネントは、処理コンポーネントとみなされ、したがって、ビルド中にネゴシエーションサービスを提供する。しかしながら、代替形態として、PrintNumber及びReadDigitサーバは、ネゴシエーション処理をサーバ内に予め構築するネゴシエーションコードコンポーネントとともに部分的に構築されていることも可能である。これらのサーバは、動作時、ネゴシエーションが実行されるようにすることができる。この技法を、後により詳細に説明するように、より高レベルのコンポーネントを実装するために使用することができる。

0153

特に、図7Aは、Inエージェント、Listエージェント、Typeエージェント及びValueエージェントを有するnegotiateコンポーネントを示す。このコンポーネントは、Listエージェントを使用してネゴシエーションによる設定のリストを検索するようになっており、それは後に、Inエージェントを介して別のnegotiationコンポーネントと交換され、それにより同様のリストが提供される。

0154

そして、各negotiationコンポーネントは、2つのリストを比較することによって共通のネゴシエーションによる設定を確定することができる。所定のアルゴリズムに従ってこれを実行することにより、各negotiationコンポーネントは相互の結果を確定することができる。

0155

これに続いて、ネゴシエーションによる設定の指示を、Typeエージェントを介して仕様の後続するコンポーネントに転送することができ、必要に応じて、データ値はValueエージェントを介して提供される。

0156

ここで、図7Bを参照してnegotiationコンポーネントの使用の一例についてより詳細に説明する。

0157

この例では、何らかの連続したデータ処理が実行されるのを可能にする2つのコンポーネント1000、1050が設けられている。この場合、各コンポーネントは、同様に図示する2つの下位コンポーネント1010、1020及び1060、1070から形成される。コンポーネント1000、1050はまた、図示するように、コンポーネント1000、1050が相互接続されるのを可能にする外部エージェント1001、1051と、それぞれの内部エージェント1002、1052とを含む。

0158

コンポーネント1010、1060は、それぞれのInエージェント1011、1061、Listエージェント1012、1062、Typeエージェント1013、1063及びValueエージェント1014、1064を有するnegotiationコンポーネントであり、コンポーネント1020、1070は各々、2つのエージェント1021、1022;1071、1072を含む。概して、コンポーネント1000、1020、1050、1070は、他のエージェント及びそれぞれのデータ処理を提供する下位コンポーネントを有してもよいが、これは、明確にするためにこの説明から省略する。

0159

ここで、negotiationコンポーネントの動作について説明する。

0160

この例では、各コンポーネントは、エンティティステーション5のうちの1つによって取得命令が受け取られることに応じてそれぞれのコンポーネントサーバによってそれぞれのコンポーネントインスタンスとして実装されるものとする。

0161

特に、図示するように、取得命令が受け取られコンポーネント1000及び1050が構築されると、エージェント1001、1051が相互接続し、各コンポーネントサーバは取得命令を生成し、それによりコンポーネント1010、1020、1060、1070が生成される。

0162

これに続いて、エージェント1001、1051は、それら自体によってそれ以上の動作が必要とされないと確定し、したがって、これらエージェントは受け渡しをし、エージェント1011、1061が直接相互接続することができるようにする。同様に、Listエージェント1012、1062は、それぞれの内部エージェント1002、1052と接続し、それらからネゴシエーションポジションを表すリストを取得し、エージェント1013、1014;1063、1064はそれぞれ、図7Cに示すようにエージェント1021、1022;1071、1072と相互接続する。

0163

ネゴシエーションポジションは、通常、複数の選択肢及びそれらの選好の指示を含む。リストは、それぞれのコンポーネントによるそれぞれのデータ処理サービスの実装に基づくため、コンポーネントが最初に設計され、したがってコンポーネントの仕様等の一部として提供される、コンポーネントインスタンスを実装するために使用されるソフトウェア内にハードコード化されることが可能である時に確定される。いずれの場合も、エージェント1002、1052は、それぞれのリストを、エージェント間通信に従ってメッセージペイロードの一部としてListエージェント1012、1062に提供するように動作する。

0164

このため、たとえば、ネゴシエーションがレジスタの使用に関する場合、各リストは、それぞれのコンポーネント1000、1050がサポートすることができるレジスタと、それぞれの重み付けによって指示される好ましい順序とを指示する。

0165

この時点で、エージェント1011、1061は、それらそれぞれのリストをペイロードとして含むメッセージを交換する。したがって、これに続いて、各negotiateコンポーネントが両リストのコピーを有することが理解されよう。そして、negotiateコンポーネント1010、1060は、合意に達するために所定のアルゴリズムを実行する。一例では、これは、最大合致(best match)ゲーム理論アルゴリズムの実装に基づく。ここで、この一例についてより詳細に説明する。

0166

一旦合意に達すると、各negotiationコンポーネント1010、1060は、それぞれのエージェント1013、1063を介してコンポーネント1020、1070に指示を提供することができる。エージェント1014、1064は、通常、受け渡し手続きを受け、そのためエージェント1022、1072は、図7Dに示すように直接相互接続する。この時点で、エージェント1022、1072によって交換されるメッセージのペイロードにデータを含めることにより、コンポーネント1020、1070間でデータを直接転送することができる。

0167

業者には、コンポーネント1020、1070のいずれか1つの実装が、ネゴシエーションポジションの結果に依存してもよい、ということが理解されよう。したがって、同時係属出願PCT/AU03/01474号に記載されているように、通常、コンポーネント1020、1070が動的構築手法を実装する。

0168

これは、エージェント1021、1022、1071、1072のうちの1つをセレクタエージェントにすることにより、コンポーネント1020、1070及びコンポーネント1000、1050の実装の方法がネゴシエーションの結果によって決まるようにすることによって実現される。これは、選択されたネゴシエーションポジションか又は受け取られたデータのそれぞれの値のいずれかによって決まってもよく、コンポーネントがネゴシエーションのすべての結果をサポートすることができる限り無関係である。

0169

たとえば、ネゴシエーションは、数字が整数として交換されるということを確定してもよいが、コンポーネントの内部仕様の設計は、整数として転送されている数字だけでなく数字の値によって決まってもよい。

0170

ここで、図8を参照してネゴシエーションを実行するために使用されるアルゴリズムの一例について説明する。この例では、negotiateコンポーネント1010、1060に関連するポジションは、以下の表1に示す通りである。

0171

0172

ステップ200において、negotiateコンポーネント1010、1060は、Inエージェント1011、1061を介してネゴシエーションポジションを交換するように動作する。この結果、両コンポーネントは互いの重み付きリストにアクセスすることができるようになる。ステップ210において、各コンポーネント1010、1060は、各リストの重み付けが合計して1になるように各リストを正規化するように動作する。この例では、上述した表1は事前に正規化されたリストを含むが、これは必須ではない。

0173

ステップ220において、各negotiationコンポーネント1010、1060は、各リストに対して最大化され正規化された重み付けを確定するように動作する。この例では、最大化された重み付け値は各リストに対して0.4である。

0174

ステップ230において、各negotiationコンポーネント1010、1060は、両リストに共通していないオプションを除去するように動作する。この場合、オプションA、B、E及びFは両リストに共通しておらず、したがって除去され、その結果新たなリストが生成され、それは次いでステップ240において再正規化され、表2に示すリストとなる。

0175

0176

ステップ250において、各negotiationコンポーネント1010、1060は、両リストの各ネゴシエーションオプションに対して平均重み付けを確定するように動作する。この場合、C及びD両方の平均重み付けは0.5に等しい。

0177

ステップ260において、各negotiationコンポーネントは、明確な(distinct)選択肢があるか判断するように動作する。これは、たとえば、リストの選択肢のうちの1つが他の選択肢のすべてより高い重み付き平均を有する場合に発生する。この特定の例では、重み付け平均は等しく、したがって、プロセスはステップ270に進み最小平均二乗誤差を計算する。

0178

特に、ステップ220において確定されるような最大重み付き値からの最小平均二乗誤差は、標準技法に従って生成される。ステップ280において、negotiationコンポーネント1010、1060は、明確な選択肢があるか判断するように動作する。ここでもまた、これを、あるとすれば選択肢のいずれがより低い最小平均二乗誤差を有するか判断することによって実現してもよい。

0179

この場合、最小平均二乗誤差は両場合において0.01に等しく、したがって、本方法はステップ290に進み任意の規則を使用して明確な選択肢を選択する。一例では、これは、後により詳細に論考するように、コンポーネントのいずれか一方又は両方のリストに現われる最初の選択肢を選択することを含んでもよい。したがって、この例では、任意の規則によって選択肢Cが選択されることになる。

0180

ステップ260、280又は290のいずれかにおいて適当な選択肢が確定されると、ネゴシエーションは完了する。

0181

ステップ290の前に優先ポジションが確定されていない場合、確実に、各negotiateコンポーネントが同じネゴシエーションポジションを選択し、これが、コンポーネント1000、1050を実装するエンティティに対して過度損害を与えることがないように公正に実行されることが必要である。

0182

当業者により、これをいくつかの方法で実現してもよい、ということが理解されよう。たとえば、アルゴリズムは、各negotiateコンポーネント1010、1060に関連するか又は各コンポーネント1000、1050に関連する擬似乱数を生成することができ、その後それらが比較されることにより、最大の数を有するコンポーネントのネゴシエートリストが選択されることが可能になる。

0183

しかしながら、1つの好ましい例では、結合された状況におけるネゴシエーションポジションの選択は、ビルドプロセス中に割り当てられる一意のエージェントIDを使用することによって確定される。ここでもまた、この場合、最高エージェントIDを選択することがまたいくつかのエンティティに対して有利である可能性がある。したがって、これは、各negotiateコンポーネントに関連する一意のエージェントIDに所定のハッシュ関数を適用することにより数字を計算することによって回避される。こうした計算は、各エージェントがシステム全体を通して一意のIDを有するため、デッドロックがないことが保証され、一意のエージェントIDをハッシュすることにより、一貫して高いエージェントID番号を享受するコンポーネントから発生する可能性のある優位が回避される。

0184

プロトコル
要件の集まりを、プロトコルに分解することができ、ネゴシエーションはそれに関して実施され、異なるプロトコルは選択肢の異なるリストを定義する。

0185

図7A及び図7Bに示す例では、ネゴシエーションは、数字プロトコルを使用する数字の移送方法に対するものである。数字プロトコルで利用可能な多くの移送方法がある可能性があり、これらの方法はプロトコルの一部として記録される。

0186

コンポーネントは、記録されたセットに加えて結果をサポートすることができ、それにより、既に販売されているコンポーネントを、より柔軟にすることによって強化することができる。しかしながら、コンポーネントがプロトコルとのコンプライアンス宣伝したい場合にサポートしなければならない結果の最小セットがある。この最小セットは、プロトコルとのコンプライアンスを主張するコンポーネントの間の任意のネゴシエーションにおけるソリューションを保証し、したがって、ビルド例外(ビルドプロセス中のエラー)の頻度を最小限にする。

0187

ディシジョンツリー
negotiateコンポーネントをカスケードにすることによりディシジョンツリーを作成することができる。

0188

この一例を図9に示す。図9は、2つのコンポーネント1080、1090を表し、それらの各々は、図示されるように接続された2つのそれぞれのnegotiationコンポーネント1081、1082、1091、1092を含む。

0189

この例では、2つのnegotiateコンポーネント1081、1091はまず、図7に関して上で概説したように相互接続して合意に達する。

0190

これが完了すると、negotiateコンポーネント1081、1091によって確定される値は、それぞれのValueエージェント及びInエージェントを介してnegotiationコンポーネント1082、1092に転送される。そして、negotiateコンポーネント1082、1092は、必要に応じてさらなるネゴシエーションを実行する。

0191

この場合、negotiateコンポーネント1081、1091から得られる値は、negotiateコンポーネント1082、1092によってそれぞれのListエージェントを介してそれぞれのリストを選択する際に使用される。このため、第1のネゴシエーションの結果を使用して、後に実行されるネゴシエーションの性質に影響を与えることができる。

0192

値は、後続するコンポーネント1081、1091のInエージェントに接続されているように示されているが、先のnegotiationコンポーネント1081、1091のTypeエージェントを仕様のセレクタエージェントに接続してもよく、それには、たとえば、後続するnegotiationコンポーネント1082、1092のInエージェントが含まれてもよい、ということが理解されよう。このため、ネゴシエーションを、先のネゴシエーションによって確定されたタイプに応じるように行うことができる。

0193

これにより、ネゴシエートポジションのツリーを定義することができ、ツリーの各ブランチは先のネゴシエーションの結果を反映する。

0194

代替形態
ネゴシエーションを実行する代りに、強制されたネゴシエーションポジションを使用することができる。これを、たとえば単一ネゴシエーション選択肢のみが定義されたプロトコルを実装することによって実現することができる。別の方法として、これを、他のコンポーネントが所定の選択肢に従って直接通信するようにnegotiationコンポーネントを単に除去することによって実現してもよい。

0195

ネゴシエーションの選択肢を大幅に除去することにより、接続プロトコルが簡略化するが、コンポーネント間の通信が制限され、コンポーネントがよりもろくなることによって、ビルドプロセスにおけるエラーが増加する、ということが理解されよう。

0196

さらなる選択肢は、ビルドプロセス中にエラーの発生を可能にするというものである。このため、たとえば、2つのリストの間に共通のネゴシエーション選択肢がない場合、又はネゴシエーションが提供されない場合で、且つコンポーネントがたとえば異なるフォーマットの数字又はデータを転送しようと試みている場合、ビルドプロセス中にエラーを生成することが可能である。

0197

この例では、システムのユーザは、ビルドエラーが発生したという事実が警告され、それによりビルドエラーを何らかの方法で調整することが可能になる。これを、たとえば、ユーザが必要に応じてデータのフォーマットを変換するために、追加のコンポーネントを挿入することができるようにすることにより、実現することができる。システムは、こうした場合、手動プロセス立ち戻ることができ、その場合、オペレータは、問題の性質を検査した後、難局を解決するために特注の仕様を構築する。

0198

多点ネゴシエーション
ネゴシエーションが2つのコンポーネント間で直接実行されることに加えて、より多くのコンポーネントの間で多重ネゴシエーションを実行することも可能である。ここで、この一例を、ADDコンポーネントの一例を示す図10を参照して説明する。

0199

この例では、addコンポーネントは、それぞれIn1、In2及びOutと付された3つのエージェントを有し、それらは、実行時に加算するデータを収集し送る、結果としてのコード断片の設計において使用される移送選択肢をネゴシエートするために使用される。当業者には理解されるように、ビルドチェインに接続するためにBuildエージェントが提供され、それにより結果としてのコードを送ることが可能になる。

0200

コードは、addコンポーネントによって生成されることが可能になる前に、仕様において隣接するコンポーネントから、データがいかにして収集され送られるかを確定しなければならない。この特定の例では、addコンポーネントの実装の方法は、加算されるデータを移送するための選択肢及び結果を提供するための選択肢が多く存在することを意味する。したがって、addコンポーネントは、この移送の正確な形式を確定するために他のコンポーネントとネゴシエートし、それにより加算関数が送られるコードにおいて具体化されることができるようにすることが必要である。

0201

一例では、データの移送に関連するネゴシエーションのすべてを、互いから分離して行うことができる。このため、たとえば、各エージェントIn1、In2及びOutは、それぞれの移送メカニズムを提供するためにそれぞれのコンポーネントとネゴシエートすることができる。この例では、addコンポーネントによって生成されるコードフラグメントは、所定のレジスタに提供される値を加算するようになっていてもよく、それによりこれらを、同様に所定のレジスタに提供されている結果と結合することができる。しかしながら、この技法による加算コード断片の動作には、加算関数が実行されるのを可能にするために必要な命令より多くの命令が必要となる可能性がある。これは、たとえば、値がレジスタ以外のメカニズムを使用して提供され、後にその値を要求されたレジスタに移動させなければならない場合に発生する可能性がある。これにより、速度、メモリ使用率等のパフォーマンスに不利益がもたらされる。

0202

したがって、1つのネゴシエーションの結果が別のネゴシエーションの結果に影響を与えるようにネゴシエーションを連鎖させることが好ましい。このため、ネゴシエーションを連鎖させることにより、それより前のネゴシエーションの結果に基づいてコンポーネントのネゴシエーションポジションが変更される。これにより、後にさらなるネゴシエーションが実行される前に、情報を収集しいくつかの設計選択肢を決定することができ、それにより合意されたネゴシエーションポジションを、すでに確定された気に入ったソリューションに基づいて確定することができる。

0203

連鎖を、それぞれの実装に応じて順方向に又は逆方向に行うことができ、ここでこの例について説明する。

0204

順方向連鎖の一例では、In1エージェント及びIn2エージェントを介してデータを供給するコンポーネントは、所定のレジスタにデータを置くことを含むデータ移送の好ましい形態を有することができる。この場合、好ましい選択肢は、これらのレジスタを使用して加算を実行することである。このため、ネゴシエーションの結果を提供するためにレジスタを使用することに対し、Outエージェントによって後続するコンポーネントと実行される任意のネゴシエーションにおいて高い重み付けが与えられることになる。

0205

このため、この例では、供給者がデータをメモリレジスタにコピーすることによって移送することを好むため、addコンポーネントは、Outエージェントに対しデータ移送のこの形態に対し高い重み付けを置くようになっている。Outエージェントに結合されたコンポーネントもまたメモリレジスタを介して転送されるデータを受け取ることができるものとすると、これは、すべてのコンポーネント間の合意されたネゴシエーションポジションであると確定されることになる。

0206

同様に、逆方向連鎖方法では、Outエージェントに結合されたコンポーネントは、まず、ネゴシエーション手続き中に、addコンポーネントと後続するコンポーネントとの間のデータ移送の好ましい形態を確定する。たとえば、これは、特定のレジスタに対する選好なしにメモリレジスタを介してデータを移送することが好ましいと指定してもよい。そして、addコンポーネントは、In1エージェント及びIn2エージェントによって実行されるネゴシエーションに対しそれぞれのメモリレジスタのデータを移送するためにネゴシエーションポジションに対する重み付けを上昇させる。

0207

このため、ここでもまた、これを使用して、In1エージェント及びIn2エージェントに結合されたコンポーネントによって生成されるコード断片が、実行時に事前に確定された(In1、In2を通してのネゴシエーションを介する)メモリレジスタ位置にデータを提供し、それによりソリューションのパフォーマンスが向上することを保証することができる。

0208

当業者には、ネゴシエーションを独立して行うことにより、加算機能を実装するために追加の命令コードを利用してaddコンポーネントによってコードフラグメントが生成され得ることが理解されよう。特に、加算コードフラグメントには、データを所定のレジスタに移動させる2つの命令と、加算を実行するさらなる命令と、結果を適当なレジスタに移動させる最後の命令とが必要である。

0209

しかしながら、ネゴシエーションを連鎖させることにより、加算コードフラグメントは単一命令のみを必要とするようにすることができる。この場合、In1エージェント及びIn2エージェントに結合されたコンポーネントからのコードフラグメントは、加算されるデータを、加算コードフラグメントによって要求される所定のレジスタに配置する。そして、加算コードフラグメントは、これらのレジスタの内容が加算されるようにする単一命令を生成することができ、結果レジスタもまた、outエージェントに接続されたコンポーネントとなされた移送合意を満足させる。

0210

<局所基本要素
使用の際、ビルドプロセス中に仕様が実装されると、コンポーネントを、それぞれのコンポーネントサーバによってそれぞれのコンポーネントインスタンスとして実装することができる。コンポーネントサーバは、通常、コンポーネントサービスを構築し送るために使用されるコンポーネントの内部仕様を具体化する。この内部仕様は、それぞれのコンポーネント内に含まれる下位コンポーネントの相対編成を表し、結果は、コンポーネントサービスを送ることである。

0211

当業者には、これが階層配置であり、仕様全体において高い方のコンポーネントの内部仕様内の下位仕様として実装されるコンポーネント自体が、下位コンポーネントの配置を定義する内部仕様を含むことができる、ということが理解されよう。

0212

しかしながら、最終的に、自身がさらなる下位コンポーネントからは構成されておらず、したがってそれ自体が内部仕様を有していないコンポーネントが提供される。この特定の例では、コンポーネントは、たとえばオペレータに対してデータを手動で処理させるか、又は処理が実行可能コード等を使用して実行されるようにすることにより、データ処理を直接実行する。

0213

内部仕様を有しておらずそれ以上下位コンポーネントに分解されないこうしたコンポーネントを、一般に基本コンポーネントと呼ぶ。

0214

したがって、基本コンポーネントは、下位コンポーネントにそれ以上分解することができず、したがってそれ自体データ処理を実行するサーバによって実装されるコンポーネントである。当業者には、これらコンポーネントを基本コンポーネントと呼ぶが、それらは、単純な処理に制限されるものではなく、それらがそれぞれの実装及び実装するサーバの複雑性に応じて実行するサービスにおいて、任意に複雑であり得る、ということが理解されよう。

0215

このことから、後により詳細に説明するように、基本コンポーネントサーバ自体が、適当な仕様を構築することによって作成される実行可能コードであることが理解されよう。基本コンポーネントを提供することに加えて、局所基本コンポーネントと呼ばれるコンポーネントの追加の下位分類がある。

0216

局所基本コンポーネントは、高レベルのコンポーネントの内部仕様の一部として実装される基本コンポーネントである。内部コンポーネント内の下位コンポーネントに加えて、局所基礎コンポーネントは、より高レベルのコンポーネントを具体化するコンポーネントサーバの一部として実装される。

0217

このため、コンポーネントサーバがより高レベルのコンポーネントに対応するコンポーネントインスタンスを生成する場合、このコンポーネントインスタンスを表すコードは、局所基本コンポーネントの機能を組み込む。これにより、局所基本コンポーネントを内部仕様の一部として実装することができ、必要なデータ処理及び機能のすべてがコンポーネントサーバ自体によって実行される。そして、これにより、局所コンポーネントを局所的にすることができ、システムのパフォーマンスが大幅に向上する。

0218

このため、たとえば、コンポーネントが実装される場合、局所基本コンポーネントによって提供される機能は、それぞれのコンポーネントサーバ自体によって実装され、したがって、遠隔地でサービスが実行される必要はない。これにより、データをコンポーネントサーバから世界中の別の場所にある別のコンポーネントサーバに転送する必要が低減し、局所基本コンポーネントの機能を実装することができる。これにより、ネットワークトラフィックが低減し、局所基本コンポーネントによって具体化されるそれぞれのサービスに対する取得命令等の必要がなくなる。

0219

さらに、サーバ自体内に機能を提供することにより、コンポーネントがサーバ自体の挙動を変更することができるメカニズムが提供される。

0220

ここで、この一例を図11Aに示すalertコンポーネントを参照して説明する。特に、alertコンポーネントは、図示するようにInエージェント及びOutエージェントを含む。

0221

使用の際、トラフィックは、alertコンポーネントを通ってInエージェントからOutエージェントにルーティングされ、したがって、これを、単に、コンポーネントの内部仕様内の2つのそれぞれの下位コンポーネント間の任意の接続に提供することができる。

0222

使用の際、alertコンポーネントは、そこを通って転送されるトラフィックを監視し、障害又は予測されないトラフィックが発生した場合にサーバオペレータに対してポップアップダイアログを表示するようになっている。これにより、サーバオペレータに対し、障害が発生した事実を警告することができ、ポップアップダイアログボックスは、障害の性質を示す。

0223

当業者には理解されるように、alertコンポーネントが異なるコンポーネントサーバのコンポーネントとして実装される場合、異なるマシンに提供されるalertコンポーネントサーバは、ポップアップダイアログボックスを意味のあるコンテキストで表示するために親サーバのディスプレイにアクセスする必要がある。しかしながら、サーバの動作に関する情報がシステムの他のサーバによって要求されるため、これは深刻な安全性問題をもたらす。

0224

これに加えて、局所基本要素は、仕様等によって実行される計算で使用するためにサーバからの構築時間データへのアクセスを提供するようになされることが可能である。

0225

たとえば、局所基本コンポーネントを使用して、サーバのアクティブインスタンスの数の指示を含む仕様を実装するコンポーネントサーバを提供してもよい。これにより、現サーバに対する負荷が管理不能となるように見える場合、処理を他の二次サーバオフロードすることができる。

0226

局所基本コンポーネントのさらなる例には、ロード及び保存機能を提供するために必要とされるloadコンポーネント及びsaveコンポーネントが含まれる。特に、コンポーネントインスタンスが、遠隔地からファイルをロードすることが必要とされる場合、サーバ自体によってロードプロセスが制御されることが好ましい。したがって、loadコンポーネントを、コンポーネントインスタンスの一部として提供することができ、それにより、コンポーネントインスタンス及び故にサーバがそれぞれのロード動作を実行することが可能になる。

0227

このように、局所基本コンポーネントがコンポーネントインスタンス自体の一部を形成することを確実にすることにより、局所基本コンポーネントが、コンポーネントサーバが利用することができる方法でその動作を実行するようにコンポーネントサーバと正確に通信することが保証され、したがって、上記例では、ファイルが局所設定に基づいて正確にロードされることが保証される。当業者には、異なるコンポーネントサーバにロードコンポーネントが提供された場合、このタスクははるかに複雑になるということが理解されよう。

0228

図11Bに、基本コンポーネントの別の例を示す。特に、この例は、入力エージェントIn、出力エージェントOut及びwatchエージェントWを有するwatchコンポーネントのものである。使用の際、watchエージェントは、上述したalertコンポーネントと同様に、単に、入力Inにおいて受け取られた任意のデータを通過させ、通過するすべてのトラフィックを監視するように動作する。しかしながら、この例では、watchコンポーネントは、たとえばwatchエージェントWを介してwatchコンポーネントに問い合わせることにより、watchエージェントを介してトラフィックの詳細を確定することを可能にするようになっている。

0229

コンポーネントの内部仕様内にいくつかのwatchコンポーネントを提供することによって、コンポーネントの実装を監督しているエンティティが、コンポーネントがビルドプロセス中にどのように動作しているかを監視し、ネゴシエーション又は他のエージェントメッセージを許可し、且つ実行中にメッセージのペイロードを監視することにより転送されているデータを確定することが可能になる。

0230

したがって、当業者には、これを、局所基本コンポーネントとして、又はそれぞれの監視サーバによって実装される標準基本コンポーネントとして実装することができることが理解され、それにより、局所基本コンポーネントとしての基本コンポーネントの状態が、その実装に依存し、コンポーネント自体の性質には必ずしも依存しないことが強調される。

0231

留意すべきさらなる点は、局所基本コンポーネントが、メインサーバ内に構築されるミニサーバとして実装される、ということである。したがって、取得及び管理を通して必要な処理を実行するような方法で配置される局所基本コンポーネントの集まりを使用して局所処理を実装するのではなく、且つメインサーバの一部として多くのミニサーバを実装するのではなく、局所処理を、メインコンポーネントサーバの実行可能ファイルの一部を形成するカスタムコードフラグメントにひとまとめにすることができる。これを使用して、部分的には基本コンポーネントであるが依然として下請けであるカスタムコンポーネントサーバを提供することができる。

0232

<多段階トランザクション>
状況によっては、連続して複数回コンポーネントを実装することができることが有用である。これを実現するために、コンポーネントが順に複数回定義される仕様を構築することが可能である。しかしながら、状況によっては、これは、問題に対する適当なソリューションを表していないことが理解されよう。

0233

たとえば、長さが不確定ループを実装することが必要である場合、それぞれのループにおいて各動作を実行するために必要なコンポーネントの数が未知であるため、単に複数のコンポーネントを合せて順に連鎖させることは不可能である。

0234

この問題に対する代替ソリューションは、コンポーネントの多段階トランザクション動作を提供することであり、ここで、この一例について、図12A図12Dを参照して説明する。

0235

図12Aに示すように、それぞれの入力エージェント1101及び出力エージェント1102を有するコンポーネント1100が提供される。コンポーネント1100は、図示するようにそれぞれの入力エージェント1111及び出力エージェント1112を有する下位コンポーネント1110を含む。使用の際、文字列$を外部エージェント1103から内部エージェント1101に転送することが望まれる。そして、文字列は、エージェント1111に転送され、コンポーネント1110を使用して操作される。結果としての変更文字列$'は、エージェント1112及びエージェント1102を介して出力され、図示するように入力1101に再循環され、それにより文字列はコンポーネント1110を通過することができ、さらに変更される($")。この構成では、ループは絶えず繰り返されることが理解されよう。

0236

コンポーネント1100を単一動作ループコンポーネントとして提示することが望ましく、したがって、それには、コンポーネント1100がコンポーネント1110を未知の回数実装することが必要である。これを実現するために、図12Bに示す仕様構成が使用される。

0237

この例では、コンポーネント1100の内部仕様は、コンポーネント1100自体を破棄せずに、その動作の完了後に破棄される。これを、実施態様に応じて複数の方法で実現することができ、それについては後により詳細に説明する。

0238

コンポーネント1100は、そのエージェント1101、1102の各々が複数のトランザクションを受けることができるという点で多段階コンポーネントである。これは、コンポーネント1100の境界を越えた受け渡しを禁止することによって実現され、それにより、コンポーネント1100を終了させることなく内部仕様を複数回構築し破棄することができる。これに加えて、エージェント1101はまた、セレクタエージェントとして動作するようになっており、たとえばエージェント1101によって受け取られるデータに応じて、コンポーネント1100の内部仕様を選択することが可能となる。

0239

これに加えて、メモリコンポーネント1120が提供される。メモリコンポーネントは、図示するように仕様内で相互接続される3つのそれぞれのエージェント1121、1122及び1123を含む。この例では、図示するように、エージェント1123は、初期メモリ値を含むペイロードを受け取るように動作し、ペイロードは、エージェント1121を介してエージェント1101に転送される。メモリコンポーネント1120は、エージェント1122を介してペイロードを受け取ると、後により詳細に説明するように、ペイロードの値を記憶し、その後記憶した値を、エージェント1121を介してペイロードとして転送する。

0240

このため、図12Bに示すように、ビルドプロセス中、エージェント1101、1121;1102、1122;及び1123、1103は、適当なメッセージを交換することによって相互接続する。この段階では、コンポーネント1100の内部仕様は未決定である。

0241

通信が確立すると、エージェント1123は、エージェント1103から文字列$を受け取り、これを、エージェント1121を介してエージェント1101に転送する。これは、通常、エージェント間で転送されるそれぞれのメッセージのペイロードとして文字列を提供することによって実行される。

0242

この時点で、エージェント1101は、コンポーネント1100に対して内部仕様を確定するように動作し、したがってエージェント1101は、図12Bに示す十字記号によって示すように多段階セレクタエージェントである。仕様は事前に定義されており、エージェント1121から受け取られたペイロードの内容によって決まってもよい。この例では、内部仕様は、上述したようにコンポーネント1110を含む。

0243

これに加えて、多段階トランザクションエージェント1101、1102は、それぞれ一時的エージェント1101B、1102Bを生成するように動作する。これら一時的エージェントは、内部仕様が終了した後に終了する単一段階トランザクションエージェントである。この場合、内部仕様は、図12Cに示すように、エージェント1111、1112がそれぞれエージェント1101B、1102Bに接続するように構築される。

0244

一時的エージェント1101B、1102Bが使用されることにより、エージェント1101に提示されたペイロードを、「通過(hand through)」と呼ばれるプロセスで一時的エージェント1101Bを介してエージェント1111に転送することができるようにすることによって、多段階セレクタエージェント1101が開いたままである。したがって、通過は、上述した受け渡しの代替メカニズムである。

0245

通過では、エージェント1101Bを提示することにより、エージェント1101が開いたままであるのを可能にしながら接続を切断しエージェント1101Bを終了させることにより、コンポーネント1100及び故にコンポーネント1110の内部仕様が正しく終了するようにすることができる。

0246

文字列$はエージェント1101Bを介してエージェント1111に転送され、それにより、コンポーネント1110は文字列を変更して変更文字列$'を生成することができ、これはエージェント1112を介してエージェント1102Bに転送される。

0247

この時点で、コンポーネント1100は、内部仕様が必要な処理を実行したと判断し、これは、通常、仕様自体の中で固有である何らかの形態の終了メカニズムを使用して実現される。したがって、これを、後により詳細に説明するように、終了コンポーネント等を使用して実現してもよい。いずれの場合も、コンポーネント1100及び故にコンポーネント1110の内部仕様は、図12D点線によって表されるように終了する。通常、これには、コンポーネント1110を表すコンポーネントインスタンスを終了させるコンポーネントサーバが関与する。

0248

エージェント1101は、メッセージペイロードの変更文字列$'をメモリコンポーネント1120のエージェント1122に転送し、それにより、メモリに格納された文字列$は文字列$'に置き換えられる。エージェント1121は、文字列$'をセレクタエージェント1101に転送するように試みる。しかしながら、セレクタエージェントは、内部仕様が完全に終了するまでいかなる入来ペイロードもブロックするようになっており、それにより、新たな内部仕様を構築することができる。したがって、メモリコンポーネント1120は、その時点で新たな内部仕様を構築することができることを確認するエージェント1101からのメッセージを待ち、したがって、必要に応じて、且つ図12Dに示すように、文字列$'をエージェント1101に転送する。

0249

変更文字列$'を受け取ると、多段階セレクタエージェント1101は、図12Cに示す内部仕様が構築されるようにする取得命令を生成するように動作し、それによりループが繰り返されることが可能になる。

0250

この例では、このプロセスは連続的に繰り返されるため、文字列はコンポーネント1110によって変更され、その後、コンポーネント1110は、再取得されそれにより文字列を再度変更する前に終了する、ということが理解されよう。

0251

しかしながら、これとは対照的に、コンポーネント1100は、より大きい仕様内では一度しか構築されず、ループの繰返し毎に再取得されないという点で不変である。このため、コンポーネント1100は、外部的には不変コンポーネントを提示するが、内部的には再取得されたコンポーネントを利用して多段階トランザクションを実行する。

0252

より複雑な状況でこうしたループの平滑な動作を確実にするために、ループにおけるコンポーネントのすべてによるすべての処理が次のループの繰返しの前に確実に完了していることが重要であり、それにより同期問題が回避される。

0253

たとえば、上述した状況では、コンポーネント1110の終了前にエージェント1101に出力文字列$'を提示することにより、問題が引き起こされる可能性がある。

0254

これを防止するために、エージェント1101は、通常、コンポーネント1100が終了するまでブロックされ、これは、後により詳細に説明するように実現される。

0255

<終了>
コンポーネントが具体化されたサービスを実行すると、コンポーネントインスタンスは終了する。コンポーネントが終了していない場合、コンポーネントインスタンスがコンポーネントサーバで生成されると、これは無期限持続することになる。その結果、コンポーネントサーバは、使用済みのそれ以上必要でないコンポーネントインスタンスによって過負荷状態となる。これを回避するために、コンポーネントを、適当なイベントが発生した時に実装サーバに対しそれぞれのコンポーネントインスタンスを閉じさせることにより終了させる。

0256

これは、たとえば、それぞれのサービスが完了した時に自動的に行われてもよい。以前、これは、コンポーネントインスタンスによるサービスの受け渡し又は完了等のイベントによってトリガされた。しかしながら、この場合、コンポーネントインスタンスは、仕様全体においてその義務を果たすために必要である時間しか持続しない。

0257

しかしながら、これに関連して多数の潜在的な欠点がある。

0258

特に、コンポーネントビルドが開始されると、コンポーネントがすでにそのタスクを完了し終了している場合、プロセスを停止して、いくつかのコンポーネントの実装を繰り返し、誤り訂正することは不可能である。これに加えて、コンポーネントに対しそれらの現状態について問い合わせる必要のある場合がある。さらに、通常、コンポーネントは、タスクを上位コンポーネントから完全に受け渡しする下位コンポーネントに分解し、それによりタスクを委任した上位コンポーネントが終了することになる。

0259

最後に、コンポーネントを完成した時に自動的に終了させることにより、サービスを提供することによって、サービスの提供に対する正確な報酬を保証することが困難になる可能性がある。

0260

これを回避するために、一例では、コンポーネントは、終了コマンドによって命令されるまで終了しない。この終了コマンドは、通常、階層のより高いレベルにあるコンポーネントから受け取られる。この機能を、terminationコンポーネントによって実現することができ、その一例を図13に示す。

0261

terminationコンポーネントは、それぞれの仕様における他のコンポーネントから通知メッセージを受け取るようになっているエージェントInを含む。この通知メッセージを使用して、terminationコンポーネントに対し、コンポーネントがその処理を完了しており、したがってそれ以上必要とされないということが示される。

0262

通知メッセージを受け取ることに応じて、terminationコンポーネントは、仕様から確定されるように指定されたコンポーネントに転送される終了命令を提供する。これは、取得命令と同様のメカニズムを使用して転送される。このため、terminateionコンポーネントを、局所基本コンポーネントとして実装してもよく、それにより、コンポーネントインスタンスを実装するサーバが、終了しているコンポーネントを実装しているサーバに終了命令を転送する。

0263

これに加えて、terminationコンポーネントは、所定の規則にしたがって終了命令を生成するように動作してもよい。これは、終了命令が送信されるべき時刻を指定してもよく、それによりコンポーネントは、その処理を完了し、terminationコンポーネントに通知メッセージを転送することができる。そして、terminationコンポーネントは、終了命令を生成する前に適当な時間待機する。

0264

別の方法として、これを、外部イベントに従って実現してもよく、それによりterminationコンポーネントがイベントに反応しそれによって終了をもたらす。

0265

これに加えて、これは、システム内の報酬に対するメカニズムを提供する。詳細には、報酬は、終了命令内に何らかの形態の報酬指標又は指示を含めることによって実現される。したがって、コンポーネントインスタンスは、終了命令を受け取ると、報酬指標を記録するように動作し、それによりエンティティが後に何らかの方法で報酬を得ることができるようにする。これは、報酬指標を適当な支払い機関に対して提示することによって実現され、これは、たとえば、フォーラムの銀行を通して実現されてもよい。

0266

概して、terminationコンポーネントは、内部仕様の階層のそれぞれのレベル内のすべてのコンポーネントが同時に終了するように動作する。このため、たとえば、コンポーネントが終了する時、そのコンポーネントが複数の下位コンポーネントを含む場合、terminationコンポーネントは、通常、それらの下位コンポーネントの各々に対し実質的に同時に終了命令を提供する。このように、終了は、処理が順に完了するに従って仕様を通して伝播する。

0267

<多接続機能
バンドリングの一例については、以前、本出願人による同時係属出願PCT/AU03/01474号において述べられている。

0268

これらのバンドリングの形態では、既知の数のエージェントが互いにバンドルされることにより単一バンドルエージェントが形成される。そして、バンドルエージェントを別のコンポーネントのエージェントに転送し、その後バンドルコンポーネントの対応する構成を使用してバンドルを解除することができる。この意味で、エージェントのバンドルを使用する通信は、エージェントメッセージを使用して実現され、そのエージェントメッセージのペイロードは、バンドルコンポーネントの各々によって収集されたエージェントアドレスからのペイロードの組み合わせから形成される、ということが理解されよう。

0269

エージェントバンドルを受け取ると、コンポーネントは、そこに含まれるエージェントを抽出し、必要に応じてこれらをそのコンポーネント内のエージェントに接続することができなければならない。このため、コンポーネントは、エージェントバンドルを正確にバンドルを解除する場合、バンドルに含まれるエージェントと、エージェントが提供される順序とを知らなければならず、それにより、必要に応じてエージェントをバンドルから抽出し他のエージェントに接続することができるようになる。

0270

これを実現するために、したがってエージェントは、通常、標準化された方法でバンドルされ、それにより、エージェントの一定構造を有する標準バンドルが使用される。これにより、バンドルコンポーネントの事前に確定された構成をバンドルの形成及び分解に使用することができる。このため、これは、入力エージェント及び出力エージェントの数が事前に定義されている環境でしか使用することができない。

0271

しかしながら、例によっては、より多くのエージェントの単一エージェントへのバンドリングを提供することができることが有用である。この場合、この数をサポートする個々のコンポーネントの数が実際的でなくほど大きくなる。

0272

これを、1対1接続性に対応する機能を依然として維持しながら、たとえば、可変数の出力エージェントを単一入力エージェントに接続するために使用してもよく、又はその逆でもよい。この一例を図17Aに示す。

0273

この例では、3つのエージェントA1、A2、A3をtestコンポーネントの単一IOエージェントに接続することが望まれる。しかしながら、3つのエージェントの使用は単に例として示されており、他の仕様では追加のエージェントを設けてもよい、ということが理解されよう。したがって、testコンポーネントが或る範囲の仕様で使用されるために十分汎用性がある場合、IOエージェントは、未知の数のエージェントに接続することができなければならない。このため、testコンポーネントは、未知の数のエージェントのバンドルを受け取り、そのバンドルを正しく分解し解釈することができなければならない。

0274

一例では、これは、概してnbundleコンポーネントと呼ばれるバンドルコンポーネントの変更された形態を使用して実現される。nbundleコンポーネントの2つの例を図17Bに示す。

0275

この例では、nbundleコンポーネントnbundle1は2つのエージェントを含み、それらは、概念的に入力エージェント及び出力エージェントを形成する。後述するように、このコンポーネントを使用して、nbundleコンポーネントのチェーンを終了させる。このため、入力エージェントは、エージェントA1、A2、A3のうちの1つと通信するようになっており、出力エージェントは、チェーンのより高い他のnbundleコンポーネントと通信するようになっている。

0276

これとは対照的に、第2のnbundleコンポーネントnbundle2は、概念的には2つの入力エージェント及び1つの出力エージェントを形成する3つのエージェントを有する。この場合、入力エージェントのうちの1つは、チェーンのより低いnbundleコンポーネントに結合され、他の入力エージェントは、エージェントA1、A2、A3のうちの1つに結合される。出力エージェントは、チェーンのより高い他のnbundleコンポーネントに結合される。

0277

nbundleコンポーネントがいかに結合されチェーンを形成するかの一例を図17Cに示す。

0278

使用の際、nbundleコンポーネントの動作は、いくつかの相違はあるが上述したbundleコンポーネントの動作に類似する。第1に、nbundleコンポーネントは、エージェントA1、A2、A3に結合される入力エージェントをブロックするように動作し、それによりエージェントA1、A2、A3がnbundleコンポーネントに任意のペイロードを転送するのを防止する。これにより、nbundleコンポーネントとエージェントA1、A2、A3又はそれに関連する任意のコンポーネントとの直接の通信が防止される。第2に、nbundleコンポーネントは、生成されたエージェントバンドル内のカウンタを維持するように作用し、それにより、nbundleを受け取るコンポーネントがそれに含まれるエージェントの数を確定することができる。エージェントメッセージは、XMLファイルの形式であり、したがってカウンタは、適当なXMLタグを使用することによって識別されるファイル内の数値として提供される。

0279

このため、使用の際、nbundleコンポーネントは、結合されているエージェントのエージェントアドレスを、nbundle1コンポーネントを含むチェーンの底部から開始して収集することによって作用する。当業者には、同時係属特許出願PCT/AU03/01474号に記載されているように、エージェントA1、A2、A3のアドレスが、そこに結合されたnbundleコンポーネントの構築を開始するために使用される取得命令の一部として提供されるということが理解されよう。

0280

このため、nbundle1コンポーネントは、エージェントA3のエージェントアドレスを確定し、これを、チェーンの次のnbundleコンポーネントnbundle2に転送されるエージェントメッセージのペイロードに挿入する。同時に、nbundle1コンポーネントはまた、エージェントバンドルがこの時点で単一エージェントのみを含むことを示す、初期カウンタ値「1」をエージェントメッセージに提供する。

0281

エージェントメッセージは、次のnbuncle2コンポーネントに転送され、この場合、次のnbundle2コンポーネントはエージェントA2のアドレスを追加し、エージェントメッセージをチェーンの次のnbundleコンポーネントに転送する前にカウンタを「1」だけインクリメントする。

0282

このことから、testコンポーネントは、エージェントA1、A2、A3のアドレス及びカウンタ値「3」を含む単一エージェントメッセージを受け取ることが理解されよう。

0283

このため、IOエージェントの観点からすると、それは、単一エージェントメッセージを受け取って通信を開始し、したがって、1対1エージェント接続が提供されるかのように見える。

0284

使用の際、testコンポーネントは、バンドルからエージェントを抽出する何らかの形態のメカニズムを実装する。当業者には理解されるように、たとえば図17Dに示すように、これを、それぞれのエージェントB1、B2、B3に接続されたnbundleコンポーネントの対応する構成を使用して実現してもよい。

0285

この場合、nbundleコンポーネントの各々はエージェントアドレスを交換し、それによりnbundleコンポーネントは(上述した技法を使用して)受け渡しをすることができ、それによって、図17Eに示すようにエージェントB1、B2、B3及びエージェントA1、A2、A3が直接接続する。このため、エージェントバンドルに対応するエージェントメッセージを受け取るnbundleコンポーネントは、エージェントメッセージをチェーンの次のnbundleコンポーネントに転送する前に、そこから第1のエージェントアドレスを抽出するように動作する。このプロセス中、カウンタの値もまたデクリメントされ、バウンドルの最後のエージェントを識別することができるようになる。

0286

testコンポーネント内のnbundleの必要なチェーンを正確に生成するためには、testコンポーネントの内部仕様を実装される際に変更することができることが必要である。当業者には、IOエージェントによって受け取られるエージェントメッセージに提供されるカウンタ値に従ってこれを実行することができ、それによってtestコンポーネントがnbundleコンポーネントの適当なチェーンを生成することができ、それにより必要に応じてバンドルからエージェントを抽出することができる、ということが理解されよう。

0287

これを、セレクタエージェントの使用を介して実現することができ、ここでこの一例を、図18A〜図18Eを参照して説明する。

0288

特に、図18Aは、上述したDUPコンポーネントと、各々がそれぞれXML Inエージェント、TAG Inエージェント、Value Outエージェント、XML Outエージェント及びエラーEエージェントを有する2つのFind Tagコンポーネントとを利用する、testコンポーネントのための内部仕様の一例を示す。この内部仕様はまた、図示するようにSizeエージェント及びInputエージェントを有するdecisionと付されたコンポーネントも含む。

0289

使用の際、2つのFind Tagコンポーネントは、図示するように、DUPコンポーネントと、nbundleタグエージェント及びsize tagエージェントとに接続される。XML Outエージェント及びEエージェントは、この例では使用されず、その結果、内部仕様の内部エージェントに接続される。この内部エージェントは、エージェントが別のエージェントに接続しその後正常に終了することができるように動作するエージェントである。

0290

使用の際、図17Cに示すnbundleコンポーネントのシーケンスによって生成されるエージェントバンドルは、図18Aの左側に示すIOエージェントにおいて受け取られる。エージェントバンドルは、DUPコンポーネントに転送され、DUPコンポーネントは、エージェントバンドルのコピーを第1のFind TagコンポーネントのXMLエージェントとdecisionコンポーネントのInputエージェントとに転送する。

0291

Find Tagコンポーネントは、XMLファイルを含むエージェントメッセージの形式であるエージェントバンドルを受け取る。XMLファイル内に含まれる特定のnbundleタグの指示は、Tag Inエージェントを介して受け取られ、これは、通常、ルックアップテーブル(LUT)等から取得される。Find Tagコンポーネントは、XMLファイル内の指定されたタグを見つけ、そこに含まれる値をValue Outエージェントを介して図示する第2のFind Tagコンポーネントに転送するように動作する。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ