JP2001506028A - コンピュータソフトウェアアプリケーションの開発および実行のための方法、システムおよびデータ構造 - Google Patents

コンピュータソフトウェアアプリケーションの開発および実行のための方法、システムおよびデータ構造

Info

Publication number
JP2001506028A
JP2001506028A JP52643098A JP52643098A JP2001506028A JP 2001506028 A JP2001506028 A JP 2001506028A JP 52643098 A JP52643098 A JP 52643098A JP 52643098 A JP52643098 A JP 52643098A JP 2001506028 A JP2001506028 A JP 2001506028A
Authority
JP
Japan
Prior art keywords
model
data
variant
models
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP52643098A
Other languages
English (en)
Inventor
メイヴス,ウォルター
マックグイーク,フレッド
ベネット,ジェイムス
クラーク,マシュウ
Original Assignee
メイヴス インターナショナル ソフトウェア,インコーポレイテッド
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 メイヴス インターナショナル ソフトウェア,インコーポレイテッド filed Critical メイヴス インターナショナル ソフトウェア,インコーポレイテッド
Publication of JP2001506028A publication Critical patent/JP2001506028A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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/542Event management; Broadcasting; Multicasting; Notifications

Abstract

(57)【要約】 ソフトウエアの開発および実行のための方法、システム、および データ構造はランタイムイベントマネージャおよび1セットのモデルを含む。モデルは、コードではないが、他のモデル、方法、または他のオブシェクトを参照する順序付けられたセットを含むデータ構造のタイプである。モデルは、条件のセットを満足してこれらを登録することによってランタイムイベントマネージャにアクセス可能となっている。本発明の一実施の形態では、ランタイムイベントマネージャは、各ループで、モデルのセットの1つを動作し、外部I/O状態をチェックし、このような状態を支配し、デフォルト状態に関連する標準またはパラダイム(Paradigm)モデルよりもむしろ、異なったまたはバリアント(Variant)モデルを処理するコード内で実現されるフェッチ実行ループである。また、動的に拡張可能なデータベース機能を可能とするエラステック(Elastic)データベースは本発明によって実現される。

Description

