JP2004280821A - ソフトウェアビジネスプロセスモデル - Google Patents

ソフトウェアビジネスプロセスモデル Download PDF

Info

Publication number
JP2004280821A
JP2004280821A JP2004069827A JP2004069827A JP2004280821A JP 2004280821 A JP2004280821 A JP 2004280821A JP 2004069827 A JP2004069827 A JP 2004069827A JP 2004069827 A JP2004069827 A JP 2004069827A JP 2004280821 A JP2004280821 A JP 2004280821A
Authority
JP
Japan
Prior art keywords
business
entity
operations
service
activity
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
JP2004069827A
Other languages
English (en)
Inventor
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 JP2004280821A publication Critical patent/JP2004280821A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Theoretical Computer Science (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】 ビジネスソフトウェアアプリケーションのオーサリングおよび実行をサポートするビジネスプロセスモデルを提供すること。
【解決手段】 ビジネスソフトウェアフレームワークに、プロセスモデルを有するアプリケーションフレームワークが含まれる。プロセスモデルによって、所望のサービスがビジネスコンポーネントに与えられ、オペレーションがアクティビティに編成され、エージェント/サービス配置も使用することができる。
【選択図】 図3

Description

本発明は、ビジネスソフトウェアソリューションに関し、より詳細には、ビジネスソフトウェアアプリケーションのオーサリング(authoring)および実行をサポートするビジネスプロセスモデルに関する。
統合ビジネスソリューションには、通常は、ビジネスセグメントをサポートし、企業のハブネットワークおよびスポークネットワークと対話する複数の機能を有する製品が含まれる。そのような製品には、財務情報、人事管理、カスタマリレーションシップマネジメント、プロフェッショナルサービスオートメーション、配布、サプライチェーンマネジメントなどを実行するソフトウェアアプリケーションが含まれる。
過去に、そのような統合ビジネスソリューションの達成は、非常に困難であった。以前のビジネスアプリケーションは、主に、内部およびバックオフィスの機能のビジネスプロセス自動化に焦点を合わせ、それに制限されていた。このタイプの内部の効率は重要であるが、会社の外部の、カスタマ、サプライヤ、パートナ、金融業者、および従業員である個人との関係には対処していない。
現在まで、最大級の組織だけが、その構成要素への企業の外部の広範なビジネスプロセス自動化を有する。これらのソリューションの実施のコストおよび複雑さは、単純に、特に中小規模の組織にとって極度に大きかった。
コストが非常に高いことの理由の1つは、コンピュータソフトウェア関連製品を設計し、マーケティングする手法の1つが、製品が大きい産業セグメントに広範囲に適用可能であり、多数の異なる国で適用可能になるように、水平機能性に焦点を合わせることである。そのようなシステムは、特定の垂直ターゲット市場および特定の会社の独自の必要を満たすためにアフターマーケットの販売を促進できることも望ましい。同様に、製品は、カスタマの個々の必要に合わせて製品を変更またはカスタマイズするカスタマの能力を促進できることが望ましい。そのような必要は、例えば、異なるベンダの製品であっても、異なるビジネス製品が統合化された形で動作するという要件とすることができる。これは、しばしば、アプリケーションを修正またはカスタマイズし、その結果、アプリケーションが互いに互換になることを必要とする。
カスタマの独自の必要に合うように製品を拡張できない場合には、本質的に、カスタマが、購入したソフトウェアに合わせて自分の仕事を変更することが必要になる。もちろん、このタイプのシステムは、業務活動の変更が高コストであり時間がかかるので、カスタマに抵抗される。
システムをカスタマイズできるようにするために従来から使用されてきた複数の異なる方法がある。そのような従来の方法に、例えば、ソースコード修正が含まれる。この方法には、製品のソースコードのコピーをカスタマに提供することが伴う。したがって、十分に訓練された実務家が、かなりの量の内容を変更できるようになり、これらの変更は、実際に修正されたソースコード製品の一部なので、製品の一部であるかのように見えるようにすることができる。
しかし、ソースコード修正は、大きな短所を伴う。例えば、ソースコード修正は、製品を使用する前にかなりの金額のコストを要する。というのは、ユーザまたはカスタマが、しばしば、製品の構成のニュアンスについて特にトレーニングされた高給のコンサルタントおよび開発者を雇わなければならないからである。次に、ユーザは、問題を推定するという危険に耐えなければならないが、これは、非常に困難で不正確な作業である。これらの問題を克服し、耐えることができる場合であっても、その結果は、修正されたソースコードである。元のソースコードの製造業者が、バグフィックス、アップデート、および新バージョンなどの追加ソフトウェアを出荷する時に、カスタマは、製造業者によって出荷された新しいソースコードに修正を合体させ、新たに修正されたソースコードで生じる問題を1つずつ解決するために、有能なエンジニアまたは開発者のいずれか(できれば元の修正を行ったのと同一人物)をもう一度雇うことを強制される。その代わりに、ユーザが、単純に、ユーザの仕事に役立つ可能性があるバグフィックスおよび新機能なしで済ませることができる。
さらに、ソースコード修正によって、複数の異なるベンダから「在庫の」アドオンモジュールを単純に購入することが、極端に困難になる。というのは、これらのベンダのそれぞれが、めいめいの在庫モジュールに対処するために、ソースコードも修正しなければならない可能性が高いからである。その結果、製造業者が基本製品のソースコードを出荷するだけではなく、各アドオンベンダも、ソースを出荷しなければならない。ユーザは、ソースコードのランダムな組から単一製品のある種のアドホックなマージプロセスまたは合成を行わなければならない。もちろん、これによって、アップグレードに関する問題またはベンダのいずれかがバグフィックスを出荷した時に問題を有することが事実上保証された、脆弱なコードの組がもたらされる。
ソースコード修正は、世界中で1つの組織(ソースコードを修正した特定の開発者またはエンジニア)だけが、修正されたソースコード製品を構築する方法を知っていることからも影響を受ける。したがって、規模の経済およびカスタマサイトで動作する製品のいずれかの製品サポートを達成することが、不可能ではないとしても困難である。
ソースコード修正に関する問題は、単一のカスタマであっても、必要とプリファレンスの別個の組を有するユーザの別個の組が存在する時に、かなり増加する。これらのユーザの1人が、その特定の必要に対処するためにソースコード修正戦略を介して製品を変更するたびに、これらのユーザを雇うカスタマが、実際に、新しいソースコードーベースで終わる。言い換えると、カスタマは、単一のカスタムコードベースを有するだけではなく、実際には、カスタマの特定のユーザまたは部署のいくつがコードベースを修正したかに応じて、多数のカスタムコードベースを有する可能性がある。やはり、バグフィックスがパブリッシュされるか、全ユーザに適用されるカスタマイゼーションに対する変更が行われるたびに、カスタマは、作られたソースのすべての他のコピーとのある種のマージプロセスを行わなければならない。
これは、ソースコード修正方法に関連する多数の問題のごく一部のリストである。これらの問題によって、統合されたビジネスソリューションを得る試みで、カスタマの管理および従業員自体の多数の問題がもたらされる可能性がある。
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、ビジネスソフトウェアアプリケーションのオーサリング(authoring)および実行をサポートするビジネスプロセスモデルを提供することにある。
本発明は、ビジネスソフトウェアフレームワークに、プロセスモデルを有するアプリケーションフレームワークが含まれる。プロセスモデルによって、所望のサービスがビジネスコンポーネントに与えられる。プロセスモデルによって、オペレーションがアクティビティに編成される。プロセスモデルによって、エージェント/サービス配置も使用することができる。
以下、図面を参照して本発明の実施の態様について説明する。
本発明には、ビジネスアプリケーションをサポートするフレームワークが含まれる。しかし、本発明を詳細に説明する前に、本発明が存在することのできる1つの例示的なコンピューティング環境を説明する。
<コンピューティング環境の概要>
図1は、本発明を実施することができる適切なコンピューティングシステム環境の例を示す図である。コンピューティングシステム環境100は、適切なコンピューティング環境の1つの例にすぎず、本発明の使用または機能性の範囲に関する制限を暗示することを意図されたものではない。また、コンピューティング環境100を、例示的なコンピューティング環境100に示された構成要素のいずれかまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
本発明は、多数の他の汎用または特殊目的のコンピューティングシステムの環境または構成と共に動作する。本発明と共に使用するのに適切である可能性がある周知のコンピューティングシステム、環境、および/または構成には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイス、ラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セッとトップボックス、プログラマブル消費者電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、および類似物が含まれるが、これに制限はされない。
本発明を、全般的に、プログラムモジュールなどの、コンピュータによって実行されるコンピュータ実行可能命令に関して説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリストレージデバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶メディアに配置することができる。
図1に関して、本発明を実施する例示的システムに、コンピュータ110の形の汎用コンピューティングデバイスが含まれる。コンピュータ110の構成要素に、処理ユニット120、システムメモリ130、および、システムメモリを含むさまざまなシステム構成要素を処理ユニット120に接続するシステムバス121を含めることができるが、これに制限はされない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。制限ではなく例として、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびメザニンバスとも称するPeripheral Component Interconnect(PCI)バスが含まれる。
コンピュータ110には、通常は、さまざまなコンピュータ可読メディアが含まれる。コンピュータ可読メディアは、コンピュータ110によってアクセスできるすべての使用可能なメディアとすることができ、コンピュータ可読メディアには、揮発性メディアおよび不揮発性メディア、取外し可能メディアおよび取外し不能メディアの両方が含まれる。制限ではなく例として、コンピュータ可読メディアに、コンピュータ記憶メディアおよび通信メディアを含めることができる。コンピュータ記憶メディアには、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の保管の任意の方法または技術で実施される揮発性および不揮発性の両方の、取外し可能または取外し不能のメディアが含まれる。コンピュータ記憶メディアには、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)、または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは所望の情報を保管するのに使用でき、コンピュータ110によってアクセスできる他のメディアが含まれるが、これに制限はされない。通信メディアによって、通常は、搬送波または他のトランスポート機構などの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータが実施され、通信メディアには、すべての情報配信メディアが含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードする形で1つまたは複数の特性を設定または変更された信号を意味する。制限ではなく例として、通信メディアに、有線ネットワークまたは直接配線接続などの有線メディアと、音響、RF、赤外線、および他の無線メディアなどの無線メディアが含まれる。上記のいずれかの組合せも、コンピュータ可読メディアの範囲に含まれなければならない。
システムメモリ130には、読取専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの、揮発性および/または不揮発性メモリの形のコンピュータ記憶メディアが含まれる。起動中などにコンピュータ110内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)133が、通常はROM131に保管される。RAM132には、通常は、処理ユニット120によって即座にアクセス可能および/または現在操作されつつあるデータおよび/またはプログラムモジュールが含まれる。制限ではなく例として、図1に、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110には、他の取外し可能/取外し不能の揮発性/不揮発性コンピュータ記憶メディアを含めることもできる。例としてのみ、図1に、取外し不能不揮発性磁気メディアから読み取り、これに書き込むハードディスクドライブ141、取外し可能不揮発性磁気ディスク152から読み取り、これに書き込む磁気ディスクドライブ151、およびCD ROMまたは他の光学メディアなどの取外し可能不揮発性光ディスク156から読み取り、これに書き込む光学ディスクドライブ155が図示されている。この例示的オペレーティング環境で使用することができる他の取外し可能/取外し不能の揮発性/不揮発性コンピュータ記憶メディアには、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、および類似物が含まれるが、これに制限はされない。ハードディスクドライブ141は、通常は、インターフェース140などの取外し不能メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光学ディスクドライブ155は、通常は、インターフェース150などの取外し可能メモリインターフェースによってシステムバス121に接続される。
上述した、図1に図示されたドライブおよびそれに関連するコンピュータ記憶メディアによって、コンピュータ110のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージが提供される。図1では、例えば、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を保管するものとして図示されている。これらのコンポーネントを、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同一または異なるもののいずれかとすることができることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は、最低限、これらが異なるコピーであることを示すために、本明細書では異なる符号を与えられている。
ユーザは、キーボード162、マイクロホン163、および、マウス、トラックボール、またはタッチパッドなどのポインティングデバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)に、ジョイスティック、ゲームパッド、衛星放送受信用パラボラアンテナ、スキャナ、または類似物を含めることができる。上記および他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インターフェース160を介して処理ユニット120に接続されるが、パラレルポート、ゲームポート、またはuniversal serial bus(USB)などの、他のインターフェースおよびバス構造によって接続することができる。モニタ191または他のタイプのディスプレイデバイスも、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタの他に、コンピュータに、スピーカ197およびプリンタ196など、出力周辺インターフェース195を介して接続することができる他の周辺出力デバイスも含めることができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードとすることができ、リモートコンピュータ180には、通常は、コンピュータ110に関して上述した要素の多数またはすべてが含まれる。図1に示された論理接続には、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173が含まれるが、他のネットワークも含めることができる。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
LANネットワーキング環境で使用される場合に、コンピュータ110は、ネットワークインターフェースまたはネットワークアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される場合に、コンピュータ110には、通常は、インターネットなどのWAN173を介する通信を確立する、モデム172または他の手段が含まれる。モデム172は、内蔵または外付けとすることができるが、ユーザ入力インターフェース160または他の適当な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関して示されたプログラムモジュールまたはその諸部分を、リモートメモリストレージデバイスに保管することができる。制限ではなく例として、図1に、リモートコンピュータ180に常駐するリモートアプリケーションプログラム185を図示する。図示のネットワーク接続が、例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用することができることを諒解されたい。
<高水準ソフトウェア環境の概要>
図2は、本発明が常駐することのできる、より高水準の環境のブロック図である。環境200に、ツールおよびサーバプラットフォーム202、本発明が常駐するビジネスフレームワーク204、ビジネスコンポーネント206、およびビジネスソリューション208が示されている。ツールおよびサーバプラットフォーム202によって、例として、アプリケーションが広域ネットワークを介して通信でき、データを共有できるようにするサービスのプラットフォームが提供される。プラットフォーム202に、例えば、この機能性を可能にするツールおよびサーバシステムを含めることができる。ビジネスコンポーネント206に、例として、ビジネスフレームワーク204との開発者の対話に基づいて一緒にパッケージ化されたビジネスアプリケーションの機能性が含まれる。ビジネスコンポーネント206は、例えば、総勘定元帳アプリケーションおよび財務アプリケーションから、セールスフォースオートメーションサービスおよびカスタマリレーション管理アプリケーションの範囲に及ぶものとすることができる。フレームワーク204を使用してビジネスコンポーネント206を記述することによって、これらのコンポーネントが、拡張可能になり、これを使用して、どのレベルの機能性および複雑さが望まれるかに応じて、複数のユーザの必要をサービスすることができる。
各ビジネスソリューション208に、1つまたは複数のアプリケーションが含まれる。アプリケーションとは、ユーザインターフェースを介して提示され、個別に展開されるビジネスコンポーネントのグループである。
ビジネスフレームワーク204は、ビジネスコンポーネント206の開発者によって使用される。ビジネスフレームワークによって、生産的であり信頼性があり一貫性がある形のビジネスアプリケーションが可能になる。
<ビジネスフレームワークの概要>
図3は、ビジネスフレームワークの複数の基礎サブシステムを示す図である。図3に、複数のビジネスコンポーネント214、216、および218を含むアプリケーションレイヤ212をサポートするフレームワーク210を示す。ビジネスコンポーネントには、財務アプリケーション、プロジェクトアプリケーション、および流通アプリケーションが含まれる。フレームワーク210は、プラットフォーム202に常駐するものとして図示されている。
フレームワーク210自体には、1組のビジネスクラスライブラリ220、ツールサブシステム222、およびビジネスアプリケーションフレームワーク224が含まれる。ツールサブシステム222には、例として、コンポーネント、プロセス、レポート、およびエンドユーザインターフェースを設計する複数の設計サブシステムが含まれる。ツールサブシステム222には、例として、設計されたコンポーネントをテストするのに使用することができるテストサービス、ならびにコンポーネントをアプリケーションまたはソリューションにパッケージ化するのに使用されるアプリケーションパッケージャも含まれる。
ビジネスクラスライブラリ220には、共通エンティティ226、パターン228、およびデータ型230が含まれる。
2つのビジネスアプリケーションが、しばしば、統合を行えるようにするためにデータの共有される理解を必要とする。例えば、流通、財務、およびカスタマリレーション管理のすべてが、カスタマデータを扱う。したがって、ビジネスクラスライブラリ220によって、ほとんどのビジネスアプリケーションに重要なコアプロパティを含む複数の共通エンティティ226が提供される。フレームワーク210上で構築されるアプリケーションによって、カスタマイゼーション(下で説明する)を介して、シナリオ固有のプロパティおよび挙動を有するようにこれらのエンティティを拡張することができる。
表1は、ビジネスクラスライブラリ220の共通エンティティ226の一部の例示的なリストである。もちろん、多数の異なるまたは追加の共通エンティティを定義することもできる。
ビジネスアプリケーションの作成をはるかに効率的にすることができる多数の有用なデータ型もある。エンティティ226と異なって、データ型は、一意の識別を有しない。表2に、ビジネスクラスライブラリ220内でデータ型230として実装することができる複数の例示的なデータ型を示す。
共通エンティティによって、ビジネスアプリケーションのエンティティのわずかな部分だけが構成される。共通エンティティ226によって、ルールおよびプロセスの指定を回避することができるが、これらはアプリケーションによって異なるので、これらのルールの多くが、頻繁に見られるビジネスアプリケーションパターンに従う。ビジネスクラスライブラリ220によって、クラスライブラリ220にパターン228として共通のパターンの構造および挙動を取り込むことによって、エンティティ、プロセス、およびポリシの複数の共通のカテゴリの記述がサポートされる。表3に、クラスライブラリ220でパターン228として使用される複数の例示的なパターンのリストの1つを示す。
ビジネスアプリケーションフレームワーク224によって、アプリケーション作成に関するプログラミングモデルおよびサービスが提供される。一実施形態では、このフレームワークに、製品に固有のビジネスロジックが含まれず、したがって、このフレームワークは、ビジネスアプリケーションだけではなく、プロファイルに合うすべての他のアプリケーションのオーサリングに適切である。このフレームワークによって、広範囲のサポートを提供するアプリケーションサービスの組が提供される。このアプリケーションサービスは、レポート作成およびクエリサブシステム232、プロセス実行サブシステム234、ユーザインターフェースサブシステム236、コンポーネントプログラミングモデルサブシステム238、ロールベースセキュリティサブシステム240、カスタマイゼーションサブシステム242、デプロイメント(deployment)および管理サブシステム244、データアクセスサブシステム246、メタデータサブシステム248、ビジネスメッセージングおよび統合サブシステム250、ならびにファウンデーション(foundation)サービスサブシステム252を含むサブシステムで実装される。
<プログラミングモデルサブシステム238およびプロセス実行サブシステム234>
上述したように、ビジネスフレームワーク204で構築されるアプリケーションの論理ビューは、そのデータ、プロセス、およびルールを表すクラスの組である。設計中に、これらがさらに洗練され、ビジネスコンポーネント206にグループ化される。設計は、プログラミングモデル238の複数の要素に従って構造化される。コンポーネントは、それに関して記述された、3つの主要な種類のタイプ、ビジネスエンティティ、アクティビティ、およびプロセスからなる。コンポーネントに、もちろん、列挙などのサポートするクラスおよび型の特定の実装である値型などの他のデータ型を含めることもできる。ビジネスアプリケーションを形成する、疎結合されたコンポーネントのグループが、このアーキテクチャの基礎の構成要素である。コンポーネントは、サブシステム234でのユーザインターフェース管理、サブシステム232および246を介するデータ永続性、およびサブシステム234を介するビジネスプロセス実行など、さまざまな役割を演じる。
アプリケーションフレームワーク224を使用して実装される時に、ビジネスコンポーネント206は、詳細なコンポーネントメタデータを介して自己記述的になる。メタデータは、メタデータサブシステム248内に、またはコンポーネントの実行可能部分を用いて保管される。この情報が、アプリケーションフレームワーク224によって使用されて、ビジネスコンポーネント206およびこれらのコンポーネントのコンシューマ(consumer)にサービスが提供される。フレームワーク204によって、メタデータに関する挙動が提供され、その挙動を、コンポーネントの変更なしで追加することができる。もちろん、これは、機能性がハードコードされている場合には不可能である。
上述したビジネスエンティティによって、データが管理される。例として、コンポーネントは、1つの主エンティティを有し、この主エンティティが、コンポーネントの焦点である。コンポーネントの他のエンティティは、例として、主エンティティの子とすることができるが、そうである必要はない。エンティティのデータは、通常は、リレーショナルデータベースのデータベーステーブルに保管される。データへのアクセスは、下でサブシステム232および246に関して説明する。
ビジネスプロセスは、通常はある形でデータを変換する、ビジネスロジックステップの拡張可能なシーケンスである。ビジネスプロセスによって、データベーストランザクションも管理される。ビジネスプロセスは、ワークフローを介してまたは他の手段を使用して、コードで実行することができる。ビジネスプロセスの例に、ポスティング、文書承認、および価格計算が含まれる。ビジネスポリシは、ビジネスルールの置換可能な組であり、ビジネスルールは、データに対する制約(あるプロパティが有することのできる値、またはあるエンティティが他のエンティティに関して有しなければならない関係)または推論(例えば、ある述部が真である場合に、あるアクションを行わなければならない)である。ルールは、エンティティ、プロセス、およびポリシの一部であり、実際に、ビジネスロジックを、ビジネスルールの組として記述することができる。
コンポーネントへのインターフェースは、そのコンポーネント内のクラスのパブリックメンバである。コンポーネントのインターフェースの一部が、パブリック呼出しを介してアクセス可能である場合に、その部分はパブリッシュされる。パブリッシュされたメソッドによって、例として、セキュアな認可および認証が実施されることが保証される。
アプリケーションプログラマは、アプリケーションの構築を開始する時に、まず、必要な作業の論理単位を決定しなければならない。第2に、例として、アプリケーションプログラマは、作業の論理単位のそれぞれを、どのように組織化するかを決定し、最後に、カスタマイゼーションを許可するかどうかを決定する。
プロセス実行サブシステム234のプログラミングコンポーネント238によってサポートされるビジネスプロセスモデルによって、実行される作業が、3つの領域すなわち、ビジネスプロセス、ビジネスアクティビティ、およびビジネスオペレーションに分解される。ビジネスオペレーションは、単一の物理的トランザクションで実行される機能性の最小単位である。これの例が、通常のリレーショナルデータベーストランザクションなどのACID(アトミック、一貫、分離、持続可能)である。オペレーションによって、他のオペレーションを呼び出すことができ、集合セットによって、同一の物理的トランザクションを共有することができる。
ビジネスアクティビティは、可能な場合に1つの物理的トランザクションで集合的に実行されるビジネスオペレーションの組を含むコード駆動のプロセスである。しかし、これらを単一のトランザクションで実行することが実用的でない場合がある。というのは、並列性(複数のユーザによる並列動作)が悪くなるか、トランザクションがタイムアウトする場合があるからである。例えば、販売注文をポストする時に、これは1トランザクションで完了でき、したがって単一のビジネスオペレーションによって表すことができるが、そうではなくアクティビティにグループ化することができる。こうするのは、注文のポストによって、データベースのデータがロックされ、したがって、同一のデータにアクセスすることを望む他者が、ロックが解放されるまで待たなければならないからである。このロックは、物理的トランザクションの持続期間中は保持され、ユーザは、そのトランザクションが完了するまでそのデータにアクセスできなくなる。したがって、注文のポスト全体の間でロックを保持することによって、システムのスループットが低下し、注文を複数のより小さい動作に分割することによって、システムスループットが向上する。同様に、そのような動作の大きいグループの実行には、トランザクションの通常のタイムアウト期間より長い時間を要する場合がある。したがって、数千個の勘定科目を有する注文が、単一の動作にグループ化される場合には、その動作が終了する前にタイムアウトが発生する可能性が高い。したがって、複数の動作(この場合にはポスト動作)のスコープを、アクティビティによって決定することができる。例えば、ある注文のポスト動作を、単一のアクティビティによってスコープを決定される複数の動作に副分割することができ、これによって、タイムアウトの可能性が減り、システムの並列性およびスループットの向上がもたらされる。
ビジネスプロセスは、メタデータを使用して記述され、ランタイムエンジンによって実行される、データ駆動プロセスである。したがって、開発者は、通常はインペラティブ(imperative)コード(C#など)で記述されるオペレーションを構築する。これらのオペレーションは、グループ化され、アクティビティによってスコープを決定され、ビジネスプロセスは、アクティビティを呼び出して、所望のプロセスまたは作業の全体を実行する。
プロセス分類は、アプリケーション開発者のための作業の単位の階層的分解である。長時間動作する(または非同期の)トランザクションおよび短時間動作する(または同期式の)トランザクションならびにこれらのコンポーネントの再利用によって、ビジネスオペレーション、ビジネスアクティビティ、またはビジネスプロセスのどれを使用しなければならないかが決定される。表4に、作業の単位のそれぞれに適用される一般的なカテゴリの一部を示す。
表4には、プロセスおよびアクティビティについて停止点が使用可能であることが示されている。これは、プロセスまたはアクティビティが、ユーザまたは他のシステムなどの外部システムからのさらなる対話のために、その途中で停止する点を有することができることを意味する。しかし、オペレーションは、実行される作業の最小の単位なので、すべてが1回で実行され、停止点を許さない。
この表4には、プロセスが、メタデータによって定義され、アクティビティおよびオペレーションが、インペラティブコードによって定義されることも示されている。
この表4には、プロセスおよびアクティビティが、長いトランザクションであり、オペレーションが、短い(ACID)トランザクションであることも示されている。長時間動作トランザクションは、複数の物理的(短時間動作)トランザクションからなる。したがって、ACIDトランザクションの、分離(他のユーザからの)特性が、失われるが、他の特性は、まだ望まれる。これには、プロセスの途中での障害を扱う異なる手法も含まれる。というのは、トランザクションの完全なロールバックが、ほとんどの場合に不可能になるからである。
次に、この表4には、作業の単位中に障害が発生した時に何が起こるかが示されている。プロセスでは、例外または転送アーチ技法を使用することができる。チェックポインティングは、アクティビティで使用することができる。チェックポイントを用いると、後続の障害が発生した場合に、アクティビティを、最も最近に記録されたチェックポイントから再始動できるようになる。例えば、注文のバッチの一部が、アクティビティでポストされる場合に、各ポスト動作が完了した後にチェックポイントがセットされる。したがって、後続のポスト動作に障害が発生した場合に、このアクティビティを先頭から開始する必要はなく、最後に保存されたチェックポイントから始動するだけでよい。
次に、この表4には、作業の単位が、他のユーザによって実行される作業から分離されるかどうかが示されている。この表4には、オペレーション中に、データベースによって、用いられるデータがロックされ、その結果、他者がそのデータにアクセスできなくなることが示されている。アクティビティ中には、アプリケーションによって、用いられるデータが「使用中」としてマーク(「ロック」)される。この場合に、アプリケーションは、通常は、あるデータが修正されつつあることの表示をセットし、その結果、他のプロセスまたはアクティビティは、そのデータを見ることはできるが、それが現在変更中またはアクセス中であることの表示も有し、したがって、規定により、そのデータを修正しない。これは、ユーザのためにアプリケーションによって尊重される規定であって、物理的なロックではない。この表には、プロセスが、そのアクションからシステムの他の部分を分離するためには何もしないことも示されている。
次に、この表4には、所与の作業の単位が、他のどの作業の単位を呼び出せるかが示されている。プロセスは、別のプロセス、別のアクティビティ、およびおそらくはオペレーションを呼び出すことができる。アクティビティは、別のアクティビティまたはオペレーションを呼び出すことができ、オペレーションは、別のオペレーションを呼び出すことだけができる。
次に、この表4には、作業の単位のそれぞれをどのように呼び出せるかが示されている。プロセスおよびアクティビティは、例えば、Executeメソッドを呼び出すことによって呼び出されるが、オペレーションは、外部コンポーネントによって直接に呼出し可能ではないが、アクティビティまたは別のオペレーション(およびおそらくはプロセス)によってのみ呼出し可能である。
この表4には、次に、作業の単位がどのようにカスタマイズされるかが示されている。プロセスは、アクティビティの追加、除去、または順序変更によってカスタマイズすることができる。プロセスは、イベントを処理する方法(オペレーションまたはアクティビティの完了時、中断、再開、または打切りなど)によってカスタマイズすることもできる。アクティビティは、Executeメソッドが呼び出される前または完了した後にポストされるイベントに基づいてカスタマイズする、ポリシに基づいてカスタマイズする、あるいはアクティビティを置換することができる。オペレーションは、プリExecuteイベントまたはポストプリExecuteイベントにサブスクライブすることによって、またはポリシを実施することによってカスタマイズすることができる。
図4は、注文を作成し、指定された時刻にポストし、信用検査を実行するプロセスの配置を示す図である。図4には、プロセス分類を使用して、開発者が物理的におよび論理的にトランザクションおよびそれを取り囲むプロセスを定義できることが示されている。
図4の全体的な処理が、ブロック300によって示される。プロセスを形成するアクティビティが、ブロック300内に示されている。このアクティビティには、注文作成302、タイムアウト304、注文ポスト306、選択アクティビティ308、およびメッセージアクティビティ310が含まれる。プロセス300には、別のプロセス(信用チェックプロセス312)をプロセス300によって呼び出せることも示されている。
例の実施形態では、プロセス300が、作成者によって、プロセス記述言語(メタデータ、テキスト言語などとすることができる)を使用してオーサリングされ、このプロセス記述言語は、ワークフローランタイムエンジンによって解釈される。プロセス記述言語でのオーサリングの利益は、変更が行われた場合であっても、プロセスをもう一度実行する前に記述を再コンパイルする必要がないことである。しかし、プロセスが、C#などのプログラミング言語でオーサリングされた場合には、プロセスに対して変更を行うために、変更またはカスタマイゼーションが行われるたびにコードをコンパイルしなければならない。おそらくはより重要なことに、プロセス記述言語が正しく構造化される場合に、アップグレードカスタマイゼーションを、ユーザ介入なしで行うことができる。もちろん、個々のアクティビティまたはオペレーションのそれぞれを、例として、プログラミング言語でオーサリングすることができる。
プロセスの実行を開始するために、ユーザまたは別のシステムイベントによって、プロセスが前に進められる。図4に示された例では、ユーザが、画面320を介してデータ入力を実行することなどにより、新しい注文を作成する。これによって、注文作成アクティビティ302が開始される。注文作成アクティビティは、図示の実施形態では、複数のビジネスオペレーション322からなる。
注文作成アクティビティ302は、それ自体が複数のオペレーション322からなる。図4に示されたオペレーションには、文書番号の入手、文書への行の追加、および文書の再保存が含まれる。これが完了する時に、アクティビティ302によって、タイマ324を参照するタイムアウトアクティビティ304が呼び出される。タイムアウト304では、タイマ324からのタイムアウトイベントを待ち、その後、注文ポストアクティビティ306が呼び出される。
図4には、注文ポストアクティビティ306が、複数の追加のアクティビティ326から形成され、このアクティビティ326のそれぞれが、注文ポストアクティビティ306によって呼び出されることが示されている。アクティビティ326には、注文の検証、総勘定元帳への注文のポスト、および在庫目録への注文のポストが含まれる。これらのアクティビティ326のそれぞれが、複数のオペレーションから構成される。総勘定元帳への注文のポストおよび在庫目録へのポストのアクティビティに関する例示的オペレーションが、符号328および330によって示される。所望の作業を達成するために、任意の深さまでオペレーションまたはアクティビティを呼び出せることに留意されたい。また、チェックポインティングを使用すると、注文ポストアクティビティ306がある点で障害を発生する場合に、最初から再始動する必要はなく、もっとも最近に保存されたチェックポイントから再始動することができることに留意されたい。
注文ポストアクティビティ306が完了したならば、信用チェックサブプロセス312が呼び出される。信用チェックサブプロセス312をサブプロセスと呼ぶのは、プロセス300内から呼び出されるからである。図4には、ユーザが手動で信用を承認するのを待つという点で、サブプロセス312にも停止点が含まれることが示されている。これは、一実施形態で、画面332を介してデータを入力することによって行うことができる。
サブプロセス312の結果に基づいて、信用の承認または拒否のいずれかが行われる。承認される場合に、サブプロセス312によって、選択アクティビティ308が呼び出され、選択アクティビティ308では、注文された製品が、配送のために選択される。選択アクティビティは、複数のオペレーション334から構成されるものとして図示されている。選択アクティビティ308には、データ入力画面336を介する、製品が成功裡に選択されたことのユーザによる表示を受け取るために待つなど、停止点も含まれる。
サブプロセス312によって、信用チェックが拒否されると判定された場合に、メッセージアクティビティ310が呼び出され、このメッセージアクティビティ310には、プロセス300を開始したユーザに電子メールメッセージを送信し、信用チェックが拒否されたことを示すオペレーションが含まれる。
図4には、信用チェックプロセス312の後に分岐点が存在することが示されているが、もちろん、そのようなプロセス内で、任意の数の分岐を展開できることを諒解されたい。また、ユーザまたは開発者が、単純に、プロセスを記述するメタデータ(または他のプロセス記述言語)をカスタマイズすることによってプロセス300内のアクティビティまたはサブプロセスを挿入または削除することによって、プロセスを修正またはカスタマイズできることに留意されたい。同様に、ユーザまたは開発者は、望みに応じて、既にプロセスに含まれるイベントにサブスクライブし、カスタムコードを用いてイベントを処理するか他の形によって、プロセスをカスタマイズすることができる。
図5から図7は、さらに、ビジネスプロセスを生成するプロセスを示す図である。まず、図5に関して、ユーザインターフェース350が、印刷チェック352などのビジネスアクティビティを直接に呼び出すように構成されると仮定する。印刷チェックビジネスアクティビティは、もちろん、所望の作業を達成するためにビジネスオペレーションを呼び出す。
ここで、後に、ベンダ、カスタマ、または他の開発者が、より大きいビジネスプロセスの一部として、同一の印刷チェックビジネスアクティビティ352を使用することを望むと仮定する。ユーザインターフェース350またはビジネスアクティビティ352自体のいずれのコードも一切変更せずに、プロセス記述言語(例えばメタデータ)を変更して、印刷チェックビジネスアクティビティ352が、図6に示されたビジネスプロセス354のコンテキスト内で実行されることを指定することができる。したがって、ビジネスプロセスは、印刷チェックビジネスアクティビティ352を成功裡に完了するための前提条件のすべてを検証する責任を負う。承認取得サブプロセス356の形の中間ステージが、印刷チェックビジネスアクティビティ352と同一のビジネスプロセス354の一部にされると仮定する。承認取得サブプロセス356は、ユーザインターフェース358からの手動介入を必要とする停止点も有する。プロセス354では、ユーザインターフェース350を介する印刷チェックビジネスアクティビティ352の呼出しを試みるすべてのものが、必要な前提条件(承認取得サブプロセス356)をまず完了しなければ、失敗する。
その後、誰かが図6に示されたプロセス354を手動で起動するのではなく、ユーザが、プロセス354が所定のスケジュールで(毎月15日および30日など)自動的に起動するようにプロセスをカスタマイズすることを望むと仮定する。さらに、承認取得サブプロセス356を、手動介入を必要とせずにビジネスルールを使用することによって自動化できると仮定する。単純に、今は完全に自動化された承認取得サブプロセス356を起動するタイマ360を含むようにプロセス記述言語(例えばメタデータ)を修正することによって、新しいプロセス362を作成することができる。もちろん、メタデータも調整され、その結果、承認取得サブプロセス356の出力が、印刷チェックビジネスアクティビティ352を開始するための唯一の前提条件になる。
上述した図4から図7から、説明されたビジネスプロセスが、完全にカスタマイズ可能であることがわかる。停止点は、プロセス内またはプロセスの外部のアクティビティ内のいずれかの任意の点に、後で追加することができる。同様に、開発者は、オペレーション、アクティビティ、またはプロセスによって生成されるイベントにサブスクライブでき、イベントに応答するカスタマイズされたコードを挿入することができる。さらに、プロセスが、インペラティブコードではなくプロセス基準言語によって記述されるので、カスタマイゼーションを、再コンパイルなしで行うことができる。
図8は、ビジネスアクティビティをどのように実施できるかを示す図である。一実施形態では、上述したように、ビジネスアクティビティ400が、複数の個別のトランザクショナルステップ(ビジネスオペレーション)に分解される。
ビジネス機能性は、それが操作するデータの近くでそのユーザの近くに存在することが望ましい場合があり、ユーザは、そのデータに対して実行される機能性の結果を見なければならない。しかし、分散コンピューティング環境では、ユーザとデータが、しばしば、低から中程度の信頼性を示す、待ち時間の長いネットワークによって分離される。例えば、1つの一般的なシナリオでは、ユーザが、クライアントであり、データが、サーバに常駐する。
本発明の一実施形態によるビジネスオペレーションは、エージェント−サービスパターンに従う。ビジネスオペレーションエージェントは、プロセスのうちで、クライアントが直接に対話する唯一の部分である。ビジネスプロセスを実行する必要があるクライアントは、ビジネスオペレーションエージェントのインスタンスを作成し、それにプロパティを送って、必要な入力を供給する。エージェントは、対応するサービスクラスを突き止め(サービスファクトリ(service factory)を介して)、それをインスタンス化し、それを呼び出して、サービスを実施する作業を実際に実行する。
エージェント/サービスパターンを介して、プログラミングモデルによって、位置透明性が回避される。といのは、実行の位置を、分散アプリケーションを構築する時に考慮できるからである。エージェント/サービスパターンによって、クライアント/サーバシナリオおよび多数の他のシナリオをサポートするプログラミングモデル抽象化を提供することによって、高いデプロイメント柔軟性ももたらされる。
具体的に言うと、図8に、さらに、ビジネスアクティビティ400が、3つのビジネスオペレーションすなわち、オペレーション1、2、および3を使用して実施されることが示されている。ビジネスオペレーション1は、エージェント402およびビジネスオペレーションサービスファクトリ404を有する。ビジネスオペレーション2も、エージェント406およびサービスファクトリ408を有する。ビジネスオペレーション3も、エージェント410およびビジネスオペレーションサービスファクトリ412を有する。
いくつかのビジネス機能性を与えられれば、エージェントは、望み通りにできる限り機能性のユーザの近くで動作し、サービスは、望み通りにできる限りデータの近くで動作する。「近さ」は、各デプロイメントシナリオおよびユーザの各種類によって異なる可能性がある。
エンティティクラスおよびビジネスプロセスクラスを、エージェント部分およびサービス部分に分割することができる(図8に示されたエージェントおよびサービスなど)。エージェント部分は、普通のクラスインスタンスであり、状態が保持されるが、サービス部分では、呼出しにまたがって状態が保持されない。必要な場合には、エージェントが、サービスを呼び出して、データ操作を実行し、ビジネスプロセスを実行する。機能性をエージェントとサービスの間で分割する方法の詳細は、望みに応じて変更することができる。
ビジネスコンポーネントを使用する開発者は、通常は、エージェントだけを扱う。エージェントによって、豊かなオブジェクト指向プログラミングモデルが提供され、このモデルでは、呼出しごとにデータを再指定する必要がある手続き型呼出しを用いてサービスに直接話しかけることに制限されるのではなく、呼出しにまたがってデータが保持される。サービスを呼び出す時には、開発者が要求を定式化するために内部状態を使用することを必要とするのではなく、エージェントによって、その内部状態を使用して要求が定式化される。これによって、開発者の経験が単純化される。
したがって、エージェント/サービスパターンによって、クライアントとサーバの両方のための単一のプログラミングモデルが提供される。エージェントは、クライアントマシンによって、またはサーバマシン上のサーバによってのいずれかで使用することができる。インターネット待ち時間コストも減る。というのは、状態が、1つのラウンドトリップで(従来のようにプロパティごとに1ラウンドトリップではなく)エンティティグラフからクライアントに移動されるからである。同様に、エージェントによって、ラウンドトリップを回避するクライアント側挙動がもたらされる。さらに、エージェント対サービス相互作用は、ステートレスであり、サーバのスケーラビリティおよび信頼性の助けになる。最後に、同一のコンポーネントによって複数の異なるデプロイメントシナリオを実装する能力が、非常に高くなる。
<プロセスのカスタマイゼーション>
プロセスをカスタマイズするために、エージェント自体が置換されることはない。クライアント(プロセスまたはアクティビティなど)によって、必ず同一のオリジナルビジネスオペレーションエージェントが作成され、呼び出される。これによって、クライアントは、安定したインターフェースを有するので、必ずエージェントを呼び出せることが保証される。ビジネスオペレーションエージェントに、追加のプロパティを追加できる拡張フィールドを関連付けることができる。これによって、オリジナルエージェントインターフェースコントラクト(contract)を破らずに、エージェント拡張性が実現される。エージェントは、複数の異なる形で、実行すべき正しいサービスを突き止めることができる。
ビジネスプロセスは、そのプロセスが置換のために計画されたプロセスであるか、アドホックな基礎で置換されるプロセスであるかに応じてカスタマイズすることができる。置換のために計画されたものである場合には、呼出し側アプリケーション(またはクライアント)が、現在呼び出されているエージェントにサービスIDを渡す。サービスIDによって、アクティブにされるサービスが示される。したがって、呼出しによって、エージェント402(図8に図示)に特定のサービスIDが渡される場合に、エージェント402によって、サービスファクトリを介して、ビジネスオペレーションサービス414が識別され、インスタンス化され、オペレーションを実行するために呼び出される。単純に異なるサービスIDを渡すことによって、サービスを変更することができる。
アドホックな基礎で置換されるオペレーションについて、例としてビジネスオペレーションサービスの組込み選択をオーバーライドするために使用することができる2つの異なる方法がある。例えば、サービスIDが、ストア内のメタデータ構造417に保管される場合に、カスタマイザによって、単純に、メタデータのうちでオーバーライドされるビジネスオペレーションのサービスIDを保持する部分をカスタマイズすることができる。これは、使用されるビジネスオペレーションのサービスファクトリに渡され、これによって、新たに識別されたビジネスオペレーションサービスがインスタンス化され、呼び出される。もう1つの実施形態では、使用される特定のサービスファクトリ(例えばファクトリ412)によって、イベントが伝搬される。サービスオペレーションのカスタマイズを望むベンダは、このイベントにサブスクライブし、関連するイベントハンドラ422に、サービスIDの値を変更する論理を置くことができる。この方法では、ビジネスオペレーションのカスタマイズが可能になるだけではなく、ビジネスオペレーションエージェントに含まれるデータに基づく動的選択も可能になる。
<カスタマイゼーションのためのコンテキスト>
本発明の一実施形態によれば、カスタマイズされる必要がある可能性があるソフトウェアに、コンテンツの複数の基本クラスが含まれ、これには、ユーザインターフェースコンテンツ、データ、およびプロセスコンテンツが含まれる。ユーザインターフェースコンテンツには、ユーザが画面またはレポートで見るコンテンツが含まれる。これには、レイアウト情報、メッセージ、フィールドラベルなどが含まれる。データは、システムによって保管される情報を表す。例えば、データに、カスタマ、在庫品目、注文などが含まれる。プロセスコンテンツには、定義されたステップのセットを介して作業をルーティングするワークフロー指定ならびにあるデータに対して明瞭に定義されたアクションを実行する低水準処理論理が含まれる。プロセスコンテンツの例に、例えば、台帳に注文をポストするか在庫品目を予約する、ワークフローおよび低水準処理論理を含めることができる。これらのタイプならびに他のタイプのコンテンツを、本発明のさまざまな実施形態に従ってカスタマイズすることができる。
カスタマイズされるコンテンツのタイプに無関係に、カスタマイゼーションは、所与のコンテキストに関連することが望ましい場合がある。コンテキストによって、カスタマイゼーションが関連する時が左右される。すなわち、コンテキストという概念によって、あるカスタマイゼーションを特定のユーザだけに適用し、別のカスタマイゼーションを特定のグループに属するユーザの組全体に適用し、別のカスタマイゼーションを、ユーザに無関係に会社全体に適用することができる。これらは、コンテキストの3つの異なる例にすぎず、多数の他のコンテンツも使用することができる。
<エンティティのカスタマイゼーション>
カスタマイゼーションサブシステム242の動作をよりよく示すために、図9に関して説明を進める。この図9に、エンティティのカスタマイゼーションがよりよく示されている。これを、本明細書で「エンティティ拡張」とも称する。
図9は、カスタマイゼーション対応サブシステム内のエンティティが作成される時に作成されるデータ構造を示す図である。図10は、図9に示されたデータ構造と、エンティティがカスタマイズされる時に作成されるか修正されるデータ構造を示す図である。
図9に、ビジネスアプリケーションのベースエンティティ480を示す。例示的なビジネスエンティティ480は、ビジネスアプリケーション内でカスタマを識別する「カスタマ」エンティティである。もちろん、図示された特定の例が、例示のみであり、本発明の概念が、他のエンティティにも適用されることを諒解されたい。ベースエンティティ480は、拡張される(またはカスタマイズされる)エンティティを表す。図9には、ベースエンティティ480が、ERマップ内のカスタマERマップエントリ482によってリレーショナルデータベース(図13に関して後で詳細に説明する516など)にマッピングされることも示されている。ベースエンティティ480と他のエンティティの間の関係は、カスタマEA(エンティティ関連)マップ484で識別される。図9には、さらに、リレーショナルデータベース516に、例として、カスタマエンティティ480に関連する、カスタマIDフィールド、名前フィールド、住所フィールド、およびカスタマの識別に望ましい他のすべてのフィールドを含むカスタマテーブル486が含まれることが示されている。
このカスタマイゼーションサブシステムは、エンティティをカスタマイズするのにソースコード修正を必要としないので、ベース拡張エンティティ488が、ベースエンティティ480の再コンパイルなしでベースエンティティに対する新しいエンティティ関係の動的追加を可能にするために設けられる。ベース拡張エンティティ488は、作成されるベースエンティティ480ごとに作成される。ベース拡張エンティティ488には、例として、この例ではベース拡張エンティティ488が「CustomerExtension」と命名されるように、ベースエンティティ480の名前が含まれる。ベース拡張エンティティ488は、当初は空であるが、やはり空である、カスタマ拡張E−Rマップ490およびカスタマ拡張EAマップ492を含めることができる。ベースエンティティ480には、ベース拡張エンティティを識別するコンポジション(composition)フィールドが含まれる。例えば、ベースエンティティ480に、名前が「Extension」で型が「CustomerExtension」であるコンポジションフィールドを含めることができる。Customerエンティティ480のエンティティ関連メタデータによって、CustomerExtensionエンティティ488との関係が反映される。エンティティ480および488の両方が、例として、本発明による製品がインストールされる時に、DLLとして出荷され、展開される。その点で、カスタマイザによって、カスタマイザユーザインターフェースを介してCustomerエンティティ480に拡張プロパティを追加することができる。
図10に、拡張プロパティを追加する方法を示す。カスタマイザインターフェースに、識別されたエンティティに追加される新しいプロパティのリストを用いてカスタマイゼーションサブシステム242を呼び出すユーザインターフェース(UI)が含まれる。追加される新しいプロパティの指定が、サブシステム242に渡される。カスタマイザによって、特定のカスタマイゼーションが適用される特定のコンテキストを識別することもできる。
これによって、サブシステム242によって、ExtensionEntityと称する新しいエンティティが作成される。図10には、2つのExtensionEntity491および493が示されている。各ExtensionEntity491および493に、それぞれ、カスタマイズされるプロパティを識別する少なくとも1つのExtensionプロパティ494および496が含まれる。図10には、カスタマイゼーションがカスタマイザXYZおよびカスタマイザABCという符号を付けられた2つの異なるカスタマによって行われた実施形態が示されている。したがって、ExtensionEntity491は、例として、XYZ.CustomerExtensionと命名され、ExtensionEntity493は、例として、ABC.CustomerExtensionと命名される。
例えば、カスタマイザXYZによって、エンティティ480によって識別されるカスタマによって好まれる技師の識別を含めるようにカスタマエンティティ480をカスタマイズすることが望まれると仮定する。その場合に、XYZ.CustomerExtensionエンティティ490に、「preferred technician property(好ましい技師プロパティ)」と称するExtensionプロパティ494が含まれる。同様に、カスタマイザABCによって、エンティティ480によって識別されるカスタマに関連する信用限度を含めるようにカスタマエンティティ480をカスタマイズすることが望まれると仮定する。その場合に、ABC.CustomerExtensionエンティティ493に、所与のカスタマに関連する「credit limit(信用限度)」を識別するExtensionプロパティ496が含まれる。
サブシステム242は、ExtensionEntity491および493を、それに対応するExtensionプロパティ494および496と共に作成するだけではなく、例として、それぞれ、ExtensionEntity491および493のそれぞれに対応するE−Rマップ511および513ならびにE−Aマップ515および517も作成する。さらに、サブシステム242は、リレーショナルデータベース516のテーブル(ExtensionEntity491および493および他の関連するデータ構造に対応するデータアクセスシステム246を介するなど)を作成する。
最後に、ベースExtensionEntity488が再コンパイルされ、そのE−Rマップが再生成されて、ExtensionEntity491および493との新しい関係が反映される。同様に、E−Aメタデータが生成されて、ExtensionEntityとの新しい関係も反映される。
図10には、一実施形態で、エンティティ拡張が図10で521として示されたテーブルに保管されることも示されている。テーブル521に、カスタマエンティティ480に関連するデータが保管される元のテーブルが含まれることがわかる。元のテーブルは、単純に、エンティティ拡張に対応する複数の追加フィールド523および525を含むように拡張される。したがって、このテーブルの元の列にある列は、無修正である。拡張は、エンティティ拡張に対応する元の表に単純に追加される。
<メタデータサブシステム248およびメタデータのカスタマイゼーション>
図11は、サブシステム248によってサポートされるメタデータ構造と、本明細書で「デルタベースのカスタマイゼーション」と称するメタデータカスタマイゼーションを示す図である。図11のメタデータ構造は、メタデータ構造ツリー500の一部によって示される。ツリー500の図11に示された部分が、例示的であるが、システムのメタデータを定義するはるかに大きいツリーの非常に小さい部分であることを諒解されたい。図11に示された部分には、このメタデータに、Customer_Maintenance_Screen(カスタマ保守画面)をそれ自体に含むFormセクションが含まれることが示されている。Customer_Maintenance_Screenには、複数のTab(タブ)コントロールを有するフィールドが含まれる。Tabコントロール1は、Field(フィールド)1を関連付けられている。Field1は、フィールド名、フィールドの背景色、フィールドがイネーブルされているかディスエーブルされているか、フィードの長さ、およびフィールドのデータ型(この場合にはMaxValueである)を含む、複数のプロパティを有する。もちろん、フィールドが、複数の追加プロパティも有することができる。メタデータ構造500は、メタデータストアに保管される。
メタデータ構造500をカスタマイズするために、カスタマイザによって、サブシステム242へのカスタマイザインターフェースを介してカスタマイゼーション仕様が入力される。
本発明の実施形態では、データ構造500内のすべての型のメタデータのカスタマイゼーションが、デルタを使用して達成される。デルタは、メタデータ構造500内での元の形からの変化を表す。カスタマイゼーションに、任意の数n個のデルタを含めることができ、各デルタは、ベースターゲットの既知のインスタンスに対する特定の変化すなわち追加または削除を表す。
値の変更の例として、元のメタデータ構造500内で、名前「foo」を有するフィールドの背景色が、黄色である。カスタマイザによって、背景色を青にすることが望まれると仮定する。その場合に、カスタマイザは、単一のデルタを含む単一のカスタマイゼーション行う。このカスタマイゼーションは、Customer_Maintenance_ScreenのTab1のフィールド「foo」に関する。カスタマイゼーションは、メタデータストアの別々の部分に、またはリレーショナルデータベース516にマッピングされるメタデータカスタマイゼーションエンティティ502に保管することができる。メタデータストアの一部を形成することができるリレーショナルデータベース516内のテーブルが、テーブル504によって示され、このテーブル504には、FormsのCustomer_Maintenance_Screen部分のフィールドのタブ1の下のフィールド1の背景プロパティを識別するメタデータIDが含まれる。テーブル504には、デルタを識別するデルタ情報も含まれ、このデルタ情報は、フィールドの背景色が青に変更されることである。したがって、デルタは、修正されるソースのコピーではない。そうではなく、デルタは、構造500のどのデータを修正しなければならないかの指定のみである。デルタだけを追跡することによって、多数の修正を衝突なしで1つのターゲットに動的に適用することが可能になる。
デルタを適用するために、カスタマイゼーション対応サブシステムは、サブシステム242を呼び出し、このサブシステム242は、現在のコンテキストでカスタマイゼーションを適用する。例えば、カスタマイゼーション対応サブシステムが、Formをロードするサブシステムであると仮定する。さらに、ユーザが、Customer_Maintenance_Screenを表示することを要求したと仮定する。もちろん、サブシステム242によって、Customer_Maintenance_Screenという名前のフォームの現在のコンテキストに適用されるリレーショナルデータベース内のすべてのインスタンスが識別される。サブシステム242によって、識別されたインスタンスごとに、カスタマイゼーションが適用される。メタデータに適用されるカスタマイゼーションによって、Customer_Maintenance_ScreenのTab1の下のField1の背景色を青に変更することが要求されることがわかる。サブシステム242内のコードによって、この変更が行われ、構造500のカスタマイズされた部分が、画面のレンダリングに使用するために、カスタマイゼーション対応のフォームローダに渡される。
<デプロイメントサブシステム244内の実行ティア(tier)>
デプロイメント/管理サブシステム244によって、柔軟なデプロイメント機能が提供される。アプリケーションのコンポーネントを、単一のサイトに置く、外部サイトでホストする、オフラインで使用する、単一のマシンによって使用する、または複数のサーバのインストールで使用する、あるいはこれらの組合せを行うことができる。
実行アーキテクチャは、3つの論理ティアすなわち、レンダリングティア503、ワークスペースティア505、およびエンタープライズティア507に階層化される。3つのティアのすべてを同一のマシンで実行することができ、あるいは、各ティアを別々のマシンで実行することができる。例として、1つのティアをマシンの間で分割することはできない。この階層化によって、アプリケーションを、複数の構成で展開できるようになる。一実施形態によれば、エンタープライズティア507が必要であるが、他のすべてのティアは任意選択である。例えば、ユーザインターフェースがない場合にはレンダリングティア503がない。
3つの論理サービスによって、プレゼンテーション(またはUI)509、エンタープライズプロキシ511、およびメッセージレシーバのシナリオを含む異なるシナリオについてこれらのティアがサポートされる。これらのサービスは、すべてのアプリケーションまたはシナリオに関する1つのサービスがないという点で論理サービスである。
レンダリングティア503は、HTMLまたは他のレンダリングフォーマットを受け入れ、あるデバイスでユーザ用の画面表示を作る。クライアント側だけの実施形態では、製品のエンドユーザが、この層だけと対話する。その場合に、レンダリングティアは、ユーザイベントを受け取り、それらを処理するか、プレゼンテーションサービス509に渡す。プレゼンテーションサービス509は、レンダリングティア503をサポートし、したがって、ユーザインターフェースが存在する時に限って必要である。プレゼンテーションサービス509は、レンダリングティア503上、ワークスペースティア505上、またはこの両方で動作することができる。プレゼンテーションサービス509によって、エージェントとの対話が、ユーザに表示されるページにマッピングされる。プレゼンテーションサービス509は、HTMLを作るか、あるいは、レンダリングエンジンとの異なるコントラクトを有することができる。
ワークスペースティア505によって、エンタープライズへの要求が作成され、サブミットされる。これは、コンシューマシステムまたは単一ユーザに関する実行環境である。ワークスペースティア505が、エンタープライズティア507からオフラインで動作するシナリオでは、エンタープライズプロキシ511によって、ローカルストアを含む有用な複数のサービスが提供される。エンタープライズプロキシ511は、同期化エンジンとして働き、ワークスペースティア505上で動作する。エンタープライズプロキシ511は、購入注文を作成する際に使用される製品カタログなど、正しい要求をサブミットするためにエンタープライズ507から入手される基準データを保持することができる。したがって、ワークスペースティア505によって、エンタープライズプロキシ511がエンタープライズであるかのように、エンタープライズプロキシ511への要求が行われる。プロキシ511は、可能であればそのローカルストアから要求をサービスする。同様に、エンティティを作成するか修正する、保留中の要求も、保管することができる。実際のエンタープライズティア507への再接続の際に、エンタープライズプロキシサービス511は、保留中のすべての要求をエンタープライズ507と一致させ、基準データをリフレッシュする。
エンタープライズティア507によって、アプリケーション機能性を実装するビジネスロジックが保持される。エンタープライズティア507は、そのデータベース513への直接アクセスを提供せず、すべての要求を検証する。エンタープライズティア507上のメッセージレシーバサービスが、クライアントから要求を受け取って、データを更新する。メッセージレシーバサービスは、サーバ内のデータ513の保全性を保護するために、これらの要求を受け取り、これらの要求に含まれるデータを検証する。クライアントが完全に信頼される場合には、メッセージレシーバサービスは不要である。このサービスは、エンタープライズティア507上で動作する。
<データアクセスサブシステム246>
図13は、本発明によるデータストレージおよびアクセスシステム510の一実施形態を示すブロック図である。システム510に、データアクセスサブシステム(またはエンティティパーシスタンスシステム)246、リレーショナルデータストア機構514、リレーショナルデータベース516、およびクラス−テーブルマッピング518が含まれる。システム510は、例として、テーブルおよび列など、データベーススキームの要素ではなく、エンティティ(またはオブジェクト)およびそのプロパティに関して、保管されたデータを参照できる、オブジェクト−リレーショナル(O−R)データストレージシステムである。図13に、これを行う機構の1つを示す。
図13からわかるように、データを、エンティティ226に関して編成することができる。各エンティティに、例として、メタデータ部分522(メタデータサブシステム248内のメタデータストアに保管される)および残りの属性部分524が含まれる。メタデータ部分522によって、エンティティ226が記述され、残りの属性524によって、エンティティに保管されるデータなど、エンティティ226のさらなる属性が定義される。エンティティ226の属性のそれぞれが、対応するエンティティテーブル526および所与のエンティティテーブル526の特定の列528にマッピングされる。
データアクセスサブシステム246は、クエリ530など、検索されるエンティティまたはエンティティの一部あるいはエンティティのグループを指定する、さまざまな形の要求を受け取ることができる。クエリ530は、例として、テーブルおよび列に関するのではなく、オブジェクト(「エンティティ」)およびプロパティに関して表すことができる。
どの場合でも、データアクセスサブシステム246は、クエリ530を受け取り、クラス−テーブルマッピング518にアクセスする。この形で、データアクセスサブシステム246は、クエリ530によって識別されるエンティティのデータの位置を判定することができる。データアクセスサブシステム246には、クエリ530を、リレーショナルデータストア機構514への入力に適するリレーショナルデータベースクエリ532に変換するトランスレータ513が含まれる。例示的実施形態の1つで、リレーショナルデータストア機構514が、米国ワシントン州レッドモンドのMicrosoft Corporation社から入手できるものなどの、リレーショナルデータベース516にアクセスするSQL SERVERデータベースサーバである。したがって、データアクセスサブシステム246は、オブジェクトに関するクエリ530を受け取り、これらのクエリを、適当なリレーショナルデータベースクエリ532に変換し、このリレーショナルデータベースクエリ532が、データストア機構(またはサーバ)514に供給され、このデータストア機構514によって、実際にリレーショナルデータベース516内のデータがアクセスされる。
リレーショナルデータストア機構514によって、要求されたデータが検索され、リレーショナルデータベース結果534の形で返される。この結果は、データアクセスサブシステム246に返され、データアクセスサブシステム246は、リレーショナルデータベース結果534を、要求された結果セット536に定式化する。例示的実施形態の1つでは、結果セット536が、クエリ530で要求される。クエリ530は、結果を1つまたは複数のオブジェクトの形または単純にデータセットとして出力することの要求とすることができる。どの場合でも、データアクセスサブシステム246によって、リレーショナルデータベース結果534が、適当なフォーマットに編成され、結果セット536として出力される。
データアクセスサブシステム246によって、ユーザおよび開発者から物理的なデータストア(機構514およびデータベース516)が隠蔽され、ユーザおよび開発者が、データベース516のスキーマおよび特定のデータストア機構514の構文を知ることを必要とするのではなく、エンティティに関して作業できるようになる。
<エンティティ226の包含階層(containment hierarchy)>
図14は、オブジェクトまたはエンティティを含む例示的なアプリケーションの階層構造の例を示す図である。図14からわかるように、エンティティを、メンバ602、604、および606に編成することができ、これらのメンバに、1つまたは複数のエンティティを含めることができる。本明細書で使用されるメンバは、共通の目的を達成するために一緒にグループ化された1つまたは複数のエンティティである。本発明を実施するモジュールに、メンバへの参照が含まれない場合があるが、開発者は、メンバを念頭においてアプリケーションを設計することを望む可能性がある。
例示的実施形態では、エンティティまたはオブジェクトが、親/子関係で編成される。メンバ602には、会社のOrder(注文)を構成するエンティティが含まれる。具体的に言うと、Orderエンティティ608に、小計、税金、運送量、および総計というプロパティなどの情報が含まれる。Addressエンティティ610は、Orderエンティティ608の子エンティティであり、これには、特定の注文に関する出荷先住所に関連する情報を含めることができる。同様に、Orderエンティティ608に、複数のOrderLine(注文明細行)エンティティ612を含めることができ、各OrderLineエンティティ612に、さらなる情報を有する1つまたは複数のOrderSerialエンティティ614を含めることができる。図14の表記「n」が、特定のエンティティに複数の同一の構造のエンティティを含めることができることを指すのに使用されることに留意されたい。例えば、上で示したように、1つまたは複数のOrderSerialエンティティ614を、OrderLineエンティティ612の子エンティティ(菱形がついた線615によって識別される)とすることができる。
本明細書で示す例では、メンバ604が、一般に、Customer情報に関し、Customerエンティティ616を含み、各Customerエンティティ616に、1つまたは複数のAddressエンティティ618を含めることができる。
Customerエンティティ616およびOrderエンティティ608は、それぞれ、Companyエンティティ620の子エンティティであり、Companyエンティティ620の組に、Enterpriseエンティティ622の子エンティティが含まれる。この例では1つまたは複数の通貨(Currency)エンティティ624を含むメンバ606も、Enterpriseエンティティ622の子である。
構造の親/子階層600の他に、この例には、エンティティのクラスの間の一方向の関連も存在する。クラスは、類似する構造を有するエンティティの組である。上で示したように、Orderエンティティ608のすべてが、Orderクラスに含まれる。同様に、Customerエンティティ616は、Customerクラスに関係する。矢印628によって示される関連によって、クラスが別のクラスを知ることができることが示される。この例では、Orderクラスが、Customerクラスについて知るが、親/子関係の場合のようにCustomerクラスを組み込むか所有してはいない。
<エンティティ226のエンティティキー>
エンティティによって、データが管理される。エンティティによって、その内部データおよび他のエンティティとの関係の保全性が保持される。エンティティのデータは、プロパティを介してアクセスされる。各エンティティは、抽象化の1つの形である。エンティティの特性に、抽象クラス「EntityKey」のサブクラスによって表される識別を有することが含まれる。階層全体の中で、構造600内のデータを管理する各エンティティは、そのデータがどこに保管され、誰が所有するかを知らないという点で、位置独立である。しかし、EntityKeyは、他のエンティティとの関係を定義するのに使用され、図14の接続によって表されるものとみなすことができる。
エンティティのインスタンスを、別のエンティティのインスタンスに含めることができる。含まれるエンティティを子と呼び、コンテナを親と呼ぶ。子インスタンスは、親より長く存在することができず、1つの親だけを有しなければならない。あるアプリケーションのそのような関係すべての組が、その包含階層である。この種の階層は、多くのビジネスアプリケーションに似る。この階層をサポートすることによって、このシステムが、ビジネスアプリケーションを構築する際に開発者によりよく適するようになることがわかっている。
図14は、アプリケーションの包含階層の例を示す図である。包含階層によって、エンティティの型およびそれに対応する親子関係が記述される。ここで「Enterprise」エンティティ622として図示された、包含階層のルートがある。ルートコンテナまたはルートエンティティによって、包含階層のサーバのアドレスが供給されるが、クラスまたはインスタンスを、他のサーバまたはコンピュータ可読メディアに配置することができる。一実施形態では、ルートエンティティによって、サーバのURL(Universal Remote Locator)が供給される。この実施形態では、コンテナのもう1つの広義のクラスが、Companyエンティティ620である。
包含階層が、継承階層と同一でないことに留意されたい。継承階層は、最上位を除く各項目が、その上位の項目の特殊化された形である、関係の分類である。図14に示した例では、Orderクラス608およびCustomerクラス616は、Companyクラス620の特殊化された形ではない。そうではなく、Orderクラス608およびCustomerクラス616は、異なる型の情報を保持する異なるクラスである。これは、包含階層に継承が存在することができないと言っているのではない。いくつかの実施形態で、継承階層が、任意のクラスについて存在することができる。したがって、例えば、Customerクラス616の変形など、クラス内の変形を設けることができる。
アプリケーションには、3つの形のエンティティがある。この形には、コンポーネントコンテナ「Enterprise」622および「Company」620と、プライマリエンティティと、サポーティングエンティティが含まれる。プライマリエンティティまたはルートエンティティは、同一の名前のコンポーネントコンテナの焦点であり、サポーティングエンティティは、プライマリエントリの子またはそのピアのいずれかである。例えば、Orderメンバ602は、Orderルートエンティティ608からなり、Address610、OrderLine612、およびOrderSerial614は、サポーティングエンティティである。エンティティのデータは、通常は、図13に関して上で説明したものなどのデータベーステーブルに保管される。コンポーネントは、論理設計の単位であり、データベースと対話しない。
上述したように、あるエンティティのプロパティのそれぞれが、図13に示された、対応するエンティティテーブルおよび所与のエンティティテーブルの特定の列にマッピングされる。各エンティティテーブルには、属性の列のほかに、特定のエンティティのすべての親を識別する1つまたは複数の列も含まれる。図15を参照し、例としてOrderSerialを使用すると、OrderSerialテーブル650に、識別子の列、具体的には、「Company_id」652、「Order_id」654、OrderLine_id656およびSerial Number658が含まれ、これらに、属性の1つを含めることができ、これらは、それ自体の識別子(id)として機能することができる。
リレーショナルデータベースでは、特定のエンティティに関連するデータ、この例では特定のOrderSerialエンティティ614に関連するデータを識別し、操作するために、テーブルとの対話で、識別子のそれぞれを指定することが必要になる。しかし、この情報は、包含関係の親から推論される。例えば、特定のOrderLineエンティティ612を操作しており、あるOrderSerialエンティティ614に関して尋ねるか、それに対するアクションを実行したい場合に、データアクセスサブシステム246によって、エンティティの親を再識別する必要なしに、ユーザが参照している1つまたは複数のOrderSerialエンティティを確認することができる。本発明では、包含階層を用いると、テーブルの関係(すなわち識別子)、したがってエンティティの関係を、暗黙の背景情報にすることができる。言い換えると、エンティティの識別は、親/子関係から推論され、その結果、他の形で再記述するか管理する必要がなくなる。リレーショナルデータベースシステムでは、エンティティを識別するのに使用されるテーブル内の識別子を、主キーと呼び、ここで、その識別子の組合せは、一意である。しかし、通常、主キーは、列の集合にすぎず、豊富な挙動を付加されていない。さらに、ユーザが選択した識別子は、あるスコープ(単一のビジネス単位など)内でのみ一意であり、アプリケーションの範囲全体で一意でない場合がある。一般的にアプリケーションによって生成され、ユーザから隠蔽される代理キーは、一意である可能性があるが、識別子によって参照されるエンティティの親がどれであるかなどの階層は記述されない。
本発明のもう1つの態様が、これらの問題を解決するEntityKeyであり、具体的には、各エンティティに関連するEntityKeyによって、包含階層全体を通じて各エンティティを一意にすることができ、包含階層内のエンティティの位置から、親がどれであるかを推論することができる。エンティティは、エンティティキーまたは言い換えるとエンティティのキーによって識別されるオブジェクトである。EntityKeyは、リレーショナルテーブルの主キーと同一の機能をサービスするが、リレーショナル主キーと異なって、アプリケーション空間全体を通じてユニバーサルに一意であり、階層的すなわち、階層内の位置がわかっている。このアーキテクチャでは、EntityKeyは、エンティティとは別個の、定義されたクラスである。EntityKeyクラスを、リレーショナルデータベーステーブルにマッピングすることができる。階層全体のすべてのエンティティが、唯一のEntityKey値を有する。エンティティのキーを与えられれば、それがローカルサーバ上にあっても、インターネットなどの広域ネットワークに配置されていても、そのエンティティを検索することができる。
各EntityKeyには、この概念において、3つの情報すなわち、それが参照するエンティティの型またはクラス、それが参照するエンティティのID、およびそのエンティティの親のEntityKeyに関する情報が含まれる。図16は、特定のOrderSerialエンティティ614AのEntityKey(ここではOrderSerial.Key)680Aの絵図表現である。
階層内のエンティティは、その識別子と親の識別子によって完全に識別される。この形で、同一のローカル識別子を、空間全体の複数の位置で使用することができる。というのは、エンティティを一意に識別するのに異なる親が使用されるからである。これは、図14のEnterprise空間を絵図的に表すことによってより簡単に諒解できる。図17を参照すると、Enterpriseが、円700によって示されている。Enterprise700に、複数の会社、ここではCompany A702およびCompany B704を含めることができる。しかし、各Company702および704は、両方が同一の識別子、ここでは「Order 1」706および「Order 2」708を有する2つのOrderを有することができる。それでも、Company A702内のエンティティは、Order 1 706およびOrder 2 708の識別子が各Company内で使用されていても、Company B704のエンティティに関して一意に識別される。というのは、エンティティのそれぞれが、階層の親/子関係を有する関連するキーによって一意に識別されるからである。
多くのアプリケーションで、Company Aのデータが、Company Bのデータと完全に異なるデータベースに保管されることに留意されたい。
本明細書でOrderSerial.Keyとして識別される、OrderSerial614に関連する別々の独立のクラスもある。一般に、EntityKeyは、それが参照するクラスとは別のクラスである。エンティティ680Aは、OrderSerial.Keyクラスのオブジェクトの例である。図16を参照すると、OrderSerialエンティティ614Aに、Order Serialに関連するすべての属性720が含まれ、これは、任意の数の属性とすることができる。OrderSerial.Key680Aには、OrderSerialエンティティ614Aの1つまたは複数の属性のサブセットが含まれ、具体的には、OrderSerial.Keyに、識別子属性722が含まれる。したがって、OrderSerialエンティティ614Aに、1000個の属性が含まれるが、その属性のうちの2つによって、各OrderSerialエンティティが一意になる場合には、これらの属性がOrderSerial.Keyにコピーされて、エンティティへの識別子が形成される。矢印724は、エンティティ614Aとエンティティ680Aの間の1つまたは複数の共通の識別子属性を表す。
OrderSerialの各エンティティを一意にする、OrderSerial.Keyの属性は、EntityKeyの最初の要素であり、これによって、キーを特定のエンティティに関連付けられるようになる。
EntityKeyの第2の要素は、それに対する識別子を有するエンティティの型726である。この例では、クラスの型はOrderSerialである。
EntityKeyの第3の要素は、エンティティの親のEntityKeyに関する情報である。この実施形態では、この情報が、矢印730によって示される、エンティティ614Aの親に対応する親キー740への参照である。言い換えると、第3の要素を、別のキーへの参照とすることができる。この構造によって、EntityKeysが再帰的に定義されるようになる。しかし、望まれる場合に、親キー情報の一部またはすべてを、EntityKeyに直接に保管することができることに留意されたい。EntityKey情報の保管およびアクセスに関するこの形および他の類似する形が、本明細書に含まれることが意図されていることを理解されたい。
図18を参照すると、EntityKeysが、Companyのエンティティ、Orderのエンティティ、OrderLineのエンティティ、およびOrderSerialのエンティティについて設けられる。この例では、IDが、1フィールドからなり、型を、キーの名前から確かめることができる。例えば、型OrderSerialは、名前OrderSerial.Keyから得られる。親キーへの参照が、矢印によって示される。したがって、やはり、階層内のエンティティの位置は、関連するEntityKeyによって完全に定義される。
EntityKey保管の再帰的な形では、各EntityKeyに、それが関連する型またはクラス情報が含まれるが、各EntityKeyは、その親の型またはクラスを知らないことに留意されたい。この情報は、それが参照する親キーの型情報を調べることによって見つかる。これは、包含階層を介してクラスを再利用できるようになるので、特に有利な特徴である。図14を参照すると、Orderクラス602が、Addressの子クラス610を有することが示されている。同様に、Customerクラス616も、Addressの子クラス618を有する。Addressクラス610および618は、実際に概念的に同一であるが、インスタンスは、異なる親の下にあるのでばらばらである。しかし、これらのエンティティは、Addressクラスのそれぞれの形で一意に定義され、各Addressクラス610および618を、異なるデータベーステーブルに保管することができる。この形で、クラスを永久に強制的にその位置にとどめずに、包含階層内の位置を記述することができる。
上述したように、各EntityKeyは、親キーへの参照などの情報を有するが、親がどの型であるかは知らない。親の型の判断は、クラスおよびテーブルの完全な組のマッピングによって、行われるか定義される。
EntityKeyの図16に示された識別子722の組は、そのエンティティのデータを保持するテーブルの主キー列に対応する。図15を参照し、OrderSerialエンティティを保持するテーブルの主キーが、Company_ID652、Order_ID654、OrderLine_ID656、およびSerial Number658であると仮定する。OrderSerial.Key680A内の識別子属性722は、主キー列の最後に直接にマッピングされ、680Aの親キーは、類似する形で列652、654、および656にマッピングされる。このEntityKeyとデータベースキーの対応は、外部キーにも拡張される。エンティティの間の単純な関連のすべてが、キーを使用して実施される。例えば、図14で、Order.Keyは、OrderからCustomerへの関連を実施する、型Customer.Keyの参照を有する。このキーを、OrderテーブルのCustomer外部キーに簡単にマッピングすることができる。
テーブルが、インテリジェントキーではなく代理を用いて共通して設計されることにも留意されたい。インテリジェント主キーは、エンドユーザによって見られ、指定されるが、代理主キーは、アプリケーションによって生成され、ユーザから隠蔽される。代理キーは、しばしば、データベースに影響せずにテーブルの、ユーザに可視の識別子の名前を変更できるようにするか、主キーのサイズが非常に大きく、しばしば外部キーで参照される時にスペースを節約するのに使用される。代理キーが使用される時には、テーブルが、代理主キーおよびユーザに可視の識別子を有する代替キーを有する。
インテリジェントおよび代理の両方のEntityKeysがサポートされる。この実施形態では、代理EntityKeyが使用される時に、そのIDプロパティがプライベートになり(それが生成されたキーであり、エンティティのコンシューマにとって意味がないので)、そうでない場合には、IDプロパティはパブリックになる。
<クラスキー>
もう1つの関連する抽象化が、クラスキーである。所与のエンティティを、包含階層内の複数の場所で使用することができるので、階層内のどのノードが処理されるかを示す機構がある。クラスキーは、その機構であり、クラスキーには、2つの情報すなわち、それが参照するエンティティの型と、そのエンティティの親のクラスキーに関する情報が含まれる。EntityKeyの定義に似ていることに留意されたい。実際に、EntityKeyは、クラスキーの派生物であり、クラスキーから継承し、これによって、クラスキーが要求されるすべての場所でEntityKeyを供給できるようになっている。したがって、クラスキーも、階層的に定義される。図18のEntityKeyの図を、単純にエンティティ識別子(ID)を除去することによって、クラスキーの図に変更することができる。
一般に、クラスキーを使用して、包含階層内のノードを参照することができる。というのは、クラスキーが、エンティティのクラスに関連し、特に階層内の各クラスの名前および階層内の位置を一意に記述するからである。対照的に、EntityKeyは、包含階層内の各エンティティの一意の名前を提供し、階層内のその位置を記述する。
EntityKeyおよびクラスキーは、ビジネスオブジェクトまたはエンティティに対する作成、読取、更新、および削除の動作が実行される時に使用される。例えば、エンティティを読み取る時に、コンポーネントコンテナを参照する親キーを供給しなければならない。これによって、読取のスコープが与えられ、開発者が階層内の複雑な位置を指定するのが簡単になる。
EntityKeyおよびクラスキーのほかに、もう1つの形のキーが、これらのキーの間の混合物である。上述したように、EntityKeyは、クラスキーの一形態であるが、特定のエンティティに対するさらなる情報(すなわち識別子属性)が含まれる。クラスキーのチェーンとそれに続くエンティティキーを単純に使用することによって、特定の親の下のすべてのエンティティを突き止めることができる。図19に、混合されたキー844の例を示す。この例では、EntityKeyが、Enterprise、Company、およびOrderについて提供され、このOrderによって、特定のOrderエンティティが指定される。しかし、OrderLine.KeyおよびOrderSerial.KeyにはIDが含まれないので、これらはクラスキーである。図19の混合されたキー844を、データアクセスサブシステム246によって受け取って、データ保管機構に関するクエリを定式化して、特定の注文に関するすべての系列を、その行に無関係に検索することができる。
<ファウンデーションサービス252>
フレームワークに基づく型の作成(エンティティ、ファクトリ、キー、プロセス、およびサービスなど)は、フレームワーク内のアクティベーションシステムによって達成される。他のすべての型(値型など)は、他のオペレータを用いて作成される。エンティティの作成が、1つの位置で行われるので、複数の特徴を実施することができる。第1に、ファウンデーションサービスサブシステム252によって、ある型のインスタンスを作成する要求を与えられた場合に、正しいバージョンアセンブリを見つけることができる。さらに、エンティティ置換を用いると、既存のビジネスロジックに影響せずに、ある型のインスタンスが必要な時にその型のサブクラスを置換できるようにすることによって、開発者がクラスに新しい機能性を追加できるようになる。サブクラスがアクティベーションによって自動的に生成されるプロキシである、エンティティ置換のある形を使用することもできる。プロキシによって、インスタンスが変更された時のシステム呼出しトラッキング、およびあるクラスの読取専用アクセスの保証を含むさまざまな機能性を追加することができる。
診断および計装によって、ファウンデーションサービス252内のロギングサービス、トレースサービス、およびアカウンティングサービスが提供される。アプリケーションに、これらのサービスを実行するための診断への呼出しを設けることができる。アプリケーションフレームワークによって、ランタイム呼出しインターセプトを使用して、アプリケーション開発者の代わりに診断を呼び出すことができる。
<ロールベースセキュリティサブシステム240>
ロールベースセキュリティサブシステム240によって、さまざまなセキュリティ方式を作成するのに必要な基本プリミティブが提供される。例えば、UserおよびRoleは、セキュリティサブシステム240によって提供されるエンティティのクラスである。サブシステム240によって、任意の数の識別を単一のUserクラスにマッピングすることができ、複数の認証機構を使用できるようになる。セキュリティサブシステム240によって、UserまたはRoleとエンティティの間でカスタム許可(custom permision)を適用するフレームワークも提供される。例えば、ある照会ビューによって、どのUserまたはRoleの読取、更新、またはクエリの実行を行えるかを示すクエリ定義にセキュリティを適用することができる。サブシステム240のアクセス許可の特徴は、カスタム許可を作成する一貫性のある機構を提供し、その実装の多くも提供する。
タスクは、セキュリティサブシステム240に関して説明したアクセス権フレームワークを使用して構築されるエンティティまたはアクティビティである。UserクラスおよびRoleクラスに、タスクを実行するためのアクセス権を与えることができる。タスクを使用するために、セキュリティまたは方法に、2つのステップが含まれる。まず、カスタム属性を使用して、タスクのID、名前、および記述を指定して、タスクを定義しなければならない。次に、インペラティブまたは宣言型のセキュリティ検査を、別の属性を有するタスクについて提供しなければならない。この「TaskPermissionAttribute」によって、セキュリティチェックが失敗する場合に例外が送出される。下の表5に、これらのステップを実行する擬似コードを示す。
表5
このコードでは、「TaskAttribute」を用いてタスクを定義し、「TaskPermissionAttribute」を用いて宣言型のセキュリティチェックを指定している。セキュリティチェックが失敗する場合に、例外が送出され、メソッドは実行されない。
データを、セキュリティサブシステム240を使用して保護することもできる。各アプリケーションは、データアクセスを制限する方法に関して異なる要件を有する可能性があり、したがって、単一のソリューションを提供するのではなく、セキュリティサブシステム240によって、データアクセスフレームワークを提供する。データアクセスサブシステム246へのインターフェースのそれぞれを実装し、データにアクセスする時の使用に対する動的ビューを指定する能力を追加するセキュアクラスラッパを提供することによって、基本的な機構によって、データアクセスサブシステム246へのすべてのデータアクセス要求がインターセプトされる。管理者は、動的ビューを作成して、UserおよびRoleのデータアクセス権を定義することができる。動的ビューによって、セキュリティデータアクセスポリシが、見、更新することができる、基礎になるエンティティのプロパティのリストと組み合わされる。その後、UserおよびRoleに、データにアクセスする時に特定の動的ビューを使用するためのアクセスが与えられる。セキュアデータアクセスポリシによって、データアクセスセキュリティポリシが定義され、開発者は、それから派生させ、カスタム論理を追加することによって、カスタムポリシを作成することができる。
セキュリティ方式の3つの例示的な例に、パススルーフィルタが含まれる。データアクセスサブシステム246に関する要求が行われる時に、このフィルタによって、判断基準の「where」文節に制限が追加され、返されるエンティティが制限される。もう1つの手法が、エンティティごとのアクセス制御手法である。結合テーブルに、UserまたはRoleがアクセスできるエンティティのそれぞれがリストされる。もう1つの手法が、階層フィルタリング手法である。例えば、マネージャが、部下の情報を見ることができ、その逆を不可能にすることができる。これは、通常は、階層をフラットにして新しいエンティティにし、データアクセスサブシステム246について行われるアクセス要求の判断基準において、そのエンティティに結合を追加することによって実施される。
<レポート作成およびクエリサブシステム232>
図20A、図20Bおよび図20Cは、リレーショナルデータベースに保管されたユーザのデータのオブジェクトモデル記述からクエリ可能なエンティティ(ビジネスインテリジェンスエンティティまたはBIエンティティと称する)を生成するシステムを示す図である。
図20Aは、オブジェクトモデルからクエリ可能なBI262を生成する一実施形態の単純化されたブロック図である。図20Aには、モデルサービスシステム950が示され、このモデルサービスシステム950は、入力として、焦点952、オブジェクト記述954、および1組の永続データストアマッピング956の指定をとる。システム950は、入力に基づいて次元モデル958を作る。図20Aには、エンティティジェネレータ960も示され、このエンティティジェネレータ960は、次元モデル958に基づいて、本明細書でビジネスインテリジェンスエンティティ(またはBIエンティティ)962と称する1組のオブジェクト(またはエンティティ)を生成する。
焦点952は、分析の焦点としてユーザによってマークされた、オブジェクトモデル内のあるデータを表す。焦点952は、例として、XML指定ファイルで指定することができる。
オブジェクト記述954は、オブジェクトの組に対応するメタデータの組のオブジェクト指向関係を記述する入力である。これは、例えば、UMLクラス図の形とすることができる。複数のビジネスエンティティ(Customer、Order、およびOrderLine)に関するUMLクラス図の1例を、図20Bに示す。
永続データストアマッピング956によって、オブジェクトモデルによって参照されるデータが、永続データストア、1つの例示的実施形態では図13に示されたリレーショナルデータベース516にマッピングされる。これは、例として、マップファイルの形でユーザによって作成される。
モデルサービスシステム950は、入力952、954、および956を受け取り、これらの入力に基づいて、次元モデル958を自動的に生成する。本発明の一実施形態によれば、次元モデル958は、ユーザによって供給される入力から推論され、モデル958を得るために開発者の第2の組がビジネスロジックの再作成にかかわる必要はない。一実施形態では、下で詳細に説明するように、モデルサービスシステム950によって、オブジェクトモデル記述954によって指定されるオブジェクトモデルの関連およびコンポジションが使用されて、次元モデル958内の外部キー関係が推論される。システム950によって、ファイル952でユーザによって定義された分析の焦点および永続データストアマッピング956も使用されて、次元モデル958が作成され、モデル958を介してデータがアクセスされる。
しかし、次元モデル958を自動的に生成するシステムでさえ、改良することができる。例えば、次元モデル958を介して情報を得ることは、まだ、MDXまたはある種の次元モデル照会言語をユーザが知っていることを必要とする。したがって、もう1つの実施形態によれば、エンティティジェネレータ960が設けられる。エンティティジェネレータ960は、次元モデル958のキューブおよび次元から、オブジェクトの形のビジネスインテリジェンスエンティティ962を作成する。以下に詳細に説明する。
図20Cは、図20Aに示されたシステムを詳細に示す図である。図20Cに示された例では、オブジェクトモデルが、オブジェクト記述954によって表され、マッピング956が、オブジェクトモデル表現954と、リレーショナルデータベース516を表すリレーショナルデータベース表現964との間に示されている。図20Cには、次元モデル958も詳細に示されている。次元モデル958には、Factテーブル966が、複数の次元968および970(Customer次元およびOrder次元)と共に含まれる。次元のそれぞれが、1つまたは複数のテーブルから形成される。Factテーブル966に、外部キー参照としてOrderlineIDおよびCustomerIDが含まれることも特筆に値する。
図20Cには、1組のBIエンティティ962の一実施形態も示されている。図20Cに示された例では、BIエンティティ962に、BIOrderFactエンティティ976、BIOrderエンティティ972、およびBICustomerエンティティ974が含まれる。エンティティ972および974は、エンティティ976に関連する。
オブジェクトモデル記述954内のエンティティおよびその関係を調べることによって、この次元モデルが、次元モデル表現958に示されたものなどのスノーフレークスキーマ(snowflake−schema)を必要とすることがわかる。したがって、2つの次元、OrderおよびCustomerが作成されることを推論することができる。Order次元は、OrderおよびOrderLineという2つのレベルを有する。Factテーブル966内の測定値(または数値)に、UnitPriceおよびQuantityが含まれ、これらは、OrderLineエンティティから来る。
レポート作成およびクエリサブシステム232には、他のクエリへのリンク機能を提供し、ユーザが、関連する情報のガイド付きナビゲーションを実行できるようにする、エンティティ関係に関する情報も保管される。例えば、図21に、モデルの型と、サブシステム232がその情報をどのように使用するかが示されている。図21に示されたモデルによって、Customerが、0個以上のOrderを有し、そのAddresseの親である(塗り潰された菱形によって示される)ことが示される。図21の下部のウェブページに、カスタマリストが示されている。コンテキストメニューが、カスタマの1つの上で開かれ、そのカスタマの注文および住所へのナビゲーションが可能になっている。例えば、そのメニューから「orders」を選択すると、そのカスタマの注文のリストが表示される。
Customerエンティティ、Addressエンティティ、およびOrderエンティティを超えてこの機能を実行するために、コードは不要である。エンティティに関連するがその直接の部分ではないさまざまな情報がある。その情報には、他のエンティティへの関連のリスト、エンティティの有効なワークフロー状態遷移、エンティティに対して実行できるタスク、およびエンティティに関連するウェブサイトへのハイパーリンクが含まれる。図21では、コンテキストメニューが、2つの関連するエンティティを有する。
図22は、情報をユーザおよび開発者が拡張できるようにするために、エンティティに関連する情報の別個の部分に対する共通クエリインターフェースを提供する、サブシステム232に関連するハイパーメディアサブシステムを示す図である。このインターフェースは、ハイパースペースに基づき、このハイパースペースは、リンクによって接続されたノードのユニバースである。エンティティが、ノードの例であり、タスクまたは関連するエンティティがリンクの例である。
上述したように、アプリケーションを開発する時には、オブジェクトの組(ビジネスアプリケーションのビジネスオブジェクトまたはエンティティ)を定義することが一般的である。ビジネスアプリケーションのそのようなオブジェクトには、例えば、「Customer」オブジェクト、「SalesPerson」オブジェクト、および「Order」オブジェクトを含めることができる。これらのオブジェクト(エンティティ)は、異なる関連を介して相互に関係する。例えば、「Order」は、「Customer」および「SalesPerson」の両方を関連付けられる。これらの関連は、アプリケーションの問題領域内に存在するので、通常はエンドユーザが理解する関連である。したがって、エンドユーザがこれらの関連の間をナビゲーションできるようにすることが有益である可能性がある。
これらの関連を定義する情報は、アプリケーション開発時に、アプリケーションのメタモデル(またはオブジェクトモデル)に取り込まれる。この情報は、通常は、メタデータとして保管される。例えば、図20Bに、「Order」エンティティと「Customer」エンティティの間の、アプリケーション開発プロセス中にモデリングされる関係が示されている。
アプリケーションの開発中に生成されるオブジェクトモデルに対して実行することができる既知のツールがある。そのようなツールによって、モデルが関連メタデータにコンパイルされる。図示の実施形態によれば、これが行われ、関連メタデータが保管される。
図22は、保管された関連メタデータを活用するハイパーメディアシステムの実施形態のブロック図である。ハイパーメディアシステム901には、クライアント903、ハイパーメディアサービス904、および複数のハイパーメディアプロバイダ908、910、および912が含まれる。図22には、システム901に、メタデータストア902に接続されたメタデータハイパーメディアプロバイダ900が含まれることが示されている。
アプリケーション開発プロセス中に開発されるメタデータ関連(「Order」エンティティと「Customer」エンティティの間の関連を示す図20Bに示された情報など)は、メタデータストア902に保管される。
メタデータハイパーメディアプロバイダ900は、ハイパーメディアサービス(HMS)904に正しく登録され、そのリンクおよびそれをリンクプロバイダとして識別する識別データが、プロバイダレジスタ906に常駐すると仮定する。クライアント903は、まず、クライアントが探すリンクのソースであるオブジェクトと、どのカテゴリのリンクを検索するかを指定するハイパーメディア要求(またはリンク要求)を生成する。この要求が、HMS904によって受け取られる。HMS904は、この要求を適当なプロバイダに転送する。プロバイダ908から912は、単純に、それが供給するように構成された、要求されたリンクを返す。リンク要求を、HMS904によってメタデータハイパーメディアプロバイダ900にも転送することができる。その場合に、プロバイダ900は、メタデータストア902に含まれる関連情報を分析する。プロバイダ900は、メタデータストア902内の、要求された関連のそれぞれを調べ、関連するエンティティにアクセスする権利をユーザが有するかどうかを判定する。プロバイダ900は、セキュリティサブシステムにアクセスすることによるか他の適当な形で、関連するエンティティにアクセスする権利をユーザが有するかどうかを判定することができる。その後、プロバイダ900は、ユーザがアクセスできる関連のそれぞれのリンクを作成し、関連情報をそのリンクに置く。プロバイダ900は、(例えば、Unified Modeling Language(UML)によって定義された用語法を使用して)単純関連およびコンポジション関連を識別する;これらは、1対1、1対多、または多対多関係など、さまざまな濃度を有することができる。プロバイダ900は、継承関連も識別する。プロバイダ900によって突き止められた関連ごとに、プロバイダ900は、ソースノードと関連ノードの間のリンクを作成する。
リンクが、プロバイダ900からHMS904に返され、HMS904によって、返されたすべてのリンクが集約され、クライアント902に転送される。一実施形態では、プロバイダ900が、関連するノードを返すのではなく、実行された場合に関連するノードだけが結果に含まれることになるクエリを返す。
図23は、クエリサービスがクライアントにレンダリングされる、サブシステム232に関連するクエリサービスシステムのもう1つの実施形態を示す図で、1つの例示的実施形態による、サブシステム232の一部を形成するクエリサービスシステム925のブロック図である。クエリサービスシステム925には、クライアント905が、クエリビルダ907、メタデータサブシステム248、ハイパーメディア検索/トラバーサルシステム901(図22に図示)、クエリサービスサブシステム911(図13に示されたデータアクセスおよびストレージシステム510に結合される)、およびエンティティフォルダシステム915に機能的に結合されることが示されている。クライアント905は、クエリウェブサービスコンポーネント917を介して機能リソース(クエリビルダ907以外)に接続される。
例示的実施形態の1つでは、クエリウェブサービスコンポーネント917が、クライアント905によって呼び出すことができるメソッドを有するインターフェースの組(アプリケーションプログラミングインターフェース−APIなど)をエクスポーズするオブジェクトの組である。メソッドが呼び出される時(すなわち、クライアント905がAPIに書き込む時)に、クライアント905は、それが接続されたシステムによって提供される機能を使用することができる。したがって、クエリウェブサービスコンポーネント917によって、システム248、510、901、907、911、および915の機能がラップされ、これらの機能がクライアント905に提供され、クライアント905が、クエリウェブサービスコンポーネント917のインターフェースを介してこれらの機能にアクセスできるようになる。
このシステムは、このシステムに関して下で説明するもの以外のさまざまな異なる機能または説明される機能に加えられる追加機能を実行することができる。
クエリビルダ907は、システム510など、データベースシステムに対するクエリを構築する任意のシステムとすることができる。したがって、ビルダ907の詳細な説明は、提供しない。クエリウェブサービスコンポーネント917が、複数の役に立つ機能を提供し、クライアント905からの入力に基づいてクエリを作成する際にビルダ907によってその機能を使用することができると言えば十分である。これらの機能について、以下に説明する。
エンティティフォルダシステム915は、クエリまたはクエリへの参照を階層ストレージシステム(フォルダシステムなど)に保管するシステムである。クエリフォルダシステム915の複数の態様を、以下に詳細に説明する。
クエリサービスコンポーネント911によって、クエリが定義される。クエリウェブサービスコンポーネント917は、コンポーネント911と対話して、クエリを定義し、クエリに対する作成、検索、更新、および削除(CRUD)動作を実行する。コンポーネント917は、コンポーネント911と対話して、クエリを実行する。クエリサービスコンポーネント911によって、定義されたクエリが、データアクセスおよびストレージシステム510(図13に図示)に適切な形に変換され、システム510のとの必要な対話が実行されて、データベースに対してクエリが実行される。
メタデータサブシステム248には、システム内のオブジェクトに関するメタデータが保管される。メタデータによって、どのオブジェクトがクエリに使用可能であり、これらのオブジェクトのどのプロパティがクエリ可能であるかが示される。システム917およびシステム911の両方が、処理中にメタデータサブシステム248にアクセスする。
コンポーネント917によって、複数のメソッドを有するインターフェースがエクスポーズされる。一部のメソッドは、システムへのクエリウェブサービスコンポーネント917のインストールおよび除去のために設けられる。
追加のメソッドを呼び出して、フォルダシステム915からクエリをロードし、システム510内でクエリを実行し、処理要求(ハイパーメディア検索/トラバーサルシステム901でのハイパーメディアリンクのトラバースなど)を実行し、クエリフォルダシステム915に保管されたクエリを削除することができる。
一実施形態で、単一のメソッド(ProcessRequestメソッドなど)を使用して、すべてのクエリ関連動作(ロード、実行、作成、保存、削除、ハイパーリンクのトラバース、次への移動、前への移動など)を実行できることに留意されたい。さらなる他の機能が、クライアントがより簡単にこれらの動作を実行できるようにするヘルパ機能である。
さらに、メソッドを呼び出して、クエリフォルダシステム915内の操作を実行することができる。例えば、メソッドを呼び出して、フォルダをリストする、フォルダを作成する、フォルダシステムを介するパスを削除する、またはフォルダシステムを介してパスをコピーすることができる。
さらなるメソッドを呼び出して、メタデータサブシステム248からメタデータを検索して、クエリを作成する際にクライアント905を助けることができる。メタデータの諸部分を、クライアント905によって、クエリの定義に使用される新しいXML要素に引き込むことができる(例えばQueryDefinition)。例えば、メソッドを使用して、システム内の基本的なビューを入手し、表示できるプロパティおよび関係を入手することができる。ビューを扱うメソッドを用いると、クライアントが、クエリの基礎として使用することができる使用可能なビューのリストを供給することによって、クエリを作成することができる。使用可能なプロパティのリストおよび関連するビューのリストなど、これらのビューに関するメタデータも、検索することができる。クライアントは、この情報を使用して、複数の結合されたビュー、システム変数およびユーザ供給のパラメータを有する複雑な制約、および複数のソートを有するクエリを作成することができる。したがって、メソッドを用いて、式の変数も検索することができる。
もう1つのメソッドを用いると、クライアント905が、出力が従い、入力が従わなければならないフォーマットを定義するのに使用されるスキーマの位置を得ることができる。クエリを定義し、クエリに対する作成、検索、更新、および削除(CRUD)動作を実行するのに使用されるクラスを定義するオブジェクトモデルの一実施形態によって、クライアントが有効なクエリを構築することだけを許容するメソッドが提供される。例えば、クライアントが、Customerに対するクエリを構築している場合に、これらのメソッドを用いると、クライアントが、Customerエンティティに対するプロパティを選択することだけができるようになる。
<ユーザインターフェースサブシステム236>
ユーザインターフェースサブシステム236によって、アプリケーションフレームワーク224のユーザインターフェースまたは「プレゼンテーション」部分が提供される。このサブシステムは、データを視覚化し、管理し、分析し、プロセスを開始する機能を提供することによって、ビジネスプロセスの自動化と、ビジネスデータの管理、視覚化、および分析というアプリケーションの目的をサポートする。
ビジネスアプリケーションの通常のデプロイメントに、数千個または数百万個のビジネスエンティティが含まれる場合がある。さらに、これらのビジネスエンティティは、相互関係の複雑な網を有する。所与のカスタマが、多数の注文を有する。所与の注文が、多数の勘定科目を有し、この勘定科目が、さらに、多数の在庫品目に関係する。在庫項目は、その項目を供給するベンダに関連する。
クエリサービスサブシステム232によって、ビジネスエンティティをフィルタリングし、その間でナビゲートすることによって、ビジネスエンティティを見つける能力が提供される。ユーザインターフェースサブシステム236によって、ビジネスデータに対する作成、読取、更新、および削除動作を実行することによって、ビジネスデータの管理が容易になる。サブシステム236によって管理されるビジネスエンティティの関連する組を、文書と呼ぶことができる。ビジネス文書の管理は、視覚化とは非常に異なる。というのは、視覚化が、読取のみのアクションであるが、管理が単一の文書内の修正アクションであるからである。
修正によって、ビジネスロジックが利用される。ビジネスロジックは、多数の形で、望ましいユーザ経験を提供するのに使用される。例えば、ユーザが、販売注文の作成のためにカスタマを指定し、ビジネスロジックによって、カスタマが存在することの検証が要求されると仮定する。この検証は、ユーザインターフェースサブシステム236によって提供され、その結果、ユーザは、参照保全性の欠如を識別することによってデータベースがこの問題にフラグを立てるまで、そのような問題について通知されるのを待つ必要がなくなる。
さらに、デフォルト設定によって、ビジネスアプリケーションユーザに、できる限り少ないキーストロークでユーザが文書を作成できるようにするインターフェースが与えられる。例えば、カスタマを注文に割り当てた後に、注文の通貨のデフォルトを、カスタマデフォルト通貨にすることができる。もちろん、多数の他のプロパティも、デフォルトを設定することができる。
さらに、文書相対計算が調整される。例えば、勘定科目が注文に追加される時に、注文の小計および総計を更新しなければならない。これは、単純であるように見えるが、すぐに複雑になる。というのは、勘定科目の追加が、税金の再計算を必要とし、これによって非常に複雑なビジネスロジックが用いられる可能性があるからである。
この例は、ユーザインターフェースサブシステム236でのビジネスロジックの使用の例示にすぎない。
ユーザインターフェースサブシステム236によって、ビジネス文書の処理も容易になる。上述したように、サブシステム232内のハイパーメディアサブシステムが、どのオペレーション(またはプロセス)をビジネス文書に対して実行できるかを記述した情報のリポジトリとして働くことができる。この使用可能なオペレーションのリストを、表示することができ、これは、ビジネス文書の視覚化または管理のいずれかの間にプロセスを開始できることを意味する。そのようなオペレーションの選択には、内部的に短時間動作または長時間動作とすることができるビジネスプロセスが含まれる。この区別は、ユーザインターフェースサブシステム236によって、ユーザから隠される。
本発明を、特定の実施形態に関して説明したが、当業者は、本発明の趣旨および範囲から逸脱せずに、形態および詳細において変更を行えることを認めるであろう。
本発明を使用することができる環境を示すブロック図である。 本発明を使用することができるソフトウェア環境を示すブロック図である。 本発明の一実施形態によるビジネスフレームワークを示すブロック図である。 ビジネスプロセスを示すブロック図である。 追加のビジネスプロセスを示すブロック図である。 追加のビジネスプロセスを示すブロック図である。 追加のビジネスプロセスを示すブロック図である。 ビジネスアクティビティをどのように実施できるかを示すより詳細なブロック図である。 エンティティのカスタマイゼーションの一実施形態を示す図である。 エンティティに追加される拡張プロパティを示す図である。 本発明の一実施形態によるメタデータサブシステムによってサポートされるメタデータ構造を示す図である。 論理ティアを示す図である。 データアクセスサブシステムを示すブロック図である。 エンティティの包含階層を示す図である。 エンティティの包含階層を示す図である。 エンティティの包含階層を示す図である。 エンティティの包含階層を示す図である。 キー構造を示す図である。 キー構造をさらに示す図である。 ビジネスインテリジェンスエンティティを作成するシステムを示すブロック図である。 複数のエンティティを示すUMLクラス図である。 ビジネスインテリジェンスエンティティを作成するシステムを示す詳細なブロック図である。 ハイパーリンクを使用するナビゲーションを示す図である。 ハイパーリンクの操作を示すブロック図である。 クエリサービスサブシステムを示すブロック図である。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理ユニット
121 システムバス
130 システムメモリ
131 読取専用メモリ(ROM)
132 ランダムアクセスメモリ(RAM)
133 基本入出力システム(BIOS)
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 インターフェース
151 書き込む磁気ディスクドライブ
152 取外し可能不揮発性磁気ディスク
155 書き込む光学ディスクドライブ
156 取外し可能不揮発性光ディスク
160 ユーザ入力インターフェース
161 ポインティングデバイス
162 キーボード
163 マイクロホン
180 リモートコンピュータ
170 ネットワークインターフェース
171 ローカルエリアネットワーク(LAN)
172 モデム
173 広域ネットワーク(WAN)
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
202 ツールおよびサーバプラットフォーム
210 フレームワーク
212 アプリケーションレイヤ
214 ビジネスコンポーネント
216 ビジネスコンポーネント
218 ビジネスコンポーネント
220 ビジネスクラスライブラリ
222 ツールサブシステム
224 ビジネスアプリケーションフレームワーク
226 共通エンティティ
228 パターン
230 データ型
232 レポート作成およびクエリサブシステム
234 プロセス実行サブシステム
236 ユーザインターフェースサブシステム
238 コンポーネントプログラミングモデルサブシステム
240 ロールベースセキュリティサブシステム
242 カスタマイゼーションサブシステム
244 デプロイメントおよび管理サブシステム
246 データアクセスサブシステム
248 メタデータサブシステム
250 ビジネスメッセージングおよび統合サブシステム
252 ファウンデーションサービスサブシステム
510 データアクセスおよびストレージシステム
901 ハイパーメディア検索/トラバーサルシステム
900 メタデータハイパーメディアプロバイダ
902 メタデータストア
903 クライアント
904 HMS
905 クライアント
906 プロバイダレジスタ
907 クエリビルダ
908 ハイパーメディアプロバイダ
910 ハイパーメディアプロバイダ
912 ハイパーメディアプロバイダ
917 クエリウェブサービス
915 エンティティフォルダシステム
911 クエリサービス

Claims (29)

  1. コンピュータを実行させるビジネスプロセス生成方法であって、
    複数のオペレーションを指定することであって、該オペレーションは、前記コンピュータによって実行される時に、作業の分離された粒状の部分を実行するように指定するステップと、
    複数のビジネスアクティビティを用いて前記複数のオペレーションのスコープを設定するステップであって、前記ビジネスアクティビティは、前記コンピュータによって実行される時に、関連する複数の前記オペレーションの実行を呼び出すようにスコープを設定するステップと、
    前記ビジネスプロセスを達成するために望まれる順序で前記複数のビジネスアクティビティを配置するステップと
    を有することを特徴とするビジネスプロセス生成方法。
  2. 前記スコープを設定するステップは、
    前記ビジネスアクティビティに、該ビジネスアクティビティによって呼び出される複数のオペレーションを割り当てるステップであって、前記割り当てられるオペレーションのそれぞれは、作業の部分の期待されるタイムアウト期間内に実行可能であるように割り当てるステップを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  3. 前記オペレーションは、データの項目に対して実行され、実行される時に、他のオペレーションによるアクセスからデータの前記項目をロックし、前記スコープを設定するステップは、
    前記ビジネスアクティビティに、該ビジネスアクティビティによって呼び出される複数のオペレーションを割り当てるステップであって、前記作業の部分は、前記ビジネスアクティビティに割り当てられた各オペレーションがその間に実行される所望のロックアップ時間に基づいて前記オペレーションのそれぞれによって実行されるように割り当てるステップを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  4. 前記複数のビジネスアクティビティを配置するステップは、
    前記ビジネスプロセス内で少なくとも1つのビジネスサブプロセスを配置するステップを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  5. 前記少なくとも1つのビジネスサブプロセスを配置するステップは、
    前記ビジネスサブプロセスを開始するように前記複数のビジネスアクティビティの1つを構成するステップを有することを特徴とする請求項4に記載のビジネスプロセス生成方法。
  6. 前記少なくとも1つのビジネスサブプロセスを配置するステップは、
    前記複数のビジネスアクティビティの第2の1つを開始するように前記ビジネスサブプロセスを構成するステップを有することを特徴とする請求項5に記載のビジネスプロセス生成方法。
  7. 前記複数のビジネスアクティビティを配置するステップは、
    基本ビジネスアクティビティが、該基本ビジネスアクティビティを完了する前に実行すべき内部ビジネスアクティビティを開始するように構成されるように、ビジネスアクティビティをネスティングにするステップを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  8. 前記複数のビジネスアクティビティを配置するステップは、
    基本ビジネスサブプロセスが、該基本ビジネスサブプロセスを完了する前に実行すべき内部ビジネスアクティビティまたはビジネスサブプロセスの少なくとも1つを開始するように構成されるように、ビジネスサブプロセスをネスティングにするステップを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  9. 前記ビジネスプロセスの実行がその間に継続の前に外部入力を待って、前記ビジネスアクティビティに関する停止点を配置するステップを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  10. 前記複数のビジネスアクティビティは、
    該複数のビジネスアクティビティの選択された1つの中からイベントを伝搬させるステップと、前記イベントに基づいて追加のビジネスアクティビティを呼び出すステップと、前記追加のビジネスアクティビティの完了時に前記選択されたビジネスアクティビティにリターンするステップとを有することを特徴とする請求項1に記載のビジネスプロセス生成方法。
  11. コンピュータを実行させるビジネスプロセス実行方法であって、
    非インペラティブプロセス記述言語で、オペレーションを含むビジネスアクティビティを記述するステップと、ビジネスサブプロセスおよび前記ビジネスプロセスを達成するために、前記ビジネスサブプロセスは実行されなければならない順序を記述することとによって前記ビジネスプロセスを記述するステップと、
    前記ビジネスプロセスをインスタンス化するために、前記記述されたビジネスアクティビティおよび前記記述された順序でのビジネスサブプロセスをインスタンス化するために前記プロセス記述言語を解釈するステップと、
    前記インスタンス化されたビジネスプロセスを開始するステップと
    を有することを特徴とするビジネスプロセス実行方法。
  12. 前記インスタンス化されたビジネスプロセスを開始するステップは、
    プロセス開始入力を受け取るステップと、前記プロセス開始入力に基づいて前記インスタンス化されたビジネスプロセスを開始するステップとを有することを特徴とする請求項11に記載のビジネスプロセス実行方法。
  13. 前記プロセス開始入力を受け取るステップは、
    外部コンポーネントからの自動化された入力を受け取るステップを有することを特徴とする請求項12に記載のビジネスプロセス実行方法。
  14. 前記プロセス開始入力を受け取るステップは、
    ユーザ入力を受け取るステップを有することを特徴とする請求項12に記載のビジネスプロセス実行方法。
  15. 前記ビジネスプロセスを記述するステップは、
    メタデータストアに保管されるメタデータ構造内で前記ビジネスプロセスを記述するステップを有することを特徴とする請求項11に記載のビジネスプロセス実行方法。
  16. 前記ビジネスプロセスを記述するステップは、
    テキストファイル内で前記ビジネスプロセスを記述するステップを有することを特徴とする請求項11に記載のビジネスプロセス実行方法。
  17. 前記ビジネスプロセスを記述するステップは、
    複数のオペレーションを指定するステップであって、該オペレーションは、前記コンピュータによって実行される時に、作業の分離された粒状の部分を実行するように指定するステップを有することを特徴とする請求項11に記載のビジネスプロセス実行方法。
  18. 前記ビジネスプロセスを記述するステップは、
    複数のビジネスアクティビティを記述するステップであって、該ビジネスアクティビティは、前記コンピュータによって実行される時に、関連する複数の前記オペレーションの実行を呼び出すように記述するステップを有することを特徴とする請求項17に記載のビジネスプロセス実行方法。
  19. 前記ビジネスプロセスを記述するステップは、
    前記ビジネスプロセスを達成するために望まれる順序で前記複数のビジネスアクティビティの配置を記述するステップを有することを特徴とする請求項17に記載のビジネスプロセス実行方法。
  20. コンピュータ上におけるビジネスプロセスソフトウェアアプリケーションで使用されるビジネスプロセスモデルであって、
    複数のオペレーションであって、該オペレーションは、作業の分離された部分を実行するようなオペレーションと、
    複数のビジネスアクティビティであって、実行される時に、前記複数のオペレーションの関連する組の実行を呼び出すようなビジネスアクティビティと、
    非インペラティブ記述言語での、前記複数のビジネスアクティビティの記述機能であって、前記コンピュータによって解釈される時に、前記コンピュータに、前記記述されたビジネスアクティビティをインスタンス化させるような記述機能と
    を有することを特徴とするビジネスプロセスモデル。
  21. コンピュータを実行させるビジネスプロセスを実施するために使用されるビジネスプロセスモデルであって、
    クライアントからプロセス要求を受け取るように構成されたメソッドを有するエージェントと、
    オペレーションを実行するためにサービスをインスタンス化し、呼び出すために前記エージェントによって呼び出されるように構成されたサービスファクトリと
    を有することを特徴とするビジネスプロセスモデル。
  22. 前記エージェントは、前記プロセス要求に基づいて複数回前記サービスファクトリを呼び出すように構成されることを特徴とする請求項21に記載のビジネスプロセスモデル。
  23. 前記エージェントは、前記サービスファクトリが複数回呼び出される間に、前記サービスファクトリを介する前記サービスに関する状態を保持するように構成されることを特徴とする請求項21に記載のビジネスプロセスモデル。
  24. 前記サービスファクトリは、受け取ったサービス識別子に基づいて前記サービスをインスタンス化するように構成されることを特徴とする請求項21に記載のビジネスプロセスモデル。
  25. 前記エージェントは、前記クライアントから前記サービス識別子を受け取るように構成されたメソッドを有することを特徴とする請求項24に記載のビジネスプロセスモデル。
  26. 前記サービスファクトリは、前記エージェントから前記サービス識別子を受け取るように構成されることを特徴とする請求項25に記載のビジネスプロセスモデル。
  27. 前記サービスファクトリは、メタデータから前記サービス識別子を受け取るように構成されることを特徴とする請求項24に記載のビジネスプロセスモデル。
  28. 前記サービスファクトリは、前記エージェントによって呼び出されることに応答してイベントを伝搬させるように構成されることを特徴とする請求項24に記載のビジネスプロセスモデル。
  29. 前記サービスファクトリは、前記サービスファクトリによって伝搬される前記イベントに応答して呼び出されるイベントハンドラから前記サービス識別子を受け取るように構成されることを特徴とする請求項28に記載のビジネスプロセスモデル。
JP2004069827A 2003-03-12 2004-03-11 ソフトウェアビジネスプロセスモデル Pending JP2004280821A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/389,670 US7730446B2 (en) 2003-03-12 2003-03-12 Software business process model

Publications (1)

Publication Number Publication Date
JP2004280821A true JP2004280821A (ja) 2004-10-07

Family

ID=32771653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004069827A Pending JP2004280821A (ja) 2003-03-12 2004-03-11 ソフトウェアビジネスプロセスモデル

Country Status (3)

Country Link
US (1) US7730446B2 (ja)
EP (1) EP1457907A1 (ja)
JP (1) JP2004280821A (ja)

Cited By (10)

* 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)処理のための方法および装置
JP2008276394A (ja) * 2007-04-26 2008-11-13 Nippon Telegr & Teleph Corp <Ntt> プロセスモデル作成システム、方法及びそのプログラム
JP2008544338A (ja) * 2005-04-29 2008-12-04 マイクロソフト コーポレーション Xmlアプリケーションフレームワーク
JP2009533755A (ja) * 2006-04-12 2009-09-17 マイクロソフト コーポレーション ビジネスプロセスのメタモデル
JP2009245117A (ja) * 2008-03-31 2009-10-22 Nippon Telegr & Teleph Corp <Ntt> 業務プロセスモデル比較方法、その装置およびプログラム
JP2010026695A (ja) * 2008-07-17 2010-02-04 Hitachi Ltd ビジネスプロセス実行方法、ビジネスプロセス実行装置及びビジネスプロセス実行プログラム
US8275793B2 (en) 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
JP2013506199A (ja) * 2009-09-25 2013-02-21 アビニシオ テクノロジー エルエルシー グラフベース・アプリケーションにおけるトランザクションの処理
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8640083B2 (en) 2006-04-12 2014-01-28 Microsoft Corporation Time business process validations within data context

