JP2004280814A - ソフトウェアシステム内での処理ロジックのカスタマイズ方法 - Google Patents

ソフトウェアシステム内での処理ロジックのカスタマイズ方法 Download PDF

Info

Publication number
JP2004280814A
JP2004280814A JP2004066285A JP2004066285A JP2004280814A JP 2004280814 A JP2004280814 A JP 2004280814A JP 2004066285 A JP2004066285 A JP 2004066285A JP 2004066285 A JP2004066285 A JP 2004066285A JP 2004280814 A JP2004280814 A JP 2004280814A
Authority
JP
Japan
Prior art keywords
service
customization
metadata
service identifier
agent
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.)
Ceased
Application number
JP2004066285A
Other languages
English (en)
Other versions
JP2004280814A5 (ja
Inventor
Patrick E Plaisted
イー.プレイステッド パトリック
Michael J Morel
ジェイ.モレル マイケル
Richard W Mortensen
ダブリュ.モーテンセン リチャード
Douglas R Mortensen
アール.モーテンセン ダグラス
Jeffery S Pinkston
エス.ピンクストン ジェフリー
Steven P Anonsen
ピー.アノンセン スティーブン
Timothy J Brookins
ジェイ.ブルッキンス ティモシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004280814A publication Critical patent/JP2004280814A/ja
Publication of JP2004280814A5 publication Critical patent/JP2004280814A5/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/912Applications of a database
    • Y10S707/944Business related
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 処理ソースコードを修正することなく、ソフトウェアシステム内で処理のカスタマイズを容易に行えるようにする。
【解決手段】 処理についてのメタデータ記述をカスタマイズすることによって、カスタマイズされたサービス識別子を処理エージェントに受け渡すことによって、あるいは処理エージェントまたはサービスファクトリによって伝達されたイベントを処理することによって、処理をカスタマイズすることができる。
【選択図】 図6B

Description

本発明は、ユーザが所望するアプリケーションおよびプログラムを実装するのにソースコードが使用されるコンピューティング環境に関する。より詳細には、本発明は、ソースコードを修正せずにコンピュータプログラムおよびアプリケーションのカスタマイズを可能とするフレームワークに関する。
コンピュータソフトウェア関連製品を設計および販売する手法の1つに、その製品が様々な産業分野や多くの異なる国など広範囲に適用可能なように、水平方向の機能に焦点を絞る手法がある。そのようなシステムは、望ましくは、特定の垂直ターゲット市場や特定の企業に固有のニーズに応えることで、アフターサービス市場を活性化させることもできる。同様に、それらの製品は、望ましくは、製品を顧客個々のニーズに合わせて変更またはカスタマイズすることで、顧客の能力を増進させることもできる。
顧客固有のニーズを満たすようにそれらの製品を拡張できないとすると、顧客は必然的に、購入したソフトウェアに合うように業務を変更しなければならない。業務活動の変更にはコストと時間を費やさなければならないので、当然、こうしたタイプのソフトウェアは顧客の支持を得ることができない。
システムのカスタマイズを可能とするために従来より使用されてきた、多くの異なる技法が存在する。こうした従来技法には、例えば、ソースコード修正(source code modification)がある。この技法は、顧客に製品のソースコードのコピーを提供することを必要とする。したがって、この技法は、熟練した専門家に相当な量の内容の変更を許し、変更内容は実質上修正ソースコード製品の一部となるので、そのような変更は、変更内容があたかも製品の一部のように見えるよう行われる。
しかし、ソースコード修正には大きな難点が伴う。例えば、ソースコード修正は、製品を使用し始めるまでに多額の費用を要する。ユーザまたは顧客はしばしば、製品がどのように構築されているかその微妙な詳細について特別な教育を受けているコンサルタントおよびディベロッパを高額で雇わなければならないからである。ユーザは次に、非常に困難で漠然とした作業である問題予測の作業をやり抜かなければならない。これらの問題を克服し、目的を貫徹できたとしても、その結果は修正ソースコードである。オリジナルのソースコードの製造元が、バグフィックス、アップデート、および新バージョンなど追加のソフトウェアを出荷した場合、顧客は、有能なエンジニアまたはディベロッパ(望ましくは、最初の修正を行ったのと同じ者たち)を再び雇い、製造元が出荷した新しいソースコードにすでに行った修正を組み込み、新しい修正ソースコードに不具合が生じた場合、それを1つ1つ解決するよう強いられる。あるいは、ユーザは、バグフィックスやユーザの業務に便益をもたらすかもしれない新機能を単に組み込まずにおくこともできる。
さらに、ソースコード修正は、複数の異なるベンダから、「既成品」のアドオンモジュールを単に購入することを極めて困難にする。そうした各ベンダは、その特定の既製品モジュールを組み込めるように、おそらくソースコードに同じように修正を加えなければならないからである。その結果、基本製品のソースコードを出荷する製造元ばかりか、各アドオンベンダも同様にそのソースを出荷するであろう。その場合、ユーザは、何らかのその場限りの組み込み作業を行わなければならず、またはソースコードのこれらの乱雑な集合から単一の製品を合成しなければならない。当然、その結果として、アップグレードが行われた場合やどこか1つのベンダがバグフィックスを出荷した場合にほぼ問題を抱える、脆弱な1組のコードが得られる。
ソースコード修正はまた、世の中で唯一の企業(ソースコードを修正した特定のディベロッパまたはエンジニア)しか、修正ソースコードがどのように構築されているかを知らないという問題をもつ。したがって、規模の経済を実現すること、また顧客サイトで動作する製品のどのような製品でもサポートが受けられるようにすることが、不可能ではないにしても困難となる。
ソースコード修正に伴う問題は、たとえ単一顧客の範囲内であっても、異なる1組のニーズおよび好みをもった異なる1組のユーザが存在する場合、著しく増大する。そうしたユーザの1人が、自分たちに特有なニーズを組み込むため、ソースコード修正戦略によって製品を変更する毎に、そうしたユーザを雇用する顧客は実質的に、結局新しいソースコード基盤(base)をもつに至る。言い換えると、顧客は単一のカスタムコード基盤をもつとは限らず、顧客内のどれだけの特定ユーザまたは部署がコード基盤を修正したか次第で、実質的に多くのカスタムコード基盤をもつこともある。繰り返すと、バグフィックスが公表される毎に、またはすべてのユーザに適用されるカスタマイズに変更が加えられる毎に、顧客は、作成されたソースのすべての他のコピーに何らかの組み込み作業を実施しなければならない。
上述の問題は、ソースコード修正技法に関連する多くの問題のうちのほんの一部に過ぎない。これらの問題は、顧客および従業員自身の管理作業にとって非常に大きな障害となり得る。
オブジェクトに基づくコンピュータプログラムの限定的修正を可能にする別の技法に、ユーザが定義できるユーザフィールドを追加する技法がある。言い換えると、「カスタマイズ可能」である各オブジェクトが最初に、ユーザが好きなように定義または使用できる1つまたは複数のユーザフィールドをもつように定義される。この技法によって、ある種のタイプのカスタマイズが可能になるが、上述のすべての問題が解決されるわけではない。この技法にも、この技法特有の非常に多くの問題が伴う。例えば、ユーザフィールドに関連するネーミング規約は、それらのユーザフィールドの具体的な使用目的を直観的に連想することを困難にする。例えば、追加のユーザフィールドには一般に、「USERFIELD.1」から「USERFIELD.N」など、非常に汎用的な名前が付けられる。各ユーザフィールドが何のために使用されているのか、ユーザが覚えているのは、不可能ではないにしても困難である。さらに、ユーザフィールドを追加しても、マルチベンダに関連する問題、または異なる組織による複数修正に関連する問題は解決されない。例えば、あるベンダまたはユーザが、あるユーザフィールドを第1の仕方で割り当て、別のベンダまたはユーザが、同じユーザフィールドを別の仕方で割り当てた場合、そのユーザフィールドの定義の仕方に不一致が生じ、2つのベンダまたはユーザに関連する2つの製品は、さらに修正を加えなければ、一緒に動作させることはできない。
カスタマイズに関するその他の技法も、さらに試みられた。例えば、カスタムイベントコードを記述することによって、カスタマイズを行うことができる。その他、ソースコード中でオリジナルのオブジェクトへの1対1マッピングを使用することによって、あるイベントがオリジナルのオブジェクト上で発生した場合に、「カスタマイズされた」オブジェクトを操作することができる。これまでに使用されたことのある別の技法として、「プロパティバッグ(property bag)」や名前−値ペア(name−value pair)を挙げることができる。これらの技法はやはり共に、深刻な難点を抱えており、ソースコード修正に関連する不完全は取り除かれない。
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、処理ソースコードを修正することなく、ソフトウェアシステム内で処理のカスタマイズを容易に行えるようにすることができる、ソフトウェアシステム内での処理ロジックのカスタマイズ方法を提供することにある。
本発明は、処理ソースコードを修正することなく、ソフトウェアシステム内で処理のカスタマイズを容易に行えるようにする。処理についてのメタデータ記述をカスタマイズすることによって、カスタマイズされたサービス識別子を処理エージェント(process agent)に受け渡すことによって、あるいは処理エージェントまたはサービスファクトリ(service factory)によって伝達されたイベントを処理することによって、処理をカスタマイズすることができる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。本発明は、コンピュータソフトウェアのカスタマイズに関する。しかし、本発明をより詳細に説明する前に、本発明を使用することができる例示的な環境の一実施形態について説明する。
図1には、本発明を実施することができる、適切なコンピューティングシステム環境100の一例が示されている。コンピューティングシステム環境100は、適切なコンピューティング環境の単なる一例に過ぎず、本発明の使用または機能の範囲に何らかの限定を課すことを意図したものではない。コンピューティングシステム環境100は、例示的な動作環境のコンピューティングシステム環境100に示された、どれか1つのコンポーネントまたはコンポーネントの組合せに関して、どのような依存または要求ももたないものと解釈される。
本発明は、数々の他の汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明に係る使用に適した、周知のコンピューティングシステム、環境、および/または構成の例として、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC(personal・computer)、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置の任意のものを含む分散コンピューティング環境、その他を挙げることができるが、これらに限定されるものではない。
コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的状況において、本発明を説明することができる。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークを介して結合されたリモート処理装置によってタスクを実行する、分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を始めとする、ローカルおよびリモートのコンピュータ記憶媒体に配置することができる。
図1を参照すると、本発明を実施するための例示的なシステムは、コンピュータ110の形態をした汎用コンピューティング装置を含む。コンピュータ110のコンポーネントとして、プロセッサ120、システムメモリ130、およびシステムメモリなど様々なシステムコンポーネントをプロセッサ120に結合するシステムバス121を挙げることができるが、これらに限定されるものではない。システムバス121は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを始めとする複数のタイプのバス構造のうちの、任意のバス構造とすることができる。例えば、こうしたアーキテクチャとして、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Extended Industry Standard Architecture)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバス(Mezzanine bus)としても知られるPCI(Peripheral Component Interconnect)バスを挙げることができるが、これらに限定されるものではない。
コンピュータ110は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセス可能な任意の利用可能媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むが、これらに限定されるものではない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータといった情報を記憶するための任意の方法または技法によって実施される、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体を含む。コンピュータ記憶媒体として、RAM、ROM、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリ、またはその他のメモリ技術、CD(compact disc)−ROM、DVD(Digital Versatile Disc)、またはその他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、またはその他の磁気記憶装置、あるいは所望の情報を記憶するのに使用でき、コンピュータ110によってアクセス可能なその他の任意の媒体を挙げることができるが、これらに限定されるものではない。通信媒体は一般に、搬送波やその他の移送機構などの変調データ信号中に、コンピュータ可読命令、プログラムモジュール、またはデータ構造を包含し、任意の情報送達媒体を含む。「変調データ信号」という語は、信号中に情報を符号化できるような方式で設定または変更される1つまたは複数の信号特性をもつ信号を意味する。例えば、通信媒体として、有線ネットワークまたは直接配線接続などの有線媒体、および音響、RF(radio frequency)、赤外線、またはその他の無線媒体などの無線媒体が挙げられるが、これらに限定されるものではない。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
システムメモリ130は、ROM(読み取り専用メモリ)131やRAM(ランダムアクセスメモリ)132などの、揮発性および/または不揮発性メモリの形態をしたコンピュータ記憶媒体を含む。ROM131には一般に、起動処理中などにコンピュータ110内の要素間の情報伝送を助ける基本ルーチンを含む、BIOS(Basic Input/Output System)133が記憶される。RAM132は一般に、プロセッサ120が直ちにアクセス可能な、かつ/またはやがてそれに基づいて動作するデータおよび/またはプログラムモジュールを含む。例えば、図1には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137が示されているが、これらに限定されるものではない。
コンピュータ110はまた、その他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含む。図1には、ノンリムーバブルな不揮発性磁気媒体に対して読み書きを行うハードディスクドライブ141、リムーバブルな不揮発性磁気ディスク152に対して読み書きを行う磁気ディスクドライブ151、CD−ROMやその他の光媒体などリムーバブルな不揮発性光ディスク156に対して読み書きを行う光ディスクドライブ155が、例としてのみ示されている。例示的な動作環境で使用することができるその他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ記憶媒体として、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、その他を挙げることができるが、これらに限定されるものではない。ハードディスクドライブ141は一般に、インタフェース140などのノンリムーバブルメモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インタフェース150などのリムーバブルメモリインタフェースを介してシステムバス121に接続される。
上で説明し、図1に示すドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ110のためのコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を可能とする。図1には、例えば、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして、ハードディスクドライブ141が示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じであることもでき、異なることもできる。ここでは、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には、少なくともそれらが異なるコピーであることを示すために、異なる番号が振られている。
ユーザは、キーボード162、マイクロホン163、およびポインティングデバイス161(例えば、マウス、トラックボール、またはタッチパッド)などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。その他の入力装置(図示せず)として、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、その他を挙げることができる。上記およびその他の入力装置はしばしば、システムバスに結合されたユーザ入力インタフェース160を介してプロセッサ120に接続されるが、パラレルポート、ゲームポート、またはUSB(universal serial bus)など、その他のインタフェースおよびバス構造によって接続することもできる。モニタ191またはその他のタイプのディスプレイ装置も、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタの他に、コンピュータは、出力周辺インタフェース195を介して接続できる、スピーカ197やプリンタ196などのその他の周辺出力装置も含むことができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルド装置、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードとすることができ、一般にコンピュータ110に関連して上で説明した、多くのまたはすべての要素を含むことができる。図1に示す論理コネクションは、LAN(ローカルエリアネットワーク)171およびWAN(ワイドエリアネットワーク)173を含むが、その他のネットワークを含むこともできる。こうしたネットワーク環境は、オフィスで、また企業規模のコンピュータネットワーク、イントラネット、インターネットで一般的である。
LANネットワーク環境で使用される場合、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用される場合、コンピュータ110は一般に、インターネットなどのWAN173を介して通信を確立するための、モデム172またはその他の手段を含む。内蔵とも外付けともすることのできるモデム172は、ユーザ入力インタフェース160またはその他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110との関連で示したプログラムモジュールまたはその部分は、リモートのメモリ記憶装置に記憶することができる。例えば、図1には、リモートコンピュータ180上に存在するものとして、リモートアプリケーションプログラム185が示されているが、それに限定されるものではない。図示のネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立するその他の手段も使用できることは理解されよう。
図2は、オブジェクトリレーショナル(またはエンティティリレーショナル)データ記憶システムのブロック図である。本明細書の説明では、エンティティは、「オブジェクト」という語と交換可能なものとして解釈される。E−Rシステム200は、リレーショナルデータベース204に保存されたデータに対応する、1組のエンティティ(またはオブジェクト)202を含む。エンティティは、エンティティ−リレーショナル(ER)マップ(entity−relational(ER)map)208を利用するデータアクセスシステム(data accessing system)206を介して、リレーショナルデータベースにアクセスする。ERマップ208は、エンティティ202とリレーショナルデータベース204内のテーブルエントリとの間のマッピングを含む。本発明をE−Rシステム以外の他のシステムで使用できること、図2に示すシステムは本発明を使用できるシステムの単なる一例に過ぎないことに留意されたい。
図3は、本発明の一実施形態によるカスタマイズサブシステム(customization subsystem)222のカスタマイズフレームワーク(customization framework)220を表すUML(統一モデリング言語)クラス図である。カスタマイズサブシステム222は、カスタマイザ(ディベロッパ、ユーザ、またはマネージャなどの仲介カスタマイザ)とカスタマイズサブシステム222との間で対話を可能にするカスタマイザユーザインタフェース(customizer user interface)224に接続されて示されている。サブシステム222はまた、カスタマイズイネーブルサブシステム(customization−enabled subsystem)226にも接続されて示されており、カスタマイズイネーブルサブシステムは、本発明のカスタマイズ機能の外部に位置するコンポーネント228に接続される。
以下でより詳細に説明するように、カスタマイザインタフェース224によって、カスタマイザは、コンピュータソフトウェアをカスタマイズするために、システム222にアクセス可能となる。外部のコンポーネント228は、カスタマイズされたソフトウェアの何らかの部分にアクセスすることを望む、ユーザなどの任意のコンポーネントとすることができる。カスタマイズイネーブルサブシステム226は、ユーザによって使用されるコンピューティング環境の任意のサブシステムとし、カスタマイズサブシステム222と相互作用を行って、カスタマイズされることが可能なように構成される。
カスタマイズサブシステム222は、アダプタシステム(adapter system)230およびターゲットシステム(target system)232を含む。アダプタシステム230は、基底クラスのSubsystemAdapter234と複数のデータ型のアダプタ236、238、240、242とで実装される。ターゲットシステム232は、基底クラスのTarget244と複数のデータ型のターゲット246、248、250、252とで実装される。ターゲットシステム232はまた、GeneratedAssetエンティティ254と合成関係(composition relationship)にもある。システム230および232は共に、Contextエンティティ256にアクセスすることができる。
アダプタシステム230は、カスタマイズイネーブルサブシステム226とフレームワーク220の間の一次接続ポイントとして動作する。アダプタシステム230は、全体としてサブシステム226に適用されるカスタマイズロジックを実施する。一方、ターゲットシステム232は、カスタマイズしたいデータ型の特定のインスタンスをカスタマイズするのに使用されるロジックを含む。
Contextエンティティ256は、現在のコンテキストを識別するコンテキスト情報を含む。例えば、組織でそれぞれ異なる役割を果たしている人々に異なった仕方でカスタマイズを適用したほうが望ましい場合がある。同様に、組織内の異なる部署に異なった仕方でカスタマイズを適用したほうが望ましい場合がある。Contextエンティティ256は、現在のコンテキストに関連した、それに適したカスタマイズを行うことができるように、現在のコンテキストを識別するコンテキスト情報を含む。これについても、以下で図4と関連させてより詳細に説明する。
以下で説明するように、フレームワーク220は拡張可能である。カスタマイズ可能となったサブシステムにとって、それが行わなければならないことはフレームワーク220へのインタフェースをサポートすることだけである。サブシステムがカスタマイズ対象の追加のデータ型をもつ場合、行わなければならないステップは、カスタマイズしたいデータ型のための(アダプタ242などの)アダプタを提供することだけである。同様に、サブシステムの作成者は、(ターゲットエンティティ252などの)ターゲットを作成しなければならない。アダプタエンティティとターゲットエンティティは一緒に、サブシステムの作成者が望むようにサブシステムをカスタマイズするためのカスタマイズロジックを保有する。そのようなサブシステムが追加のカスタマイザインタフェース224を作成でき、それを介してユーザがそのサブシステムのタイプのカスタマイズを行えることも理解されよう。
本発明の一実施形態によれば、カスタマイズを必要とするソフトウェアは、ユーザインタフェース内容、データ、および処理内容を始めとする内容の複数の基底クラスを含む。ユーザインタフェース内容は、ユーザが画面または報告書上で目にする内容を含む。ユーザインタフェース内容は、レイアウト情報、メッセージ、フィールドラベルといったものを含む。データは、システムが記憶する情報を表す。例えば、データは、顧客、在庫品、注文などを含む。処理内容は、定義された1組のステップに従って作業の順を決めるワークフロー仕様と、各データについて明確に定義されたアクションを実行する低レベルの処理ロジックを含む。処理内容の一例として、例えば、注文を元帳に記入したり、在庫品を確保したりする、ワークフローおよび低レベルの処理ロジックを挙げることができる。これらならびにその他のタイプの内容は、本発明の様々な実施形態に従って、カスタマイズすることができる。
カスタマイズされる内容のタイプに関わりなく、カスタマイズは、望ましくは、対象とするコンテキストに関連させることができる。どのコンテキストであるかによって、適用されるカスタマイズが異なる。すなわち、コンテキストの概念を導入することによって、あるカスタマイズはある特定のユーザだけに適用され、別のカスタマイズはある特定のグループに所属するすべてのユーザに適用され、さらに別のカスタマイズはユーザが誰であれ全社に適用されることが可能になる。これらは、コンテキストの3つの異なる例に過ぎず、この他にも多くのコンテキストを使用することができる。
Contextエンティティ256は、現在のコンテキストを取得するために、アダプタシステム230またはターゲットシステム232によって呼び出される。図4には、Contextエンティティ256によって表されるデータ構造の一実施形態が示されている。もちろん、Contextエンティティ256は、リレーショナルデータベース204にマップされるデータを表す。図4には、どのカスタマイズをどのコンテキストに適用するかを判別するのに使用されるテーブルの一実施形態が示されている。
例示の実施形態では、Contextエンティティ256は、コンテキストテーブル257、カスタマイズテーブル259、およびカスタマイズ−コンテキストテーブル261を含むリレーショナルデータベース204内のテーブルにマップされる。図4に示す実施形態では、コンテキストテーブル257は、コンテキスト識別番号によってコンテキストを識別するフィールドを含む。コンテキストテーブル257には、ある特定のユーザを識別するユーザIDと、マネージャ、販売員、副社長など組織内の役割を識別する職務と、発送部、販売部など企業の業務単位を識別する組織と、地理的所在を表す所在地とを含む、4つのコンテキスト項目が示されている。この他にも、多種多様な追加のコンテキスト要素を使用することができる。
コンテキストテーブル257の第1のコンテキストエントリは、第1のコンテキストIDがヨーロッパにいるすべてのマネージャに関連づけられていることを示している。第2のコンテキストIDは、ユーザIDが12345のある特定のユーザに関連づけられており、第3のコンテキストIDは、発送部のマネージャに関連づけられている。カスタマイズテーブル259は、システムに入力された異なるカスタマイズに関連づけられた識別子と、そのカスタマイズIDに関連づけられた特定のカスタマイズの仕様を定めるカスタマイズデータを含む。カスタマイズ−コンテキストテーブル261は、コンテキストIDとカスタマイズIDの間の対応関係を定義する。したがって、指定されたIDをもつカスタマイズは、それと関連するコンテキストIDフィールドで識別される様々なコンテキストに適用される。もちろん、所与のどのカスタマイズにも複数のコンテキストをマップすることができ、所与のどのコンテキストにも複数のカスタマイズをマップすることができる。
他のテーブル構成を使用することもでき、図4に示すテーブル構成は単なる一例に過ぎない。例えば、テーブル261を削除して、コンテキストテーブル257に同様のカスタマイズIDフィールドを設けることもできる。コンテキストテーブルに複数の行をもたせることによって、1つのカスタマイズにさらに多くのコンテキストをもたせることができる。
どの場合でも、システム230および232は、Contextエンティティ256に現在のコンテキストをリクエストすることができ、Contextエンティティはまた、一実施形態では、現在のコンテキスト内で適用する必要のある特定のカスタマイズの識別情報を返すことができる。
エンティティ拡張
カスタマイズフレームワーク220の動作をより良く説明するために、図3に関連する説明を、図5〜図6Bを併せ参照しながら進める。これらの図は、エンティティのカスタマイズをより良く説明する。本明細書では、エンティティのカスタマイズを「エンティティ拡張(entity extension)」とも呼ぶ。
図5には、カスタマイズイネーブルサブシステム226内のエンティティが生成された時に生成されるデータ構造が示されている。図6Aには、図5に示すデータ構造が示されているが、生成されたデータ構造に加え、エンティティがカスタマイズされた時に修正されたデータ構造も示されている。図6Bは、図6Aのエンティティがどのように生成または修正されるかを示したフローチャートである。
図5には、業務アプリケーション内の基底の(base)エンティティ280が示されている。業務アプリケーション内で顧客を識別する「Customer」エンティティを、例示的な業務エンティティ(business entity;符号280)とする。説明される特定の例は単なる例に過ぎず、その他のエンティティにも本発明の概念が同様に適用されることは、当然理解されよう。基底のエンティティ280は、拡張(またはカスタマイズ)されるエンティティを表す。図5には、(図2に示す)ERマップ208内の顧客ERマップ(customer ER map)エントリ282によって、基底のエンティティ280がリレーショナルデータベース204にマップされることも示されている。基底のエンティティ280とその他のエンティティの間の関係は、顧客EAマップ(customer EA(entity association)map)284で識別される。図5にはさらに、リレーショナルデータベース204が、Customerエンティティ280に関連づけられた顧客テーブル286を例示的に含み、顧客テーブルが、顧客IDフィールド、名前フィールド、住所フィールド、および顧客を識別するのに望ましいその他の任意のフィールドを含むことが示されている。
本発明は、エンティティをカスタマイズするのにソースコード修正を必要としないので、基底のエンティティ280を再コンパイルせずに新しいエンティティ関係を基底のエンティティに動的に追加できるようにするために、基底のExtensionエンティティ(base extension entity)288も提供される。基底のExtensionエンティティ288は、生成された各基底のエンティティ280毎に生成される。基底のExtensionエンティティ288は、基底のエンティティ280の名前を例示的に含み、そのため、この例では、基底のExtensionエンティティ288は「CustomerExtension」と命名される。基底のExtensionエンティティ288は最初は空であるが、やはり空である顧客拡張ERマップ290および顧客拡張EAマップ292を含むことができる。基底のエンティティ280は、基底のExtensionエンティティを識別する合成フィールド(composition field)を含む。例えば、基底のエンティティ280は、「Extension」という名前の「CustomerExtension」型の合成フィールドを含むことができる。Customerエンティティ280のエンティティ関連メタデータ(entity association metadata)は、CustomerExtensionエンティティ288との関係を反映している。エンティティ280および288は共に、例示的には、本発明による製品をインストールする時に、DLL(Dynamic Link Library)として出荷され、配布される。これらのエンティティおよびそれに関連するマップを生成するステップが、図6Bのブロック400および402に示されている。その時点で、カスタマイザは、図3に示すインタフェース224などのカスタマイザユーザインタフェースを介して、Customerエンティティ280への拡張プロパティの追加を開始することができる。
図6Aには、拡張プロパティがどのように追加されるかが示されている。カスタマイザインタフェース224は、識別されたエンティティに追加される新しいプロパティのリストをフレームワーク220に導入するユーザインタフェース(UI)を含む。追加される新しいプロパティの仕様は、それを記憶するEntityExtensionTarget246に受け渡される。カスタマイザはまた、特定のカスタマイズが適用される、Contextエンティティ256に記憶された特定のエンティティを識別することもできる。カスタマイズを指定するステップが、図6Bのブロック404に示されている。異なるカスタマイザが異なる時にコンテキストを設定できることも理解されよう。カスタマイザがディベロッパである場合、開発時にコンテキストを設定することができる。カスタマイザがシステム管理者である場合、管理業務の一環としてコンテキストを設定することができる。いずれの場合でも、最終的にはコンテキストが設定される。
カスタマイズをアクティブにするために、サブシステム226は最初に、インストールの前にサブシステム226が全体として必要とする処理を実行する、Subsystem Adapter234中のPreInstall()メソッドを呼び出す。サブシステム226は次に、EntityExtensionAdapter236中のApplyCustomizations()メソッドを呼び出す。それに応答して、EntityExtensionAdapter236は、(図2に示す)データアクセスシステム206を使用して、カスタマイズされたプロパティを含むEntityExtensionTarget246のインスタンスを識別する。EntityExtensionAdapter236は次に、特定のEntityExtensionTarget246中のInstall()メソッドを呼び出す。これについては、図6Bのブロック406に示されている。
この呼び出しによって、EntityExtensionTarget246は、Extensionエンティティと呼ばれる新しいエンティティを生成する。2つのExtensionエンティティ300、302が図6Aに示されている。Extensionエンティティ300、302の各々は、カスタマイズされたプロパティを識別する少なくとも1つの拡張プロパティ304、306をそれぞれ含む。図6Aには、カスタマイザXYZおよびカスタマイザABCと名付けられた2人の異なるカスタマイザによって実施されたカスタマイズの一実施形態が示されている。したがって、Extensionエンティティ300は説明上、XYZ.CustomerExtensionと命名され、Extensionエンティティ302は説明上、ABC.CustomerExtensionと命名される。
例えば、カスタマイザXYZが、Customerエンティティ280をカスタマイズして、エンティティ280で識別される顧客が好む技術者の識別情報を含ませることを望んだと仮定する。その場合、XYZ.CustomerExtensionエンティティ300は、「好まれる技術者(preferred technician)プロパティ」と呼ばれる拡張プロパティ304を含む。カスタマイザABCが、Customerエンティティ280をカスタマイズして、エンティティ280で識別される顧客に関連する信用限度を含ませることを望んだと仮定する。その場合、ABC.CustomerExtensionエンティティ302は、対象の顧客に関する「信用限度」を識別する拡張プロパティ306を含む。
EntityExtensionTarget246は、Extensionエンティティ300、302を、対応する拡張プロパティ304、306と共に生成するばかりでなく、説明上、Extensionエンティティ300、302の各々に対応するE−Rマップ310、312と、E−Aマップ314、316をそれぞれ生成する。さらに、EntityExtensionTarget246は、Extensionエンティティ300、302および他の関連するデータ構造に対応するテーブルをリレーショナルデータベース204内に(データアクセスシステム206を介すなどして)生成する。これについては、図6Bのブロック408に示されている。
最後に、基底のExtensionエンティティ288を再コンパイルし、Extensionエンティティ300、302との新しい関係を反映したE−Rマップを再生成する。同様に、Extensionエンティティとの新しい関係を同じく反映したE−Aメタデータも生成する。これについては、図6Bのブロック410に示されている。例えば、EntityExtensionAdapterクラス中のPostInstall()メソッドを呼び出すことによって、これを行うことができる。こうすることで、その再コンパイルで、ABCとXYZの両者による変更に対応することができる。対象のターゲットをインストールする際に行うことも可能だが、各ターゲット毎に1回、合計n回のエンティティの再コンパイルが必要になる。
図6Aには、行われたエンティティ拡張を反映したデータベーススキーマを実装できる、複数の異なる例示的な方法も示されている。第1の実施形態では、図6Aに320と記されたテーブルにエンティティ拡張を保存する。テーブル320がCustomerエンティティ280に関連するデータを保存するオリジナルのテーブル286を含むことが分かる。オリジナルテーブルは、エンティティ拡張に対応する複数の追加フィールド322、324を含むように単純に拡張される。名前衝突(name clash)を回避するために、名前の前に作成者の名前空間を付加して、一意性を確保する。したがって、テーブル286内のオリジナルの列が変更されることはない。エンティティ拡張の対象となるオリジナルテーブルに、拡張部分が単に追加されるだけである。
第2の実施形態では、エンティティ拡張の各々が、それ専用のテーブルに保存される。そのようなテーブルが、符号326および328によってそれぞれ示されている。もちろん、カスタマイズ毎に異なるテーブルを生成することができ、またはあるカスタマイザ(ABCまたはXYZ)が行うすべてのカスタマイズを単一のテーブルに保存することもできる。
第3の実施形態によれば、両方のカスタマイズが単一のテーブル330に保存される。テーブル330では、エンティティ拡張「好まれる技術者」と「信用限度」の両方がこのテーブルに保存される。この実施形態では、列名の前に作成者の名前空間を付加して、一意性を確保する。もちろん、すべてのエンティティのすべてのカスタマイズを含むように、または単一のエンティティのすべてのカスタマイズを含むように、テーブル330を拡大することができる。後者の場合、各エンティティ毎に、そのエンティティのすべてのカスタマイズを保持する新しいテーブルが生成される。
さらに別の実施形態によれば、カスタマイズを含む1つまたは複数のテーブルがすでに生成されており、したがって、それらがリレーショナルデータベース204内にすでに存在しているようなシステムでも、本発明を使用することができる。この実施形態では、Extensionエンティティ300、302は、カスタマイズを含む既存のテーブルに単純にマップされる。
エンティティ拡張は、エンティティ間の関係をカスタマイズするのにも使用することができ、これが図6Cに示されている。図6Cには、カスタマイザが、「好まれる技術者」カスタマイズを単一のフィールドに文字列として書き込むのではなく、そのカスタマイズを関連するマップ303、305をもつ別のエンティティ301として作成する、一実施形態が示されている。その場合、対応するEAマップ中にCustomerExtensionエンティティ288とPreferrdTechnicianエンティティ301との間のEAメタデータ関係を追加することによって、カスタマイズが行われる。
メタデータカスタマイズ
図7Aには、メタデータ構造、および本明細書で「デルタベースカスタマイズ(delta−based customization)」と呼ぶメタデータカスタマイズが示されている。図7Aのメタデータ構造は、メタデータ構造木(metadata structure tree)500の一部分として示されている。図7Aに示す木500の一部分が、システムのメタデータを定義するはるかに大きな木の非常に小さな部分を例示的に示したものにすぎないことは理解されよう。図7Aに示す部分は、メタデータがFormsセクションを含み、FormsがCustomer_Maintenance_Screenを含むことを示している。Customer_Maintenance_Screenは、複数のタブコントロールを有するフィールド(Fields)を含む。タブコントロール1は、それに関連づけられたField1を有する。Field1は、フィールド名、フィールド背景色、フィールドが有効か無効か、フィールド長、およびフィールドのデータ型(この例ではMaxValue)を始めとする複数のプロパティを有する。もちろん、フィールドは、複数の追加のプロパティをさらに有することができる。メタデータ構造500は、メタデータストア(metadata store)に保存される。
メタデータ構造500をカスタマイズするために、カスタマイザは、カスタマイザインタフェース224を介してカスタマイズ仕様を入力する。こうすることで、あるコンテキストでカスタマイズを利用するMetadataTargetエンティティ248中にコードが含まれる。
本発明の一実施形態では、メタデータ構造500内のメタデータの型のカスタマイズはすべて、デルタを使用して達成される。デルタは、メタデータ構造500内での、オリジナルの形式からの変更を表す。カスタマイズは、任意の個数nのデルタを含み、各デルタは、基底ターゲットの既知のインスタンスに関する特定の変更を表す。さらに、デルタは、既存ノードに対する変更を表す必要が全くない。代わりに、デルタは、メタデータ構造500への新ノードの追加を表すことができる。
オリジナルのデータ構造500内で値を変更する例として、名前が「foo」であるフィールドの背景色は黄色であり、カスタマイザがその背景色を青に変更したいと思ったと仮定する。この例では、カスタマイザは、単一のデルタを含む単一のカスタマイズを行う。カスタマイズは、Customer_Maintenance_ScreenのTab1の下の「foo」フィールドに関連する。カスタマイズは、メタデータストアの別個の部分に保存することができ、またはリレーショナルデータベース204にマップされるMetadataCustomizationエンティティ502に保存することができる。メタデータストアの一部分を形成することができるリレーショナルデータベース204内のテーブルは、テーブル504によって示されており、このテーブルは、FormsのCustomer_Maintenance_Screen部中のフィールドのTab1の下のField1の背景色プロパティを識別するメタデータIDを含む。テーブル504は、フィールドの背景色が青に変更されたことを表すデルタを識別するデルタ情報も含む。したがって、デルタは、修正された原情報のコピーではない。代わりに、デルタは、構造500内のどの値を修正すべきかについての単なる仕様に過ぎない。デルタを追跡するだけで、多くの修正を動的にターゲットに適用することが可能になる。
デルタを適用するため、カスタマイズイネーブルサブシステム226は、アダプタ234を呼び出して、MetadataAdapter238を介してカスタマイズを適用する。MetadataAdapter238は、MetadataTarget248中のApply()を呼び出し、現在のコンテキストでカスタマイズを適用する。例えば、カスタマイズイネーブルサブシステム226がFormローディングサブシステムであると仮定する。さらに、ユーザがCustomer_Maintenance_Screenを表示するようリクエストしたと仮定する。もちろん、最初にMetadataAdapter238は、Customer_Maintenance_Screenという名前のフォームに関して、現在のコンテキストに適用されるリレーショナルデータベース内のすべてのMetadataTargetインスタンスを識別する。次にMetadataAdapter238は、カスタマイズの適用対象として識別された各インスタンス毎に、MetadataTarget248中のMetadataTarget.Apply()を呼び出す。メタデータに適用されるカスタマイズが、Customer_Maintenance_ScreenのTab1の下のField1の背景色を青に変更することを必要とすることが分かる。MetadataTarget248中のコードがこの変更を行い、カスタマイズされた部分構造500が、画面描画に使用されるため、カスタマイズイネーブルフォームローダ(customization enabled form loader)(符号226)に返される。
一実施形態によれば、本発明は、異なるカスタマイズの複数のデルタが同じプロパティを参照することによって生じる競合を解決するための機構も含む。例えば、あるマネージャが、Customer_Maintenance_ScreenのTab1の下の所定のField1の背景色がオレンジになるようにカスタマイズしたと仮定する。さらに、その部下の1人が、個人的な好みから、背景色を青に変更するカスタマイズを行ったと仮定する。その個人ユーザには、これらの2つの別個のカスタマイズが両方とも適用される。その個人ユーザは、オレンジに変更するカスタマイズが行われた部署の一員であるが、その個人ユーザは自身で、青に変更するカスタマイズを行っている。したがって、これら2つのカスタマイズインスタンスは競合を起す。両方のカスタマイズが、同じフィールドの背景色を異なる色に設定しようとする。しかし、フィールドに設定できる色などの値は1つだけである。したがって、一方のカスタマイズを優先させ、他方を無視しなければならない。
本発明の一実施形態によれば、カスタマイズ競合は、競合解決ポリシー(conflict resolution policy)を用いて解決される。こうしたポリシーは、説明の都合上、メタデータ構造500内の異なるデータ型の各々に適用される一定のポリシーを識別するテーブルに保存されるものとする。そのようなテーブルの一部が、図7Bにテーブル510として示されている。もちろん、テーブル510は例示的なものであるに過ぎない。テーブル510は、構造500内のデータ型を識別するデータ型フィールドと、適用される競合解決ポリシーを指示するポリシーフィールドを含む。例示の一実施形態では、競合解決ポリシーは以下を含む。
1.最も限局的な値
2.最も狭いコンテキスト
3.1度しか設定できない値
4.追加
5.管理的オーバライド
最も限局的な値(most restrictive value)というポリシーは、列挙に対して使用することができる。例えば、あるカスタマイズが値A〜Eを有効とし、別のカスタマイズが値C〜Fを有効とする場合、競合する2つのカスタマイズの最も限局的な組合せは、値C、D、Eであるので、これらだけを有効とする。このポリシーは数値フィールドに対しても使用することができる。例えば、データ型が最大値データ型であり、2つのカスタマイズが数値を2つの異なる値に設定しようとした場合、小さい方の値がより限局的であり、その値が優先される。データ型が最小値データ型である場合、大きい方の値がより限局的であり、その値が優先される。
最も狭いコンテキスト(narrowest context)というポリシーは、最も狭いコンテキストに関するカスタマイズを優先して、競合を解決する。例えば、単一のユーザを対象とするカスタマイズは、すべてのユーザ向けのコンテキストに対応する競合カスタマイズよりも優先される。
1度しか設定できない値(set once value)というポリシーは、値を1度しか設定できないようにして競合を解決する。その後、その値を変更することはできない。
追加(additive)というポリシーは、フィールドグループ(または画面上に表示されるフィールドのグループ)などのデータ型に適用される。フィールドは説明上、複数のグループに属することができる。したがって、あるフィールドがあるカスタマイズによって第1のグループに追加され、同じフィールドが別のカスタマイズによって第2のグループに追加された場合、両方のグループにそのフィールドを追加することによって競合が解決される。
最後の競合解決ポリシーは管理的オーバライド(administrative override)である。これによって、システム管理者が競合解決ポリシーを項目毎に個別にオーバライドすることが可能になる。
もちろん、これらの競合解決ポリシーは例示的なものに過ぎず、その他のポリシーまたは異なるポリシーを必要に応じて使用することができる。
図8A〜図8Cには、カスタマイズがエンティティ拡張によってどのように実行されるかについてのさらに具体的な例が示されている。図8A〜図8Cに示された例では、自動車販売代理店のモルテンズ(Mortens)自動車が、財務ソフトウェアパッケージを購入したと仮定する。パッケージをインストールし、稼動させた後、モルテンズ自動車は、各顧客の自動車の好み(例えば、色、エンジン、製造元/型式など)を追跡するために、パッケージ製品にフィールドを追加するカスタマイズを行う。モルテンズ自動車はまた、顧客の自動車の好み用の新しいフィールドを顧客画面に追加し、いくつかの使用されたことのないフィールドを削除すると仮定する。
図8Aには、モルテンズ自動車が購入した財務ソフトウェアパッケージの標準的な顧客画面のスクリーンショット450が示されている。自動車販売業では一般に使用されない注文品一覧(order summary)フィールドを、画面450が含んでいることが分かる。図8Aには、カスタマイズを実施した後の同じ顧客画面も示されている。オリジナルの注文品一覧フィールドは、顧客の最後の購入および最後の購入日を示すフィールドで置き換えられている。さらに、顧客の自動車の好みを表示するために、自動車の好み(car preferences)タブが追加されている。これらはすべて、上で説明したように、エンティティおよびメタデータを拡張するだけで達成される。
次に、別のソリューションプロバイダのコンソト(Consoto)が、サービス案内用の電子メール通知を導入すると仮定する。コンソトが提供するCustomerエンティティは、顧客のお気に入り技術者の名前用の文字列をCustomerエンティティに追加し、また新しいフィールド用のテキストボックスを顧客画面に追加するとさらに仮定する。コンソトの顧客画面の一例を図8Bに示す。モルテンズ自動車が、サービス部門を運営するために、コンソトからソフトウェアパッケージを購入すると仮定する。
インストール後、先に行ったカスタマイズはすべて、手動介入または再作成しなくても、これまで通り動作する。この画面を図8Cに示す。例えば、顧客の自動車の好みフィールドが画面上に表示され、オリジナルの注文フィールドが画面から削除されている。同様に、コンソトが行った変更も提供されている。具体的には、Customerエンティティには新しいフィールドが、顧客画面上にはテキストボックスが含まれている。先に説明したように、新しいソフトウェアパッケージをインストールする場合、カスタマイズサブシステムのフレームワークが呼び出され、ユーザの介入を必要とせず、自動的にカスタマイズがインストールされ、適用される。
処理のカスタマイズ
処理は一般に、定義された1組のステップに従って作業の順を決めるワークフロー仕様と、各データについて明確に定義されたアクションを実行する低レベルの処理ロジックを含む。本明細書では、処理を業務アクティビティと呼び、業務アクティビティは実行時間の長い業務処理とすることができる。
図9には、どのように業務アクティビティ600を実装できるかが示されている。本発明の一実施形態では、業務アクティビティ600は、業務オペレーションと呼ばれる、複数の個別の処理ステップに分割される。業務アクティビティを構成する業務オペレーションの各々は、オペレーションの2つの異なるタイプの一方に分類することができる。最初のタイプを本明細書では、計画されたオペレーション置換(planned operation replacement)と呼ぶ。言い換えると、オリジナルアプリケーションのデベロッパがロジック置換を予定した場合、そのアプリケーションは実行する特定のロジックを実行時に選択できるように記述される。このようにすることで、サードパーティのデベロッパが、実行する処理のタイプを拡張することができる。オリジナルの作成者は、「プラグポイント(plug point)」と、1つまたは複数のデフォルト実装を開発する。サードパーティのデベロッパはその後、追加の実装を作成し、インストールすることができる。そうしたアプリケーションは一般に、あるインスタンスで実行される業務オペレーションの選択候補を格納する領域をアプリケーションデータベース内に提供する。そのようなロジックの一例に、販売手数料計算エンジンがある。オリジナルの作成者は、手数料選択情報をSalesPersonエンティティ中に組み込み、「定率」デフォルトも提供するかもしれない。もちろん、サードパーティのデベロッパは、よりきめ細かな計算表を作成し、インストールすることができる。
第2のタイプの業務オペレーションを本明細書では、随時的なオペレーション置換(adhoc operation replacement)と呼ぶ。例えば、オリジナルの作成者がオペレーションの置換を予定しない場合もある。したがって、その作成者は、代替実装を選択できるように、何らかの特別なロジックをアプリケーションに組み込まないかもしれない。しかし、そのような場合でも、ベンダは、オリジナルのオペレーションを自分たちのロジックに置換しなければならないことがある。オリジナルのオペレーションに代って、ベンダのオペレーションを呼び出すために、選択ロジックを修正するフレームワーク機構が提供される。
これらの機構をより詳細に説明する前に、別の概念について最初に説明する。本発明の一実施形態による業務オペレーションは、エージェント−サービスパターン(agent−service pattern)に従う。業務オペレーションエージェントは、クライアントが直接対話する、処理の一部分であるに過ぎない。業務処理を実行する必要があるクライアントは、業務オペレーションエージェントのインスタンスを生成し、必要な入力を提供するプロパティをそのインスタンスに送信する。エージェントは、(サービスファクトリを介して)対応するサービスクラスを探し出し、それをインスタンス化した後、呼び出して、サービスを実施する作業を実際に実行する。
上述の置換シナリオのどちらでも、エージェント自体は置換されない。クライアントは常に、同一のオリジナルの業務オペレーションエージェントを生成し、それを呼び出す。つまり、エージェントのインタフェースは不変であり、そのため、クライアントは常に必ずエージェントを呼び出すことができるようになる。業務オペレーションエージェントはエンティティであり、より多くのプロパティが追加された関連するExtensionエンティティをもつことができる。このことによって、オリジナルのエージェントインタフェース規約を崩すことなく、エージェントの拡張性が提供される。エージェントは、複数の異なる方法で、実行する適切なサービスを探し出すことができる。
図9には、業務アクティビティ600が、3つの業務オペレーション、すなわちオペレーション1、オペレーション2、オペレーション3を用いて実装されていることがさらに示されている。業務オペレーション1は、エージェント602と、業務オペレーションサービスファクトリ604を有する。業務オペレーション2も、エージェント606と、サービスファクトリ608を有する。業務オペレーション3も、エージェント610と、業務オペレーションサービスファクトリ612を有する。
計画された置換の場合、呼び出し側アプリケーション(またはクライアント)は、サービスIDを現在呼び出されているエージェントに受け渡す。サービスIDは、どのサービスを起動するかを指示する。したがって、呼び出し側がある特定のサービスIDをエージェント602に受け渡した場合、エージェント602は、サービスファクトリ604を介して、業務オペレーションサービス614を識別し、それをインスタンス化した後、呼び出して、オペレーションを実行する。異なるサービスIDを受け渡すだけで、サービスを変更することができる。
随時的な置換の場合、業務オペレーションサービスの組み込み選択候補をオーバライドするのに例示的に使用できる2つの異なる方法が存在する。例えば、業務オペレーション3を置き換えると仮定する。本発明の一実施形態では、サービスIDは、図10に示すメタデータ構造などのメタデータ構造内に記憶される。図10には、Operationsと呼ばれるメタデータ項目を含む、メタデータ構造625の一部分が示されている。Operationsは3つの業務オペレーションを含み、その各々は複数のプロパティを含み、その1つがサービスIDである。この場合、ベンダは、オーバライドされる業務オペレーションのサービスIDを保持するメタデータの一部を単純にカスタマイズすることができる。
例えば、業務オペレーション1のサービスIDをカスタマイズして、代わりに業務オペレーション番号4のサービスIDにすると仮定する。図10には、業務オペレーションカスタマイズテーブルと呼ばれるテーブル627が示されており、このテーブルは、メタデータ識別子(メタデータ構造内のサービスIDエントリ用の識別子)と、サービスIDを番号4にカスタマイズすることを示すデルタを含む。カスタマイズをこの処理に適用する場合、サービスID番号1が、カスタマイズされたサービスID番号4に置き換えられる。このIDが、使用される業務オペレーションサービスファクトリに受け渡され、サービス番号4の業務オペレーションがインスタンス化され、呼び出される。エージェントがファクトリにサービスIDを受け渡すことはなく、ファクトリは通常通り、メタデータ構造内の関連するデフォルトサービスIDを検索しに行く。この検索によって取得されるのは、カスタマイズされたサービスIDであり、ファクトリは、オリジナルとして指定されたサービスの代わりに、置換業務オペレーションサービスをインスタンス化する。
随時的置換カスタマイズを実装するための別の方法も、図9には示されている。この実施形態では、利用される特定のサービスファクトリがイベントを伝達する。サービスオペレーションをカスタマイズしたいベンダは、このイベントを予約し、サービスIDの値を変更するため、関連するイベントハンドラ中にロジックを置く。この方法は、業務オペレーションのカスタマイズを可能にするばかりでなく、業務オペレーションエージェント内に含まれるデータに基づいた動的なサービス選択も可能にする。例えば、図9に示すように、エージェント610が業務オペレーションサービスファクトリ612を呼び出して、業務オペレーションサービスをインスタンス化するとき、ファクトリ612は、イベント622を伝達することができる。関連するイベントハンドラに追加されたカスタムロジックは、サービスIDの値を変更し、それをファクトリ612に返すことができる。カスタムイベントコードがサービスIDの設定を選択しない場合、サービスIDのデフォルト値(および可能性としてカスタマイズ値)がメタデータ記憶域から読み出される。
依存関係
本発明の一実施形態が、カスタマイズ間に依存関係(dependency)を導入していることも注目に値する。言い換えると、あるベンダまたは製造元が製品をカスタマイズして出荷し、さらにユーザがその製品をカスタマイズする場合、データ項目のカスタマイズを、同じデータの先に行われたカスタマイズに依存させることができる。したがって、カスタマイズフレームワークの基底クラスは、どのカスタマイズが他のどのカスタマイズに依存しているかを示すリストを維持する。カスタマイザがカスタマイズの生成または削除を行いたい場合、基底アダプタクラスは最初に、当該カスタマイズに他のカスタマイズが依存しているかどうか判定する。したがって、各カスタマイズは、関連する依存関係リストを有する。カスタマイザがカスタマイズを行う前にすべての依存関係に確かに対処したかどうかを依存関係に照らして確かめるメソッドが、アダプタシステム内で呼び出される。
具体的な実施形態を参照しながら本発明を説明してきたが、本発明の主旨および範囲から逸脱することなく、形態および細部に変更を施すことができることは、当業者には理解されよう。
本発明を適用できる実施形態の一環境のブロック図である。 本発明を適用できる実施形態のオブジェクトリレーショナル(またはエンティティリレーショナル)データベースのブロック図である。 本発明を適用できる実施形態の、カスタマイズフレームワークのUMLクラス図である。 本発明を適用できる実施形態の、コンテキスト維持の一実施形態を示したブロック図である。 本発明を適用できる実施形態の、エンティティ拡張システムを示した図である。 本発明を適用できる実施形態の、エンティティがカスタマイズまたは拡張された後の図5に示すエンティティ拡張システムを示した図である。 本発明を適用できる実施形態の、エンティティを拡張する方法を示したフローチャートである。 本発明を適用できる実施形態の、エンティティ間のリレーションを変更することによってエンティティをカスタマイズする方法を示したブロック図である。 本発明を適用できる実施形態の、メタデータ構造およびカスタマイズの一実施形態を示した図である。 競合解決テーブルの一実施形態を示した図である。 本発明を適用できる実施形態のシステム画面のカスタマイズの一例を示したスクリーンショットの図である。 本発明を適用できる実施形態のシステム画面のカスタマイズの一例を示したスクリーンショットの図である。 本発明を適用できる実施形態のシステム画面のカスタマイズの一例を示したスクリーンショットの図である。 本発明を適用できる実施形態の業務アクティビティの表現の一実施形態を示したブロック図である。 本発明を適用できる実施形態のメタデータのカスタマイズによって業務アクティビティをカスタマイズする一実施形態を示した図である。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 プロセッサ
121 システムバス
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 ノンリムーバブルメモリインタフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 リムーバブルメモリインタフェース
151 磁気ディスクドライブ
152 リムーバブルな不揮発性磁気媒体
155 光ディスクドライブ
156 リムーバブルな不揮発性光ディスク
160 ユーザ入力インタフェース
161 ポインティングデバイス
162 キーボード
163 マイクロホン
170 ネットワークインタフェース
171 LAN
172 モデム
173 WAN
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインタフェース
191 モニタ
195 出力周辺インタフェース
196 プリンタ
197 スピーカ
200 E−R図
202 エンティティ
204 リレーショナルデータベース
206 データアクセスシステム
208 エンティティ−リレーショナル(ER)マップ
220 カスタマイズフレームワーク
222 カスタマイズサブシステム
224 カスタマイザユーザインタフェース
226 カスタマイズイネーブルサブシステム
228 外部コンポーネント
230 アダプタサブシステム
232 ターゲットサブシステム
234 基底クラスSubsystemAdapter
236 データ型アダプタ
238 データ型アダプタ
240 データ型アダプタ
242 データ型アダプタ
244 基底クラスTarget
246 データ型ターゲット
248 データ型ターゲット
250 データ型ターゲット
252 データ型ターゲット
254 GeneratedAssetエンティティ
256 Contextエンティティ
257 コンテキストテーブル
259 カスタマイズテーブル
261 カスタマイズ−コンテキストテーブル
280 基底のエンティティ
282 顧客ERマップエントリ
284 顧客EAマップ
286 顧客テーブル
288 基底のExtensionエンティティ
300 Extensionエンティティ
301 好まれる技術者エンティティ
302 Extensionエンティティ
303 好まれる技術者E−Rマップ
304 拡張プロパティ
305 好まれる技術者E−Aマップ
306 拡張プロパティ
320 テーブル
322 追加フィールド
324 追加フィールド
326 テーブル
328 テーブル
330 テーブル
450 スクリーンショット
500 メタデータ構造木
502 メタデータカスタマイズエンティティ
504 メタデータカスタマイズテーブル
510 競合解決テーブル
600 業務アクティビティ
602 業務オペレーションエージェント
604 業務オペレーションサービスファクトリ
606 業務オペレーションエージェント
608 業務オペレーションサービスファクトリ
610 業務オペレーションエージェント
612 業務オペレーションサービスファクトリ
614 業務オペレーションサービス
627 業務オペレーションカスタマイズテーブル

