概要: BOM および実行オブジェクト・モデル (XOM)
XOM はさまざまなデータ・ソースからビルドできます。
実行オブジェクト・モデル (XOM) は、ルールを実行する対象となるモデルです。 これは、アプリケーション・オブジェクトおよびデータを参照し、ビジネス・オブジェクト・モデル (BOM) の基本的な実装です。 ルール・プロジェクトは XOM を参照します。
XOM を介して、ルール・エンジンは、アプリケーション・オブジェクトおよびメソッドにアクセスできます。これらは、Java™ オブジェクト、XML データ、または他のソースからのデータです。 BOM に記述されたルールは、ランタイムに XOM に対して実行されます。

すべての BOM エレメント (ビジネス・エレメント) には、対応する XOM エレメント (実行エレメント) が必要です。 実行エレメントとビジネス・エレメント間の対応は、1 対 1 である必要はありません。 ビジネス・エレメントが実行エレメントから派生する場合、明示的マッピングを指定する必要はありません。 ビジネス・エレメントが実行エレメントから派生していない場合、BOM から XOM へのマッピングを指定する必要があります。
XOM から BOM を生成する場合、BOM から XOM への暗黙的マッピングには、いくつかの内部ルールが存在します。 例えば、BOM クラスは、同じ名前の XOM クラスに暗黙的にマップされます。
Java モデル用の BOM の設計
データ・モデルが Java の場合、この Java 実行オブジェクト・モデル (XOM) から BOM を直接生成できます。 Java XOM から作成された BOM のマッピングを参照してください。 XOM 注釈を使用して BOM 生成を構成できます。 XOM 注釈を参照してください。 BOM をビジネス・クラスとメソッドで拡張する場合は、BOM エディターで BOM から XOM へのマッピングを使用して、これらのビジネス・エレメントを XOM 要素にマップすることができます。 BOMとXOMのマッピングを指定する方法は2つあります。エクステンダーマッピングまたはARLマッピングです。詳細は 、「ルール言語とエクステンダーマッピング 」を参照してください。 ビジネス・ユーザーは、基礎となるデータ型やプラットフォームを考慮せずに、ビジネス・ルールを作成することができます。
配布時に、アプリケーションが Java または Web アプリケーションである場合、Java XOM はアプリケーションにパッケージ化され、XOM に対して実行する必要がある特定の配布ステップはありません。 ルールおよび BOM から XOM へのマッピング定義を、ルール・セット・アーカイブにパッケージ化します。その後、ルール・セット・アーカイブは、ルール・ランタイム Rule Execution Serverを介して呼び出しアプリケーションから使用可能になります。

テストおよびシミュレーション用にテスト・サーバーに配布するため、またはルールをホスト化されたトランスペアレント意思決定サービス (HTDS) として公開するために、Java または Web 呼び出しアプリケーションがない場合は、Java XOM を Rule Execution Server データベースに配布する必要があります。
ルールの実行をテストおよびシミュレートする場合、Decision Runnerは実行のために Rule Execution Serverにアクセスし、 Rule Execution ServerはデータベースからXOMを取得します。
HTDS を生成する場合、 Rule Execution Server は同様の方法でデータベースから XOM を取得します ( HTDS WSDL ファイルのダウンロードを参照)。

ランタイムXOMに関する考察
意思決定サービスで1つ以上のJava XOMを使用し、ホストされた透過的な意思決定サービス(HTDS)ウェブ・アプリケーションを使用する予定の場合は、XOMを慎重に設計する必要があります。 あなたのXOMはHTDS全体で使用され、イントロスペクションやシリアライズ/デシリアライズの対象となります:
- JavaからJSONまたはXMLへのシリアライゼーションは、サンプルのRESTリクエストを生成したり、SOAPまたはRESTレスポンスを提供するときに行われます。
- JSONまたはXMLからJavaへのデシリアライズは、SOAPまたはRESTリクエストを処理するときに行われる。
- モデルのイントロスペクションは、API記述子( OpenAPI, WADLまたはWSDL)を生成するときに行われる。
結果として、XOMを設計する際には、標準的なシリアライゼーション要件を尊重する必要がある:
- Javaクラスがシリアライズ・エンジンでインスタンス化できることを確認する。 Javaクラスにパラメータなしのコンストラクタを定義し、必要なフィールドすべてにゲッターとセッターを定義するか、Javaクラスからオブジェクトを作成するときにアノテーションを使ってシリアライズ・エンジンをガイドします。
- モデルのサイクルを避ける。
- (推奨)アノテーションを使用して、意思決定サービスにとって有用でないフィールドやプロパティを無視する。
- (オプション)Javaクラスやメソッドに、JSON用のJacksonアノテーションまたはXML用のJAXBアノテーションを付けて、デシジョンサービス・パラメータのシリアライズとデシリアライズ、およびAPI記述子の生成に影響を与えます。
XML モデル用の BOM の設計
データ モデルが XML 形式の場合、この動的 XOM から直接 BOM を生成できます。 「概要: 動的実行オブジェクト モデル (XOM)」 および 「組み込みの単純型」を参照してください。 BOM をビジネス・クラスとメソッドで拡張する場合は、BOM エディターで BOM から XOM へのマッピングを使用して、これらのビジネス・エレメントを XOM 要素にマップすることができます。 このマッピングはARL マッピングで指定する。 ビジネス・ユーザーは、基礎となるデータ型やプラットフォームを考慮せずに、ビジネス・ルールを作成することができます。
動的 XOM ファイルおよび BOM から XOM へのマッピング・ファイルは、配布時にルールとともにルール・セット・アーカイブにパッケージ化されます。その後、ルール・セット・アーカイブは、ルール・ランタイム Rule Execution Serverを介して呼び出しアプリケーションから使用可能になります。