Families Citing this family (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120016683A1 (en) * 2000-02-01 2012-01-19 Paul Morinville Automated Execution of Business Processes Using Reverse Nesting
EP1369804B1 (en) * 2002-06-03 2007-11-14 Thomson Licensing Method for controlling the propagation of metadata items
US7533103B2 (en) * 2003-07-22 2009-05-12 Sap Ag Self-describing business objects
US20050043982A1 (en) * 2003-08-22 2005-02-24 Nguyen Vinh Dinh Contextual workflow modeling
US8307339B2 (en) * 2004-03-15 2012-11-06 Ramco Systems Limited Software reuse in model based software systems
US20060015383A1 (en) * 2004-07-19 2006-01-19 Joerg Beringer Generic contextual floor plans
US20060026583A1 (en) * 2004-07-27 2006-02-02 Juergen Remmel Systems and methods for providing complex software
US20060026586A1 (en) * 2004-07-27 2006-02-02 Juergen Remmel Systems and methods for enabling functions in a computerized system
US7487512B2 (en) * 2004-09-30 2009-02-03 Sap Ag Publish-subscribe event notifications
JP4717426B2 (ja) * 2004-12-07 2011-07-06 キヤノン株式会社 情報処理装置及びその方法
US7685561B2 (en) 2005-02-28 2010-03-23 Microsoft Corporation Storage API for a common data platform
US7853961B2 (en) 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US20060206406A1 (en) * 2005-03-08 2006-09-14 Anand Rau Program-based supply chain management
US8015051B2 (en) * 2005-03-11 2011-09-06 Sap Ag System and method for business process integration
US7693861B2 (en) * 2005-06-28 2010-04-06 Microsoft Corporation Schematization of establishing relationships between applications
US20070038501A1 (en) * 2005-08-10 2007-02-15 International Business Machines Corporation Business solution evaluation
US20070038465A1 (en) * 2005-08-10 2007-02-15 International Business Machines Corporation Value model
US7676493B2 (en) 2005-09-07 2010-03-09 Microsoft Corporation Incremental approach to an object-relational solution
FR2891077B1 (fr) * 2005-09-22 2008-12-12 Xcalia Sa Systeme de mise en oeuvre d'une application metier.
US20070106520A1 (en) * 2005-10-11 2007-05-10 Akkiraju Ramakalyani T System and method for conducting dependency analysis of business components
US7681133B2 (en) * 2005-10-14 2010-03-16 Oracle International Corporation Declarative task-based user interfaces
US8112394B2 (en) * 2005-10-14 2012-02-07 Oracle International Corporation Long-lived data transactions
US8296727B2 (en) 2005-10-14 2012-10-23 Oracle Corporation Sub-task mechanism for development of task-based user interfaces
US7761478B2 (en) * 2005-11-23 2010-07-20 International Business Machines Corporation Semantic business model management
US20070129981A1 (en) * 2005-12-07 2007-06-07 International Business Machines Corporation Business solution management
US7805400B2 (en) * 2006-01-31 2010-09-28 Microsoft Corporation Report generation using metadata
US20070214025A1 (en) * 2006-03-13 2007-09-13 International Business Machines Corporation Business engagement management
US7526501B2 (en) 2006-05-09 2009-04-28 Microsoft Corporation State transition logic for a persistent object graph
US20080004924A1 (en) * 2006-06-28 2008-01-03 Rong Zeng Cao Business transformation management
US8122063B2 (en) 2006-06-30 2012-02-21 Sap Ag Using status models in a computer system
US8706776B1 (en) 2006-06-30 2014-04-22 Sap Ag Extending status models in a computer system
US7966621B2 (en) * 2006-06-30 2011-06-21 Sap Ag Using multiple status models in a computer system
US20080005743A1 (en) * 2006-06-30 2008-01-03 Frank Michael Kraft Using Status Models with Status Transitions in a Computer System
US8365200B1 (en) 2006-06-30 2013-01-29 Sap Ag Using cancellation status models in a computer system
US8522261B2 (en) * 2006-06-30 2013-08-27 Sap Ag Using status models with state guards in a computer system
US8200715B1 (en) 2006-06-30 2012-06-12 Sap Ag Using status models with adaptable process steps in a computer system
US20080005625A1 (en) * 2006-06-30 2008-01-03 Frank Michael Kraft Using Status Models with Preconditions in a Computer System
CN101131744A (zh) * 2006-08-22 2008-02-27 华为技术有限公司 一种实现数据对象模型自动适配的方法和系统
US8438266B2 (en) * 2006-10-11 2013-05-07 Microsoft Corporation File sharing administration
US7979840B2 (en) * 2006-10-31 2011-07-12 International Business Machines Corporation Method and apparatus for service-oriented architecture process decomposition and service modeling
US8219650B2 (en) 2006-12-28 2012-07-10 Sap Ag Communicating with a status management component in a computer system
US20080201338A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Rest for entities
US8250534B2 (en) * 2007-08-09 2012-08-21 Infonovus Technologies, Llc Method and system for constructing a software application from a complete and consistent specification in a software development process
US8473910B2 (en) * 2007-08-09 2013-06-25 Infonovus Technologies, Llc Method and system for defining a software application as a complete and consistent specification in a software development process
US9442620B2 (en) * 2007-08-21 2016-09-13 Oracle International Corporation Navigation systems with event notification
US20090064090A1 (en) * 2007-09-05 2009-03-05 Microsoft Corporation Merged view of application customizations
US7945594B2 (en) * 2007-09-27 2011-05-17 Sap Ag Using status models with inhibiting status values in a computer system
US8751626B2 (en) * 2007-10-23 2014-06-10 Microsoft Corporation Model-based composite application platform
US20090165021A1 (en) * 2007-10-23 2009-06-25 Microsoft Corporation Model-Based Composite Application Platform
US8577837B2 (en) * 2007-10-30 2013-11-05 Sap Ag Method and system for generic extraction of business object data
US20090112667A1 (en) * 2007-10-31 2009-04-30 Ken Blackwell Automated Business Process Model Discovery
US8484615B2 (en) * 2007-12-20 2013-07-09 Ncr Corporation Software framework to build an executable scheme in a GUI environment
US20090259484A1 (en) * 2008-04-03 2009-10-15 Lillie Terrance L Systems and methods for employee compensation planning
US8504980B1 (en) 2008-04-14 2013-08-06 Sap Ag Constraining data changes during transaction processing by a computer system
US8271935B2 (en) 2008-07-09 2012-09-18 International Business Machines Corporation Methods and tools for data-driven application engineering
US9639331B2 (en) * 2008-07-09 2017-05-02 International Business Machines Corporation Service interface creation and modification for object-oriented services
US8099788B2 (en) * 2008-09-16 2012-01-17 Oracle International Corporation Declarative data security for a rapid application development tool component
US20100131916A1 (en) * 2008-11-21 2010-05-27 Uta Prigge Software for modeling business tasks
US8429597B2 (en) * 2008-11-21 2013-04-23 Sap Ag Software for integrated modeling of user interfaces with applications
US20100153149A1 (en) * 2008-12-12 2010-06-17 Sap Ag Software for model-based configuration constraint generation
US8707286B2 (en) * 2008-12-12 2014-04-22 Sap Ag Unique context-based code enhancement
US20100153150A1 (en) * 2008-12-12 2010-06-17 Sap Ag Software for business adaptation catalog modeling
US8150882B2 (en) 2009-03-03 2012-04-03 Microsoft Corporation Mapping from objects to data model
CN101882073A (zh) * 2009-05-04 2010-11-10 谭家辉 面向服务的应用系统及其通信方法、创建器和创建方法
US9063777B2 (en) * 2009-12-22 2015-06-23 Sap Se Consistent undeployment support as part of lifecycle management for business processes in a cluster-enabled BPM runtime
US8402064B2 (en) * 2010-02-01 2013-03-19 Oracle International Corporation Orchestration of business processes using templates
US9753737B2 (en) 2010-02-03 2017-09-05 Oracle International Corporation Declarative attribute security using custom properties
US20110218923A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Task layer service patterns for adjusting long running order management fulfillment processes for a distributed order orchestration system
US20110218921A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Notify/inquire fulfillment systems before processing change requests for adjusting long running order management fulfillment processes in a distributed order orchestration system
US10395205B2 (en) * 2010-03-05 2019-08-27 Oracle International Corporation Cost of change for adjusting long running order management fulfillment processes for a distributed order orchestration system
US10789562B2 (en) * 2010-03-05 2020-09-29 Oracle International Corporation Compensation patterns for adjusting long running order management fulfillment processes in an distributed order orchestration system
US10061464B2 (en) * 2010-03-05 2018-08-28 Oracle International Corporation Distributed order orchestration system with rollback checkpoints for adjusting long running order management fulfillment processes
US20110218926A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Saving order process state for adjusting long running order management fulfillment processes in a distributed order orchestration system
US9269075B2 (en) * 2010-03-05 2016-02-23 Oracle International Corporation Distributed order orchestration system for adjusting long running order management fulfillment processes with delta attributes
US8793262B2 (en) * 2010-03-05 2014-07-29 Oracle International Corporation Correlating and mapping original orders with new orders for adjusting long running order management fulfillment processes
US9904898B2 (en) * 2010-03-05 2018-02-27 Oracle International Corporation Distributed order orchestration system with rules engine
US20110218925A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Change management framework in distributed order orchestration system
CA2797234A1 (en) * 2010-05-01 2011-11-10 Core Technology Limited Process execution components
US8473316B1 (en) 2010-06-04 2013-06-25 Amazon Technologies, Inc. System and method for order processing state management
US8489436B1 (en) * 2010-06-04 2013-07-16 Amazon Technologies, Inc. System and method for an order handling data model with item-level granularity
US8381186B2 (en) * 2010-06-17 2013-02-19 Verizon Patent And Licensing Inc. Software training application using automated discovery of user interface controls
US8825745B2 (en) 2010-07-11 2014-09-02 Microsoft Corporation URL-facilitated access to spreadsheet elements
US8200624B2 (en) * 2010-07-20 2012-06-12 Sybase, Inc. Membership tracking and data eviction in mobile middleware scenarios
EP2420962A1 (en) * 2010-08-16 2012-02-22 Tata Consultancy Services Ltd. Efficient system for realizing business process families using model-driven techniques
US9658901B2 (en) 2010-11-12 2017-05-23 Oracle International Corporation Event-based orchestration in distributed order orchestration system
US8650250B2 (en) 2010-11-24 2014-02-11 Oracle International Corporation Identifying compatible web service policies
US9589145B2 (en) 2010-11-24 2017-03-07 Oracle International Corporation Attaching web service policies to a group of policy subjects
US8688626B2 (en) * 2011-01-27 2014-04-01 International Business Machines Corporation Software tool for generating technical business data requirements
US20120260233A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies Limited Method and system for automating development and customization of business applications
US8560819B2 (en) 2011-05-31 2013-10-15 Oracle International Corporation Software execution using multiple initialization modes
US9639815B2 (en) 2011-07-14 2017-05-02 International Business Machines Corporation Managing processes in an enterprise intelligence (‘EI’) assembly of an EI framework
US9646278B2 (en) 2011-07-14 2017-05-09 International Business Machines Corporation Decomposing a process model in an enterprise intelligence (‘EI’) framework
US9659266B2 (en) 2011-07-14 2017-05-23 International Business Machines Corporation Enterprise intelligence (‘EI’) management in an EI framework
US20130019246A1 (en) * 2011-07-14 2013-01-17 International Business Machines Corporation Managing A Collection Of Assemblies In An Enterprise Intelligence ('EI') Framework
US8566345B2 (en) 2011-07-14 2013-10-22 International Business Machines Corporation Enterprise intelligence (‘EI’) reporting in an EI framework
US9348668B2 (en) * 2011-09-15 2016-05-24 Oracle International Corporation System and method for supporting a server-side event model in a distributed data grid
US9070097B2 (en) 2011-12-14 2015-06-30 Sap Se Seamless morphing from scenario model to system-based instance visualization
US9064220B2 (en) 2011-12-14 2015-06-23 Sap Se Linear visualization for overview, status display, and navigation along business scenario instances
US9081472B2 (en) 2011-12-14 2015-07-14 Sap Se Dynamic enhancement of context matching rules for business scenario models
US20130159036A1 (en) * 2011-12-14 2013-06-20 Ulrich Keil Runtime generation of instance contexts via model-based data relationships
US9286584B2 (en) 2011-12-14 2016-03-15 Sap Se Visualizing business processes or scenarios in a business software model using transit maps
US9355375B2 (en) 2011-12-14 2016-05-31 Holger Knospe Launch of target user interface features based on specific business process instances
US10552769B2 (en) 2012-01-27 2020-02-04 Oracle International Corporation Status management framework in a distributed order orchestration system
US9250869B1 (en) * 2012-03-30 2016-02-02 Emc Corporation Synchronous business process execution engine for action orchestration in a single execution transaction context
US8996472B2 (en) 2012-04-16 2015-03-31 Sap Se Verification of status schemas based on business goal definitions
US8762322B2 (en) 2012-05-22 2014-06-24 Oracle International Corporation Distributed order orchestration system with extensible flex field support
US9672560B2 (en) 2012-06-28 2017-06-06 Oracle International Corporation Distributed order orchestration system that transforms sales products to fulfillment products
US8996473B2 (en) 2012-08-06 2015-03-31 Sap Se Checking compatibility of extended and core SAM schemas based on complex goals
US9766909B2 (en) * 2012-12-11 2017-09-19 Sap Se Sequencing of business object logic extensions to ensure data consistency across layers
US20140244538A1 (en) * 2013-02-28 2014-08-28 International Business Machines Corporation Business process management, configuration and execution
US20140344708A1 (en) * 2013-03-14 2014-11-20 Michael Carr System and Methods for Capturing and Managing Business Intelligence Requirements
US10417594B2 (en) 2013-05-02 2019-09-17 Sap Se Validation of functional correctness of SAM schemas including action chains
US10229224B2 (en) 2013-09-19 2019-03-12 Infosys Limited Systems and methods for selecting process element variants in business processes
US9246935B2 (en) 2013-10-14 2016-01-26 Intuit Inc. Method and system for dynamic and comprehensive vulnerability management
US9501345B1 (en) 2013-12-23 2016-11-22 Intuit Inc. Method and system for creating enriched log data
US9323926B2 (en) 2013-12-30 2016-04-26 Intuit Inc. Method and system for intrusion and extrusion detection
US9325726B2 (en) 2014-02-03 2016-04-26 Intuit Inc. Method and system for virtual asset assisted extrusion and intrusion detection in a cloud computing environment
US20150304343A1 (en) 2014-04-18 2015-10-22 Intuit Inc. Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment
US9866581B2 (en) 2014-06-30 2018-01-09 Intuit Inc. Method and system for secure delivery of information to computing environments
US10757133B2 (en) 2014-02-21 2020-08-25 Intuit Inc. Method and system for creating and deploying virtual assets
US9276945B2 (en) 2014-04-07 2016-03-01 Intuit Inc. Method and system for providing security aware applications
US9245117B2 (en) 2014-03-31 2016-01-26 Intuit Inc. Method and system for comparing different versions of a cloud based application in a production environment using segregated backend systems
US11294700B2 (en) 2014-04-18 2022-04-05 Intuit Inc. Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets
US9374389B2 (en) 2014-04-25 2016-06-21 Intuit Inc. Method and system for ensuring an application conforms with security and regulatory controls prior to deployment
US9319415B2 (en) * 2014-04-30 2016-04-19 Intuit Inc. Method and system for providing reference architecture pattern-based permissions management
US9900322B2 (en) 2014-04-30 2018-02-20 Intuit Inc. Method and system for providing permissions management
US9330263B2 (en) 2014-05-27 2016-05-03 Intuit Inc. Method and apparatus for automating the building of threat models for the public cloud
US9473481B2 (en) 2014-07-31 2016-10-18 Intuit Inc. Method and system for providing a virtual asset perimeter
US10102082B2 (en) 2014-07-31 2018-10-16 Intuit Inc. Method and system for providing automated self-healing virtual assets
US9727450B2 (en) * 2015-03-27 2017-08-08 Syntel, Inc. Model-based software application testing
US20160300177A1 (en) * 2015-04-09 2016-10-13 Sap Se Implementation-embedded and runtime-relevant business process modeling
US9311083B1 (en) * 2015-04-10 2016-04-12 CypressX LLC Machine interface configuration system for coerced inconsistencies on different machine platforms
US10120927B2 (en) * 2015-06-03 2018-11-06 International Business Machines Corporation Technology for generating a model in response to user selection of data
US20160364909A1 (en) * 2015-06-15 2016-12-15 Microsoft Technology Licensing, Llc. Architecture impact analysis
US9712472B2 (en) 2015-07-02 2017-07-18 Microsoft Technology Licensing, Llc Application spawning responsive to communication
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US9733993B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Application sharing using endpoint interface entities
US9733915B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Building of compound application chain applications
US9860145B2 (en) 2015-07-02 2018-01-02 Microsoft Technology Licensing, Llc Recording of inter-application data flow
US9785484B2 (en) 2015-07-02 2017-10-10 Microsoft Technology Licensing, Llc Distributed application interfacing across different hardware
US9658836B2 (en) * 2015-07-02 2017-05-23 Microsoft Technology Licensing, Llc Automated generation of transformation chain compatible class
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
US10452246B2 (en) * 2015-08-27 2019-10-22 Sap Se Customizable user interfaces for software applications based on user-and industry-defined constraints
US10831706B2 (en) * 2016-02-16 2020-11-10 International Business Machines Corporation Database maintenance using backup and restore technology
US10445680B2 (en) * 2017-02-02 2019-10-15 Azuqua, Inc. Engine for modeling and executing custom business processes
US11055310B2 (en) 2017-12-04 2021-07-06 Bank Of America Corporation SQL server integration services (SSIS) package analyzer
US11842126B2 (en) * 2019-03-13 2023-12-12 Dell Products L.P. System for generating a high-level product behavior document based on embedded information in functional blocks executed during runtime of source code
US11215961B2 (en) * 2019-08-30 2022-01-04 Tata Consultancy Services Limited System and method of declarative modeling of a process for automation
US11348049B2 (en) * 2020-02-05 2022-05-31 Hatha Systems, LLC System and method for creating a process flow diagram which incorporates knowledge of business terms
US11836166B2 (en) 2020-02-05 2023-12-05 Hatha Systems, LLC System and method for determining and representing a lineage of business terms across multiple software applications
US11620454B2 (en) 2020-02-05 2023-04-04 Hatha Systems, LLC System and method for determining and representing a lineage of business terms and associated business rules within a software application

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11259283A (ja) * 1998-03-13 1999-09-24 Nippon Telegr & Teleph Corp <Ntt> ソフトウェア開発方法および開発システム
JP2002366353A (ja) * 2001-06-05 2002-12-20 Skill Informations Co Ltd 汎用フレームワーク開発ミドルウェアシステム

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263438A (ja) * 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US5999911A (en) * 1995-06-02 1999-12-07 Mentor Graphics Corporation Method and system for managing workflow
US5872973A (en) * 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US6253251B1 (en) * 1996-01-03 2001-06-26 International Business Machines Corp. Information handling system, method, and article of manufacture including integration of object security service authorization with a distributed computing environment
CA2249386C (en) * 1996-03-19 2004-06-01 Massachusetts Institute Of Technology Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
AU2453797A (en) * 1996-04-10 1997-10-29 Paul M. Konnersman Computer-based system for work processes that consist of interdependent decisions involving one or more participants
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6018627A (en) * 1997-09-22 2000-01-25 Unisys Corp. Tool-independent system for application building in an object oriented development environment with data stored in repository in OMG compliant UML representation
US6621505B1 (en) * 1997-09-30 2003-09-16 Journee Software Corp. Dynamic process-based enterprise computing system and method
US6014666A (en) * 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6012067A (en) * 1998-03-02 2000-01-04 Sarkar; Shyam Sundar Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web
JPH11282753A (ja) * 1998-03-06 1999-10-15 Internatl Business Mach Corp <Ibm> オブジェクトへのアクセス方法及び装置、オブジェクトへのアクセスを制御するプログラムを格納した記憶媒体
US6850893B2 (en) * 2000-01-14 2005-02-01 Saba Software, Inc. Method and apparatus for an improved security system mechanism in a business applications management system platform
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation
US6473791B1 (en) * 1998-08-17 2002-10-29 Microsoft Corporation Object load balancing
US6167564A (en) * 1998-09-17 2000-12-26 Unisys Corp. Software system development framework
US6782374B2 (en) * 1998-12-22 2004-08-24 Accenture Global Services Gmbh System, method and article of manufacturing for a runtime program analysis tool for a simulation engine
US6393474B1 (en) * 1998-12-31 2002-05-21 3Com Corporation Dynamic policy management apparatus and method using active network devices
US6301585B1 (en) * 1999-03-17 2001-10-09 Sun Microsystems, Inc. Redundancy elimination in the persistence of object graphs
US6754885B1 (en) * 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
US6721713B1 (en) * 1999-05-27 2004-04-13 Andersen Consulting Llp Business alliance identification in a web architecture framework
US6678882B1 (en) * 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
WO2001002973A1 (en) 1999-07-02 2001-01-11 Covad Communications Group, Inc. Process fulfillment systems and methods using distributed workflow management architecture
US6954220B1 (en) * 1999-08-31 2005-10-11 Accenture Llp User context component in environment services patterns
US6405364B1 (en) * 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
US7139999B2 (en) * 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
AU7857300A (en) * 1999-10-05 2001-05-10 Togethersoft Corporation Method and system for developing software
US6983446B2 (en) * 1999-10-05 2006-01-03 Borland Software Corporation Methods and systems for finding specific line of source code
US6976243B2 (en) * 1999-10-05 2005-12-13 Borland Software Coporation Method and system for developing source code and displaying linked elements found within the source code
US6732353B1 (en) * 1999-10-08 2004-05-04 International Business Machines Corporation Method and system for generating enterprise applications of a diversity of information technologies
US6769113B1 (en) * 1999-10-08 2004-07-27 International Business Machines Corporation Enterprise process models and enterprise application for information technologies
US6714915B1 (en) * 1999-11-22 2004-03-30 International Business Machines Corporation System and method for project designing and developing a procurement and accounts payable system
US6625651B1 (en) * 1999-11-30 2003-09-23 Accenture Llp On-line transaction control during activation of local telecommunication service
US6587849B1 (en) * 1999-12-10 2003-07-01 Art Technology Group, Inc. Method and system for constructing personalized result sets
US6587888B1 (en) * 1999-12-15 2003-07-01 Networks Associates Technology, Inc. Dynamic software wrapper
US6553377B1 (en) * 2000-03-31 2003-04-22 Network Associates, Inc. System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment
WO2001075747A1 (en) 2000-03-31 2001-10-11 Siebel Systems, Inc. Workflow processes method and system
AU2001259107A1 (en) * 2000-04-21 2001-11-07 Togethersoft Corporation Methods and systems for supporting and deploying distributed computing components
EP1290552A1 (en) 2000-04-21 2003-03-12 Togethersoft Corporation Methods and systems for identifying dependencies between object-oriented elements
US6986046B1 (en) * 2000-05-12 2006-01-10 Groove Networks, Incorporated Method and apparatus for managing secure collaborative transactions
US6889227B1 (en) * 2000-07-21 2005-05-03 Sun Microsystems, Inc. Database access bridge system and process
US6754643B1 (en) * 2000-10-03 2004-06-22 Sandia Corporation Adaptive method with intercessory feedback control for an intelligent agent
US7005130B2 (en) * 2001-01-05 2006-02-28 Virginia Tech Intellectual Properties, Inc. Avian hepatitis E virus, vaccines and methods of protecting against avian hepatitis-splenomegaly syndrome and mammalian hepatitis E
US6976270B2 (en) * 2001-05-08 2005-12-13 Hewlett-Packard Development Company, L.P. Process and component for inquiring about security relationships
FI20015008A (fi) 2001-06-08 2002-12-09 Sonera Oyj Hajautettu oliokomponenttiverkko
US6973655B2 (en) * 2001-12-18 2005-12-06 Xerox Corporation System and method of integrating software components
US6912710B2 (en) * 2002-01-31 2005-06-28 International Business Machines Corporation Round-trip maintenance of software configuration
US7149510B2 (en) * 2002-09-23 2006-12-12 Telefonaktiebolaget Lm Ericsson (Publ) Security access manager in middleware
US20040133445A1 (en) * 2002-10-29 2004-07-08 Marathon Ashland Petroleum L.L.C. Generic framework for applying object-oriented models to multi-tiered enterprise applications
US6775485B1 (en) * 2003-06-09 2004-08-10 Hewlett-Packard Development Company, L.P. Image forming device component retention system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11259283A (ja) * 1998-03-13 1999-09-24 Nippon Telegr & Teleph Corp <Ntt> ソフトウェア開発方法および開発システム
JP2002366353A (ja) * 2001-06-05 2002-12-20 Skill Informations Co Ltd 汎用フレームワーク開発ミドルウェアシステム

Cited By (12)

* 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)処理のための方法および装置
JP2008544338A (ja) * 2005-04-29 2008-12-04 マイクロソフト コーポレーション Xmlアプリケーションフレームワーク
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8275793B2 (en) 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8793649B2 (en) 2005-04-29 2014-07-29 Microsoft Corporation XML application framework
JP2009533755A (ja) * 2006-04-12 2009-09-17 マイクロソフト コーポレーション ビジネスプロセスのメタモデル
US8640083B2 (en) 2006-04-12 2014-01-28 Microsoft Corporation Time business process validations within data context
JP2008276394A (ja) * 2007-04-26 2008-11-13 Nippon Telegr & Teleph Corp <Ntt> プロセスモデル作成システム、方法及びそのプログラム
JP2009245117A (ja) * 2008-03-31 2009-10-22 Nippon Telegr & Teleph Corp <Ntt> 業務プロセスモデル比較方法、その装置およびプログラム
JP2010026695A (ja) * 2008-07-17 2010-02-04 Hitachi Ltd ビジネスプロセス実行方法、ビジネスプロセス実行装置及びビジネスプロセス実行プログラム
JP2013506199A (ja) * 2009-09-25 2013-02-21 アビニシオ テクノロジー エルエルシー グラフベース・アプリケーションにおけるトランザクションの処理