Claims (14)

  1. ソフトウェアで実施される業務処理をカスタマイズする方法であって、
    オペレーションの実行を要求するリクエストに応答して、サービス識別子に基づき、サービスをインスタンス化し呼び出すエージェントを提供するステップと、
    カスタマイズされたサービスを識別するために、前記エージェントが使用する前記サービス識別子をカスタマイズするステップと
    を備えることを特徴とする方法。
  2. 前記サービス識別子を変更するステップは、前記エージェントで実行するメソッド中で、前記変更された識別子を前記エージェントに渡すステップを含む
    ことを特徴とする請求項1に記載の方法。
  3. 前記識別子は、前記サービスに関連する、メタデータストア内のサービス識別子メタデータとして保存され、変更するステップが、
    前記カスタマイズされたサービスを指示するように、前記サービス識別子メタデータをカスタマイズするステップを含む
    ことを特徴とする請求項1に記載の方法。
  4. 前記サービス識別子メタデータをカスタマイズするステップは、
    カスタマイズストア中の前記カスタマイズされたサービス識別子メタデータを指示するデルタ値を保存するステップを含む
    ことを特徴とする請求項3に記載の方法。
  5. 前記サービス識別子メタデータをカスタマイズするステップは、
    前記エージェントが後で呼び出されたときに、前記サービス識別子を前記デルタ値を用いてカスタマイズするステップを含む
    ことを特徴とする請求項4に記載の方法。
  6. 前記業務処理は、前記エージェントによって呼び出されるサービスファクトリを含み、前記サービスファクトリは、前記メタデータにアクセスし、前記サービス識別子によって識別される前記サービスを呼び出すように構成され、前記サービス識別子をカスタマイズするステップは、
    前記サービスファクトリが前記メタデータにアクセスする前に、前記サービス識別子を前記デルタ値を用いてカスタマイズするステップを含む
    ことを特徴とする請求項5に記載の方法。
  7. デルタ値を保存するステップは、
    サービス識別子を前記メタデータに追加するよう指示するデルタ値を保存するステップを含む
    ことを特徴とする請求項4に記載の方法。
  8. デルタ値を保存するステップは、
    前記メタデータ中の既存のサービス識別子に変更するよう指示するデルタ値を保存するステップを含む
    ことを特徴とする請求項3に記載の方法。
  9. 前記業務処理は、前記エージェントによって呼び出されるサービスファクトリを含み、カスタマイズするステップは、
    前記エージェントによって呼び出されたときにイベントを伝達するように前記サービスファクトリを構成するステップと
    前記イベントに応答して前記サービスファクトリにサービス識別子を返すように構成されたイベントハンドラを提供するステップとを含む
    ことを特徴とする請求項1に記載の方法。
  10. クライアントからのリクエストによって呼び出し可能なエージェントと、
    サービス識別子をインスタンス化し呼び出すことを要求するリクエストに応答して、前記エージェントによって呼び出し可能なサービスファクトリと
    を備えたことを特徴とするカスタマイズ可能な業務処理。
  11. 前記サービスファクトリは、カスタマイズされたサービス識別子を受け取り、前記カスタマイズされたサービス識別子に基づくサービスをインスタンス化し呼び出すように構成される
    ことを特徴とする請求項10に記載の処理。
  12. 前記サービスファクトリは、前記カスタマイズされたサービス識別子を前記エージェントから受け取るように構成される
    ことを特徴とする請求項11に記載の処理。
  13. 前記サービスファクトリは、前記サービス識別子をメタデータとして取得するように構成され、
    前記サービスファクトリが前記サービス識別子を取得する前に、前記サービス識別子をカスタマイズされた値を用いてカスタマイズするように構成されるカスタマイズサブシステムをさらに含む
    ことを特徴とする請求項11に記載の処理。
  14. コンピュータで実施される業務処理をカスタマイズするためのシステムであって、
    カスタマイズ可能なサブシステムからの処理カスタマイズの入力を受け取るため呼び出されるように構成されるメソッドを有するアダプタサブシステムであって、前記入力はカスタマイズされる処理にカスタマイズを適用するよう要求するリクエストを示し、前記アダプタサブシステムは前記リクエストに基づいてカスタマイズされるコンポーネントを識別するアダプタサブシステムと、
    前記リクエストされたカスタマイズを前記識別されたコンポーネントに適用するため前記アダプタサブシステムによって呼び出されるように構成されるメソッドを有するターゲットサブシステムと
    を備えたことを特徴とするシステム。
