第13章 PMML モデルの実行
Business Central を使用して Red Hat Process Automation Manager に PMML ファイルをインポートする (Menu ApplyPmmlModelCommand コマンドを送信して、PMML ベースのデシジョンサービスを実行できます。
プロジェクトのパッケージ化およびデプロイメントの方法に PMML アセットを追加する方法の詳細は、Red Hat Process Automation Manager プロジェクトのパッケージ化およびデプロイ を参照してください。
Business Central の Decision Model and Notation (DMN) サービスの一部として、PMML モデルを追加することもできます。DMN ファイルに PMML モデルを追加すると、その PMML モデルを DMN デシジョンノードまたはビジネスナレッジモデルノードのボックス関数式として呼び出すことができます。DMN サービスへの PMML モデルの追加に関する詳細は、DMN モデルを使用したデシジョンサービスの作成 を参照してください。
13.1. PMML 信頼呼び出しの Java アプリケーションへの直接組み込み リンクのコピーリンクがクリップボードにコピーされました!
KIE コンテナーは、呼び出しプログラムにナレッジアセットを直接組み込む場合や、KJAR 用 Maven 依存関係を使用して物理的にプルする場合は、ローカルとみなされます。コードのバージョンと、PMML 定義のバージョンとの間に密接な関係がある場合は、ナレッジアセットをプロジェクトに直接組み込みます。意思決定への変更は、アプリケーションを更新して再デプロイしないと有効になりません。このアプローチに対する利点は、適切なオペレーションがランタイムへの外部の依存関係に依存していないことですが、ロックされた環境の場合は制限になる可能性があります。
前提条件
- 実行する PMML モデルを含む KJAR が作成されている。プロジェクトのパッケージ化に関する詳細は、Red Hat Process Automation Manager プロジェクトのパッケージ化およびデプロイ を参照してください。
手順
クライアントアプリケーションで、Java プロジェクトの関連クラスパスに以下の依存関係を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <version>は、プロジェクトで現在使用されている Red Hat Process Automation Manager の Maven アーティファクトバージョンです (例: 7.67.0.Final-redhat-00024)。注記個別の依存関係に対して Red Hat Process Automation Manager
<version>を指定するのではなく、Red Hat Business Automation BOM (bill of materials) の依存関係をプロジェクトのpom.xmlファイルに追加することを検討してください。Red Hat Business Automation BOM は、Red Hat Decision Manager と Red Hat Process Automation Manager の両方に適用されます。BOM ファイルを追加すると、提供される Maven リポジトリーから、推移的依存関係の適切なバージョンがプロジェクトに含められます。BOM 依存関係の例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Business Automation BOM の詳細情報は、What is the mapping between RHPAM product and maven library version? を参照してください。
classpathまたはReleaseIdから KIE コンテナーを作成します。KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId( "org.acme", "my-kjar", "1.0.0" ); KieContainer kieContainer = kieServices.newKieContainer( releaseId );
KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId( "org.acme", "my-kjar", "1.0.0" ); KieContainer kieContainer = kieServices.newKieContainer( releaseId );Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、以下のオプションを使用します。
KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.getKieClasspathContainer();
KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.getKieClasspathContainer();Copy to Clipboard Copied! Toggle word wrap Toggle overflow モデルの実行に使用する
PMMLRuntimeのインスタンスを作成します。PMMLRuntime pmmlRuntime = KieRuntimeFactory.of(kieContainer.getKieBase()).get(PMMLRuntime.class);
PMMLRuntime pmmlRuntime = KieRuntimeFactory.of(kieContainer.getKieBase()).get(PMMLRuntime.class);Copy to Clipboard Copied! Toggle word wrap Toggle overflow PMMLRequestDataクラスのインスタンスを作成し、PMML モデルをデータセットに適用します。PMMLRequestData pmmlRequestData = new PMMLRequestData({correlation_id}, {model_name}); pmmlRequestData.addRequestParam({parameter_name}, {parameter_value}) ...PMMLRequestData pmmlRequestData = new PMMLRequestData({correlation_id}, {model_name}); pmmlRequestData.addRequestParam({parameter_name}, {parameter_value}) ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力データが含まれる
PMMLContextクラスのインスタンスを作成します。PMMLContext pmmlContext = new PMMLContextImpl(pmmlRequestData);
PMMLContext pmmlContext = new PMMLContextImpl(pmmlRequestData);Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した必須の PMML クラスインスタンスを使用して PMML の実行時に
PMML4Resultを取得します。PMML4Result pmml4Result = pmmlRuntime.evaluate({model_name}, pmmlContext);PMML4Result pmml4Result = pmmlRuntime.evaluate({model_name}, pmmlContext);Copy to Clipboard Copied! Toggle word wrap Toggle overflow