Also Published As

Publication number Publication date
US20040181775A1 (en) 2004-09-16
US7730446B2 (en) 2010-06-01
EP1457907A1 (en) 2004-09-15

Similar Documents

Publication Publication Date Title
US7730446B2 (en) Software business process model
US7577934B2 (en) Framework for modeling and providing runtime behavior for business software applications
López‐Pintado et al. Caterpillar: a business process execution engine on the Ethereum blockchain
US10324690B2 (en) Automated enterprise software development
JP5238138B2 (ja) ワークアイテムトラッキングシステム用のワークアイテムルール
RU2425417C2 (ru) Платформа для служб передачи данных между несопоставимыми объектными сруктурами приложений
CA2504082C (en) Method and apparatus for generating user interfaces based upon automation with full flexibility
US6678882B1 (en) Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
US7085752B2 (en) Customization of metadata describing objects in a computing environment
US20030177481A1 (en) Enterprise information unification
JP2004272908A (ja) システムの設計、展開、管理のフェーズを統合する方法
US20120060141A1 (en) Integrated environment for software design and implementation
Altintas et al. Modeling product line software assets using domain-specific kits
EP1498813A2 (en) Design time validation of systems
US11204908B2 (en) Augmentation playback
CN115222345A (zh) 一种审核作业方法及装置
Kanalakis Developing. NET Enterprise Applications
Liljas et al. NHibernate 4. x Cookbook
Microsoft Dynamics AX Team Inside Microsoft Dynamics AX 2012 R3
Mustafa A flexible architecture for manufacturing planning software maintenance
Schmidt et al. TECHNICAL UNIVERSITY HAMBURG-HARBURG GERMANY
Digre Business Object Facility
Wasilewski Modeling of Enterprise Portals with Domain-Specific Language
Tarandi et al. D20 Open Web-based ICT Platform: InPro Publications
Hoare 6. System Design

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100430

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110325