JP2004066285A 2003-03-12 2004-03-09 ソフトウェアシステム内での処理ロジックのカスタマイズ方法 Ceased JP2004280814A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/389,684 US7080089B2 (en) 2003-03-12 2003-03-12 Customization of process logic in a software system

Publications (2)

Publication Number Publication Date
JP2004280814A true JP2004280814A (ja) 2004-10-07
JP2004280814A5 JP2004280814A5 (ja) 2007-04-26

Family

ID=32824832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004066285A Ceased JP2004280814A (ja) 2003-03-12 2004-03-09 ソフトウェアシステム内での処理ロジックのカスタマイズ方法

Country Status (3)

Country Link
US (2) US7080089B2 (ja)
EP (1) EP1460534B1 (ja)
JP (1) JP2004280814A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006190279A (ja) * 2004-12-29 2006-07-20 Microsoft Corp メタデータ駆動型ビジネス・ロジック(metadatadrivenbusinesslogic)処理のための方法および装置
JP2006285902A (ja) * 2005-04-05 2006-10-19 Casio Comput Co Ltd データ処理装置
US8495565B2 (en) 2009-01-09 2013-07-23 Nec Corporation Service providing apparatus, service providing system, service providing method, and storage medium

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572069B2 (en) 1999-03-31 2013-10-29 Apple Inc. Semi-automatic index term augmentation in document retrieval
WO2000058863A1 (en) 1999-03-31 2000-10-05 Verizon Laboratories Inc. Techniques for performing a data query in a computer system
US7080089B2 (en) * 2003-03-12 2006-07-18 Microsoft Corporation Customization of process logic in a software system
US7702648B1 (en) * 2003-06-17 2010-04-20 Microsoft Corporation Localization of data represented by business entities
US7734568B2 (en) * 2003-06-26 2010-06-08 Microsoft Corporation DVD metadata wizard
US20050177384A1 (en) * 2004-02-10 2005-08-11 Cronin Donald A. System and method for designing and building e-business systems
US7971198B2 (en) * 2005-06-08 2011-06-28 Unoweb Inc. Method for global resource sharing having logically linked means and integrated functionality for building solutions
US7743363B2 (en) * 2005-10-13 2010-06-22 Microsoft Corporation Extensible meta-data
CN101351155B (zh) * 2006-01-05 2013-02-20 皇家飞利浦电子股份有限公司 可调体模
US7676786B2 (en) 2006-02-02 2010-03-09 Research In Motion Limited System and method and apparatus for using UML tools for defining web service bound component applications
US20070203956A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Metadata Customization Using Diffgrams
US7945596B2 (en) 2006-06-20 2011-05-17 Microsoft Corproation Programming model for customized data objects
US9558184B1 (en) * 2007-03-21 2017-01-31 Jean-Michel Vanhalle System and method for knowledge modeling
US8484663B2 (en) * 2007-04-27 2013-07-09 Microsoft Corporation Method of deriving web service interfaces from form and table metadata
US7721158B2 (en) * 2007-06-04 2010-05-18 Microsoft Corporation Customization conflict detection and resolution
CN100465888C (zh) * 2007-08-03 2009-03-04 中国科学院软件研究所 一种自动创建过程主体的方法
US20090064200A1 (en) * 2007-08-30 2009-03-05 Wolfgang Walter Centralized Enhancement Service
AU2008229743A1 (en) * 2007-10-03 2009-04-23 Britesoft Solutions (M) Sdn Bhd Cutomizable Application System
US8793706B2 (en) 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
US9280319B2 (en) 2013-10-18 2016-03-08 Microsoft Technology Licensing, Llc Integrated visualization for modeled customizations
JP6334009B2 (ja) * 2014-06-24 2018-05-30 グーグル エルエルシー リモートデータベースについてのミューテーションの処理
US10078501B2 (en) 2015-03-16 2018-09-18 Microsoft Technology Licensing, Llc Domain specific language modeling framework in a development environment
US10067755B2 (en) 2015-03-16 2018-09-04 Microsoft Technology Licensing, Llc Model driven customization framework
US9959114B2 (en) * 2015-03-16 2018-05-01 Microsoft Technology Licensing, Llc Representation of customizable types in a development environment
US9772822B2 (en) 2015-03-16 2017-09-26 Microsoft Technology Licensing, Llc Visualization framework for customizable types in a development environment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281934A (ja) * 1994-04-12 1995-10-27 N T T Data Tsushin Kk システムファイルの更新及び復元方法
JPH08115361A (ja) * 1994-10-14 1996-05-07 Hitachi Ltd オンライン・サービス方法及びシステム
JPH10116193A (ja) * 1996-05-31 1998-05-06 Lucent Technol Inc 通話制御装置および通話を制御する方法
JP2002505474A (ja) * 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド ルックアップ・サービスに対するアクセスを容易にするための方法及びシステム
JP2002366381A (ja) * 2001-06-12 2002-12-20 Hitachi Ltd オブジェクトの動的入替え処理方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719642A (en) * 1985-02-27 1988-01-12 Scientific Atlanta, Inc. Error detection and concealment using predicted signal values
US5831606A (en) * 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US6110228A (en) * 1994-12-28 2000-08-29 International Business Machines Corporation Method and apparatus for software maintenance at remote nodes
US6167404A (en) * 1997-07-31 2000-12-26 Avid Technology, Inc. Multimedia plug-in using dynamic objects
JPH11327717A (ja) * 1998-03-16 1999-11-30 Digital Vision Laboratories:Kk 情報出力装置および情報提供システム
AU2035600A (en) * 1998-11-30 2000-06-19 Siebel Systems, Inc. Development tool, method, and system for client server appications
US6308168B1 (en) * 1999-02-09 2001-10-23 Knowledge Discovery One, Inc. Metadata-driven data presentation module for database system
US7272815B1 (en) * 1999-05-17 2007-09-18 Invensys Systems, Inc. Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects
US7472349B1 (en) * 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6490719B1 (en) * 1999-07-26 2002-12-03 Gary Thomas System and method for configuring and executing a flexible computer program comprising component structures
US6522876B1 (en) * 1999-10-04 2003-02-18 Sprint Spectrum L.P. System for managing telecommunications services through use of customized profile management codes
US7072934B2 (en) * 2000-01-14 2006-07-04 Saba Software, Inc. Method and apparatus for a business applications server management system platform
US6574631B1 (en) * 2000-08-09 2003-06-03 Oracle International Corporation Methods and systems for runtime optimization and customization of database applications and application entities
EP1195676A3 (en) * 2000-10-03 2007-03-28 Microsoft Corporation Architecture for customizable applications
US20020111887A1 (en) * 2000-11-07 2002-08-15 Mcfarlane Richard Employee online activity monitoring system
US20020099583A1 (en) * 2001-01-24 2002-07-25 Matusek Lawrence W. Architecture and techniques for providing product configurations to an enterprise resource planner
SG120067A1 (en) * 2001-06-01 2006-03-28 Vientity Private Ltd Intelligent procurement agent
EP1456752A1 (en) * 2001-11-14 2004-09-15 Exegesys, Inc. Method and system for software application development and customizable runtime environment
US7801834B2 (en) * 2002-03-28 2010-09-21 Siebel Systems, Inc. Method and apparatus for estimator tool
US6737994B2 (en) * 2002-05-13 2004-05-18 International Business Machines Corporation Binary-ordered compression for unicode
US20040034553A1 (en) * 2002-08-15 2004-02-19 International Business Machines Corporation Method and system for prioritizing business processes in a service provisioning model
US20040102940A1 (en) * 2002-11-22 2004-05-27 Singapore Institute Of Manufacturing Integration of a discrete event simulation with a configurable software application
US7080089B2 (en) 2003-03-12 2006-07-18 Microsoft Corporation Customization of process logic in a software system
US8086998B2 (en) * 2006-04-27 2011-12-27 International Business Machines Corporation transforming meta object facility specifications into relational data definition language structures and JAVA classes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281934A (ja) * 1994-04-12 1995-10-27 N T T Data Tsushin Kk システムファイルの更新及び復元方法
JPH08115361A (ja) * 1994-10-14 1996-05-07 Hitachi Ltd オンライン・サービス方法及びシステム
JPH10116193A (ja) * 1996-05-31 1998-05-06 Lucent Technol Inc 通話制御装置および通話を制御する方法
JP2002505474A (ja) * 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド ルックアップ・サービスに対するアクセスを容易にするための方法及びシステム
JP2002366381A (ja) * 2001-06-12 2002-12-20 Hitachi Ltd オブジェクトの動的入替え処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006190279A (ja) * 2004-12-29 2006-07-20 Microsoft Corp メタデータ駆動型ビジネス・ロジック(metadatadrivenbusinesslogic)処理のための方法および装置
JP2006285902A (ja) * 2005-04-05 2006-10-19 Casio Comput Co Ltd データ処理装置
JP4655728B2 (ja) * 2005-04-05 2011-03-23 カシオ計算機株式会社 データ処理装置及びプログラム
US8495565B2 (en) 2009-01-09 2013-07-23 Nec Corporation Service providing apparatus, service providing system, service providing method, and storage medium
JP5408141B2 (ja) * 2009-01-09 2014-02-05 日本電気株式会社 サービス提供装置、サービス提供システム、及びサービス提供方法