【発明の詳細な説明】 コンピュータソフトウェアアプリケーションの開発および実行のための方法、シ ステムおよびデータ構造 技術分野 本発明は、コンピュータプログラミングの分野、より詳細には、コンピュータ ソフトウェアアプリケーションの開発および実行に関する。 背景技術 コンピュータのアプリケーションソフトウェアの開発および修正には、コード の書き込み、またはプログラミングパラダイム(paradigm)を使用した ソフトウェアオブジェクト(「オブジェクト」)が必要であり、これには例えば 、第三世代言語(「3GL」)、第四世代言語(「4GL」)、またはオブジェ クト指向デベロップメント(「OOD」)メソドロジィがある。こうした従来の メソドロジの決定的な制約の一つに、これらをソフトウェアの開発および修正で 使用する上でデベロッパが実際にコードを修正しなければならないということが ある。このことは、こうしたコーディングに付随する手間という観点からだけで なく、ソフトウェアの開発およびテスト処理における労力の調整という点におい ても面倒な制約である。 近年における主要なプログラミングメソドロジィとしてのオブジェクト指向の 出現により、高度なモジュール方式の自然で再利用可 能なプログラミング構造が提供され、ソフトウェア開発の労力は軽減されるよう になった。従来では、「オブジェクト」という用語は、オブジェクト指向ソフト ウェアまたはプログラミングの当業者によって使われるように、一方から他方へ メッセージを送ることにより互いにコミュニケーションしたり呼び出したりする ことができるデータ構造の形態のソフトウェア要素のことをいう。同じメッセー ジに応答するオブシェクトは共通の「クラス」にあると言われる。「クラス」と いうオブジェクトは、クラスの「インスタンス(instance)」(すなわ ち、オブジェクト)の挙動を取り込む方法を全て記述および実現する。クラスの インスタンスの状態または構造はテンプレートにより指定され、テンプレートは オブジェクトの条件か他のオブシェクトを含むということを指定してもよい。こ うして、OODが導入したモジュール方式は、デバッグをより容易にし、現実世 界の問題または環境の忠実なモテルをより高度にし、再利用可能なコードを生成 できるような分割統治問題解決アプローチに役立つ。それにもかかわらず、コー ドを書き込みおよびテストする条件は変わらない。 コンピュータ「アプリケーション」とは、コンピュータのユーザか対話するこ とでタスクを実行するプログラムであり、アプリケーションソフトウェアが動作 するよう設計された機能的環境を作成するシステムまたは他のソフトウェアとは 区別される。コンピュータアプリケーションソフトウェアのデベロッパは、その ため、ユーザ対話のサポートおよびユーサの目的達成に関心を持っている。 多くのアプリケーション環境において、特にソフトウェアがカスタムベースで 開発される場合、ユーザの要求はより発展する。こう した要求に合わせるよう意図されたアプリケーションソフトウェアもまた、好ま しくは発展することができる。しかし、既存のアプローチ(OODにより提供さ れるモジュール方式のアプローチであっても)を使用したアプリケーションソフ トウェアの修正には、コンピュータのコードの書き込みまたは修正、コードのデ バッグ、アプリケーションの使用に対してその破壊を最小限に抑えたそれらの処 理が必要である。しかし、この目標は達成しづらいことがわかっている。 ソフトウェアアプリケーションを開発または修正するために、新しいコードを 書き込み、統合する必要性に関連する問題に加えて、ソフトウェアアプリケーシ ョンの開発または修正の既存の方法に伴う別の問題として、こうしたコーディン グは、ユーザI/Oまたは他の発生など、外部のイベントの処理に適応しなけれ ばならない。しかしながら、こうしたユーザI/Oまたはその他のイベントは、 あるユーザ環境と別のユーザ環境(例えば、文字入力に対するグラフィカルユー ザインターフェース(「GUI」))との間でかなり広範に変化しているため、 既存の技術でこうした異なる外部のイベントに適応する能力としては、(1)デ バッグで完了するカスタムソフトウェア開発に時間がかかる処理をするか、(2 )そのために様々な既知のアプリケーション環境で動作可能な十分な不測事態処 理能力を有するコードのセットを開発するかのいずれかを必要とする。どちらの 場合も、大量のコーディングおよびテスト処理がそれぞれのローカルアプリケー ション環境で必要とされ、結果としてアプリケーション環境における展開に伴う ソフトウェアの短所を受け入れるか、またはこうした外部のイベントの条件にお いて変化が起 こると、難しい再コーディングおよびデバッグ処理を終了するに過ぎない。 発明の開示 本発明は、開発(設計、構築、テスト、メンテナンス、および修正を含む)の ための方法、システム、およびデータ構造に関し、同様に、既存の技術のユーザ が直面するアプリケーション設計、テスト、および修正の問題の多くを解消する コンピュータアプリケーションソフトウェアの実行に関する。 本発明は、以下で詳述するように、ランタイムイベントマネージャ(Run Time Events Manager)、および事後結合、再利用可能なモ デル、方法、または他のオブジェクトのライブラリでコードを置換することによ って、コード化されたアプリケーションプログラムを不要にすることができると いう点が最も注目される。プログラムソース、オブジェクトコード、またはアプ リケーションとしては働く事後結合または動的結合のランタイムアプリケーショ ンコードの形態に代わって、本発明の実施の形態は、ここでランタイムイベント マネージャ(「RTEM」)として参照され、以下に記載される単一のアプリケ ーション非依存型ソフトウェアエンティティを提供する。RTEMは、本発明に よって開発されたアプリケーションの動作中に存在する単一の制御エンティティ である。RTEMは、所定の時間にアプリケーションおよび入力/出力(「I/ O」の条件に最も適して与えられる使用可能な手段をどれでも呼び出すことによ ってコンピュータが実行しているかどうかをたえず判断する。しかし、RTEM は適当であると判断した機 能を実際に実現するのではなく、その機能を実現するのに必要な手段(オブジェ クト、アプリケーション特定オブジェクト、およびツールを含む)を呼び出すの みである。(ここで使用される用語の「ツール」は、低レベルへのアクセスまた はオペレーティングシステムの機能を可能にするまたは提供する手続き上のコー ドをいう。例えば、以下で説明するデータベースアクセス(「DBAC」)ツー ルはデータベースに対する情報を読み出し、書き込む。ここで使用される用語の 「ツール利用(Toolusage)」は、ツールへのアクセス可能な、すなわ ち、DBACを用いたREADまたはWRITEを行うパラメータのようなイン ターフェース定義をツールに提供するモデル設計オブジェクトをいう。)こうし たオブジェクトおよびツール(方法、I/Oツール、またはコンピュータで機能 を実現することが可能な他のソフトウェア構成を含む)は、RTEMの指示と独 立に動作しない。つまり、これらはRTEMによって呼び出されることが最も好 ましく、またRTEMによってのみ、RTEMがこれらを呼び出して実行させる ことを実現する。 オブジェクトおよびツールは、RTEMによって呼び出されて機能を実現する ためには、例えば、以下に述べるような登録処理によりRTEMで利用可能にし なければならない。本発明によると、例えば、RTEMから制御を転送する命令 を含むRTEMによる使用をするために、オブジェクトまたはツールを登録する ことはできない。従って、例えば、RTEMによって動作するアプリケーション を使用するオペレータは、課された特権をうっかり超えたり、またそうでなくて も、要求されているが禁止された動作の結果としてアプリケーションの統合が危 うくなるということからプロテクトでき る。さらに、RTEMは、オペレータ対話のような外部のイベントを繰り返しチ ェックし、そのため、情報を提供したり、命令を受け入れたり、アプリケーショ ンタスクを可能にしたり、時間のトラックを保持したり、またはその他の機能な どによって、オペレータとの直接の対話を可能にする。 本発明の実施の形態では、RTEMは全てのランタイムイベントを管理し、か つオペレータとの全てのコミュニケーションを行うモシュールである。「イベン ト」は計画されたハプニングとして定義しても良く、その予め決められた方法で アプリケーションを実行するときに生じるものを含むという点が最も注目される 。本発明によると、オペレータかアプリケーション自身と直接コミュニケーショ ンしているようにみえる時でも、RTEMはアプリケーションのオペレータが直 接コミュニケーションするソフトウェアのみであることが好ましい。RTEMは 、オペレータからの情報を、この情報を実行するように意図されたアプリケーシ ョンイベントに中継する。また、RTEMはアプリケーションからの情報をオペ レータに再び中継する。 オペレータとアプリケーションとの間の媒介に加えて、述べられているように (および以下で詳述するように)、オブジェクト(方法など)またはツールは別 のオブジェクトを呼び出したりコミュニケーションすることができないため、本 発明の実施の形態のRTEMは、ランタイムタスク中の全てのイベントを媒介す る。本発明によると、繰り返し「モデル」を調べて処理することでRTEMはそ れを行い、モデルに取り込まれたアプリケーションと関連するロジックを実行す る。各モデルはアプリケーションと関連する処理を指 定する。モデルはデータだけを含み、実行可能なオブジェクト(全体または部分 にかかわらず)は含まないことが最も好ましい。モデルにおけるテータは、ルー ル、ツール、フォーム、およびアプリケーション処理に関連するランタイムイベ ントを発生させるためにRTEMが呼び出さなければならないアプリケーション 特定オブジェクトを判断するのに必要な情報を有するモデルを処理するRTEM を提供する。 本発明の実施の形態では、モデルは、アプリケーションと関連する処理を開始 するデータと同様にオブジェクトに対するリファレンスリストであるが、以下で 述べるように、所定の時間にアプリケーションの条件または外部の条件に応じて 、RTEMは、適宜、モデルが表す処理スキーマ(Schema)の全体または 一部を無視、変更および/または追加してもよい。関連し、有効で許容されたそ れに代わる情報がない場合には、モデルはランタイムでRTEMに絶対的に従う 。 本発明によると、RTEMによって呼び出され、調べられるモデルは、パラダ イムモデルと、所定のパラダイムモデルと関連するバリアントモデルとを含んで いる。パラダイムモデルはアプリケーションと関連する「標準」処理を記述する 。バリアントモデルは「標準」処理における変更を記述する。両タイプのモデル は、それらの構成データを含むその形態が本発明によるRTEM10による処理 に関連する制約に従うかどうかを判断するための評価実行後に登録されなければ ならない。パラダイムモデルはアプリケーションの一部にルールのセットを設定 してもよく、また、バリアントモデルはある条件の下で、処理の標準的またはパ ラダイム的な方法を変更し たバリアントルールによって取りかえられるということを示すサブセットルール を表している。 本発明の実施の形態では、バリアントモデルは、それ自身とそれが関連するパ ラダイムモデルとの間の相違点または分散のみに言及しており、述べられている ように、RTEM10は、その後アプリケーションと外部ランタイムイベントと を監視し、条件が変化すると、そうした条件下で「適用」するバリアントモデル を識別して調べ、適用するこうしたバリアントモデルを呼び出している。本発明 によると、モデルをRTEMで利用可能にするためのプレ条件として登録する場 合、バリアントモテルロジックをランタイムで呼び出す条件のセットを、RTE Mによる将来的な使用のために識別して記憶する。 また、本発明によると、パラダイムモデルに関連するバリアントモデルは、パ ラダイムモデルまたはその他のバリアントモデルを修正せずに作成および登録す ることができ、バリアントモデルに対するモデルにおけるリファレンスを作成す る。新しいモデルを作成してアプリケーションを修正することにより、修正処理 中の不安定の発生と同様に、現在のモデルを再テストする必要性を最小限に抑え ている。どんな数の別のバリアントモデルも独立して作成することができ、各モ デルと関連するロジック間での干渉の危険性を招くことなくパラダイムモデルの 対応する部分を代えている。反対に、この能力は、テストを容易にし、モデルは 独立してテストすることができ、以前に開発されたモデルの機能を再テストする 必要はない。実際のソフトウェア開発のチームに関して、独立した開発/メンテ ナンスチームは、他のこうしたチームが働いているということを知 らずにバリアントモテルを作成することができる。また、ソフトウェアを配備し たローカルサイトで行われるカスタマイゼーションワークは、本来の(ローカル でない)オーサによって作成される更新の悪影譬を受けないため、更新時間で再 び行う必要はない。さらにまた、同じアプリケーションロジックの修正に対する 多数の衝突する要求は、協働していない開発またはメンテナンスチーム、または 個人によって同時に達成することができる。従って、合併したテストを減らした り除いたりしてもよい。 本発明の実施の形態において、RTEMは、またツールを使用して、スクリー ンやリポート、電子データ互換処理(従来の「EDI」など)のような、永続的 データ記憶装置(データベース)、外部(I/O)媒体を含む、周辺機器の出力 および入力を再形成および再フォーマットする。これを行うために、RTEMは 、「スーパーツールキット(Supertoolkit)」としてここで参照さ れるツールのセットと同様に、ツールを使用してこうした周辺機器の入出力であ る、(1)データベースアクセスコントローラ(「DBAC」)(ツール)と( 2)ユーザI/O(「UIO」)とを取り扱う。この両者をさらに以下で述べる 。ここで使用される「スーパーツールキット」はツールの集合として参照される 。例えば、RTEMは、UIOスーパーツールキットにアクセスして、キーボー ドを介してユーザからの情報を検索する入力ツールを含むユーザに対する全ての 表示を行い、また、異なるフォーマット(すなわちGUIまたは文字)の形態で 情報を表示する表示ツールを含んでいる。表示ツールは、当業者に公知の方法に よって実現できる入力、表示テキストおよびスクリーンツールを含んでもよい。 本発明の実施の形態において、RTEMは、また、ある意味においては、モデ ルをロードし、他のツール、モデルおよび方法を呼び出すツールであり、特定の アプリケーション(すなわち、表示層ツールを呼び出して視覚的な形態でデータ を表示したり、データベースアクセスツール(DBAC)を呼び出してこのデー タベースから情報を検索したりする)に必要な動作を実行する。 本発明の実施の形態において、DBACは、RTEMに呼び出され、RTEM を使用したセッションと永続的なデータベースが関するものとの間でのロジカル なデポシットおよびデータの検索ができる。こうした実施の形態において、永続 的な記憶装置は、所定のアプリケーションセッションを通じて所定のモーメント でRTEMが働くバリアントモデルに依存し、行毎(すなわちより多くの要素、 より少ない要素、異なる要素)にデータ要素の異なる補数を有することが可能な テーブル、またはより多くのテーブルまたはより少ないテーブルを有することが 可能なテーブルとして見られる。この永続的な記憶装置のビューは「エラスティ ックテータベース(Elastic Database)」としてここで参照で きる。 本発明の実施の形態のDBACはRTEMによって呼び出され、記憶装置にお けるアプリケーションのロジカルな「エラスティック」ビューと実際のRDBM S(インエラスティック)行および列との間のギャップの橋渡しをする。DBA Cは多数の従来のRDBMS制御テーブルにわたってエラスティックデータ行の 記憶および検索を管理する。モデルに使用される同じ登録処理(以下に記述)も また他の全てのオフジェクトを取り扱う。この登録処理により、従来のRDBM Sにはなかった方法でエラスティック(またはバリア ント)関係の定義が可能になる。DBACのロジックは、効率化のために、クラ イアントおよびサーバのクスク間で分散されていてもよい。以前のテーブルを修 正して、最も好ましくはその行のいくつかまたは全てで可変情報をロジカルに結 合することなどによって、次のバリエーションに適応する必要がない。 本発明によると、バリアントファイルの関係は、通常の生成を妨害せずに、オ ンザフライでリアルタイムでデータベースに付け加える(retrofit)こ とができる。RTEMの制御下でのDBACは、アプリケーションと基礎になる データベースとの間の全ての対話を仲介するために用いられる。このことは、つ まり、RTEMは別の場合にはアプリケーションとそのエラスティックデータベ ースとの間の通常の対話を取りなすことができ、また調整によってアプリケーシ ョンまたはデータベースのいずれかを修正する必要なくこの対話を変化させるこ とができる。このため、例えば、RTEMは、プロダクションデータベース「i n−situ」を使用できる「テストセッション」が可能であり、一方で同時に 起こるライブプロダクション処理は、ライブデータを干渉および破壊することな くそれを変更しており、また一方では、テストされるアプリケーションにはその データベースに対する書き込みおよび更新が含まれている。 本発明の実施の形態では、RTEMは、アプリケーションがテストまたはプロ ダクションモードであるかどうかにかかわらず、オプション的な断定または有効 性テストを実行してもよい。特に、RTEMは、あらゆるモテルおよび方法、ひ いてはモデルの各ステップ(すなわち要素)の発動前および後にすべての変数お よび必須の条 件をチェックすることができる。 非破壊的なテストは、新しいか、バリアントであるか、または修正されたオブ ジェクトを登録して、名づけられたプロジェクトの一部としてテストしなければ ならない。こうしたテストオブジェクトは、「テスト」として指定され、プロジ ェクト定義中の適切なプロジェクト認証に関連するラン状態のセッション中にお いてRTEMで呼び出されることしかできない。新たに修正されたオブジェクト は、登録済みのテストセッションを終了していない場合、プロダクションではア クセスされないことが最も好ましい。 本発明の実施の形態において、テストセッション中に、テストプロジェクトで 名づけられたテストディレクトリデータベースの1つに全ての「書き込み」が再 度指向される。全ての「読み出し」は、まず、そのテーブルを適宜オンザフライ でDBACによってセットアップしたテストディレクトリを試行し、次に、プロ ダクションデータベースを試行する。また、こうしたレコードがテストのプレ条 件としてデータフォーマットの変更が必要であっても、テストで使用される全て の読み出し専用プロダクションレコードはテストディレクトリにおいても再生成 される。このアプローチによって、テストセッションの高い忠実なレコードが可 能になり、最小限の労力でスクラッチから次に継続したり再実行されることがで きるようになる。 本発明の実施の形態においては、UIOがRTEMによって使用されてアプリ ケーションとそのユーザI/Oとの間の対話を仲介する。このユーザI/Oには 、コンピュータおよび関連するネットワークの限界を超えるI/Oが含まれてお り、スクリーンフォーム、 データ入力デバイス、電子データ互換(「EDI」)処理およびその他のI/O が含まれる。 本発明によるアプリケーションは、設計または修正してI/O関係を考慮する 必要がなく、この機能に関連するいかなるロジックも含む必要かない。このアプ ローチは、従来の技術を改良したものであり、これはアプリケーション自身によ り密接に依存する。このアプローチでは、例えば、特定の時間の条件の機能とし て、フレキシブルでバリアントなI/Oの挙動を挿入することができる。 従って、本発明は、また、新たな能力を追加して、最小のコード変更で、また はコード変更なしにソフトウェアを配備し、従来のアプリケーションソフトウェ ア開発に通常関連するユーザアクティビィティの中断を可能にするアプリケーシ ョンソフトウェアの開発の新しい方法を提供する。 さらに、本発明は、ソフトウェアが動作するローカル環境の条件によって、そ の処理挙動の極端な差を示すことが可能なコンピュータソフトウェアと、処理す る特定のデータとを提供する。 本発明によるコンピュータ記憶可能データ構造および方法、および本発明によ りそれを可能にするソフトウェア開発の方法は、さらに、均一でないデータ構造 を、従来のデータベースにおいてそれぞれ正規化され定義されるロジカルデータ 構造のセットとして定義することができるようにする。本発明の一実施の形態に おいて、プロセッサと、メモリと、記憶媒体とを有するコンピュータにおいて実 装されるアプリケーションソフトウェアを動作させるシステムは、記憶媒体に記 憶される複数のモデルとランタイムイベントマネージャを含んでいる。これらの モデルは、それぞれ、1つまたはそれ以 上のオブジェクトへのリファレンスを含むデータを含み、ランタイムイベントマ ネージャは、複数のモデルのうち選択した1つを記憶媒体からメモリにロードし 、選択したモデルのデータを読み出し、オブジェクトへのリファレンスが読み出 されると、適切なツールを呼び出し実行し、オブジェクトを提供する。 本発明は、命令に関連する処理動作を実行し、外部入出力を通じてコンピュー タにコミュニケーションし、コンピュータ外部のイベントに応答するコンピュー タによって実行するランタイムイベントマネージャを提供する。このコンピュー タは、ランタイムイベントマネージャにアクセス可能なモデルのセットを記憶す る記憶媒体を含んでいる。ランタイムイベントマネージャは、モデルのライブラ リからモデルをロードする手段と、コンピュータとランタイムイベントマネージ ャの所定の状態でモデルが適切に呼び出されるかどうかを判断する手段と、コン ピュータとランタイムイベントマネージャの所定の状態が適当であると判断され る場合にモデルを呼び出す手段と、モデルを呼び出す(すなわちモデルの意図を 実行する)手段とを含んでいる。 また、本発明はランタイムイベントマネージャを利用してコンピュータアプリ ケーションソフトウェアを開発する方法を提供する。この方法は、各モデルが以 下の、i.モデルへのリファレンス、ii.方法へのリファレンス、iii.デ ータ、およびiii.入力または出力命令を少なくとも1つ含む場合に、複数の モデルを作成することを含むステップを含んでいる。更なるステップは、モデル において参照される方法はどれも、(1)モデル、方法、またはツールにかかわ らず、別のオブジェクトを呼び出したり、(2)スク リーン、ファイル、または他のいずれかのデバイスまたはオブジェクトのいずれ かに入力/出力(I/O)を実行することができないことを確かめるためにモデ ルをテストすることを含む。さらに、テスト下でマスタを受け渡すモデルは登録 され、ランタイムイベントマネージャによるアクセスが可能となる。 本発明は、また、ランタイムイベントマネージャで使用できるように登録され たオブジェクトのライブラリの生成を提供する。登録処理にはモデルに独自の識 別子に基づいたオブジェクトを呼び出すステップ、制限された内容がある時のオ ブジェクトの内容をスキャンするステップ、また、オブジェクトが制限された内 容を全く含まない場合に限り、ライブラリの一部としてのオブジェクトを登録す るステップを含んでいる。 本発明は、さらに、ベースファイルの特定のベースレコードにどのバリエーシ ョンセットを適用するかを判断するように適合したバリエーションセットランタ イムマップを実現するようにプログラムされたシステムと共に、プロセッサと、 メモリと、記憶媒体とを有するコンピュータ上で実現される、ベースファイルと バリエーションセットを含むデータベースシステムを提供する。バリエーション セットは、ベースレコードに対応する少なくとも1つの追加フィールドを有する レコードを含む。 本発明は、また、ベースファイルおよびバリエーションセットを有するデータ ベースシステムを動作する方法を提供する。この方法は、ベースレコードをロー ドし、ベースファイルに対応するバリエーションセットの存在についてバリエー ションセットランタイムマップをチェックし、バリエーションセットが存在する 場合にバリエ ーションセットからデータを検索することを含むステップを含んでいる。 従って、本発明は、アプリケーションに関連した機能を実現するための書き込 みコードを不要にしたアプリケーションソフトウェアを開発および修正する方法 、システムおよびデータ構造を提供することを目的とする。 さらに、本発明は、モデルのセットと共に、ランタイムイベントマネージャを 使用してアプリケーションソフトウェアを開発、テスト、および実行する方法、 システム、およびデータ構造を提供することを目的とする。 さらに、本発明は、ランタイムイベントマネージャとモデルのセットを使用し てアプリケーションソフトウェアを開発、テスト、および実行する方法、システ ム、およびデータ構造を提供することを目的とする。なお、別の方法による登録 していないオブジェクトの呼び出しまたは方法の呼び出しを含む動作を排除する 処理によるランタイムイベントマネージャによるアクセスのためにモデルが登録 されている。 さらに、本発明は、パラダイムモデルおよびバリアントモデルを含むモデルの セットの中のモデルのセットと関連して、ランタイムイベントマネージャを使用 してアプリケーションソフトウェアの開発、テスト、および実行する方法、シス テム、およびデータ構造を提供することを目的とする。 さらに、本発明は、バリエーションセットにおける追加のフィールドのベース ファイルでのベースレコードを拡張することができる「エラスティックデータベ ース」を実現する方法、システム、およ びデータ構造を提供することを目的とする。 さらに、本発明は、モデルの1つが新たに開発されたアプリケーションとレガ シーソフトウェアを統合する手段を提供するモデルのセットと関連してランタイ ムイベントマネージャを使用するアプリケーションソフトウェアを開発、テスト 、および動作させる方法、システム、およびデータ構造を提供することを目的と する。 本発明の他の目的および利点は、以下の説明を参照すると、当業者には明らか になるであろう。 図面の簡単な説明 第1図は本発明によるシステムの実施の形態のアーキテクチャを示す図である 。 第2図は本発明によるアプリケーションインターフェース、およびモデルライ ブラリまたはエンジンのセットの例の実施の形態を示す図である。 第3図は本発明の実施の形態によるランタイムイベントマネージャ、モデル、 方法、およびデータの構成を示す図である。 第4図は本発明によるモデルの実施の形態の形態を示すテンプレートの例を示 す図である。 第4A図は第4図よりも詳細なモデルの別のテンプレートの例を示す図である 。 第4B図はモデルの詳細な処理情報を示すモデルのデータ構造の第1の部分の さらなる定義を示す図である。 第4C図はモデルのさらなる詳細な処理情報を示す(第4B図から続く)モデ ルのデータ構造の第2の部分のさらなる定義を示す図 である。 第5図はアプリケーションのメニューを実現する本発明によるモデルの特定の 例を示す図である。 第5A図は本発明によるバリアントモデルの特定の例を示す図である。 第5B図はバリアントモデル情報を含むテーブルを示す図である。 第6図は本発明の実施の形態におけるモデルを含むオブジェクトの登録のフロ ーチャートを示す図である。 第6A図は第6図で示される登録処理と関連して使用されるモデルデザインツ ールの操作のフローチャートを示す図である。 第7A図は本発明の実施の形態におけるアプリケーションの開発または修正処 理中にモデルのテストにおいて使用されるテストベッドの生成のフローチャート の第1の部分を示す図である。 第7B図は本発明の実施の形態においてアプリケーションの開発または修正処 理中にモデルのテストにおいて使用されるテストベッド生成のフローチャートの 第2の部分を示す図である。 第8図は本発明の実施の形態におけるランタイムイベントマネージャの実施の 形態の動作を説明するフローチャートを示す図である。 第9図はバリアントモデルに関連する第8図のランタイムイベントマネージャ の実施の形態の処理の一部を説明するフローチャートを示す図である。 第10図はバリアントモデルのロードおよびアンロードに関連する第8図およ び第9図のランタイムイベントマネージャの実施の形 態の処理の一部を説明するフローチャートを示す図である。 第11図はエラスティックデータベースのベースファイルおよびベースレコー ドの例を示す図である。 第12図はエラスティックデータベースの2つのバリエーションセットの定義 の例を示す図である。 第13A図はエラスティックデータベースにおいて新しいバリエーションセッ トを定義するのに関連するステップを説明するフローチャートの第1の部分を示 す図である。 第13B図はエラスティックデータベースにおいて新しいバリエーションセッ トを定義するのに関連するステップを説明するフローチャートの第2の部分を示 す図である。 第13C図はエラスティックデータベースにおいて新しいバリエーションセッ トを定義するのに関連するステップを説明するフローチャートの第3の部分を示 す図である。 第14図はエラスティックデータベースにおいてデータ辞書を開く処理を説明 するフローチャートを示す図である。 第15図はエラスティックデータベースにおいてロジックファイルを開く処理 を説明するフローチャートを示す図である。 第16A図はエラスティックデータベースにおいて選択されたベースレコード にどのバリエーションセットを適用するかを判断する処理を説明するフローチャ ートの第1の部分を示す図である。 第16B図はエラスティックデータベースにおいて選択されたべースレコード にどのバリエーションセットを適用するかを判断する処理を説明するフローチャ ートの第2の部分を示す図である。 第17A図はデータベースのアクセスツールの「READ」機能 に関連するステップを説明するフローチャートの第1の部分を示す図である。 第17B図はデータベースのアクセスツールの「READ」機能において関連 するステップを説明するフローチャートの第2の部分を示す図である。 第18A図はデータベースのアクセスツールの「EXTRACT」機能におい て関連するステップを説明するフローチャートの第1の部分を示す図である。 第18B図はデータベースのアクセスツールの「EXTRACT」機能に関連 するステップを説明するフローチャートの第2の部分を示す図である。 第19図はテータベースのアクセスツールの「VERIFY」機能に関連する ステップを説明するフローチャートを示す図である。 第20図はデータベースのアクセスツールの「GENERATE」機能に関連 するステップを説明するフローチャートを示す図である。 第21A図はデータベースのアクセスツールの「WRITE」機能に関連する ステップを説明するフローチャートの第1の部分を示す図である。 第21B図はデータベースのアクセスツールの「WRITE」機能に関連する ステップを説明するフローチャートの第2の部分を示す図である。 第22図はデータベースのアクセスツールの「REMOVE」機能に関連する ステップを説明するフローチャートを示す図である。 第23図は、データベースのアクセスツールの「CLOSE」機 能に関連するステップを説明するフローチャートを示す図である。 第24図はデータベースのアクセスツールの「SHUT DOWN」機能に関 連するステップを説明するフローチャートを示す図である。 第25図はテータベースのアクセスツールの「GET KEY」機能に関連す るステップを説明するフローチャートを示す図である。 第26図はデータベースのアクセスツールの「GET FIRST KEY」 機能に関連するステップを説明するフローチャートを示す図である。 発明を実施するための最良の形態 第1図は本発明によるシステムの実施の形態のアーキテクチャを示す図である 。第8図から第10図に関連して以下詳述されるランタイムイベントマネージャ (Run Time Events Manager、「RTEM」)10は、 アプリケーションに関連する全ての処理の実行に責任のある手続きのセットであ る。RTEM10は、データ辞書12、スタンダードモデル14、デベロッパオ プションモデル16、ローカルモデル18、およびローカル環境20を含む様々 なデータおよびオブジェクトへのアクセスを有する。「スタンダード」すなわち 「パラダイム」モデル14は、そのアプリケーションと関連する処理を実行する として特定のアプリケーションのオーサによって提供されるものであり、アプリ ケーションをどのように実行するかを指定する規則を提供する。スタンダードす なわちパラダイムモデル14はアプリケーション処理のために最終 的なデフォルトを提供する。デベロッパ「オプション」モデル16は、スタンダ ードすなわちパラダイムモテルの全部または一部の代わりにアプリケーションの オーサによって提供されるが、スタンダードすなわちパラダイム処理の代わりで あるにもかかわらず、アプリケーションによって呼び出される処理を表している 。例として、ロジスティックアプリケーションの設定において、プロダクトのセ ットアップのモデルが提供されている場合、更なるオプションモデルを提供して 、ロードトランスポーテーションモシュールがオンになっている場合など、特定 の条件下においてのみ、入力をキャプチャし異なるファイルを更新する。ローカ ルモデル18には、アプリケーションソフトウェアを配備され、かつそのサイト においてアプリケーション条件に適合するように独自に構成したサイトに特定の ものである。例えば、ローカルモデルは、装置、オペレータなど、そのサイトに おいて関連するローカルサイトに関連する処理を含んでいる。ローカル環境20 は、アプリケーションが動作する特定の設定を記述するデータおよび条件を表し ている。 RTEM10は、また、コントローラのセットに対するアクセスを有している 。こうしたコントローラの第1のものはステージング22であり、これは以下で 述べるように、RTEM10が処理するモデルによってデータ処理を実行する。 アプリケーション(例えば、モデル、方法、データ、テキスト等)およびツール など全てのサポーティングオブジェクトを含む全ての登録済みオブジェクトを「 ステージング」という。ステージング22は、各オブジェクトとそれに付随する 各他のオブシェクトとの間のクロスリファレンスを提供して、当業者に公知の方 法により開発されたオブジェクトにデベ ロッパがアクセスおよび理解できるようになる。 RTEM10がアクセスを有する第2のコントローラはデータベースアクセス コントローラ(「DBAC」)(クライアント側)24である。DBAC(クラ イアント側)24によって、RTEM10が、必要時に、例えば、ネットワーク リンクすなわち共有メモリ28などミドルウェア構成を通してデータへのアクセ スを取得することができる。さらに、DBAC(サーバ側)30によって、任意 のアプリケーションを含むモデルによって必要時に、市販されているまたは著作 権を有するデータベースソフトウェアとのインターフェースが可能になる。例え ば、RTEM DBAC(サーバ側)30は、オープンデータベースコネクティ ビィティ(「ODBC」)ドライバ32およびOracleRRDBM34と、 またはSQL3サーバ38およびOracleR8オブジェクト指向データベー ス管理システム(「OODBMS」)40と、またはBASICファイルサーバ 42およびBASICファイルシステム44と、または適切なデータベースソフ トウェアのいずれかと対話することができる。上で述べたデータベースソフトウ ェアを通して、RTEM10はファイルサーバ(図示せず)に常駐するデータ3 6へのアクセスを有する。RTEM10および、RTEMかアクセスを有するオ ブジェクトおよびデータを含むコードおよびデータの構成は、以下、第3図に関 連して説明する。 本発明の図示した実施の形態におけるRTEM10がアクセスを有する第3の コントローラは、ユーザI/O(「UIO」)26であり、これは好ましくはス ーパーツールキットである。UIO26は、RTEMによって使用され、アプリ ケーションとその「外部」 入出力との間で対話を仲介するため、アプリケーション(またはこうしたモデル で言われるオブジェクト)を構成するモデルが同じことをする必要がない。外部 入出力は、ここでは、スクリーンフォーム、データ入力デバイスおよび電子デー タ互換(「EDI」)処理を含むコンピュータおよび関連ネットワークの限界を 超えるものとして言及されている。 (RTEM10がUIO26の機能へのアクセスを有する)本発明の図示した 実施の形態によって開発され動作するアプリケーションは、設計したり修正した りして、ワーキングメモリデータをどこから検索するか、またどこに送るかを考 慮する必要はない。次に、こうしたアプリケーションは、スクリーンフォームま たはレポートドキュメント上に、またはEDI処理へとデータを配置するロジッ クを含む必要がなく、例えば、アプリケーションとデータを交換するデバイスま たは処理と対話する必要もない。さらに、本発明によって作成されたデータ構造 は、好ましくは、デベロッパがこうしたルールを回避することができるような手 続き上のまたは伝達上のコードを含まない。 本発明の実施の形態において、UIO26は、例えばスクリーン上で情報がリ フレッシュされる時期および場所を判断する。入出力はグラフィックまたは文字 のモードのどちらにするかが判断される。同様に、どのような人間言語を使用す るかを判断する。こうした外部イベントはいずれもUエI26によって適切に処 理される。基礎となるアプリケーションモデルにはUIO26のこの機能を調整 するために設計または修正する必要はない。UIO26を使用したRTEMによ るユーサ入出力の仲介によって、アプリケーションに よって厳密に書き込まれたというよりは、特定の時間における条件の機能として 様々な入出力の挙動のフレキシブルな挿入が可能になる。 第2図は本発明によるアプリケーションインターフェースの実施の形態、およ びモデルライブラリまたはエンジンのセットの例を示す。本発明の用語において 、「モデル」はアプリケーション環境のルールを指定するデータを含み、また最 も好ましくはコードを全く含まないソフトウェアオブジェクトである。つまり、 モデルは、モデルが関連するアプリケーションの特定のサブセットに代わる処理 のリストを開始するデータパケットである。この処理には、ビジネスまたはアプ リケーション処理ルール、および機械的ルールを含むルールの仕様が含まれる。 以下で説明するランタイムイベントマネージャによる呼び出し時に、モデルは「 方法」、その他のモデル、またはツールを含む自立型の再利用可能な登録済みの 公的に示されたオブジェクトを呼び出す。ロシスティックスソフトウェアの設定 における例として、プロダクトに対して全てのホールドを読み出すことに関連し 、かつホールドがプロダクトの使用に影響を及ぼす度合いを判断するモデルは、 そのリストに含まれることができる。 1. ポインタをこのプロダクトの第一のレコードへのホールドファイルにセッ トする 2. 現在のレコードがプロダクト用である場合 3. 現在のレコードを読み出す 4. 使用可能なブロダクトにおいてネット効果を蓄積する 5. 2.に戻る また、上記で一部説明するように、また以下でさらに説明するよ うに、モデルは、モデルを使用して構築したまたRTEM10によって動作する アプリケーションのフレキシビリティを最大限に高める数種類のものでもよい。 本明細書で使用される「方法」という用語は、従来のプログラムにおいてサブ ルーチンと類似した特定の目的を達成するために作成された手続き上のコードの ブロックをいう。本発明によると、方法は、「自立型」で再利用可能な登録済み の公的に示されたものとして使用されている。つまり、各方法は、その存在が登 録されたライブラリのみにおいて並ぶものかない。第6図と関連して以下により 詳細に説明している通り、方法を登録することでモデルにより指定された適切な 時間においてRTEM10によって呼び出してもよいライブラリのアクセス可能 な部分となる。本発明によると、方法のようなオブジェクトは、以下により詳し く定義するように、ペアレント、プレ処理、およびポスト処理を含むことができ る。 第2図は、これらの間でモデルおよびアプリケーションインターフェース50 の2つのベーシックタイプのロジック環境を示している。モデルには2つの重要 なタイプが含まれる。すなわち、アプリケーション処理(またはビシネスルール )モデルと、機械的モデルである。こうした2つのタイプは、指向先のアブスト ラクションのレベルが異なっている。アプリケーション処理またはビジネスルー ルモデルは、アプリケーションに特定の処理を実行する。例えば、ロジスティッ クスアプリケーションにおいて、アプリケーション処理またはビジネスルールモ デルは、オーダエントリまたはグッズの受信のために処理を指定する。アプリケ ーション処理またはビジネスルールモデルに関連するロジックは、1つのアプリ ケーションジ ョブのみに特定しており、一般的には、他のいずれのコンテキストにおいても再 利用不可能である。一方で、機械的モデルは、一般的により低レベルのアブスト ラクションにおいて処理を実行し、異なるアプリケーションコンテキストにおい て再利用可能である。ロジスティックス設定において、例えば、機械的モデルは 利用可能なストックを計算し、ウェアハウスにおいて場所Aから場所Bへストッ クを移動させるために必要な時間を記録する。 ここで使用される「ライブラリ」という語は、構成されてRTEM10へアク セス可能になったオブジェクトのセットである。「エンジン」は、事後結合で再 利用可能なモデルおよび方法のライブラリであり、特に、共に機能する機械的処 理モデルと方法との集合である。第2図の例において、ロジスティックス関連の アプリケーション用のエンジンのセット(52から62まで)がそのアプリケー ションのインターフェース50に関連して示されている。ハザードエンジン52 は、ハザードイベントの処理に関連する機械的処理モデルのグループとして定義 される。ディスパッチエンジン54は、ディスパッチに関連する機械的処理モデ ルのグループである。ビリングエンジン56は、ビリング機能の、さらにアクテ ィビィティエンジン58、インベントリエンジン60、およびその他のエンジン 62のそれぞれについて実行に関連する機械的処理モデルのグループである。 第2図では、エンジンの1つのみの内容の一部を示している。特に、ビリング エンジン56は、代わりに方法1、72および方法2、74へのリファレンスを 含む機械的モデル70を有し、この両方法は、少なくとも手続き上のコードブロ ック78のサブセットを呼 び出すことができる。機械的モデル70は、さらに、それ自体が2つの方法、つ まり方法X 80および方法Y 82へのリファレンスを含む別の機械的モデル 76へのリファレンスを含んでいる。モデルおよび方法の形態の制限の課すこと を第6図に関連して説明する。 第3図は本発明の実施の形態によるランタイムイベントマネージャ、モデル、 方法およびデータの構成を示す図である。一実施の形態において、メモリは、タ スクメモリ90、タスクプライベートキャッシュ100、サーバ側パブリックキ ャッシュ110、およびファイルシステム120の4つの部分を含んでいる。タ スクメモリ90は、RTEM10のオブジェクトコード92を一部に含んでいる 。別の部分において、タスクメモリ90は、プレコンパイルデータバンク(「P CDB」)ポインタ96およびダイナミック変数テーブル98とを含む1つまた はそれ以上の変数テーブル(「VTAB」)94を含んでいる。本発明による各 モデルは、第4図および第5図で以下に示すように、データを含み、モデルの呼 び出し時にRTEM10がロードするプレコンパイルされたデータバンクに記憶 される。モデルにおけるデータはフォーマットされ、RTEMはデータに基づい たモデルを呼び出すことができ、これは最も好ましくは、RTEM10がプログ ラムされた言語は参照された各オブジェクトのタイプを識別する拡張子または他 のデータに基づいてその内容を容易に理解し、こうしたオブジェクトを適切なロ ケーションから検索することができる。タスクプライベートキャッシュ100は 、モデルセット102、方法ライブラリオブジェクトコード104、およびクラ イアント側プライベートデータファイルキャッシュ1 08を含んでいる。サーバ側パブリックキャッシュ110は、モデルセット11 2、方法ライブラリオブジェクトコード114、およびパブリックデータファイ ルキャッシュ118を含んでいる。最後に、ファイルシステム120は、プレコ ンパイルデータバンク122(PCDBポインタ96によってポイントされる) の形態のモデル122、オブジェクトコードオンディスク124、およびデータ ベーステーブル/ファイル126を含んでいる。 (第1図で示される)RTEM10は、タスクのVTAB94へモデル「A」 のメモリブロック(参照番号102参照)をリンクし、これはクライアント側プ ライベートキャッシュ108またはサーバ側パブリックデータファイルキャッシ ュ118のいずれかにある。モデル「A」におけるデータはPCDBポインタ( 参照番号96参照)の形態であり、これはVTB94のセグメントである。従っ て、多少の機械的命令が必要であり、モデルのサイズまたは複雑さに関わらず、 VTAB94にこれをアクティブにリンクする。 例えば、モデル「A」のステップ1(図示せず)がモデル「B」を呼び出すと 仮定する。以下でより詳細に説明するように、特定の時間において1つのモデル のみをアクティブできるとすると、RTEMはモデル「A」を下に「押し」(ス タックマシーンの場合)、それをパッシブにリンクさせたままにする。次に、R TEM10はモデル「B」のPCDBポインタをアクティブにリンクする(参照 番号96参照)。 さらに、モデル「B」のステップ1(図示せず)がオブジェクトコードの10 6において方法「X」を実行するように指向すると仮定する。このイベントにお いて、RTEM10は実行ポインタを方 法「X」に移動させ、これはどちらにしても、タスクプライベートは様々な制御 情報1005を含み、lvsequence$ 1006は実行されるペアレン トオブジェクトのリストを提供し、lvexitobject$ 1007はモ デルを終了する前に実行するオブジェクトを識別し(モデルが終了しようとする と、このオブジェクトはそのポスト処理で実行する)、lvtaborder$ 1008はフィールドからフィールドにジャンプするのに使用されるシーケン スを処理するフィールドナンバーのリストを提供し、lvfirstinput 1008は、最後の入力が完了した時に処理を開始するフィールドナンバーを 提供し、lvlastinput 1010は、第1の入力に戻る処理を設定す る前に処理する最後のフィールドナンバーを提供し、また、lvdata li st$ 1011はこのモデルで使用される全てのデータ変数のリストを提供す る。 第4B図はモデルの詳細な処理情報を示すデータ構造の第1の部分1000B の定義をさらに示している。特に、モデルを定義するオブジェクト数の識別を提 供し、{objectid}.name$ 1012はモデルであるオブジェク トにリファレンス名を提供し、{objectid}.descriptn$ 1013はこのオブジェクトの記述を提供し、{objectid}.cond ition$ 1014はこのオブジェクトを実行するためにRTEM10に適 合する必要がある条件を開始し、{objectid}.objecttype 1015はこのオブジェクト(1:方法、2:ツール利用、または3:モデル )のタイプをRTEM10に通知し、{objectid}.module$ 1016はツ ール利用、方法、またはモデルのモジュールを識別し、{objectid}. repository 1017はツール利用または方法のレポジトリを識別し 、{objectid}.method$ 1018は実行する方法を識別し、 {objectid}.toolusage$ 1019は実行するツール利用 を識別し、{objectid}.model$ 1020は実行するモデルを 識別し、{objectid}.performflg 1021はこのオブジ ェクトにアクセスする方法をRTEM10に命令し(0はモデルバールで指定さ れるオブジェクトが呼び出されることを示す一方、1は全てのモデルデータの受 け渡しをするオブジェクトを実行することを示すモデルデータを受け渡し、{o bjectid}.modelvars$ 1021は方法、ツール利用または モデルへ受け渡されるモデル変数のリストを提供し、{objectid}.o bj_var$ 1023は(モデルバールで指定される)モデル変数から移さ れるオブジェクト変数のリストを開始する。 第4C図は、モデルのさらに詳細な処理情報を示すモデル(第4B図から続く )のデータ構造の第2の部分の定義をさらに示している。特に、方法、ツール利 用、またはモデルにおいて受け渡されるこの変数の利用を識別する{objec tid}.{model variable}_{type of varia ble}.usage$ 1024を含んでいる。Model_variabl eは、{objectid}.modelvars$で開始される各データ変数 を設定し、{type of variable}は以下のものを識別する。C は文字変数を示し、Nは数字変数を示し 、利用、Iは受け渡されるにすぎない変数を示し、Bは受け渡し、また受け渡さ れる変数を示し、Fは指定されたデフォルト値として中および外に受け渡される 変数を示している。 {objectid}.{model variable}{type of variable} 1025は方法、ツール利用またはモデルへ受け渡すデ フォルト値を識別する。{objectid}.action$ 1026はこ のオブジェクトのためにアタッチメントアクションを識別する(1:プレ処理オ ブジェクト、2:ペアレントオブジェクト、または3:ポスト処理オブジェクト )。{objectid}.parentname$ 1027は、オブジェク トがプレ処理またはポスト処理である場合に、ペアレントオブジェクトの名前を 識別する。{objectid}.parent obj$ 1028は、プレ 処理またはポスト処理である場合に、ペアレントオブジェクトのオブジェクトI Dを指定し、{objectid}.designname$ 1029はモデ ルデザインオブジェクトのタイプを識別し、{objectid}.manda tory 1030はオブジェクトが入力である場合に、エントリーが強制であ るかどうか(強制でない場合には0、強制の場合には1)の入力へ示し、{ob jectid}.preprocs$ 1031は、このペアレントオブジェク トのためにプレ処理オブジェクトのリストを識別し、{objectid}.p ostprocs$ 1032はこのペアレントオブジェクトのためにポスト処 理のリストを識別する。 第5図はアプリケーションのメニューを実行する本発明によるモデル(特に、 パラダイムモデル)の特定の例170を示している。 メニュー例(Menu example)のヘッダ171の後に12個のオブジ ェクトのセットが続き、8つの方法、入力および終了を含んでいる。このモデル のオブジェクトの1つ、selectValは、「ペアレント」オブジェクトで ある。このペアレント(前のスラッシュ(/)によっても示される)に先行する ものはプレ処理と呼ばれ、ペアレントの後のものは(バックスラッシュ(\)で 示される)ポスト処理と呼ばれる。 モデルを呼び出すと、clr select方法172が動作し、これにより 選択されるメニュー項目の値を保持する変数をクリアする。Menu acti vモデル173は、menudflt174方法が何の選択も行っていない場合 に表示する初期メニューなどのデフォルト値をセットした後で、現在の月日、オ ペレータ、端末、カンパニー、メニューアクティビィティを追跡するのに使用さ れるシステムをセット(ロジスティックスを含むアプリケーションコンテキスト において)する。方法menu displ 175はメニューをロードおよび 表示する。SelectVal 177がユーザによって選択された値を読み出 しおよび記憶した後、方法save vals 176は古い値をセーブする。 モデルmenuselect 178はユーザによって行われたメニュー選択を 確認する。メニューのセキュリティを確認するための呼び出されるモデルの次の オブジェクトはmenusecure 179である。メニューを使用したオペ レータが有効でない選択を入力し、または別のメニューを選択して表示を行う場 合、処理は方法clr select 172において繰り返される。これは、 RTEM10への特別要求(第8図の参照番号324)を受け渡す方法menu secure 179によって達成される。有効な選択が行われると(有効なジ ョブ)、モデルはexit(オブジェクト)181を動作し、こうしてメニュー モデルの実行を終了したRTEM10に伝えるために制御変数をセットする(e xit 181に対する全てのポスト処理はRTEM10が実際にモデルを離れ る前に処理される)。 オペレータがプリケーション環境を終了することを選択する場合、メニュー選 択入力(SelectVal 177)において適切に予め設計されたキー(こ の例では、F4キー)を押す。これによりexit 181に処理が送られ、こ うしてメニューモデルの処理を終了したRTEM10に伝えるために制御変数を セットする(exit 181に対する全てのポスト処理は、RTEM10が実 際にモデルを離れる前に処理される)。方法menuf4 182は、メニュー 選択入力(SelectVal 177)でF4キーを押すオペレータを条件と する。方法menuf4 182はシステム構成フラグをチェックして、トップ レベルにおいてまだであれば、メニューモデルがメニューディスプレイにおいて 1つのレベルをバックアップすべきかどうか確認し、トップレベルであればメニ ューモデルを終了し、またはシステム構成フラグがただちにメニューモデルをメ ニューディスプレイの以前のレベルに移動することなく終了する。Menu4f 182方法がメニューディスプレイで1つレベルを上げることを判断する場合 、exit 181でセットされた制御変数(メニューモデルの実行を終了した RTEM10に伝えるために)はリセットされて、表示する選択されたメニュー は前のメニューへセットされる。こうして方法clr_sele ct 172において処理を継続する。 モデルMenu example 170と関連するデータ変数は、メニュー 選択を記憶するaction 184と、5つのスペースを記憶するblank 5 185と、カンパニー名を記憶するcmdcompany 186と、カ ンパニーコードを記憶するcompany 187と、メニュー説明を記憶する menu desc 188と、前に表示されたメニューのアイデンティティを 記憶するoldmenudsp 189と、ページディスプレイを記憶するpa gedisply 190と、メニュー選択を記憶するselectval 1 91と、カンパニーの略名を記憶するshort name 192と、ステー タス値を記憶するstatus 193と、システムのサブメニューを記憶する sub−menu 194と、コンピュータ端末を識別するterminal 195と、tilde 196と、tilde2 197と、特定の時間を記憶 するtime 198とを含む。 第5A図は第5図のパラダイムモデル170に基づいたバリアントモデル17 0Aを示している。バリアントモデル170Aは、パラダイムモデル170と殆 ど同じである。しかし、パラダイムモデル170にはない処理、特にメニューセ キュリティの確認後にログファイルへのメニュー対話を書き込むポスト処理tr ack_al 179Aを含んでいる。バリアントモデル170Aのヘッダ17 1Aは、モデルがバリアントであり名前によって識別するということを示してい る。さらに、ヘッダは、バリアントモデル170Aに必要な条件(この例では、 1つのみ)をリストし、可能性のある呼び出しのために「適用」し次にロードさ れる。この場合において、 track_alバリアントモデル170Aに必要な条件は、カンパニーコード がA1に等しいということである。モデルのランタイム確認テーブル(ランタイ ム確認マップということもある)は、エラスティックテータベースと関連して以 下に述べるDBAC24、30と同じ構造のランタイム確認テーブルである。 このテーブルまたはマップはあるバリエーションをモデルに適用する場合、以 下のようになる。 対応するランタイム表現テーブルは次のようになる。 (COMPANY$=「A1」) なお、ベースレコード読み出し後のメモリ内のデータは、 COMPANY$=「A1」 となる。ランタイム表現テーブルを使用して、ランタイム評価コードを生成する 。この例では、 (COMPANY$=「A1」) である場合、ランダイム評価コードは「1」になる。このランタイム評価コード は、バリエーションがアクティブであることを判断できるよう示されたテーブル と対照される。アクティブなバリエーションは、ランタイム評価コードと同じ位 置で「1」を有するものとなる。 バリアントテーブルはモデルのランタイム情報に対応する。このバリアントテ ーブル付随ファイルは、全てのバリアントモデルを作動させる全ての条件のテー ブルを記憶する。上記の例では、バリアントテーブルは以下のようになる。 LVRTEM.VAR CHECK$=「(COMPANY$=「A1」)」 LVRTEM.VAR TABLE$=「1」 LVRTEM.VARIATIONS$=「track a1」 ここで述べられている実施の形態の命名規則を明らかにすると、LV(すぐ上 で使用されている)はローカルな変数クラスをいい、SY(システム変数)、D D(データ辞書)、DB(テータベース)、LL(ローカルラベル)、RT(ル ーチン)など他のプレフィクスは他の変数クラスで使用される。 バリアントモデル170Aの詳細にコメントされたものが第5B図に示されて おり、COMPANYが「A1」である時にバリアントモデルがロードされると いうこと、各メニュー選択後にログファイルに書くDATA OPERATOR 、TIME、およびSELECTVALに書き込むためにツール利用オブジェク トの例に加えるということを示している。オブジェクトはEXIT MENUと 呼ばれるDECISIONの前に実行される。まず、バリアントモデル170A はオブジェクト名を含み、パラダイムモデルへ追加す る。次に、モデルての処理シーケンスにおいてそのオブジェクトをどこに挿入す るかを示す。特に、オブジェクト(「track A1」)は、ポスト処理とし てペアレントオブジェクト「selectval」(第5図の参照番号177と 第5A図の参照番号177A)に添付され、exit menu(第5図の参照 番号180と第5A図の180A)に挿入される。例オブジェクト「track a1」に関連する処理の詳細があとに続く。まず、ストリング「Write to log file」にセットされた(DESCRIPTN$)という説明 が提供される。オブジェクトのタイプはツール利用(この例では、この値は2) を示す値にセットされる。次に、ペアレントオブジェクト32文字ID(PAR ENTOBJ$)が開始され、ペアレントオブジェクト名(PARENTNAM E$)(上で述べているように、「selectbal」である)が続く。詳細 には、オブシェクト設計名(DESIGNNAME$)は「ツール利用」であり 、モジュール(MODU1E$)は「モジュール」であることをさらに含む。詳 細な情報にはさらに、オブジェクトが常駐するレポジトリ(REPOSITOR Y$)のアイデンティティ、すなわちデータベースを含む。さらに、オブジェク ト(TOOLUSAGE$)によって呼び出される方法は、track alが ログファイルに書き込むため「書き込み」として指定される。 さらに、バリアントモデルは、「ログファイル」(「モジュール」として識別 されるモジュール内のログファイル)、「書きこみ」(動作を示している)、お よびオブジェクト(すなわちオペレータ(ZOPRINFO$(1、6))、時 間(TIMES)、メニュ ー選択(SELECTVAL$)に必要な条件が満たされる場合に書き込まれる 変数リストを含んでいる。バリアントモデルはさらに、ロジックファイル名(S YLFN$)であるいくつかのオブジェクト変数(OBJ VARS)、要求さ れたアクション(SYREQUEST$)、オペレータ(OPERATOR$) 、時間(TIME$)、およびメニュー選択(SELECTVAL$)を含む。 バリアントモデルは、上記のパラメータでDBACを呼び出して、書き込みを行 う。 第6図はモデルを含むオブジェクトの登録処理200の実施の形態のフローチ ャートを示している。登録処理により、アプリケーション開発プロジェクト中に 、すべてのオブジェクトがRTEM10による呼び出しおよび適切な実行を可能 にするある制約に従うことを確認する。登録処理200は、さらに、オブジェク トのテスト、最終的には登録済みオブジェクトに依存するアプリケーションを容 易にする。登録済みのオブジェクトは1つ以上のアプリケーションによって呼び 出してもよい。この登録処理200は、デベロッパによって、オブジェクトにお けるデータのリスティングでステップ202で始まる。このデータには独特のオ ブジェクト識別子(「ID」)、例えば32文字オブジェクト登録ID(第4図 のモデルテンプレートには図示せず)を含んでいる。また、データは、第4図の モデルテンプレート140と関連して上記に述べた「Example temp late」などの自然言語(例えば、英語)名を含んでいる。この説明には、ま た、独自の言語名(第4図の例モデルテンプレート140の中央のコラムで述べ た)および第5図のMenu exampleモデル170をタイプインジケー タと同様に含 み、オブジェクトはモデル、方法、ツール、データ要素、フィールド、ファイル または他のオブジェクトであると述べている。オブジェクトのデータはまた、開 発プロジェクトコントロールユニット(「DPCU」)ID、オブジェクトのオ ーサ、オブジェクトのIDおよび自然言語名を含み、オブジェクトと、レポジト リまたはライブラリのどちらにオブジェクトがあるかを示すステータスフラグを 交換または再定義するようにしてもよい。 DPCUは開発ワークのロジックブロックを示し、アプリケーション開発プロ ジェクトのいかなるサブセットにすることもできる。本発明のアプリケーション 開発方法の一実施の形態によると、開発オブジェクトレジストリは、使用可能に なる前にそれにDPCUを割り当てる。DPCUの割り当ては、オブジェクトを 特定のデベロッパまたは開発グループに関連付けて、開発オブジェクトの統合性 および品質を保証する。DPCUのデータファイルは次のものを含んでも良い。 ・ オブジェクトのオーサまたはデベロッパのリスト ・ このDCPUが責任のある開発オブジェクトのリスト ・ DPCUによってカバーされるワークオーダーのリスト ・ オブジェクトのためのワークの短い説明 ・ オブジェクトのためのワークの長い説明 ・ オブジェクトの登録日 ・ オブジェクトの開始日 ・ オブジェクト(以下述べる)のテストスイートのリスト ・ オブジェクトの組み込みの意図されたウェーブ テストスイートは、本質的には(以下に述べる)任意の「テスト セッション」に含まれる関連するオブジェクト、DPCUのリストである。これ により、複数のアプリケーション開発プロジェクト(およびそれの関わるオブジ ェクト)を、同じソフトウェア処理が関わっていても、同時にテストすることが できる。本発明の実施の形態の開発テストスイートファイルは以下のものを含む 。 ・ DPCUのリスト、およびスイートのテストに含まれるオブ ジェクトの暗示されるリスト ・ 他のテストスイートのリスト、もしあれば、任意のテストス イートによるテストにおいて結合されるもの ・ 登録済みテスタのリスト、例えば6文字のユーザ/アソシエ ートのコード ・ 公知のテストディレクトリ(以下に述べる)のリスト ・ テストスイートに責任のある品質保証人のアイデンティティ テストディレクトリは、テストセッションの出力をホールドするロケーション である。テストセッションはランタイムに呼び出されて任意のテストスイートを 呼び出す。テストセッションによって更新されたファイルはいずれもテストディ レクトリおよびそれに配置され、ファイルのプロダクションバージョンには配置 されない更新レコード/テーブルに複製される。この処理は第7図に関連して説 明する。複数のテストディレクトリを1つのテストスイートに適用することがで きるとすると、個々のテスタは、同じスイートをテストしてもよいその他から無 関係に操作オプションを有する。本発明の実施の形態のテストディレクトリは以 下のものを含む。 ・ テストディレクトリのID ・ テストスイート ・ 許可されたテスタのリスト テストティレクトリは、いくつの数であっても、1つのテストディレクトリし か任意のテストセッションに対応しないという条件で任意の時間にアクティブに してもよい。第7図に関連して以下に示されるテストディレクトリは、全ての書 き込み動作を捉え、データベースへ更新する。これは、テスト、環境というより もプロダクションにおいてオリジナルのレコードが書き込みされてもあてはまり 、テストセッションが進行していることを指定することでプロダクション環境に おいてテストできるようにする。 データベースアクセスコントローラ(第1図からのDBAC24、30)は、 そのフォーマットまたは要素定義が変化しなくてもテストセッション中に読み出 されたプロダクションファイルレコードを自動的にコピーする。DBAC24、 30は、まず、テストディレクトリの読み出しを試みるが、そうでないとデータ ベースのプロダクション部分から要求されるレコードを読み出す。テストディレ クトリを利用すると、テストセッション中にプロダクションデータの変更が排除 される。テストセッション中に読み出されたプロダクションファイルレコードが そのフォーマットまたは要素定義に関して変化すると、読み出されたまたは抽出 されたプロダクションレコードのいずれも通常の出力においてのみテストディレ クトリに書き込まれる。 ランタイムにおいて、アプリケーションの開発を行うオペレータは、メニュー スクリーンに出会った時にテストセッションを呼び出してもよい。テストスイー トがそのオペレータに関連するリストから選択される。次に所定のテストディレ クトリがそのスイートおよ びこのオペレータに添付されるリストから選択される。テストセッション中に以 下のものを含むがこれに限定されない様々なデータがトラックされる。 ・ 動作されたショブ ・ アクセスされたデータベースフィールド ・ オペレータキーストローク ・ 遭遇するエラー ・ オペレータが入力するテスティングコメント ・ オペレータが記録するテスト項目 任意の時間において消去およびリセットされるテストディレクトリがクリアさ れるが、セッションの結果は好ましくはレコードキープの目的で永続的な記憶装 置において記憶される。 全てのオブジェクトをテストすると、「プロダクションウェーブ」の一部にす ることができ、または単にローカルなアプリケーション環境において合法的に使 用することができる。 テストスイートが以下のテスティングを証明すると、それに関連するオブシェ クトはすべて「プロダクションステータス」に転送される。特定のアプリケーシ ョンコンテキストにおいて、このようなコンテキストに適した他の基準がテスト スイートに関連するオブシェクトヘプロダクションステータスを割り当てる前に 課されてもよい。 第6図を参照すると、ステップ204においてデベロッパは、ステップ206 からステップ216によってオブジェクトを構築し始め、第4図および第5図と 関連してその例を述べた適切なフォーマットを有するモデルを生成する。オブジ ェクトが構築されると、開 発レシストリの一部にしてもよい。開発レジストリのオブジェクトは「開発オブ ジェクト」ということができ、プロダクションレポジトリまたはライブラリで登 録される「プロダクションオブジェクト」と区別される。 登録処理200の性質は、登録されるオブジェクトのタイプによってもよい。 モデル(パラダイムおよびバリアント)を方法およびツールというよりもいくら か異なる考慮によって登録する。 モデル(パラダイムおよびバリアントの両方)は、例えばモデルデザインツー ル208によって生成または修正されることができる。例えば現行の登録済みの モデルに修正が行われると、バリアントモデルの形態で変化が起こる。バリアン トモデルはどんな数でも生成することが可能であり、任意のパラダイムモデルに 対応する。 モデルデザインツール208の実施の形態のロジックフローチャートが第6A 図に示される。モデルデザインツール208は、まず、ステップ2081におい てアプリケーションデベロッパが、現行のモデルのリストからモデルを選択した り、または、現行のリストに追加される新しいモデルを生成したりできるように する。現行のパラダイムモデルが選択されると、モデルに対する変化はパラダイ ムモデルへバリアントモデルとして記憶される。そして、モデルデザインツール 208は循環ループを初期化し、選択したモデルに関連するルールの全てを追加 する。このループの第1のステップにより、デザインオブジェクトのステップ2 082において、タイプにより選択し、選択したモデルの一部にすることができ る。オブジェクトは登録済みのオブジェクトすなわちオブジェクトへの条件を満 たして、ここで述べるようにRTEM10によって処理されるもの からのみ選択されるようにしてもよい。ステップ2083では、アプリケーショ ンデベロッパは、モデルに対するオブジェクトを追加することができ、また選択 したオブジェクトに関連するパラメータを追加することもできる。モデルはコー ドを含まないため、オブジェクトは本当はモデルにあるのではなく、モデルは選 択したオブジェクトへのリファレンスを含むということを思い起す。モデルにオ ブジェクトを追加することに加え、アプリケーションデベロッパはモデルに関連 するオブジェクトを修正または削除してもよい。図示によって、アプリケーショ ンデベロッパは以下のものを選択することができる。 ・ データ定義 このモデルで使用されるデータを定義し、このデータ定義 がポイントするデータ辞書12(つまり、ファイルまたはデータ要素からのフィ ールド)における要素に入力する。 ・ 入力 ユーザ入力と、ユーザエントリを記憶するデータと、異なる結果 コードを引き受ける特別アクション(ある場合)とを定義する。 ・ ボタン ボタン定義と、表示するラベルと、異なる考えられる結果コー ドを引き受ける特別アクション(ある場合)とを定義する。 ・ 方法 呼び出す方法と受け渡すパラメーク(ある場合)を選択し、異な る考えられる結果コードを引き受ける特別アクション(ある場合)を入力する。 ・ ツール利用 呼び出すツール利用と受け渡すパラメータを選択し、異な る考えられる結果コードを引き受ける特別アクション(ある場合)を入力する。 ・ モデル 呼び出すモデルと受け渡すパラメータ(ある場合)を選択し、 異なる考えられる結果コードを引き受ける特別アクション(ある場合)を入力す る。 ・ 決定 この決定ステップの条件(ある場合)および実行する特別アクシ ョン(ある場合)を入力する。 ・ 終了 ・ ロールスクリーン作動 視覚的ローリングスクリーン定義を入力して使 用し(ロールスクリーンとは、データエントリの際に自動的にスクロールし、特 に連続するレコードにおいてデータの繰り返されるエントリに関連する機能をい う)、異なる考えられる結果コード(ある場合)を引き受ける特別アクションを 入力する。 ・ ロールスクリーン視覚定義 「ロール」するための視覚的な行の数を定 義する。 ・ ボックスディスプレイ ボックス(ある場合)のタイトルを入力する。 ・ テキストディスプレイ 表示するテキストを入力する。 これまでのステップ208の処理の結果は、モデルに関連するオブジェクトの リストを作成するためにすぎなかった。しかし、このポイントに対してリストに おけるオブジェクトの順序は、モデルに追加されるオーダーに従うのみである。 次に、ステップ2084において、アプリケーションデベロッパはモデルに視覚 的オブジェクトを配置してもよい。例えば、デザインオブジェクトが使用可能な 視覚的コンポーネント(例えばスクリーンボタン)を選択した場合、またアプリ ケーションデベロッパがスクリーンボタンやその他の オブジェクトをモデルに追加しようとする場合、モデルを設計するアプリケーシ ョンテベロッパは、視覚的形態においてこのオブジェクトを「配置」する(すな わち、ボタン、またはサイズおよびボックスの位置を表示する場所を示す)よう 促される。オブジェクトは、一般的に当業者である使用可能なオプションのセッ トの間で選択される。 次に、アプリケーションデベロッパは、ステップ2085において、モデル内 のオブジェクトを再オーダし、そのシーケンスによってRTEM10により呼び 出された場合、設計されるモデルと関連する所望の処理を有効にするよう実行さ れるシーケンスに配置してもよい。上記で選択されたオブジェクトが処理オブジ ェクト(すなわち方法を呼び出す)である場合には、モデルを設計するアプリケ ーションデベロッパはこのオブジェクトを他の処理オブジェクトに関連する別の 位置に移動することができる。デフォルトは、ペアレントシーケンスの終わりに 新たな処理オブジェクトを全て追加する。モデルを設計するアプリケーションデ ベロッパが方法を(例えば)別のオブジェクトへのプレ処理に使用する場合、こ れはこのステップ2085において実行される。このように、例えば、オブジェ クトが方法であり特定のペアレントオブジェクトのためにプレ処理またはポスト 処理にされる場合、ステップ2085において適切な関連する順序が課される。 ステップ2085を通じた処理の結果は制御リストである。 フローチャートの部分Aの特定のモデル設計処理が特定のモデル、モデルデザ インツール208のために完了すると、次にフローチャートの部分Bにおいて、 および公知の方法によって、RTEM1 0はプレコンパイルされたデータバンク(PCDB)ポインタ(第3図の参照番 号96を参照)を生成するモデルを呼び出し、これによりRTEM10は実際の モデルにアクセスすることができる。RTEM10はモデルの呼び出し時にプレ コンパイルされたデータバンク96へとデータをロードするため、RTEM10 は、モデルの呼び出し時にモテル設計処理中に指定されたルールを実行すること かできる。維持されるモデルがバリアントモデルである場合、バリアントモデル 情報だけが記憶され、更新するパラダイムモデルに添付されるバリアントモデル テーブルが更新される(すなわち、バリアントモデルが存在し、どのようなデー タ条件の下でそれを呼び出すかを伝える)。モデルデザインツール208におけ る各ステップの機能は、既知の方法によって実施可能である。 第6図によると、方法またはツールを210で登録する場合、その方法または ツールのソースコードをステップ212において編集または維持する。次に、コ ード(ソースコードまたはオブジェクトコードのいずれか)をスキャンしてステ ップ214においてイリーガル(illegal)に動作する。本発明の実施の 形態における、イリーガルな動作のためのスキャンは、コードを読み出し、また コードを書き込む言語におけるイリーガルな動作の名前であるキーワードがある かどうかテストする。一般的に、制御の転送または入出力動作(例えば呼び出し または書き込みなど)を実行する言語に遭遇すると、こうした言語はイリーガル であると識別され、修正を行わなければならない。ビシネスベーシックでは、例 えば、イリーガルな動作には次のようなものがある。 ・CALL ・EXTRACT ・PERFORM ・PRINT ・WRITE ・RUN ・READ ・INPUT ・FIND ・OBTAIN ・CLOSE ・OPEN 登録処理200はまた、ステップ216において、スキャン処理中に導出した パラメータを識別する。値を割り当てられた変数はいずれも方法から戻る。他は すべて方法へ受け渡される。 次に、全てのオブシェクトは、オブジェクトのタイプを判断するステップ21 8において開始されるテストオブジェクトの手続きが必要である。モデルや変数 (220)について、ステップ222でまずテストベッド(TestBed)か セットアップされる。このテストベッドによって、実際のまたは「ライブ」であ るがそうしたデータの真のファイルに影響を及ぼさないデータを使用して、モデ ル(またはバリアントモデル)をテストすることができる。また、全てのデータ は、必要に応じてテストベッドに自動的に移動する。 第7A図はテストベッド方法240の第1のフローチャートを示している。開 発およびテストを実行しているアプリケーション、特に作成または修正されてい るアプリケーションの一部であるモデルが入力または出力(「I/O」)動作を 要求する場合、テストベッド方法240が呼び出される。ステップ242におい て、テストベッド方法240は、リクエストが入力(読み出し)、出力(書き込 み)、または削除(除去)のどれであるか判断する。 要求が読み出し動作を実行するものである場合、ステップ244においてテス トベッド方法は、読み出されるデータがテストベッド にあるかどうかを判断する。テストベッドにある場合、ステップ250において 方法は要求されたデータを検索する。この点において、方法240は、「サマリ ーフィールド」といわれる複数のレコードの詳細を集合または合計するフィール ドの並行性を維持することを意図するいくつかのステップを実行する。こうした ステップ252から258は、方法240において1つ以上の分岐(branc h)から呼び出され、これは以下に詳述する。ステップ260において、処理は アプリケーションに戻る。 読み出し動作を通じて探し出されたデータがステップ244においてテストベ ッドにないと判断される場合、ステップR01において、テストベッド方法は、 読み出されるデータがテストベッド削除(TestBed Deletion) ファイル(または単に「テストベッド削除」ともいう)にあるかどうかを判断す る。テストベッド削除は次の理由によりテストセッション中に削除されたレコー ドを記憶する。(実際の、テストというよりもデータを含む、また単に「ライブ 」といってもよい)「ライブ」データベースは、テストセッション中には変更さ れない。さらに、レコードがテストベッドにない時にライブから検索される。従 って、メカニズムとしては、テストセッション中に削除されたレコードを知って 、テストセッション中にライブデータベースからテストベッドに削除したレコー ドが再び表示されないようにしなければならない。こうしたメカニズムは、テス トセッション中に削除されたレコードのテストベッド削除ファイルの記憶装置で 提供される。データがテストベッド削除に表示される場合、要求されたデータは 存在しないと考えられる。データは戻らず、ステップ254においてアプリケー ションに処理 が戻ることになる。 ステップR01において、デークがテストベッド削除にないと判断される場合 、ステップR02において、テストベッド方法は、読みこまれたファイルが、ペ アレント、チャイルド、またはスタンドアローンファイルなのかを判断する。「 ペアレント」は、1つまたは複数の「チャイルド」ファイルに関連情報を有する ファイルである。例えば、ロジスティックスのコンテキストにおいては「オーダ 」ファイルである。オーダヘッダデータはペアレントファイルに格納してもよく 、一方で詳細プロダクト行、リマーク行、および特別なチャージ行などの情報は 、そのペアレントファイルと関連する1つまたは複数のオーダディテールチャイ ルドファイルに格納されてもよい。ペアレントデータはチャイルドデータがなく ても存在することができるが、チャイルドデータはペアレントデータがないと存 在できない。スタンドアローンファイルとは、ペアレントとチャイルドとのデー タの関連がないものをいう。このファイルがペアレントファイルであるとステッ プR01で判断されると、ステップR05で処理が継続する。 ペアレントデータはステップR05において「ライブ」から検索され、またス テップR06においてテストベッドに書き込まれ、ロックされる。各チャイルド ファイルは、R07において適切な「ライブ」ファイルから検索され、適切なテ ストベッドファイルに書き込まれたペアレントデータと関連するデータを有して いる。この処理か完了すると、ペアレントデータはステップR08においてテス トベッドでロック解除され、要求されたデータがステップ250においてテスト ベッドから検索される。次のステップ252から25 8では、サマリーフィールドデータの並行性が(以下に述べるように)維持され ており、処理はステップ254においてアプリケーションに戻る。 ステップR02においてファイルがスタンドアローンであると判断される場合 、ステップ246において、要求されたデータは適切な「ライブ」テータソース から検索される。データが検索されると、(以下に述べる)全てのサマリフィー ルドはステップ247においてクリアされる。ステップ248において、検索し たデータをテストベッドに書き込むことによりテストベッドが更新される。次に 、ステップ250においてデ−タがテストベッドから検索され、ライブおよびテ ストベッド間でデータの並行性を維持した後、ステップ252から258のサマ リフィールドにおいて、ステップ254で処理はアプリケーションに戻る。 ステップR02において、ファイルがチャイルドであると判断された場合、ス テップR03において、ペアレントデータかテストベッドに存在するかどうか判 断が下される。テストベッドに存在する場合、ステップ250においてデータが テストベッドから検索される。再び、サマリフィールドのデータ並行性がステッ プ254から258において(以下に述べるように)維持され、処理がステップ 254においてアプリケーションに戻る。このチャイルドファイルについて、ペ アレントデータがステップR03においてテストベッドにないと判断される場合 、ステップR04において、ステップR04でペアレントデータがテストベッド 削除に存在するかどうか判断が下される。テストベッド削除に存在する場合、デ ータは存在しないと考えられ、ステップ254において処理がアプリケーション へ戻る。存在しない場合には、ステップR05において「ライブ」からペアレン トデータが検索され、ステップR06においてテストペッドへ書き込みおよびロ ックされる。各チャイルドファイルは、適切な「ライブ」ファイルから検索され 、ステップR07において適切なテストベッドファイルに書き込まれたペアレン トデータと関連するデータを有している。この処理が完了すると、ペアレントデ ータはステップR08においてテストベッドでロック解除され、要求されたデー タはステップ250においてテストベッドから検索される。そして、処理はステ ップ254においてアプリケーションに戻る。 第7B図はテストベッドの方法240の第2のフローチャートを示している。 ステップ242において判断されているように、要求がデータを書き込むもので ある場合、ステップ262において、テストベッドのサマリフィールドに関連す る値がライブデータベースのサマリフィールド値から減算される。ステップ26 4において、書き込まれるデータはテストベッドデータベースに更新される。次 に、ステップR09において、テストベッド削除のデータが除去される。ステッ プ266において、次に、処理はアプリケーションに戻る。 ステップ242において、入出力要求のタイプが「除去」であると判断される と、ステップR10においてデータはテストベッド削除へ更新される。ステップ R11において、テストベッドデータベースからデータが除去される。最後に、 ステップ266において、処理がアプリケーションに戻る。 図7A図を再び参照すると、ステップ252から258が本発明 による集合体変数のライブデータとテストベッドの間で並行性を維持するよう指 向される。本発明のこの実施の形態において、この変数は、詳細なデータを含む 複数のレコードの合計を保持する量的(quantity)フィールドである、 「サマリフィールド」である。ロジスティックスに関連する例では、サマリフィ ールドは、インベントリにある(すなわち「オンハンド(On−Hand)」で ある)任意のプロダクトの全体の量を記憶する「プロダクトマスタ」レコードで ある。「オンハンド」であるものの詳細は、プロダクトロットに関連するレコー ドに記憶され、あるプロダクトレコードに適用するロットは、何千あってもよい 。任意の時期においてオンハンドであるプロダクトの全体量を迅速に判断するた めに、データベースはプロダクトマスタレコードにおける全体のオンハンド量を 記憶するよう設計されている。プロダクトロットに関連する詳細なレコードが変 更するたびに、その変更に関連する相違がプロダクトマスタレコートのサマリフ ィールトに追加される。 テストベッドを動作する際、バランスのとれていないまたは並行性でないライ ブデータベースおよびテストベッドデータベースのサマリフィールドへとつなが ることができるライブデータベースにおいて詳細なレコードは変化することがで きる(異なる値を不正確に反映する)。この問題は、詳細なレコードがすべてテ ストベッドにコピーされない場合に生じることがある。しかしながら、かなり不 十分であり、また時間がかかることがわかっているサマリフィールドの統合およ び並行性を維持するように、何千もの詳細なレコードをコピーすることが必要に なることがある。 ライブとテストベッドのデータベースのサマリフィールドとの間 に並行していないという問題を表すため、テストベッドは、テストセッション中 に生じた詳細なレコードの全ての相違の合計をサマリフィールドにおいて記憶す る。テストベッドサマリフィールドのこの量に、ライブデータベースのサマリフ ィールドの値が加えられる。テストベッドは、テストセッション中に生じる変化 のみを記憶する。サマリフィールドを含むレコードがテストベッドに書き込まれ てもテストセッション中にサマリフィールドに変化が生じない場合、テストベッ ドにおけるサマリフィールド値は、対応するライブテータベースのサマリフィー ルドの値にかかわらずゼロになる。 1つまたはそれ以上のサマリフィールドを含むレコードの読み出しをテストセ ッションが要求する場合、こうしたサマリフィールドはライブデータベースから 検索される。ライブデータベースからのこうしたフィールド値は、書き込み要求 中に使用するようにメモリに記憶される。同じレコードがこうした要求によりテ ストベッドデータベースから検索され、テストベッドのサマリフィールドの値が ライブデータベースの対応するサマリフィールドに追加される。この計算によっ て、現行のメモリ値を置換するテストセッションの現在の値を生成する。アプリ ケーションに戻るサマリフィールドは、こうしてテストベッドにおけるサマリフ ィールドの合計、およびライブデータベースにおいて対応するサマリフィールド のそれぞれである。 テストセッションがサマリフィールドを含むレコードの書き込みを要求する場 合、その要求の時点で現在の値が読み出し要求中にメモリに記憶された(前は現 在の)ライブデータベース値から除算される。これを含むレコードの除算によっ てテストセッション中に生 じる差の値が生まれる。サマリフィールドを含むレコードをライブデータベース から検索し、はじめてテストベッドに更新する場合、サマリフィールドはゼロに セットされる。サマリフィールドへの全ての将来的な変更は、テストセッション で生じる変更のみを記憶する。 第7A図に戻って参照すると、ステップ250が達成する上記で述べた各例に おいて、ステップ252から258に関連する処理が実行される。ステップ25 2においては、サマリフィールドが存在しているかどうかに関しての判断が行わ れる。もし存在していない場合、ステップ260において処理がアプリケーショ ンに戻る。サマリフィールドがステップ254において存在する場合、ライブデ ータベースから検索される。ライブサマリフィールド値はステップ256におい てメモリに記憶され、ライブサマリフィールド値はステップ258においてテス トベッドサマリフィールド値に加えられる。最後に、ステップ260において処 理がアプリケーションに戻る。 テストベッドがステップ222においてセットアップされる場合、第6図の登 録処理200に戻り、モデル(またはバリアントモデル)はステップ224にお いてテストされる。ステップ224において、モデルがモデルテスト処理中にマ スタを受け渡さない場合、処理が繰り返され、デベロッパは例えばモデルデザイ ンツール208を用いてモデルを修正する必要があり、また(ステップ218か ら224へと)オブジェクトを再テストする必要がある。 ステップ218において、登録処理を現在終了したオブジェクトが方法または ツールであると判断されると(ステップ226)、ス テップ228において方法またはツールのパラメータ値がセットされる。パラメ ータがセットされると、方法またはツールがテストされる。(以下で述べる)R TEM10内部のサブルーチンを除くと、他のいずれかのコードのブロックを直 接呼び出すようにしてもよいようなコードのブロック(例えば方法またはツール )はない。このルールにより、コードが作成されている間のランタイムにおいて も、各コードのブロックを独立してテストすることができる。 本発明の基本的な法則が破られるのは、登録処理においてであり、例示するこ とができない。登録処理中において探知またはフラグされる間違った方法のいく つかの例としては、プロテクトされた変数を修正するコードを含む方法や、別の 方法を呼び出す方法や、RTEM10から制御を行う方法や、例えばデータベー ス、プレゼンテーション、および処理ドメインなどのドメインをクロスする方法 がある。 登録処理を実施する方法またはツールがテスト手続きに失敗した場合、アプリ ケーションのデベロッパが方法またはツールのソースコードを編集して、テスト の失敗につながることがある欠陥のいずれをも修正し、登録処理がそのステップ から繰り返されることができるステップ212に制御が戻る。 ステップ224(モデル用)またはステップ230(方法およびツール用)の いずれかでオブジェクトがテストをパスする場合、オブジェクトは、アプリケー ションの動作中にRTEM10にアクセス可能になる「パブリック」にすること ができる。オブジェクトをパブリックにするには、登録処理は、「どこで使用す るか」「どうやって使用するか」「いつ作成するか」「いつ削除するか」などの リンク情報を作成する。 第8図は本発明によるRTEM10の実施の形態の動作を記述するフローチャ ート300を示す図である。RTEM10は、ビシネスベーシック、C、C++ などの第三世代プログラミング言語(「3GL」)、または他の適当な第三世代 言語で実現してもよい。 RTEM10は、第6図で開始されるものと同様に、登録処理によって登録さ れるモデルのセットが指定するアプリケーションの動作を監督する。概観による と、RTEM10は、方法、ツール、および他のモデルへの呼び出しを含む初期 動作を定義するアプリケーションの初期モデルをロードする。各モデルにリスト されるオブジェクトが読み出されると、そのオブジェクトに定義される条件がチ ェックされてそれらが適合するかどうかを判断し、適合する場合にオブジェクト が呼び出される。登録処理に関連して上記に述べられているように、登録済みの オブジェクトが別のオブジェクトを呼び出すことはできないとされると、処理さ れる現在のオブジェクトに関連する実行の完了時に、制御はRTEM10に必ず 戻る。各オブシェクト処理の間で、RTEM10は特別な動作または外部条件を チェックし、条件を更新することができるため、アプリケーションを構成するモ デルは、発展すると、条件によってフレキシブルにアクセスすることが可能であ る。 フローチャート300を参照すると、ステップ302において、第1のモデル がメモリにロードされる。第6A図、第6B図、および第6C図で提供されるユ ーザインターフェースアプリケーションのメニューのモデルの例を参照すると、 モデルメニュ(model_menu)データはローカルメモリ(つまり第1図 におけるタス クメモリ90)に、ステップ302で格納される。この処理は、(第3図の)P CDBポインタ96を使用してモデルの読み出しを含んでもよい。これはさらに 、タスクメモリ90のVTAB94にモデルのメモリブロックのプレコンパイル されたデータバンクポインタ96をリンクすることを含む。 ステップ310において、RTEM10は、ロードされたモデルと関連するバ リアントモデルがあるかどうかチェックする。バリアントモデル310があるか どうかのチェックに関連する処理は第9図において開始される。本来、RTEM 10は、チェック時に所定のデータ状態のモデルを現在適用するかどうかを確認 するため、ロードされたモデルに対して登録された全てのバリアントモデルの条 件をチェックし、バリアントモデルが現在適用している場合、現在メモリにある モデルデータで(PCDB96にポインタを書き込むことで)ロードまたはマー ジされる。 第9図はこの処理のフローチャート400を示す図である。ステップ310が ローチャート300に達すると、RTEM10はステップ402において、第8 図のステップ302でロードされたモデルのバリアントモデルに関連する第1の (または、対話に応じて、次の)条件を検索する。条件はモデルのデータ値に基 づいている。例えば、 Condition 1:client$=「ACME」and product$=「BEACH-BALL」 Condition 2:product$=「NET」 テーブルは、各条件が存在する場合に呼び出されるバリアントモデルへの条件 に関連する。例えば、client$=「ACME」およびproduct$= 「BEACH−BALL」である場合に は、バリアントモデル「A」およびバリアントモデル「B」が作動する。 バリアントモテル「C」は、product$=「NET」である場合に作動 する。RTEM10は、モデルのデータの現在値に対して全ての条件がチェック されるまで、例えば、条件1、次に条件2などにチェックされる「現在の条件」 をセットする。 ステップ404において検索された条件は、(第1図で示されるタスクメモリ 90の動的変数テーブル98に記憶される)現在のデータ値に対してチェックが 行われる。例えば、 if checking condition 1 and client$=「ACME」and product$=「BEACH-BALL」 then Models「A」and「B」are active; if client$ is not「ACME」or if product$ is not「BEACH-BALL」 then Models「A」and「B」are not active. ステップ404でチェックされる検索された条件が満たされるかまたは「パス 」すると(ステップ406)、検索された条件が満たされる時に呼び出されるす べてのバリアントモデルは、ステップ410において、RTEM10に処理され るタスクメモリ90において記憶されるアクティブなバリアントモデルのリスト に追加される。例えば、 active variant Models=「A」and「B」 ステップ404でチェックされる検索された条件がパスしないと、またはステ ップ410において現在の条件に対応する全てのバリアントモデルがリストに加 えられると、RTEM10はステップ4 08において、より多くの条件が現在のモデルをチェックしなければならないか どうかをチェックする。チェックしなければならない場合、RTEM10はステ ップ402に戻って、リストにおいて次の条件を検索する。チェックしなくてよ い場合、ステップ412においては、ステップ410においてリストに加えられ たバリアントモデルはすべて上記のロードの手続きごとにロードされる。フロー チャート400の処理中に作成されるアクティブバリアントモデルのリストに存 在しない現在ロードされたバリアントモデルがいずれもアンロードされることに より、現在のパラダイムモデルのバリアントモデルがアクティブなバリアントモ デルのみを構成する。このバリアントモデルのロードおよびアンロードは、第1 0図で示されるフローチャート500により詳細に説明される。(フローチャー ト400の手続き中に)アクティブバリアントモデルのリストが確立すると、ス テップ502において現在ロードされているバリアントモデルのリストと比較さ れる。この比較が行われると、どのバリアントモデルは作動(ロード)する必要 がなく、またどのバリアントモデルは休止(アンロード)する必要がないかがわ かる。 ステップ504において、アクティブバリアントモデルのリストにないロード されたバリアントモデルが現在あるかどうかのチェックが行われる。アクティブ バリアントモデルのリストにないこうした現在ロードされたバリアントモデルが ない場合、中断する必要はなく、以下に述べるステップ514に制御か受け渡さ れる。しかしながら、アクティブバリアントモデルのリストに1つまたはそれ以 上の複数の現在ロードされたバリアントモデルがない場合、ステップ506にお いて、中断する現在のバリアントモデルは、アクティ ブバリアントモデルのリストにない現在ロードされたバリアントモデルのリスト 日において次にセットされる。 ステップ508において、中断する現在のバリアントモデルのバリアントモデ ル情報は、制御変数のセットから取り除かれる。RTEM10は、いくつかのこ うした制御変数を使用して、処理するオブシェクトおよび処理する適切なシーケ ンスを識別可能にする。制御変数はおもにオブジェクトのリストである。中断す る現在のバリアントモデルでリストされるオブジェクトを制御変数のリストのい ずれかで識別する場合、リストを修正してこうしたオブジェクトのこのような識 別を取り除く。例えば、オブジェクトIDが中断する現在のバリアントモデルに 対応する 「M020016TOR1_ 0000000000400401_」(32文字または他の適切なコード) がペアレントオブジェクトシーケンスリスト(すなわち制御変数) に存在する場合、このリストからは削除される。 次に、バリアントモデルの詳細なデータはすべて、ステップ510において、 ランタイムイベントマネージャ10のローカルメモリ、すなわちタスクメモリ9 0から取り除かれる。例えば、パラダイムモデルのバリアントモデルがパラダイ ムモデルにない方法を含む場合、この方法についての情報(例えばモジュール、 レポジトリ、方法名など)はバリアントモデルデータにある。そのバリアントモ デルが中断されるものである場合、方法についてのこの情報は、第3図に示すよ うなタスクメモリ90から参照番号96においてバリアントモデルPCDBポイ ンタのリンクを外すことでメモリから取り除かれる。 さらに多くのバリアントモデルを中断する必要があるかどうか、ステップ51 2においてチェックを行う。必要がある場合、RTEM10は制御をステップ5 06に戻し、必要がない場合、またはステップ504において、中断するバリア ントモデルがないことを判断すると、現在ロードされたバリアントモデルのリス トにないアクティブなバリアントモデルがあるかどうかをステップ514におい てチェックする。テスト結果がポジティブである場合、ステップ516において 、ロードする現在のバリアントモデルを、ロードするバリアントモデルのリスト において次のバリアントモデルにセットする。 次に、現在のバリアントモデルがすでにロードされているかどうかについてス テップ518においてテストを行う。現在のバリアントモデルがすでにロードさ れている場合、何も行う必要はない。しかし、現在のバリアントモデルがまだロ ードされていない場合、ステップ522において現在の制御データでロードされ る。RTEM10は、制御変数を使用して、処理するオブジェクトおよび処理す るシーケンスを識別する。バリアントモデルによって導入される新たなオブジェ クトはこうした制御変数でマージする必要がない。このマーシはステップ524 において実行される。RTEM10がバリアントモデルによって導入された新し い方法を作動する時期を判断することができるように、新しい方法のオブジェク トIDが制御変数に加えられる。方法がプレ処理である場合、(例えば第6A図 から第6C図の表記における{parent object ID}.prep roces$)方法のペアレントであるオブジェクトのプレ処理のリストに加え られる。バリアントモデルに関連する新 たなオブシェクトが制御変数とマージされると、またはステップ518において 現在のバリアントモデルが既にロードされていると判断される場合、RTEM1 0はさらなるバリアントモデルを処理する必要があるかどうかテストする。処理 する必要がある場合、RTEM10はステップ516に戻って次のバリアントモ デルを検索する。処理する必要がない場合、またはアクティブなバリアントモデ ルがないとステップ514で判断された場合、526においてロジックが完了し 、ロジック的分岐がもともと生じた場所によって、第8図のステップ310か( 以下に示す)ステップ322のいずれかに制御が戻る。 第8図の最上段のRTEM10のループのステップ310においてバリアント モデルのチェックに制御が戻ると考えると、現在のオブジェクトを識別する変数 は、そのモデルにおいて第1のオブジェクトへステップ312においてセットさ れる。上記のように、オブジェクトは別のモデル、方法、ツールまたは別のオブ ジェクトであってもよい。RTEM10はモデルのペアレントオブジェクトのリ ストから第1のペアレントオブジェクトを検索する。第6A図から第6C図から 、モデルメニュ(model_menu)を使用すると、 first_object=lvsequence$(1,32) - First Parent Object RTEM10はオブジェクトにおいてプレ処理のチェックも行う。 例えば、 pre_processes={first_object}.preprocs$ - List of Pre-Processes for First Parent Object プレ処理が存在する場合には第1のオブジェクトをプレ処理リストの第1のオブ ジェクトに設定し、存在しない場合には第1のペアレントオブジェクトのままで ある。例えば、 first_object=pre_processes(1,32) - First Pre-Process Object current_object=first_object - Setting the current object to the first object ステップ314において、現在のオブジェクトに対応する条件が現在のデータ に対してチェックされ、オブジェクトを実行するかどうかを判断する。現在のオ ブジェクトに関連する条件がない場合、RTEM10は、満たされたまたは「パ スされた」条件があると考える。例えば、第6A図から第6C図のメニュモデル (menu_model)例を使用すると、 evaluate {current_object}.condition$ - Check Condition of Object 現在のオブシェクトの条件がステップ314において満たされると、ステップ 316において、RTEM10は現在のオブジェクトにより要求されるユーザイ ンターフェース関連の情報をロードおよび表示する。このステップは、オブジェ クト指向プログラミングの分野において理解される用語のように、「ゴットフォ ーカス(Got Focus)」処理に対応する。例えば、(シンボルカレント オブジェクト(current_object)で表示してもよい)現在のオブ ジェクトが、ホタンまたは入力フィールドなどユーザ入力オブジェクトである場 合、RTEM10は現在表示される視覚 的な形態を、現在のオブジェクトが表示される視覚的な形態と比較する。これら が異なる場合、新しい視覚的形態はロードおよび表示される。 現在のオブジェクトは、次に、ステップ318において呼び出される。RTE M10は、オブジェクトのタイプをチェックし、適切なロジックを実行して呼び 出しを行うか、またはそうでなければオブシェクトを利用する。例えば、 {current_object}.objecttype: 1=方法 パラメータをセットアップし、方法を呼び出す 2=ツール利用 パラメータをセットアップし、ツール利用を呼び出す 3=モデル パラメータをセットアップし、モデルを呼び出す このように、現在のオブジェクトがモデルである場合、318aにおいてモデ ルをロードする。現在のオブジェクトが方法である場合、318bにおいて方法 を呼び出す。現在のオブジェクトがツールである場合、318cにおいてツール を呼び出す。 方法またはツールである場合に、オブシェクトが実行を終了すると、ステップ 320において適宜ユーザインターフェースを更新する。RTEM10は、現在 の形態で表示されているデータのいずれかが変化したかどうかをチェックする。 現在の形態で表示される変化したデータが表示される。 オブジェクトの実行中に関連するデータの状態が変化することがあり、また変 化したデータは、こうした変数の状態からみて変数が「適用する」変化したデー タに影譬することがあるとすると、RTEM10は、322においてフローチャ ート400の処理によって バリアントモデルを再度チェックする。データのいずれかが変化する場合、第9 図および第10図のフローチャート400および500にそれぞれ関連して述べ られているように、現在ロードされている変数モデルに対して、新しく作動した バリアントモデルをアンロードおよびロードしなければならないかどうかを判断 する詳細な分析を実行する。 次に、RTEM10は特別な動作を324にてチェックする。例えば、ツール 利用が呼び出されてデータベースから情報を読み出し、その情報が存在しない場 合、結果コードはRTEM10に戻る。特別な動作はこの結果コードに添付され 、この情報がデータベースにないということをオペレータに知らせるメッセージ のオブジェクトIDである、次の現在のオブジェクトをセットする。例えば、 {current_object}.result_code_000010=「jump」 {current_object}.result_code_000010.resultobj$=ObjectID of the message {current_object}.result_code_000010.descriptn$=「if record not on file,d isplay message」 この動作は、変数{current_object}: result code 000010.resultobj$で指定されるオ ブジェクトIDに対して現在のオブジェクトをセットする。 このイベントでは、次にステップ326をスキップしてステップ314へ制御 を移す。 現在のオブジェクトの条件を314でチェックすると、条件が満たされていな い場合、またはステップ324において特別な動作が 現在のオブジェクトをセットしていない場合、ステップ326のロシックを実行 する。RTEM10がペアレントオブシェクトへのプレ処理リストを現在処理し ている場合、現在のオブジェクトをプレ処理リストの次のオブシェクトにセット する。それ以上プレ処理オブジェクトがない場合、現在のオブジェクトはペアレ ントオブジェクトにセットされる。処理が完了していない手段を処理するオブジ ェクトがある場合、制御はステップ314に戻る。 RTEM10がペアレントオブジェクトを現在処理している場合、オブジェク ト(例えば{current_object}.postprocs$)に対す るポスト処理のチェックを行う。現在のオブジェクトに対するポスト処理がない 場合、RTEM10は現在のオブジェクトをペアレントリストの次のオブジェク ト(lvsequence$)をセットする。オブジェクトをチェックして、プ レ処理がオブシェクトと関連するかどうか判断する。関連する場合、現在のオブ ジェクトはプレ処理リストの第1のオブジェクトを(例えば、current_ object=preproc$(1、32))にセットする。関連しない場合 、現在のオブジェクトは次のペアレントオブジェクトのままである。RTEM1 0が現在ペアレントオブジェクトを処理している場合、およびペアレントオブジ ェクトがそれと関連するポスト処理を有している場合、現在のオブジェクトは、 これらのポスト処理の第1のものにセットされる。RTEM10が現在ポスト処 理を処理し、実行するポスト処理がこれ以上ない場合、現在のオブジェクトを、 (上記で説明したように)プレ処理をチェックする次のペアレントオブジェクト にセットする。任意の時間において、ポスト処理がそれ(第8図の参照番号32 4)に添付される特別な動作を有しないポジティブな結果コードを戻す場合、現 在のオブジェクトは現在のオブジェクトのペアレントオブジェクトにセットされ る。次に、このオブジェクトはプレ処理をチェックする。1つでも存在すると、 現在のオブジェクトは第1のプレ処理にセットされる。また、現在のオブジェク トがあるということは、ステップ328において、処理を実行するかどうかのテ ストをネガティブに評価するということであり、制御はステップ314へ戻る。 326において、これ以上実行するオブジェクトが存在しない場合、またはス テップ324において、特別な動作がRTEM10を終了させる命令につながる 場合、ステップ328における評価はポジティブに評価され、RTEM10はス テップ330において終了する。 モデルのランタイム情報を伴う付随ファイルは、全てのバリアントモデルを作 動させる全ての条件のテーブルを記憶する。パラダイムモデルに対して登録され たすべてのバリアントモデルがこのテーブルを更新する。第6図および第6A図 に関連して述べられる種類のモデルデザインツールをオペレータが適用する場合 、登録処理中にバリアントモデルがパラダイムモデルに対して登録される。 この制御テーブルのフォーマットは以下の通りである。 LVRTEM.VAR_TABLE$ これはバリエーション毎の条件評価のリストである LVRTEM.VARIATIONS$ これはlvrtem.var_table$に対応するバ リエーション名のリストである 例えば、任意のパラダイムモデル(図示せず)の3つのバリアン トモデルはそれぞれ次の条件下で適用する。 バリアントモデル「variant1」:COUNTRY$=「US」 バリアントモテル「variant2」:COUNTRY$=「CA」 バリアントモデル「varjant3」:CLIENT$=「ACME」 バリアントモデルを作動するのに使用される各条件の値は、変数lvrtem .var_tableに記憶される。全てのバリエーションで使用される各条件 のプレイスホルダがある。提供される例において3つの条件があるため、バリエ ーションテーブルにおいて3つのプレイスホルダがある。 アクティブであるvariant1では、variant1を作動させるのに 使用しないため(「0」で表される)、COUNTRY$=「US」が真(「1 」で表される)でなければならず、COUNTRY$=「CA」が偽(「0」で 表される)でなければならず、また、CLIENT$=「ACME」は真または 偽のいずれであってもよい。 variant1のバリエーションテーブルは、 lvrtem.var_table$=「100」 のようにみえる。 アクティブであるvariant2では、variant2を作動させるのに 使用しないため(「0」で表される)、COUNTRY$=「US」が偽でなけ ればならず(「0」で表される)、COUNTRY$=「CA」が真でなければ ならず(「1」で表される)、またCLIENT$=「ACME」は真または偽 のいずれであってもよい。 Variant2のバリエーションテーブルは、 lvrtem.var tables=「010」 のようにみえる。 アクテイブなvariant3では、variant3を作動させるのに使用 しないため(「0」で表される)COUNTRY$=「US」は真または偽のい ずれであってもよく、variant3を作動させるのに使用しないため(「0 」で表される)COUNTRY$=「CA」は真または偽のいずれであってもよ く、また、CLIENT$=「ACME」は真(「1」で表される)でなければ ならない。 Variant3のバリエーションテーブルは、 lvrtem.var_table$=「001」 のようにみえる。 バリエーションが適用するものを知るのに使用されるバリエーションテーブル は、全ての条件テーブルを一緒に加えることで構築される。バリエーションテー ブルは、 lvrtem.var_table$=「100」+「010」+「001」 または lvrtem.var_table$=「100010001」 のようにみえる。 バリアントモデルのリストは可変のlvrtem.variationsに記 憶される。バリエーションのオーダは条件テーブルのオーダーと同じである。例 えば、 lvrtem.variations$=「variant1 variant2 variant3」 どんなバリエーションがアクティブであるかを確かめるためにチェックする条 件は、可変のlvrtem.var_checkに記 憶される。条件のオーダは条件テーブルの値と同じオーダである。 例えば、 lvrtem.var_check$=「(COUNTRY$=「US」)+(COUNTRY$=「CA」)+」(CLIENT$=「ACME」) ランタイムで変数をセットして、バリエーションが適用するものを知るために バリエーションテーブルに対する比較する。変数は1vrtem.var_ch eckとメモリの変数の現在の状態とを使用してセットされる。次のような例を 提供する。 ランタイムでCOUNTRY$=「US」およびCLIENT$=「ACME 」とすると、以下のようなランタイムテーブルが作成される。 lvrtem.varcurrent$=str(lvrtem.var_check$) これにより、次のようにバリエーションテーブルに対してメモリの変数を評価 する。 (COUNTRY$=「US」) 真 「1」で表される (COUNTRY$=「CA」) 偽 「0」で表される (CLIENT$=「ACME」) 真 「1」で表される これにより、以下のランタイムテーブルが与えられる。 lvrtem.varcurrent$=「101」 このランタイムテーブルは、lvrtem.var_table$に記憶され るこのモデルのテーブルのそれぞれに対して比較される。 現在のタイムテーブルの長さは3文宇であることが公知であり、そのためバリ エーションテーブル3三つの部分においてチェックされる。 比較すると、 AND(lvrtem.var_table$、lvrtem.varcur rent$(1,3)は真であり、従って、lvrtem.variation s(variant1)の第1のバリエーションはアクティブではない。 比較すると、 AND(lvrtem.var_table$、lvrtem.varcur rent$(4,3)は偽であり、従ってlvrtem.variations (variant2)の第2のバリエーションはアクティブではない。 比較すると、 AND(lvrtem.var_table$、lvrtem.varcur rent$(7,3)は真であり、従ってlvrtem.variations (variant3)の第3のバリエーションはアクティブである。 この例において、バリエーションテーブルのlvrtem.var_tabl eの「1」がランタイムの現在のバリエーションテーブルのlvrtem.va rcurrentの対応する位置の「1」と一致する場合、バリエーションはア クティブだと考えられる。 本文書で用いられる用語の「エラスティックデータベース」は、動的な拡張性 というプロパティを有するデータベースのクラスを言及することを意図している 。従来のファイルおよびレコードの用語は、関連するデータベースの用語という よりも、以下の説明において使用される。以下に述べるエラスティックデータベ ースの実施の形態は、制限なくこうしたデータベースを提供する1つの方法の図 示例である。例では、エラスティックデ−タベースのベースレコードを拡張して 追加のフィールドを含み、またベースレコードのそれぞれは拡張フィールドの異 なるセットを有することができる。 エラスティックデータベースは、従来のデータベースファイルの形態であるベ ースファイルを含む。従来のデータベースにおいて、ベースファイルのレコード はすべて同じフィールドナンバを有し、各フィールドはレコードのセット全体に わたって同じ特徴を有している。エラスティックデータベースにおいて、これは ベースレコードと呼ばれる。エラスティックデータベースのベースファイルおよ びベースレコードの図示例を第11図に示す。 エラスティックデータベースの第1の利点として、追加のフィールドでベース レコードの拡張を可能にすることができ、それによって各ベースレコードが異な る拡張フィールドのセットを有することができるという能力がある。こうした拡 張フィールドは、メンテナンスおよび利用をより容易にするために、「バリエー ションセット」(以下に述べる)でグループ化される。ベースレコードはいずれ も、それに適用するゼロまたはそれ以上のバリエーションセットを有してもよい 。任意のベースレコードに適用するバリエーションセットのリストは、異なる条 件においてベースレコードのデータとして動的に変化してもよい。第12図は2 つのバリエーションセットの定義の例を図示する。ベースファイルと、ベースフ ァイルに適用するすべてのバリエーションセットとのコレクションを「ロジック ファイル」と呼ぶ。 データ辞書12(第1図)でベースファイルを定義すると、バリエーションセ ットをロジックファイルの定義に追加してもよい。こ れは、データ辞書のメンテナンスを通じて行われる。第13A図、第13B図、 および第13C図は新しいバリエーションセットを定義することに関わるステッ プを示している。各バリエーションセットにはデータ辞書12により識別子が割 り当てられる。以下で述べる第12図で図示されるバリエーションセットでは、 識別子はそれぞれ「0001」および「0002」である。各バリエーションセ ットは、こうしたフィールドごとの属性に応じてバリエーションセットが有する フィールドのリストを含んでいる。さらに、各バリエーションセットはそれに関 連する条件を有してもよい。この条件はバリエーションセットが適用するベース レコードを判断する。バリエーションセットがそれに関連する条件を有しない場 合、こうしたバリエーションセットは全てのベースレコードに適用する。 各条件はベースレコードからフィールドのリストを開始し、これらのそれぞれ の値は適用するバリエーションセットを含む必要がある。例えば、ベースレコー ドが「クライアント」と呼ばれるフィールドを含む場合、バリエーションセット は、フィールド「クライアント」が値「BENJAM」を含む場合にのみバリエ ーションセットが適用することを示す条件を有してもよい。 第11図および第12図はベースファイルおよびバリエーションセットの例を 提供する。第11図では、ベースファイルは、クライアント名およびアドレスを 記憶し、第3図のデータベーステーブル/ファイル126に対応する、データソ ーステーブル名「sam_dbclient」への参照によってアクセス可能な ファイルであるロジックファイルの「サムクライアント(sam_client )」に対応する。ベースファイルのベースレコードは5つのフィー ルド、すなわちそれぞれ独自の説明、タイプおよびサイズを有する、クライアン ト、名前、国、通りおよび町を含む。第12図は、第11図で示されるロジック ファイル「サムクライアント」に対応し、添付されるバリエーションセットの2 つの例を示している。この第1の例として、「カナダ情報」という記述を含むバ リエーションセット0001である。このバリエーションセットのアプリケーシ ョンの条件は、ベースレコードフィールド名「country」はカナダを示す 値「CA」を有する。この条件において、ベースレコードは、ベースレコードに 対して第11図でセットされる5つのフィールドを含むだけでなく、さらに2つ のフィールド、すなわち(6桁の郵便番号でいう)「postal_cd」と( 2文字の地方コードでいう)「province」をも含んでいる。つまり、こ のバリエーションセットは、この条件と適合する全てのベースレコードに適用し 、そのバリエーションセットに関連するバリエーションセットのレコードを追加 する。第12図におけるバリエーションセットの第2の例はナンバ0002とし て識別され、「米国情報」の記述を含む。このバリエーションセットのアプリケ ーションの条件とは、ベースレコードフィールド名の「country」がベー スレコードファイル値の「US」を有するということである。この場合、ベース レコードが拡張されて2つの新しいフィールド、つまり(米国のZIPコードで いわれる)「zip_code」および(2文字の米国州コードまたは略名でい われる)州コードを含む。この例は、拡張して異なるデータ条件において新しい フィールドを作成するエラスティックデータベースの能力を示すものである。 各バリエーションセットのデータは、ベースファイルへの付随フ ァイルに記憶される。こうした付随ファイルは、データベースアクセスコントロ ーラ24、30(第1図)によってメンテナンス(および必要ならば作成)され る。各付随ファイルの第1のキーは、ベースファイルの第1のキーと一致してお り、いかなるベースレコードからもそのベースレコードに適用する各バリエーシ ョンセットのレコードへの1対1の関係が存在する。 DBAC24、30は、バリエーションセットランタイムマップ(VRTM) と呼ばれる小さなテーブルを使用して、ランタイムで適用するバリエーションセ ットを判断する。DBAC24、30、ランタイムバリエーションテーブルは、 第5図の説明と関連して上記で参照されるRTEM10のモデルバリエーション ランタイムテーブルと同じ構造である。 3つのバリエーションをロジックファイルに適用する場合、例のバリエーショ ンセットランタイムマップは以下の通りである。 この例では、全ての評価コードは、1桁のみが1であるバイナリ形式である。 ランタイム表現テーブルは以下の通りである。 (COUNTRY$=「US」)+(COUNTRY$=「CA」)+(CLIENT$=「ACME」) 例として、次のデータがベースレコード後のメモリに常駐するとする。 CLIENT=「ACME」 COUNTRY=「US」 評価コードテーブルを使用して任意の現行のデータに評価コードを取得し、ま たそうして取得した評価コードをランタイム表現テーブルへ挿入すると、 (COUNTRY$=「US」)+(COUNTRY$=「CA」)+(CLIENT$=「ACME」) ランタイム評価コードが生成される。「101」である。実際のバイナリの演算 動作を示すと、 position 1:COUNTRY$+「US」is TRUE represented as「1」 position 2:COUNTRY$+「CA」is FALSE represented as「0」 gives the result:「01」 表現テーブルの用語が適当でない場合(例えば、カナダ(CA)でない国にい る場合)、評価コードは0など、ゼロである。COUNTRY=「CA」の評価 が第2の条件であるため、この条件の評価はバイナリ出力の第2の位置、101 に記憶される。 結果として得られたランタイム評価コードを、評価コード間の対応を表すテー ブルと比較する。バリエーションはアクティブな任意のコードである。アクティ ブなバリエーションとは、ランタイム評価テーブルと同じ位置に「1」を有する ものである。以下、こうし たテーブルの例を示す。 各ロジックファイルに対応するこのような1つのテーブルがある。バリエーシ ョンセットを、アクティブまたは非アクティブの1つの状態の1つにしてもよい 。新たに作成されたバリエーションセットは、明らかにアクティブになるまでは 非アクティブである。バリエーションセットがアクティブになると、バリエーシ ョンセットの情報がVRTMに加えられ、それによってDBAC24、30はバ リエーションセットを認識し、適宜それを利用する。バリエーションセットを非 アクティブにすると、バリエーションセットの情報はVRTMから除かれるため 、DBAC24、30はバリエーションセットについて認識できなくなって関連 がなくなる。 次の情報はVRTMに記憶される。 1)コンディションフィールドリスト(CFL) 全てのバリエーションセットの条件に関連する全てのフィールドのリスト。こ のリストは、バリエーションセットの条件に関連する全てのフィールドの現在値 を含むストリングを迅速に生成するのに使用される。生成されたストリングはコ ンディション値ストリング (CVS)と呼ばれる。 2)コンディショングループリスト(CGL) 考えられるデータ値またはパターンを表すストリングのグループ。ランタイム でCVSは順に各パターンと比較される。CVSがパターンと一致した場合、C GLのパターンの位置をバリエーショングループリスト(以下参照)へのインデ ックスとして使用する。 3)バリエーショングループリスト(VGL) バリエーションセットナンバのグループのリスト。CVSが一致するCGLの インデックスでこのリストを参照すると、現在メモリにあるベースレコードに適 用するバリエーションセットのリストが与えられる。 VRTMは、その他の内部ハウスキーピングおよび状態の情報を含むこともでき る。 DBAC24、30がロジックファイルの機能を実行することができるように なる前に、データ辞書12へのアクセスを得なければならない。DBAC24、 30は、データ辞書12からの情報を利用して、ロシックファイルとその物理的 なデータソースとを発見する。DBAC24、30が呼び出されてロジックファ イルの要求を満たす場合、そのデータ辞書がまだ開いていなければ、DBAC2 4、30はロジックファイルのモジュールのデータ辞書12を開く。ベースデー タ辞書12を開くと、DBAC24、30は、バリエーションレジストリとバリ エーションセットランタイムマップとをチェックする。上記のデータ辞書を開く 処理は、第15図に示される。 エラスティックデータベースからレコードを読み出す処理は以下 のように進行する。すなわち、ランタイムでDBAC24、30がベースファイ ルからベースレコードを読み出す。一旦これが実行されると、適用するバリエー ションセットを判断するため、バリエーションセットにおいてランタイムマップ を調べる。第16A図および第16B図はDBAC24、30がこのタスクのた めに使用するステップを示している。適用するバリエーションセットがある場合 、DBAC24、30は、次に、適切な付随ファイルから各バリエーションセッ トのデータを読み出す。レコードが適当な付随ファイルにおいて発見されない場 合、バリエーションセットのフィールドはヌル(null)にセットされる。こ れは、バリエーションセットが追加される前にすでに存在するベースレコードの 場合と同じである。 ベースレコードに適用するバリエーションセットは、ベースレコードのデータ が変化すると動的に変化してもよいため、DBAC24、30は、ベースレコー ドとバリエーションセットのデータだけでなく、ベースレコードのフィールドの リストと適用されるバリエーションセットのいずれをもアプリケーションに戻す 。このことにより、ロジックレコードに存在するフィールドをアプリケーション が判断し、必要に応じて、オペレータへ情報を提示することができる。 エラスティックデータベースへのレコードの書き込み処理は以下の通りである 。つまり、ランタイムで、DBAC24、30は第16A図および第16B図に よって、適用するバリエーションセットを確認するためにバリエーションセット ランタイムマップを調べる。DBAC24、30は、次に、適当な付随ファイル にバリエーシ ョンセットのデータを書き込み、そしてベースファイルにベースレコードデータ を書き込む。レコードが読み出させると適用されるいくつかのバリエーションセ ットが、レコードが再び書き込まれる際に適用できなくなった場合、DBAC2 4、30は適当な付随ファイルから期限切れ(out of date)のバリ エーションセットデータを除く。 エラスティックデータベースのレコードは以下の処理により除かれてもよい。 つまり、ランタイムで、DBAC24、30が取り除くレコードを読み出してロ ックし、第16A図および第16B図によって、ある場合には、ベースレコード に適用するバリエーションセットを判断する。 ベースファイルがデータ辞書12に定義されると、バリエーションセットはロ シックファイル定義に加えられてもよい。これは、データ辞書12のメンテナン スによって行われる。各バリエーションセットはデータ辞書12により識別子を 割り当てられる。各バリエーションセット定義は、各フィールドの属性によって バリエーションセットが含むフィールドのリストを含んでよい。 本発明の実施の形態において、第13A図を参照すると、バリエーションセッ トはステップ562で開始する手続き560によって定義されてもよい。まず、 ロジックファイルがステップ564において指定される。次に、バリエーション セットの記述がステップ566においてコメントと共にステップ568において 入力される。第13B図を参照すると、ステップ570においてテストが行われ 、条件をバリエーションセットに指定しなければならないかどうかを判断する。 指定しなければならない場合、その条件をチェックす るベースレコードからのフィールドをステップ572において入力する。また、 ステップ574において、この条件が満たされるフィールドになければならない 値および適用するバリエーションセットが入力される。ステップ574において 、さらに条件フィールドが存在しているかどうかのチェックか行われる。存在し ている場合、処理がステップ572に戻る。存在していない場合、またはステッ プ570において条件を指定しなくてよい場合、処理は第13C図のステップ5 78に進む。ステップ578において、フィールド情報はこのバリエーションセ ットに含まれる次のフィールドに入力される。ステップ580において、こうし たフィールドがさらに含まれているかどうかのチェックが行われる。さらに含ま れている場合には処理はステップ578に戻る。含まれていない場合には、バリ エーションセットはステップ582でセーブされ、手続き560はステップ58 4において終了する。 DBAC24、30は、ロジックファイルの機能を実行可能にする前にデータ 辞書12へのアクセスを得なければならない。DBAC24、30はデータ辞書 12の情報を使用してロジックファイルとその物理的なデータソースを発見する 。DBAC24、30が呼び出されてロジックファイルの要求を満たす場合、そ のデータ辞書がまだ開いていなければ、DBAC24、30はロジックファイル のモジュールでデータ辞書を開く。データ辞書を開くと、DBAC12は、第1 4図に示されるように、バリエーションレジストリとバリエーションセットラン タイムマップとをチェックする。 第14図で示される手続き600を参照すると、602で開始後に、バリエー ションレジストリファイルはステップ604において 開かれる。次に、こうしたファイルが存在するかどうかをステップ606におい てチェックする。存在する場合、手続き600はステップ608においてバリエ ーションランタイムマップファイルを開く。欠に、ステップ6101こおいて、 バリエーションランタイムマップファイルが存在するかどうかをチェックする。 存在する場合、ステップ612においてフラグがセットされ、このモジュールに アクティブなバリエーションが存在することを示す。ステップ606またはステ ップ610のいずれかでテストが失敗すると、手続き600はステップ614で 終了する。 ロジックファイルをアクセスして読み出しまたは書き込みする前に、まずそれ を開かなければならない。ロジックファイルを開くと、DBAC24、30は、 第15図に示されるように、メモリに対してそのロジックファイルのバリエーシ ョンセットランタイムマップを直ちにロードする。次に、その図を参照すると、 ファイルは、ステップ622で開始される手続き620によって開かれてもよい 。ステップ624において、ロジックファイルにアクティブなバリエーションが 存在しているかどうかか判断される。存在している場合、このロジックファイル に関連するバリエーションセットランタイムマップのレコードはステップ626 によって読み出される。ステップ628で判断されるように、レコードを発見し た場合、ステップ630において、このファイルのバリエーションセットランタ イムマップがメモリに記憶される。ステップ628においてレコードが発見され ない場合、またはステップ624においてこロジックファイルにいかなるアクテ ィブなバリエーションも存在しないことがわかった場合、ステップ632におい て処理が停止する。 ランクイムで、DBAC24、30がベースファイルからベースレコードを読 み出す。一旦読み出されると、バリエーションセットランタイムマップを調べて 、適用するバリエーションセットを判断する。以下に述べる第16A図および第 16B図は、DBAC24、30が使用してこのタスクを実行してもよいステッ プの例を示している。 バリエーションセットが適用する場合、DBAC24、30は適切な付随ファ イルからこのようなバリエーションセットそれぞれのデータを読み出す。レコー ドが適切な付随ファイルで発見されない場合、バリエーションセットのフィール ドはヌルにセットされる。これはバリエーションセットが追加される前にすでに 存在するベースレコードの場合と当てはまる。 ベースレコードに適用するバリエーションセットは、ベースレコードのデータ が変化すると動的に変化してもよいため、DBAC24、30は、ベースレコー ドとバリエーションセットのデータだけでなく、ベースレコードのフィールドの リストと適用されるバリエーションセットのいずれもをアプリケーションに戻す 。このことにより、ロジックレコードに存在するフィールドをアプリケーション が判断し、必要に応じて、オペレータへ情報を提示することができる。 ランタイムで、DBAC24、30は、バリエーションセットランタイムマッ プを調べて適用するバリエーションセットを確認する。こうした処理の例は、以 下に述べる第16A図および第16B図に提供されている。次に、バリエーショ ンセットデータが適当な付随ファイルに書き込まれてベースレコードテータがベ ースファイル に書き込まれる。 レコードが読み出されると、適用されるいくつかのバリエーションセットが、 レコードが再び書き込まれる時に適用できなくなった場合、DBAC24、30 は適当な付随ファイルから期限切れのバリエーションセットデータを取り除く。 ランタイムで、DBAC24、30が取り除くレコードを読み出してロックし 、第16A図および第16B図の例で図示されるように、もしある場合には、ベ ースレコードに適用するバリエーションセットを判断する。バリエーションセッ トデータが取り除かれると、ベースレコードも取り除かれる。 第16A図を参照すると、上記の手続き640の例が図示される0ステップ6 42で開始した後、手続き640は、ステップ644で適用するバリエーション のリストをクリアする。次に、ステップ646においてメモリから現在のファイ ルのバリエーションセットランタイムマップを検索する。ステップ648におい て現在のファイルのバリエーションセットランタイムマップが発見されると、ス テップ650においてベースレコードにCVS(現在のバリエーションセット) が生成される。CVSは、バリエーションが適用することを知るために使用され る条件の現在のランタイムビットマップ評価である。これは、上記のlvrte m.varcurrentと類似するものであるが、この例ではlvdbac. varcurrentとも呼ばれる。つまり、CVSは、バリエーションテーブ ルをチェックして現在のデータの値をチェックし、現在適用するものを知る現在 のデータの値である。次に、ステップ652において、現在のCGL(条件グル ープリスト)は第1のCGL要素にセッ トされる。CGLは、上記に述べるように、lvrtem.var_table に類似しており、この例ではlvdbac.var_tableと呼ばれる。こ のCVSはこのテーブルと比較され、バリエーションが適用するものを知る。 第16B図を参照すると、ステップ654において、CVSと現在のCGL要 素との間で比較が行われる。ステップ656で判断されるように、一致する場合 、ステップ658において、適用するバリエーションのリストにVGL(バリエ ーショングループリスト)要素が追加される。ステップ656において一致が認 められない場合、ステップ660において、まだCGL要素があるかどうか判断 するためにチェックされる。ある場合には、現在のCGL要素を次のCGL要素 にステップ662においてセットし、処理をステップ654に戻す。これ以上C GL要素がステップ660において発見されない場合、処理はステップ664に おいて停止する。第16A図のステップ648において、バリエーションランタ イムマップが発見されない場合、このロジックファイルに対するバリエーション は現在アクティブではない。この場合も、処理はステップ664において停止す る。 第1図に関連して上記に述べたDBAC24、30のスーパーツールキットは 、いくつかのエントリポイントを有する。各エントリポイントは、DBAC24 、30が提供し、かつRTEM10がDBAC24、30を呼び出して実行して もよい機能に対応する。−実施の形態において、DBAC24、30は10個の エントリポイントを有しており、それぞれの例のロジックを次に述べる。 機能:READ READ1200は、パラメータ1205、 1208を初期化および有効化することで開始される。次に、READはエイリ アス(alias)が1210で開いているかどうかを照会する。エイリアスが 開いている場合、READは、READへの現在の要求のロジックファイル名が エイリアス1215で既に開いているロジックファイル名と同じかどうかを照会 する。同じである場合にはREADは継続し、同じでない場合にはREADは障 害1218を示して終了する。エイリアスが開いていないとわかった時は、RE ADはファイルを開き、必要に応じて1220でデータ辞書12を開いて読み出 す。1215で開けた場合にはREADは継続し、そうでない場合には障害12 28を示して終了する。RTEM10がコードの第1のキーを構築するよう依頼 されてアンビエントデータ1230から読み込む場合、キーはアンビエントデー タ1235から生成され、1240でキー生成が成功する場合、READは継続 する。キー生成が成功しない場合、障害1242を示し、READは終了する。 より初期の場合、RTEM10は、レコードの第1のキーを構築するよう求めら れ、アンビエントデータ1230からそれを読み出したりしないことがわかって おり、その後、READは継続するにすぎない。以前に存在しているのでない場 合、READはディスク1245からベースレコード情報を読み出す。レコード が1250で存在する場合にはREADは継続し、存在しない場合には「こうし たレコードのない」インジケータ1255をセットして継続する。「こうしたレ コードでない」1260以外の理由により読み出しが失敗する場合、障害126 2を示し、READが終了する。読み出しが失敗しなければ、継続する。データ バリエーションランタイムマップが1265をチェックし、レコ ード1270に適用するデータバリエーションが存在する場合、バリエーション データはディスク1275から読み出される。こうしたデータバリエーションセ ットが存在しない場合、READが継続する。「こうしたレコードのない」イン ジケータが1280でセットされる場合、READは継続するが、そうでない場 合、READは、適切なバイナリの大きなオブジェクト(「BLOB」)または メモリフィールドテータをディスク1285から読み込む。こうした処理が完了 すると、成功または「こうしたレコードはない」を示し、READが終了する。 第17A図および第17B図は図の形式で上記のステップを示している。 機能:EXTRACT EXTRACT 1300は、パラメータ1305 、1308を初期化および有効化することで開始される。次に、EXTRACT は、エイリアスがすでに1310で開いているかどうかを照会する。エイリアス がすでに開いている場合、EXTRACTは、EXTRACTへの現在の要求の ロジックファイル名がエイリアス1315で既に開いているロジックファイル名 と同じかどうかを照会する。同じである場合にはEXTRACTは継続し、同じ でない場合には障害1318を示して終了する。エイリアスがまだ開いていない 時、EXTRACTはファイルを開き、必要に応じて1320でデータ辞書12 を開いて読み出す。首尾よく1315で開いた場合、EXTRACTは継続し、 そうでない場合、障害1328を示して終了する。RTEM10がレコードの第 1のキーを構築するように依頬されてアンビエントデータ1330から読み出さ れる場合、キーはアンビエントデータ1335から生成され、1340でキー生 成が成功する場合、EXTRACTは継 続する。キー生成が成功しない場合、障害1342を示し、EXTRACTは終 了する。より初期である場合には、RTEM10は、レコードの第1のキーを構 築したり、アンビエントデータ1330からそれを読み出したりしないことがわ かり、それでEXTRACTは単に継続する。以前に存在していない場合、EX TRACTはティスク1345からベースレコード情報を読み出す。レコードが 1350で存在する場合にはEXTRACTは継続し、存在しない場合には「こ うしたレコードはない」インジケータ1355をセットして継続する。1360 で「こうしたレコードはない」という理由以外の理由により読み出しが失敗する 場合、障害1362を示し、EXTRACTが終了する。読み出しが失敗しなけ れば、継続する。データバリエーションランタイムマップが1365をチェック し、レコード1370に適用するデータバリエーションが存在する場合、バリエ ーションデータはディスク1375から読み出される。こうしたデータバリエー ションセットが存在しない場合にはEXTRACTが継続する。「こうしたレコ ードはない」インジケータが1380でセットされている場合にはEXTRAC Tは継続するが、そうでない場合には、EXTRACTは適切なバイナリの大き なオブジェクト(「BLOB」)またはメモリフィールドデータをディスク13 85から読み出す。この処理が完了すると、成功または「こうしたレコードはな い」ことを示し、EXTRACTが終了する。 EXTRACT動作とREAD動作の違いは、EXTRACTがWRITEを 目的としてデータをロックするということである。マルチユーザアプリケーショ ンであれば、同じデータを同時に複数の アプリケーションから要求することができる。データベースの破壊を防ぐために 、更新されるデータはいずれもまず「抽出」(ロック)されなければならない。 EXTRACT要求が生じる時にデータがすでに「抽出」(ロック)されている 場合、DBAC24、30は、処理を継続する前にデータがロック解除されるま で待機する。これは、1秒後に再びEXTRACT要求を試行して行われる。オ ペレータにメッセージが表示され、この状態について警告する。こうして、オペ レータはRTEM10に戻す特別な結果コードを送るEXTRACT要求の中止 を要求できる。 機能:VERIFY KEY VERIFY KEY 1400は、パラメ ータ1405、1408を初期化および有効化することで開始される。次に、V ERIFY KEYは、エイリアスが1410ですでに開いているかどうかを照 会する。エイリアスが開いている場合、VERIFY KEYは、VERIFY KEYへの現在の要求のロジックファイル名がエイリアス1415で既に開い ているロジックファイル名と同じかどうかを照会する。同じである場合にはVE RIFY KEYは継続し、同じでない場合には障害1418を示して終了する 。エイリアスがまだ開いていない時には、VERIFY KEYはファイルを開 き、必要に応じて1420でデータ辞書12を開いて読み出す。1415で首尾 良く開いた場合にはVERIFY KEYは継続し、そうでない場合には障害1 428を示して終了する。RTEM10がレコードの第1のキーを構築するよう に依頼されてアンビエントデータ1430から読み出される場合、キーはアンビ エントテータ1435から生成され、1440でキー生成が成功する場合、VE RIFY KEYは継続す る。キー生成が成功しない場合、障害1442を示し、VERIFY KEYは 終了する。より初期の場合、RTEM10は、レコードの第1のキーを構築した り、アンビエントデータ1430からそれを読み出したりしないことがわかり、 それでVERIFY KEYは継続するにすぎない。以前に存在しているのでな い場合、VERIFY KEYはディスク1445からベースレコード情報を読 み出す。レコードが1450で存在する場合、VERIFY KEYは継続し、 存在しない場合、「こうしたレコードはない」インジケータ1460をセットし て継続する。 機能:GENERATE KEY GENERATE KEY1500は、 パラメータ1505、1508を初期化および有効化することで開始される。次 に、GENERATE KEYは、エイリアスが1510ですでに開いているか どうかを照会する。エイリアスが開いている場合、GENERATE KEYは 、GENERATE KEYへの現在の要求のロシックファイル名がエイリアス 1515で既に開いているロジックファイル名と同じかどうかを照会する。同じ である場合、GENERATE KEYは継続し、同じでない場合、障害151 8を示して終了する。エイリアスが開いていない時は、GENERATE KE Yはファイルを開き、必要に応じて1520でデータ辞書12を開いて読み出す 。首尾良く1525で開いた場合、GENERATE KEYは継続し、そうで ない場合、障害1528を示して終了する。次に、GENERATE KEYは アンビエントデータ1530からキーを生成する。キー生成が1535で成功す る場合、機能は成功を示し、1540を終了する。一方、キー生成が成功しない 場合、障害を示し、機能は 1545を終了する。 機能:WRITE WRITE1600は、パラメーク1605、1608 を初期化および有効化することで開始される。次に、WRITEは、エイリアス が1610すでに開いているかどうかを照会する。エイリアスが開いている場合 、WRITE機能は、WRITE機能への現在の要求のロシックファイル名がエ イリアス1615で既に開いているロジックファイル名と同じかどうかを照会す る。同じである場合、WRITE機能は継続し、同じでない場合、障害1618 を示して終了する。エイリアスが開いていない時は、WRITE機能はファイル を開き、必要に応じて1620でデータ辞書12を開いて読み出す。首尾良く1 625で開いた場合、WRITE機能は継続し、そうでない場合、障害1628 を示して終了する。RTEM10がレコードの第1のキーを構築するように依頼 されてアンビエントデータ1630から読みこまれる場合、WRITE機能は1 635でそうするように試みる。1640でキー生成が成功する場合、WRIT E機能は継続し、そうでない場合、障害1642を示して終了する。しかし、R TEM10がアンビエントデータからレコードの第1のキーが構築されるように 要求しない場合は、WRITE機能は継続する。ヌルでない第1のキー1645 がある場合、WRITE機能は継続し、ない場合は障害を示して1648を終了 する。WRITE機能が継続すると仮定すると、ロジックファイル1650に書 き込みロックをセットする。次に、このエイリアス1655に現在抽出されたレ コードを再書き込みしている場合、WRITE機能は継続する。書き込みしてい ない場合、既に書き込まれているレコードが1660に存在しているかどうかを チェックする。レコードが存在する場合、WRITE機能は書き込みロックを外 し、障害1665を示して終了する。レコードが存在しない場合、WRITE機 能は継続する。WRITE機能が継続すると仮定すると、現在のレコード167 0に現在適用する拡張子のリストを取得する。値をシーケンサフィールド167 5に割り当てる。適当なBLOBまたはメモフィールドデータ、および適当な拡 張子セットデータをディスク1680に書き込む。WRITE機能はまた、ベー スレコードデータをディスク1685に書き込む。次に、レコード抽出時に適用 されるが1690がもはや適用されていない拡張子があるかどうかをチェックす る。ある場合は、WRITE機能はそれらを1692で取り除き、ない場合は1 695で書き込みロックおよび終了をクリアすることにより継続する。 機能:REMOVE REMOVE機能1700は、パラメータ1705、 1708を初期化および有効化することで開始される。次に、REMOVE機能 は、エイリアスが1710ですでに開いているかどうかを照会する。エイリアス が開いている場合、REMOVE機能は、REMOVE機能への現在の要求のロ ジックファイル名がエイリアス1715で既に開いているロシックファイル名と 同じかどうかを照会する。同じである場合、REMOVE機能は継続し、同じで ない場合、REMOVE機能は障害1718を示して終了する。エイリアスがま だ開いていない時は、REMOVE機能はファイルを開き、必要に応じて172 0でデータ辞書12を開いて読み出す。首尾良く1715で開いた場合、REM OVE機能は継続し、そうでない場合、障害1728を示して終了する。RTE M10がレコードの第1のキーを構築するように依頼されてアンビ エントデータ1730から読み出される場合、REMOVE機能は1735でそ うするように試みる。キーはアンビエントデータ1735から生成され、174 0でキー生成が成功する場合、REMOVEは継続し、そうでない場合、障害1 742を示して終了する。しかし、RTEM10がアンビエントデータからレコ ードの第1のキーが構築されるように要求しない場合は、REMOVE機能は継 続する。REMOVE機能が継続すると仮定すると、現在のエイリアス1745 から現在抽出されたレコードを取り除いているかどうかをチエックする。取り除 いている場合、REMOVE機能は継続するが、取り除いていない場合、REM OVE機能はベースレコードデータ1750を抽出する。1755の次に抽出が 行われる場合には、REMOVE機能は継続する。そうでない場合、障害175 8を示して終了する。REMOVE機能が継続すると仮定すると、ディスク17 60からベースレコードデータを取り除き、ディスク1765から適当な拡張子 データセットデータを取り除き、またディスク1770から適当なBLOBまた はメモデータを取り除き、1775を終了する。 機能:CLOSE CLOSE機能1800は、パラメータ1805、18 08を初期化および有効化した後、全てのエイリアス1810をRTEM10が 閉じるように要求したかどうかを照会する。要求があった場合、CLOSE機能 は開いたエイリアス1815のグローバルなリストを検索し、要求がなかった場 合、RTEM10によって提供されたエイリアスのリストを1820で継続する 。前のステップで取得したリストの各エイリアスごとに、CLOSE機能はベー スレコードの物理ファイルを閉じ、適用可能な拡張子 セット物理ファイルを閉じ、このエイリアス1825の記憶された状態情報を全 てクリアし、また成功を示して1830を終了する。 機能:SHUT DOWN パラメータ1805、1808を初期化および 有効化した後、SHUT DOWN機能1850はCLODE機能1800を呼 び出し、それに要求して全てのエイリアス1860を閉じる。このSHUT D OWN機能は次に、全ての開いたデータ辞書1865を閉じ、全てのキャッシュ したデータ辞書情報1870をクリアして成功を示し、1875を終了する。 機能:GET KEY GET KEY機能1900はパラメータ1905 、1908を初期化および有効化し、エイリアスがすでに1910で開いている かを照会する。開いている場合、GET KEY機能は本エイリアスの最後の動 作が成功したEXTRACT1915であるかどうかを照会する。そうである場 合、GET KEYは現在のキー1920を検索する。そうでない場合、GET KEYは次のキー1925を検索する。次のキーを検索しようとする試行が1 930で成功した場合、GET KEYは成功を示して1935を終了し、成功 しない場合、またはこのエイリアスの最後の動作が成功した抽出でない場合、G ET KEYは障害を示し、1940、1942を終了する。 機能:GET FIRST KEY GET FIRST KEY機能19 50は、パラメータ1955、1958を初期化および有効化した後、エイリア スが1960を開いているかどうかを照会する。開いている場合、GET FI RST KEY機能は第1のキー1965を検索する。第1のキーの検索が19 70で成功する場合、GET FIRST KEYは成功を示して1975を終 了し、成功しない場合、障害を示して1980を終了する。エイリアスがまだ開 いていないことがわかった場合、GET FIRST KEYは障害を示して1 985を終了する。 いくつかの他の機能、特にGET PREVIOUS KEY、GET CU RRENT KEY、GET NEXT KEY、GET LAST KEYは 、GET FIRST KEY機能とほぼ同一の機能をするが、これらが戻るキ ーであるという点で異なっている。 本発明の1つの利点として、現行のレガシーコードで作業することができると いうことがある。「レガシー」とは、本発明の教示に先だって存在するアプリケ ーションソフトウェアであり、本発明を使用して特に開発されたモデルとともに 、RTEM/モデル環境で動作するために、これに適合しなければならない。 レガシーソフトウェアを適応させるために、コードを変換してDBAC24、 30にアクセス可能にする。レガシーソフトウェアからハイブリッドレガシーソ フトウェア(RTEM10と互換性のあるモデルおよび方法への呼び出しを行う レガシーソフトウェア)への初期変換を実現するために、全てのデータベースア クセスをDBAC24、30へのリンクに変更する。有効性チェックがデータ辞 書12の辞書セグメントのプレコンパイルされたデータバンクに基づいて「プレ ライトファイル要素認証」への呼び出しに代わる。ファイルへの書き込みは、有 効性テストルーチンでコンパイルされたファイルのリストを使用してシングルの DBAC24、30アクセスによって達成される。全ての表示入出力はUIO2 6を使用するように変換される。また、コードもデータ辞書12を使用するよう に変換される。ファイル利用情報(つまり、書き込まれたり、読み出されたり、 抽出されたり、削除されたファイル)はデータ辞書に格納される。レガシーコー ドの変数は、32ビット識別(identification)など、データ辞 書12で使用される文字識別に名前が変更される。場所(プログラム/行)およ び形態(評価、印刷(マスク値)、連結、転送、かすませる、入力、更新)への リファレンスである。レガシー変換処理中、エラー修正変更のみをレガシーソフ トウェアに行うことができ、新しいロジックは追加することができない。 レガシーエンシン(ライブラリ)はRTEM10によって利用可能なファイル のロシックオブシェクトに作成される。RTEM10によって実現されるアプロ ーチと互換性のあるソフトウェアにレガシーソフトウエアを移行する間に作成さ れる「遷移オブジェクト」は、レガシーコードと結合されて「ハイブリッドルガ シープログラム」を作成する。この結合は「ゲート」の使用によって行われる。 上記のように、ゲートは、レガシー変換処理と関連して上記で述べられるように 、コードのステートメント間のギャップのレガシーコードに格納される。本発明 の実施の形態によって、新しいロジックはレガシーコードに追加されないとする と、新しいロジックと関連するコードへの変更は、こうした新しいロジックを許 可または禁止するゲートを挿入することで呼び出さなくてはならない。新しいオ ジック自体はモデルおよび/または方法において具体化される。RTEM10で 使用するようにフォーマットしたロジックへの条件的なゲートとしては、以下の ものがある。 nnnnn DPCU-123456;Perform 「 Get_list_of_active_Gates」; IF ACTIVE_GATES>0THEN Perform"Gate_Control」 「Get_list_of_active_gates」への呼び出しは、現 在のユーザに有効な全てのゲート(または「ゲート制御された」ロジック)のリ ストを構築し、この評価には、このユーザが使用するように登録したテストオブ ジェクト同様、すべてのパブリックを含む。ロジック修正が生成に適用可能な場 合、オブジェクトはパブリックにされるにすぎず、アプリケーションへの変更は 必要ではない。 上記のアプローチによって、ハイブリットルガシーソフトウェアの現在進行中 の解析および「修復」が可能になる。例えば、このアプローチで、次の変化がハ イブリッドレガシーソフトウェアに生じる。 ・修理を実現するためのデータ辞書12への修正 ・可変マスキングリストを作成可能 ・2000年の日付変更可能 ・時間単位を修正可能 ・古いマスクを交換可能 ・可能な重ね打ち(例えば、修正されたリポート上に)をアドレス可能 さらに、次のようなハイブリッドレガシー修正が可能である。 1.入力フィールドおよびそれの関連ロジックを、ゲートの使用あるいは他の 手段を通じて追加、バイパス、または省略(defaulted)可能である。 2.新しいフィールドを現行のファイルレコードに追加してもよ い。 a.(DBAC24、30の機能に関連して述べる)エラスティックなデー タベースの能力の使用 b.現行のファイルレコードのフィールドを除いてもよい。例えば、使えな くなったフィールドはDBAC24、30による値に省略し、エラステ ィックデータベースを利用し、すぐにではなくしばらくして除かなけれ ばならない。 3.新しいファイルは読み出し、書き込み、抽出を行い、また他の動作をテス ト中にさえも追加してもよく、この場合、条件的な呼出を使用する(新し いファイルを新しいオブジェクトとして定義する)。 4.レガシーロジックは切断、非有効化、またはバイパスされてもよく、通常 条件のテストロジックを使用して分岐してもよい 上記は、本発明の基本理念を示すソフトウェアアプリケーション開発の方法、 システム、およびデータ構造の実施の形態を記載するものである。本発明のさら なる様態、特徴、および利点は、当業者に明らかであろう。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,GM,KE,LS,M W,SD,SZ,UG,ZW),EA(AM,AZ,BY ,KG,KZ,MD,RU,TJ,TM),AL,AM ,AU,AZ,BA,BB,BG,BR,BY,CA, CN,CU,CZ,EE,GE,GH,HU,IL,I S,JP,KE,KG,KP,KR,KZ,LC,LK ,LR,LS,LT,LV,MD,MG,MK,MN, MW,MX,NO,NZ,PL,RO,RU,SD,S G,SI,SK,SL,TJ,TM,TR,TT,UA ,UG,UZ,VN,YU,ZW (72)発明者 マックグイーク,フレッド カナダ国 オンタリオ エム2ジェイ 2 シー5,ノース ヨーク,エスターブルッ ク アヴェニュー 9,ユニット 156 (72)発明者 ベネット,ジェイムス カナダ国 オンタリオ エム1エル 4ア ール3,スカーボロ,ナンバー2505 バー ン ヒル ロード 50 (72)発明者 クラーク,マシュウ カナダ国 ブリティッシュ コロンビア ヴイ5エー 1エム5,バーナビー,ハリ ファクス ストリート 1005―7376

Claims (1)

  1. 【特許請求の範囲】 1.プロセッサと、メモリと、記憶媒体とを有しており、アプリケーションソフ トウェアを動作させるコンピュータ実装システムにおいて、 前記記憶媒体に記憶され、1つまたはそれ以上のオブジェクトへのリファレン スを含むデータをそれぞれ有する複数のモデルと、 前記複数のモデルのうち選択した1つを前記記憶媒体からメモリにロードし、 前記選択したモデルのデータを読み出し、オブジェクトへのリファレンスが読み 出された場合に前記オブジェクトを呼び出して実行するランタイムイベントマネ ージャとを備えたことを特徴とするコンピュータ実装システム。 2.前記モデルは、登録処理によって作成されるモデルのセットの一部であり、 前記ランタイムイベントマネージャは、前記登録処理によって登録された前記モ デルのみをアクセスすることができることを特徴とする請求の範囲第1項に記載 のコンピュータ実装システム。 3.前記モデルが他の方法を呼び出すことができる方法のリファレンスを有して いない場合にのみ前記モデルは登録されることを特徴とする請求の範囲第2項に 記載のコンピュータ実装システム。 4.前記モデルは、 a.パラダイムを形成する第1のタイプのモデルと、 b.パラダイムモデルのバリアントである第2のタイプのモデルとを有すること を特徴とする請求の範囲第1項に記載のコンピュータ実装システム。 5.バリアントモデルは、前記ランタイムイベントマネージャによって処理され る前記バリアントモデルを満足しなければならない1つまたはそれ以上の関連す る条件を有することを特徴とする請求の範囲第4項に記載のコンピュータ実装シ ステム。 6.前記ランタイムイベントマネージャは、さらに、 a.パラダイムモデルが呼び出されている場合に、このパラダイムモデルのため のバリアントモデルがあるかどうかをチェックし、 b.バリアントモデルが存在する場合、このモデルを検索し、 c.検索されたバリアントモデルに対する条件があるかどうかをチェックし、 d.検索されたバリアントモデルに対する条件がある場合には、前記バリアント モデルを処理するようにしたことを特徴とする請求の範囲第5項に記載のコンピ ュータ実装システム。 7.前記ランタイムイベントマネージャは、パラダイムモデルに関連するバリア ントモデルがこれ以上なくなるまで、関連した前記条件が存在するバリアントモ デルについてステップbからdを繰り返すようにしたことを特徴とする請求の範 囲第6項に記載のコンピュータ実装システム。 8.前記ランタイムイベントマネージャは、モデルの各オブシェクトの処理後に 、前記モデルの外部の動作を処理するようにしたことを特徴とする請求の範囲第 1項に記載のコンピュータで実現されるシステム。 9.外部入出力を通してコンピュータとコミュニケーションし、このコンピュー タの外部のイベントに対する指令および応答に関連する処理機能を実行するコン ピュータによって実行されるランタイム イベントマネージャであって、前記コンピュータは、前記ランタイムイベントマ ネージャにアクセス可能なモデルのセットが記憶されている記憶媒体を有し、 モデルのライブラリからモデルをロードする手段と、 ロードしたモデルが、前記コンピュータと前記ランタイムイベントマネージャ の所定の状態において適切に呼び出されるかどうかを判断する手段と、 前記コンピュータと前記ランタイムイベントマネージャの状態が適切な状態に なっていると判断される場合には、前記モデルを呼び出す手段とを備えたことを 特徴とするランタイムイベントマネージャ。 10.前記モデルを実行する手段は、前記モデルの所定の要素が有効になる前に 外部イベントを検出してこれに応答する手段を含むことを特徴とする請求の範囲 第9項に記載のランタイムイベントマネージャ。 11.ランタイムイベントマネージャを利用してコンピュータアプリケーション ソフトウェアを開発する方法において、 a. i.モデルへのリファレンス、 ii.方法へのリファレンス、 iii.データ、および iiii.入力命令または出力命令 の少なくとも1つをそれぞれ有する複数のモデルを作成するステップと、 b.モデルによってリファレンスされる方法は別の方法を呼び出すことができな いことを確かめるために前記モデルをテストするステ ップと、 c.前記ランタイムイベントマネージャによるアクセスを許可するために前記モ デルを登録するステップとを備えたことを特徴とするコンピュータアプリケーシ ョンソフトウェアを開発する方法。 12.前記ステップは、モデルのセットと関連して前記ランタイムイベントマネ ージャを動作することによって実行されることを特徴とする請求の範囲第1項に 記載のコンピュータアプリケーションソフトウェアを開発する方法。 13.コンピュータアプリケーションソフトウェアで使用され、コンピュータで 読み出し可能な媒体で具体化されるソフトウェアモデルにおいて、 モデル識別コードと、 ソフトウェアオブジェクトへの複数のリファレンスと、 データとを備えたことを特徴とするソフトウェアモデル。 14.前記ソフトウェアオブジェクトへのリファレンスは、ペアレントオブジェ クトと、プレ処理オブジェクトおよびポスト処理オブジェクトからなるグループ から選択されたオブジェクトとを含むことを特徴とする請求の範囲第13項に記 載のソフトウェアモデル。 15.前記モデルは、ソフトウェアオブジェクトへのリファレンスのセットを有 するパラダイムモデルのバリアントモデルであり、前記バリアントモデルで参照 される前記ソフトウェアオブジェクトは、前記パラダイムモデルで参照される前 記オブジェクトと異なっていることを特徴とする請求の範囲第13項に記載のソ フトウェアモデル。 16.条件のセットが満たされている場合にのみ、前記モデルはラ ンタイムイベントマネージャによって呼び出し可能であることを特徴とする請求 の範囲第15項に記載のソフトウェアモデル。 17.ランタイムイベントマネージャによって使用するために登録されたオブジ ェクトのライブラリを作成する方法において、 a.前記モデルに固有の識別子に基づいてオブジェクトを呼び出すステップと、 b.制限された内容があるかどうかについて前記オブジェクトの内容をスキャン するステップと、 c.オブジェクトが制限された内容を含まない場合にのみ、前記ライブラリの一 部として前記オブジェクトを登録するステップとを備えたことを特徴とする方法 。 18.前記制限された内容は登録されていないオブジェクトに対するオブジェク トへのリファレンスを含むことを特徴とする請求の範囲第17項に記載の方法。 19.制限される前記コンテンツは、別の方法オブジェクトへの参照を含む方法 オブジェクトへの参照を含むことを特徴とする請求の範囲第17項に記載の方法 。 20.プロセッサと、メモリと、記憶媒体とを有するコンピュータ実装データベ ースシステムにおいて、 前記記憶媒体に記憶され、それぞれ1つまたはそれ以上のフィールドをそれぞ れ有する複数のベースレコートを含むベースファイルと、 前記ベースファイルに対応する前記記憶媒体に記憶されている少なくとも1つ のバリエーションセットと、 前記バリエーションセットを特定のベースレコードに適用するこ とを決定するようにしたバリエーションセットランタイムマップを実装するため にプログラムされたシステムとを備えたことを特徴とするコンピュータ実装デー タベースシステム。 21.前記バリエーションセットは、前記特定のベースレコードに適用される前 記バリエーションセットに対して満たさなければならない1つまたはそれ以上の 関連した条件を有することを特徴とする請求の範囲第20項に記載のコンピュー タ実装データベースシステム。 22.前記バリエーションセットランタイムマップは、条件フィールドリストと 、条件グループリストと、バリエーショングループリストとを含むことを特徴と する請求の範囲第21項に記載のコンピュータ実装データベースシステム。 23.データベースシステムを動作させる方法において、 a.ベースファイルから1つまたはそれ以上のフィールドを有するベースレコー ドをロードするステップと、 b.前記ベースファイルに対応するバリエーションセットがあるかどうかについ てバリエーションセットランタイムマップをチェックするステップと、 c.バリエーションセットが存在する場合、前記バリエーションセットからデー タを検索するステップとを備えたことを特徴とする方法。 24.前記バリエーションセットからデータを検索するステップは、 前記バリエーションセットのための条件が存在するかどうかをチェックするス テップと、 前記検索したバリエーションセットのための条件が存在し、これが満たされて いる場合、前記ベースレコードに適用する前記バリエーションセットから前記デ ータを検索するステップとをさらに含むことを特徴とする請求の範囲第23項に 記載のデータベースを動作させる方法。
JP52643098A 1996-12-13 1997-12-12 コンピュータソフトウェアアプリケーションの開発および実行のための方法、システムおよびデータ構造 Pending JP2001506028A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US3283396P 1996-12-13 1996-12-13
US60/032,833 1996-12-13
PCT/IB1997/001659 WO1998026349A2 (en) 1996-12-13 1997-12-12 Method, system and data structures for computer software application development and execution

Publications (1)

Publication Number Publication Date
JP2001506028A true JP2001506028A (ja) 2001-05-08

Family

ID=21867066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52643098A Pending JP2001506028A (ja) 1996-12-13 1997-12-12 コンピュータソフトウェアアプリケーションの開発および実行のための方法、システムおよびデータ構造

Country Status (9)

Country Link
US (1) US6125442A (ja)
EP (1) EP1015966A2 (ja)
JP (1) JP2001506028A (ja)
CN (1) CN1105969C (ja)
AU (1) AU5775898A (ja)
CA (1) CA2274665C (ja)
IL (1) IL129911A0 (ja)
RU (1) RU2210803C2 (ja)
WO (1) WO1998026349A2 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3937371B2 (ja) * 1998-05-08 2007-06-27 富士通株式会社 競合制御方法及び競合制御システム
US6931623B2 (en) * 1999-08-30 2005-08-16 Touchnet Information Systems, Inc. Method of accessing data and logic on existing systems through dynamic construction of software components
US7158993B1 (en) * 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US6588011B1 (en) * 1999-12-14 2003-07-01 International Business Machines Corporation Apparatus for automatically generating restore process during software depolyment and method therefor
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US6651186B1 (en) * 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
US7496535B2 (en) * 2000-10-14 2009-02-24 Goldman Sachs & Co. Computerized interface for constructing and executing computerized transaction processes and programs
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US7113900B1 (en) 2000-10-24 2006-09-26 Microsoft Corporation System and method for logical modeling of distributed computer systems
US7197505B2 (en) * 2000-12-22 2007-03-27 Star Bridge Systems, Inc. Multi-dimensional recursive wavefront behavioral synthesis
US6868540B2 (en) * 2001-05-04 2005-03-15 International Business Machines Corporation Recycling events to take advantage of capabilities of a management system
US6961940B2 (en) 2001-05-04 2005-11-01 International Business Machines Corporation Dynamically adapting events to capabilities of a management system
US7073164B1 (en) * 2001-06-07 2006-07-04 I2 Technologies Us, Inc. Software deployment system and method
US7065744B2 (en) * 2002-01-14 2006-06-20 International Business Machines Corporation System and method for converting management models to specific console interfaces
US7191404B2 (en) * 2002-01-14 2007-03-13 International Business Machines Corporation System and method for mapping management objects to console neutral user interface
US7240326B2 (en) * 2002-01-14 2007-07-03 International Business Machines Corporation System and method for obtaining display names from management models
US20030135661A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation System and method for packaging and installing management models with specific console interfaces
US7177793B2 (en) * 2002-01-14 2007-02-13 International Business Machines Corporation System and method for managing translatable strings displayed on console interfaces
US20040019393A1 (en) * 2002-07-25 2004-01-29 Eileen Heider System and method for model base control
US20040205151A1 (en) 2002-12-19 2004-10-14 Sprigg Stephen A. Triggering event processing
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7613822B2 (en) 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7606929B2 (en) 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US7567504B2 (en) 2003-06-30 2009-07-28 Microsoft Corporation Network load balancing with traffic routing
US7590736B2 (en) 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US7552181B2 (en) * 2004-01-19 2009-06-23 Tencent Technology (Shenzhen) Company Limited Instant communication method
US7490183B2 (en) * 2004-02-12 2009-02-10 International Business Machines Corporation Information kit integration architecture for end-user systems
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
US8245201B2 (en) * 2004-04-30 2012-08-14 International Business Machines Corporation Method and system for recording and replaying service interactions
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
DE102004023634B4 (de) * 2004-05-10 2007-09-27 Siemens Ag Verfahren zur Vollständigkeits- und Konsistenzprüfung einer Informationsbibliothek
US7559058B2 (en) 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
US7890946B2 (en) 2004-05-11 2011-02-15 Microsoft Corporation Efficient patching
US8539469B2 (en) 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US20060059118A1 (en) * 2004-08-10 2006-03-16 Byrd Stephen A Apparatus, system, and method for associating resources using a behavior based algorithm
US7630955B2 (en) * 2004-08-10 2009-12-08 International Business Machines Corporation Apparatus, system, and method for analyzing the association of a resource to a business process
US7661135B2 (en) * 2004-08-10 2010-02-09 International Business Machines Corporation Apparatus, system, and method for gathering trace data indicative of resource activity
US7546601B2 (en) * 2004-08-10 2009-06-09 International Business Machines Corporation Apparatus, system, and method for automatically discovering and grouping resources used by a business process
US20060036579A1 (en) * 2004-08-10 2006-02-16 Byrd Stephen A Apparatus, system, and method for associating resources using a time based algorithm
US20060074979A1 (en) * 2004-09-29 2006-04-06 Martin Kaiser Static sample data switch
US7536378B2 (en) * 2004-09-30 2009-05-19 Sap Ag Copy template/read only data in application tables
US7406457B2 (en) * 2004-09-30 2008-07-29 Sap Ag Dynamic sample data switch
US20060091603A1 (en) * 2004-11-04 2006-05-04 Froehlich Gilbert L Electronic score pad
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
CN101258719B (zh) * 2005-07-17 2012-12-12 黑曜石研究有限公司 延长InfiniBand网络的实时到达的方法
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US20080134132A1 (en) * 2006-11-30 2008-06-05 Microsoft Corporation Developing Software Components Based on Brain Lateralization
WO2008092866A1 (en) * 2007-01-29 2008-08-07 Scientific Institute Of Public Health (Iph) Transgenic plant event detection
US8799856B2 (en) 2007-06-12 2014-08-05 International Business Machines Corporation System and method for automatically declaring variables
US8677174B2 (en) 2007-12-28 2014-03-18 International Business Machines Corporation Management of runtime events in a computer environment using a containment region
US20090171708A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Using templates in a computing environment
US8868441B2 (en) 2007-12-28 2014-10-21 International Business Machines Corporation Non-disruptively changing a computing environment
US8782662B2 (en) 2007-12-28 2014-07-15 International Business Machines Corporation Adaptive computer sequencing of actions
US8682705B2 (en) 2007-12-28 2014-03-25 International Business Machines Corporation Information technology management based on computer dynamically adjusted discrete phases of event correlation
US8751283B2 (en) 2007-12-28 2014-06-10 International Business Machines Corporation Defining and using templates in configuring information technology environments
US20090172149A1 (en) 2007-12-28 2009-07-02 International Business Machines Corporation Real-time information technology environments
US8826077B2 (en) 2007-12-28 2014-09-02 International Business Machines Corporation Defining a computer recovery process that matches the scope of outage including determining a root cause and performing escalated recovery operations
US8763006B2 (en) 2007-12-28 2014-06-24 International Business Machines Corporation Dynamic generation of processes in computing environments
US9558459B2 (en) 2007-12-28 2017-01-31 International Business Machines Corporation Dynamic selection of actions in an information technology environment
US8990810B2 (en) 2007-12-28 2015-03-24 International Business Machines Corporation Projecting an effect, using a pairing construct, of execution of a proposed action on a computing environment
CN101441566B (zh) * 2008-11-18 2012-04-25 腾讯科技(深圳)有限公司 一种在嵌入式平台上动态链接程序的方法
US20130066838A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Efficient data recovery
US9075616B2 (en) * 2012-03-19 2015-07-07 Enterpriseweb Llc Declarative software application meta-model and system for self-modification
US9239773B1 (en) * 2014-10-29 2016-01-19 Cadence Design Systems, Inc. Method and system for debugging a program that includes declarative code and procedural code
US10521197B1 (en) 2016-12-02 2019-12-31 The Mathworks, Inc. Variant modeling elements in graphical programs
US10983789B2 (en) 2019-01-25 2021-04-20 Allstate Insurance Company Systems and methods for automating and monitoring software development operations
US11829689B1 (en) * 2020-06-09 2023-11-28 The Mathworks, Inc. Systems and methods for creating variant regions in acausal simulation models

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4695977A (en) * 1985-12-23 1987-09-22 American Telephone And Telegraph Company And At&T Bell Laboratories Control of real-time systems utilizing a nonprocedural language
NZ236299A (en) * 1989-11-30 1995-07-26 Seer Technologies Inc Software distribution from central database to computers in network
US5247651A (en) * 1990-04-17 1993-09-21 At&T Bell Laboratories Interactive computer program specification and simulation system
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5386559A (en) * 1992-07-16 1995-01-31 International Business Machines Corporation Variant domains and variant maps in a versioned database management system
US5677997A (en) * 1993-02-11 1997-10-14 Talatik; Kirit K. Method and apparatus for automated conformance and enforcement of behavior in application processing systems
US5430875A (en) * 1993-03-31 1995-07-04 Kaleida Labs, Inc. Program notification after event qualification via logical operators
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5519867A (en) * 1993-07-19 1996-05-21 Taligent, Inc. Object-oriented multitasking system
US5546301A (en) * 1994-07-19 1996-08-13 Honeywell Inc. Advanced equipment control system
AU4759796A (en) * 1995-01-09 1996-10-23 Kirit K. Talati Control system and method for direct execution of software a pplication information models without code generation
US5680619A (en) * 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US5854929A (en) * 1996-03-08 1998-12-29 Interuniversitair Micro-Elektronica Centrum (Imec Vzw) Method of generating code for programmable processors, code generator and application thereof

Also Published As

Publication number Publication date
CN1240522A (zh) 2000-01-05
AU5775898A (en) 1998-07-03
RU2210803C2 (ru) 2003-08-20
WO1998026349A3 (en) 1998-12-10
CN1105969C (zh) 2003-04-16
EP1015966A2 (en) 2000-07-05
IL129911A0 (en) 2000-02-29
WO1998026349A2 (en) 1998-06-18
CA2274665A1 (en) 1998-06-18
US6125442A (en) 2000-09-26
CA2274665C (en) 2009-06-02

Similar Documents

Publication Publication Date Title
JP2001506028A (ja) コンピュータソフトウェアアプリケーションの開発および実行のための方法、システムおよびデータ構造
US6785882B1 (en) Process-driven tool interface for an object management system
US6427230B1 (en) System and method for defining and managing reusable groups software constructs within an object management system
US6158044A (en) Proposal based architecture system
WO1998026349A9 (en) Method, system and data structures for computer software application development and execution
US6789251B1 (en) System and method for managing a suite of data management tools
US7171588B2 (en) Enterprise test system having run time test object generation
Reese Database Programming with JDBC and JAVA
JPH10133877A (ja) マーシャリングフレームワークを使用して分散オブジェクトネットワーク上に不変オブジェクトを格納するためのメソッドと装置
US20120124550A1 (en) Facilitating database application code translation from a first application language to a second application language
Matthews et al. MySQL and Java developer's guide
US6401100B1 (en) Method for associating classes contained in the same or different models
WO2002046909A1 (en) Automatically deploy and upgrade an application based on markup language application definition
CN103180848B (zh) 一种用于复制数据的系统和方法
Languedoc Build iOS database apps with Swift and SQLite
JP4903391B2 (ja) データベースレプリケーション方法及びその装置並びにその制御プログラム
Deinum et al. Data Access
Melby Traceability in model driven engineering
Cosmina et al. Data Access
Comingore et al. Professional SQL Server 2005 CLR Programming
McLeod PAMELA: A Proto-pattern for Rapidly Delivered, Runtime Extensible Systems
Sherlock et al. Com beyond microsoft: Designing and implementing com servers on compaq platforms
Zeaiter Using Model Driven Architecture (MDA) for generating ER and. NET code models from an input PSM based on UML
MacDonald Component-Based Programming
Dobson Leveraging Database Objects That Encapsulate T-SQL

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060627

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060927

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061024

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070123