Also Published As

Publication number Publication date
EP1460534B1 (en) 2015-02-18
EP1460534A2 (en) 2004-09-22
US7080089B2 (en) 2006-07-18
US20060195453A1 (en) 2006-08-31
US20040181291A1 (en) 2004-09-16
US7711688B2 (en) 2010-05-04
EP1460534A3 (en) 2006-06-21

Similar Documents

Publication Publication Date Title
JP5541830B2 (ja) コンピューティング環境においてオブジェクトを記述するメタデータのカスタマイズのための方法
US7711688B2 (en) Customization of process logic in a software system
US7124400B2 (en) Extensible customization framework for a software system
US7730446B2 (en) Software business process model
US7577934B2 (en) Framework for modeling and providing runtime behavior for business software applications
US7562346B2 (en) Software componentization for building a software product
JP4197753B2 (ja) 多数ディレクトリサービスに一様にアクセスするための方法及びシステム
CA2504082C (en) Method and apparatus for generating user interfaces based upon automation with full flexibility
JP5162094B2 (ja) メタデータ駆動型ビジネス・ロジック(metadatadrivenbusinesslogic)処理のための方法および装置
EP1517235A2 (en) Branding framework
US7665014B2 (en) Method and apparatus for generating forms using form types
US20080288918A1 (en) Web service tool based on business object layer
US7509628B2 (en) Extensibility framework for developing front office (CRM) workflow automation components
US20040177339A1 (en) Customization of fields in objects in a computing environment
US20070226682A1 (en) Method and code generator for integrating different enterprise business applications
Zaidi et al. Creating Classes and Objects
US20090089114A1 (en) Autogeneration of configuration activities

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110606

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110607

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110628

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110722

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7431

Effective date: 20120213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120213

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130709

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20130718

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20140123