IBM WebSphere Operational Decision Management 7.5 テクニカル ・ セミナー
by user
Comments
Transcript
IBM WebSphere Operational Decision Management 7.5 テクニカル ・ セミナー
IBM WebSphere Operational Decision Management 7.5 テクニカル・セミナー ルール開発 万仲 龍樹 Webソリューション開発 日本アイ・ビー・エム システムズ・エンジニアリング㈱ © 2012 IBM Corporation 目次 1.WODMでのビジネス・ルール 2.ルールの開発の流れ ルール開発プロセスと前提成果物 Rule Designerでのルール開発の流れ 3.ルールの設計 ルール・プロジェクト 実行オブジェクト・モデル ビジネス・オブジェクト・モデルと言語化 ドメイン定義 パラメータの定義 4.ルールの記述と実行制御 ルール・パッケージとルール・フロー アクション・ルール 意思決定表 意思決定ツリー ルール作成のポイント 2 5.ルールのテスト・配布 Decision Validation Service ルールの配布 6.ルールの作成支援機能 ルール分析 ルールレポート クエリー 7.ルール実行基盤 Java SE Java EE 8.ルールアプリケーションの実行 ルール呼び出し方法の種類 ルール呼び出しコード まとめ © 2012 IBM Corporation 1.WODMでのビジネス・ルール 3 © 2012 IBM Corporation ビジネス・ルールと意思決定管理 zシステムの計算、判断、確認など柔軟に変更したい部分をプログラムコードと別に管理 z滅多に変えない堅牢なシステム基盤と、柔軟に変更・進化させたい業務ロジックの分離 z業務ロジックの可視化によるコミュニケーションの改善と監査性の向上 ディシジョン・マネージメント (WODM) 意思決定が存在する典型的な場所 ビジネスロジックが各所に散らばっている 可視化されていない(透明性の課題) 保守性が悪いために陳腐化する アプリケーションコードに埋め 込まれたロジック プロセスの中に定義され たロジック ユーザー・ツール If xxxx Then xxxxx Else xxxxx ・・・・・・・ ・・・・・・・ 人の頭の中にノウハウとし てあるロジック 各種ドキュメントの中にあ るロジック From : Honmoku To : Smyrna Order No. RAN No. Part Number : 24011 CJ000 Tracking Point Status Invoice No. B/L No. RAN# PART# SA00001 SA00002 SA00003 SA00004 SA00005 24011 CJ000 24011 CJ000 24011 CJ000 24011 CJ000 24011 CJ000 (60)B/L Plan 060415 060415 060415 060415 060415 意思決定の 可視化 ビジネスユーザ 自らの 変更が可能 ・意思決定を保存 ・意思決定の 一元管理 ・意思決定の共有 意思決定の 一元管理による 透明性・保守性 の確保 リポジトリー 意思決定を 展開、実行、 およびモニター Today : 2005/04/16 Plan Actual Current (40)Vanning Completion QTY QTY Status Plan Revised Actual 200 200 60 060415 060415 060415 100 100 60 060415 060415 060415 200 200 40 060415 060415 060415 200 200 00 060415 060418 100 100 00 060415 060418 ・意思決定の定義 ・意思決定の 分析 ・意思決定の保守 ※業務用語 … Revised Actual … 060415 060415 060415 060415 060417 060418 060418 結果として変更へ の対応柔軟性を 実現 実行エンジン 4 © 2012 IBM Corporation WODM コンポーネント間の関係 WebSphere Decision Center Ruledocs Ruledocs Decision Center コンソール Decision Center for Business Space Rule Solutions for Office デプロイ デプロイ Decision Center リポジトリー 同期 同期 デプロイ デプロイ 同期 同期 デプロイ デプロイ デプロイ デプロイ Rule Execution Server 5 5 Rule Designer Event Designer WebSphere Decision Server イベント実行 ランタイム © 2012 IBM Corporation WODM Ruleの全体像 業務ユーザ向け ルール管理環境 ITユーザ向け ルール開発環境 Rule Solutions for Office ルール 開発者 Rule Designer Decision Server モジュール ルールの 配備 Decision Validation Service ルールリポジトリ システム 管理者 ルールの 配備 Decision Centerモジュール 本番環境 システム 管理者 Decision Serverモジュール 6 Rule Execution Server 管理コンソール © 2012 IBM Corporation Rule Designer Eclipseベースの開発環境 Eclipse3.6(RAD8と同等レベル) ルール開発の作業をすべて可能 7 © 2012 IBM Corporation Rule Solutions for Office 業務ユーザー向けのルール編集ツール MS Office 2007以降のOfficeのアドインとして導入 Decision CenterからルールをMS Office用のルールファイルに抽出 更新をルール管理環境へマージ 通常のWord/Excel文書で仕様定義書として再利用可能 8 © 2012 IBM Corporation 2.ルール開発の流れ 9 © 2012 IBM Corporation ルール開発のプロセスと前提成果物 ABRD(Agile Business Rule Development) ルール開発のための開発プロセス ルール抽出/設計/実装をスコープとしている ルール開発の前提成果物 •抽出・洗練されたルール候補 •論理データモデルと用語集 •テストシナリオ Rule Designerでの 開発とテスト ルール開発の成果物 •ルール・プロジェクト •ルール・セット(配置可能なルール) •DVSテストケース •ルール・レポート 10 © 2012 IBM Corporation ルールの主要な構成要素 ビジネス・ルール ルールを構成するオブジェクト・モデルと語彙 ルールの実行順序を定義するルール・フロー ルールの入出力データであるルールセット・パラメータ 各種成果物をパッケージングするルール・プロジェクト 11 © 2012 IBM Corporation Designerでのルール開発の流れ Rule Designerを使用したルール開発の基本的な流れはDesigner 内にあるルール・プロジェクト・マップで示される それぞれのタスクがリンクとなっており、クリックすることでそのタスクを実行できる 「アクション・ルールの追加」をクリックすると、ウィザードが起動する、など 12 © 2012 IBM Corporation 3.ルールの設計 13 © 2012 IBM Corporation ルールの設計 ルール・プロジェクト プロジェクトの設計と依存関係 オブジェクト・モデルの作成 XOMとBOM 言語化 ドメインの定義 パラメータの定義 14 © 2012 IBM Corporation ルール・プロジェクト ルール成果物の基本的な構成単位 Eclipseレベルで見ると、プロジェクトの一種 Decision Serverに配置可能なルールの基本単位 Decision Centerでの管理単位 ルール ルールそのもの ルールの実行制御を行うルール・フロー bom ルールを構成するオブジェクト・モデル クエリー ルール成果物の検索 テンプレート ルールを作成する際に再利用可能な雛形 リソース(WODM7.5 New) ドメイン定義に使用するExcelファイルなどを保 存する 15 © 2012 IBM Corporation ルール・プロジェクトの依存関係 ルール・プロジェクトの依存関係を定義可能 オブジェクトモデル定義の共通化 作成済みルールを再利用して、新しいルールセットを作成 業務の分類やオーナー組織など、メンテナンスを考慮する ルールプロジェクトC1 (検証だけ実行する) ルールプロジェクトB1 (データ検証ルール) ルールプロジェクトC2 (検証と計算をする) ルールプロジェクトB2 (料金計算ルール) ルールプロジェクトA (BOM、テンプレート) 16 Bで定義されたルールに対してルールフロー を定義する Aで定義されたオブジェクトモデルを利用して ルールを定義する 共通するオブジェクトモデルやルールの テンプレートを定義する © 2012 IBM Corporation オブジェクト・モデルの作成 ルールを構成する語彙 ビジネス用語を割り当て(言語化)、ルール記述を行えるようにする 実行オブジェクト・モデルとビジネス・オブジェクト・モデル マッピング 17 © 2012 IBM Corporation 実行オブジェクト・モデル XOM(Execution Object Model) ビジネス・オブジェクト・モデルの実装 ルール・プロジェクトから参照される 実行時にルールエンジンはXOMを介してアプリケーション・オブジェクトやメソッドにア クセスする 主要な実装方法は2種類 Java Javaプロジェクトとして参照される XML Schema(XSD) ルールプロジェクト内に保持される 18 © 2012 IBM Corporation ビジネス・オブジェクト・モデルと言語化 BOM(Business Object Model) ビジネス・ルールを記述する際に使用するオブジェクトの定義 言語化によってプログラム的な要素に対してビジネス用語を関連付けている 「‘ローン’」や 「‘ローン’を却下」も 言語化された語彙 Borrowerに対して 「借り手」 creditScoreに対して 「クレジット・スコア」を マッピング 19 © 2012 IBM Corporation BOMとXOMの同期化 オブジェクト・モデルが変更になった場合、その変更をすぐに取り 込むことができる 以下はXOMのオブジェクトにフィールドを追加した場合の例 20 © 2012 IBM Corporation ドメインの定義 BOMでのエレメントに対する制約を定義する 文字列型に対する値の制約条件など String型の値に対して、A, B, C, D, Eの五種類に限定 されるよう制約を定義して いる。 21 定義されていない値と比較 しようとして、エラーとして 検出されている © 2012 IBM Corporation 意思決定表でのドメイン 入力制約として利用することができる 22 © 2012 IBM Corporation 動的ドメイン 動的ドメイン Excelベースで定義し、BOMに反映 ビジネスユーザーがメンテナンス時にも実施可能 任意のタイミング で更新可能 23 言語化もExcel上 の定義で実行 © 2012 IBM Corporation パラメータの定義 ルール・プロジェクトの外部インターフェースとなる入出力定義 ルールを呼び出すアプリケーションとのインターフェース ルール・プロジェクトのプロパティで設定する 名前 型 方向 デフォルト値 言語化 24 呼び出しアプリケーションから指定する名前 BOMで定義した型やJavaの単純型を指定する IN:入力のみ、IN_OUT:入力と出力、OUT:出力のみ StringやIntegerなどの場合の初期値を設定できる ルール内で利用する際の名前 © 2012 IBM Corporation 4.ルール記述と実行制御 25 © 2012 IBM Corporation ルール記述と実行制御 ルール・パッケージとルール・フロー プロジェクトの設計と依存関係 ビジネス・ルールの記述方法 アクション・ルール 意思決定表 意思決定ツリー ルール作成のポイント 26 © 2012 IBM Corporation ルール・パッケージとルール・フロー ルール成果物はパッケージでグループ化する ルール・フローでルールの実行順序を制御を定義する ルール・フローの「ルール・タスク」に実行するルールを定義する ルール・タスクには、ルール単位やパッケージ単位で追加できる 27 © 2012 IBM Corporation ルール・エンジンの実行モード ルールの実行を制御するパラメータのひとつ ルール・フローの中のルール・タスクのプロパティとして設定できる 実行するルールの特性に応じて選択する RetePlus 特徴 Sequential Reteアルゴリズムをベー 入力されたデータに対 スとする。作業メモリとア し、実行可能なルール ジェンダを使用して、実行 をすべて連続して実行 するルールを決定する。 する。 実行しながらパターン マッチングを行い、実行 するルールの再評価する。 Fastpath RetePlusのようにパ ターンマッチングを 行って実行するルー ルを決めていくが、 ルール実行の結果を 元に再度パターンマッ チングは行わない。 計算 ○ - - 相関チェック ○ - ○ - ○ ○ ○ - - 検証 ステートフル 28 © 2012 IBM Corporation アクション・ルール 日本語でのルール記述方法 ひとつのif – then – elseを定義する ルールの数え方は1ファイルで1ルール 4つの部分に分けられる 29 定義(オプション) ルール内で使用する変数定義 仮定条件(オプション) アクション・ルールの条件 その場合(必須) 条件に合致した場合のアクション それ以外の場合(オプション) 条件に合致しなかった場合のアクション © 2012 IBM Corporation 意思決定表 表形式のルール記述方法 対称性があるルールを一括で記述・管理することに向いている ルールの数え方は、表の各行が1ルールに相当する 条件を記述している列 「等級」の列に対する警告はドメインで定義されて いる値すべてを条件に含めていないため 30 アクションを記述している列 「保険料率」の列には実行しないアクションを明示している © 2012 IBM Corporation 意思決定表でのチェック(1/2) 意思決定表で検出できる値の重複の例 31 © 2012 IBM Corporation 意思決定表でのチェック(2/2) 意思決定表で検出できる値のギャップの例 32 © 2012 IBM Corporation 意思決定ツリー フローチャート形式のルール記述方法 対称性がないルールの集合を視覚化して記述できる 33 © 2012 IBM Corporation (参考)意思決定表で記述する非対称ルール 前ページの意思決定ツリーと同等のルールを意思決定表で記述 することもできる 34 © 2012 IBM Corporation ルール作成のポイント ルールの可視性・メンテナンス性を高めることを意識する ITとビジネスのコミュニケーションを促進 ルールの分類と最適な記述方法の選択 業務的な視点を意識 ルールの所有者やメンテナンス実施者 できるだけルールで記述する アプリケーションとルールのインターフェースを変更に強く設計する オブジェクト・モデルの構造・実装は基本的にビジネスユーザーに変更できない ツールやスキルの制約 動的ドメインの活用 35 © 2012 IBM Corporation ルールとオブジェクト・モデルの設計と実装(1/3) オブジェクト・モデルはできるだけ値の受け渡しを中心に設計する 値に対するGetter/Setter データに対する処理は基本的にルールとして記述する 表現として理解しやすいかどうかを考える ビジネスユーザーとITユーザーが仕様を共有し、メンテナンスできる目的 Setterをそのまま利用する場合 36 © 2012 IBM Corporation ルールとオブジェクト・モデルの設計と実装(2/3) Setterとは別のアクションを定義する 「(数値)を追加」という表現で記述できるようにした例 37 © 2012 IBM Corporation ルールとオブジェクト・モデルの設計と実装(3/3) XOMで実装したほうがよいロジック ビジネス・ロジックとして実装そのものに変更がない普遍の公式など public static double getMonthlyRepayment(double amount, int numberOfMonth, double yearlyRate) { double i = yearlyRate / 12; double p = i * amount / (1 - Math.pow(1 + i, -numberOfMonth)); return p; } 38 © 2012 IBM Corporation 5.ルールのテストと配布 39 © 2012 IBM Corporation ルールのテストと配布 ルールのテスト Decision Validation Service ルールの配布 パッケージング方法 Rule DesignerからDecision Serverへの配布 Decision Centerとの同期 40 © 2012 IBM Corporation Decision Validation Service ルールのテスト、シミュレーションを行う機能 Excelファイルで作成したテストケースを使ってテストを実施する Rule Designer、Decision Center上の両方で実行可能 複数のビジネスルールについて のシナリオやデータセット及び結 果の期待値をExcelで管理 各ビジネスルール毎 にシミュレーション結 果をWebベースの画 面で一覧表示 Web I/Fのルールシミュレーション・テスト環境 ・シナリオデータと結果をまとめて管理 ・結果レポートを生成し、結果値をExcelに出力 ・テストデータのテンプレートを作成 ・シナリオに対する期待される処理結果の値を 設定し一括検証 41 どのルールが実行されたか、実 行時間がどのくらいなのか 等も レポートに含めることもできる。 © 2012 IBM Corporation DVSテンプレートの作成 ファイル形式 Excelの2003形式と2007-2010形式を選択できる デフォルトでフラットな形式とタブ付の形式を選択できる カスタマイズも可能 確認結果に含める列 出力オブジェクトからテストケース化する項目を選択 42 © 2012 IBM Corporation DVSの実行 Eclipse上では、DVSのExcelシートを実行する 「DVS Excelファイル」を利用して実行 結果レポートはHTMLファイルで出来上がる Eclipseのプロセスとは別にファイルを作成・変更するため、リフレッシュが必要 43 © 2012 IBM Corporation RuleApp作成:ルールの配布の事前作業 RuleAppとはルールセットを含む配布可能な管理単位 ルールを配布可能な形にパッケージングしたもの 1つ以上のルール・セットを含めることができる RuleAppプロジェクトを作成する Eclipseプロジェクトの一種 archive.xmlという構成ファイルをもつ RuleApp RuleSetA RuleSetB 44 © 2012 IBM Corporation ルールの配布 作成したRuleAppプロジェクトから配布を行うことができる ルール実行に必要なXOMも同時に配布することもできる 45 © 2012 IBM Corporation Decision Centerとの同期 Rule DesignerとDecision Centerの同期は「同期化」パースペク ティブを利用して行う 公開 更新 46 © 2012 IBM Corporation 6.ルールの作成支援機能 47 © 2012 IBM Corporation ルール・プロジェクトの分析 ルールの静的チェックによる矛盾などを検出 Java開発における静的コードチェックのようなイメージ ルールの追加・修正による影響度分析を実行できる ○ルール単体としてのチェック ○ルール同士のSyntax(文法、矛盾がないか等) をチェック ○ルール全体としての一貫性のチェックを実施 48 © 2012 IBM Corporation ルール・レポート 作成したルール成果物を文書化する機能 Eclipse BIRTを使用して、出力テンプレートをカスタマイズできる カスタマイズ可能な ルールレポート設計 49 必要に応じた項目を抽出したルールレポート の作成が可能に Word/Excel/PPT/HTMLなど様々な形式で のレポート作成をサポート © 2012 IBM Corporation クエリー ルール・プロジェクト内を検索する機能 利用しているビジネス・オブジェクトがどのルールで使われているか、などを簡単に 確認できる ルールのメタデータも検索条件にすることができる パッケージングで利用する 50 © 2012 IBM Corporation 7.ルール実行環境 51 © 2012 IBM Corporation ルールの実行基盤の選択 Java SE環境に構成する スタンドアロンのJavaアプリケーションとして稼動させる 必要なJARを実行時Classpathに設定して実行する ルール・エンジンとの接続構成の定義ファイル(ra.xml)を作成する 基本的な構成パラメータはJava EEサーバーでの設定と同じ 実行時にClasspathに含めて実行する Java EEサーバー上に構成する WAS7などのサーバー環境でルールを動作させる WAS7の場合、プロファイル管理ツールを使用して構成可能 JCAのリソースアダプター経由でルール・エンジン呼び出し Webベースの管理ツールの利用が可能 ルール・リポジトリの選択 実行環境でのルール配置場所 データベース ファイルシステム 52 © 2012 IBM Corporation ルール実行サーバーコンソール Webベースの管理ツール 実行環境に配置されているルールの管理や実行トレースの取得、 統計情報の確認などが可能 53 © 2012 IBM Corporation (参考) WAS上に配置されるモジュール 54 jrules-res-htds-WAS7 ルールをWeb サービス化するためのアプリケーション jrules-res-management-WAS7 管理ツールのアプリケーション jrules-ssp-WAS7 サーバー上でルールのテストを行うためのアプリケーション (SSP=Scenario Service Provider) teamserver-WAS7 Decision Centerのアプリケーション RES XU Resource Adapter Rule Engineに対するリソースアダプター © 2012 IBM Corporation 8.ルールアプリケーションの実行 55 © 2012 IBM Corporation アプリケーションとルールの統合 アプリケーションからルールを呼び出す方法には様々なテクノロ ジーを利用することができる 要件やシステム構成にあわせて選択する アプリケーション ルールエンジン ルールリポジトリ ルール・エンジンをアプリケーションと同じJVMで実行する ルール・エンジンをアプリケーションと異なるJVMで実行する ルールをバッチアプリケーションで呼び出す ルールをサービスとして呼び出す ルールを非同期で呼び出す BPMと連携させる 56 © 2012 IBM Corporation ルール呼び出し方法の種類 主要なルール呼び出し方法とその特徴 呼び出し方法 特徴 Java SE スタンドアロンのJavaアプリケーションでルールを呼び出す方法。 Java EEサーバーでも利用できる。ルールとアプリケーションが同一 JVM(Java SE)上で稼動する。 POJO Webアプリケーション内でJava EEサーバー上のリソースアダプター を使用する最もシンプルな呼び出し方法。ルールとアプリケーション が同一JVM(Java EE)上で稼動する。 EJB アプリケーションがEJBクライアントとなり、製品提供のEJBモジュー ルを介してルールを実行する。EJBのリモート呼び出しでプロセス やノードが分散した環境でのルール呼び出しができる。 HTDS(Hosted Transparent Decision Service) ルールをサービス化する方法のひとつ。配置されたルールを自動 的にサービス化する製品機能を利用して、ルール実行サーバーが Webサービスプロバイダーとなる。 MDB JMSアプリケーションからメッセージングでルールを呼び出す。メッ セージを処理するMDBは製品提供のモジュールを利用できる。 SCA ルール呼び出しアプリケーションをSCAコンポーネント化する。IBM BPMなどとの連携が可能。 57 © 2012 IBM Corporation ルール呼び出しのサンプルコード 必要最低限の部分を抜粋 //ルール呼び出しの準備 IlrSessionFactory factory = new IlrPOJOSessionFactory(); IlrStatelessSession session = factory.createStatelessSession(); IlrSessionRequest ruleRequest = factory.createRequest(); //実行するルールを指定 ruleRequest.setRulesetPath(IlrPath .parsePath("/loanvalidationruleApp/loanvalidationrules")); //ルールの呼び出しパラメータをセット //ルール・セット・パラメータで指定した名前を必要とする ruleRequest.setInputParameter("borrower", borrower); ruleRequest.setInputParameter("loan", loan); //ルールの実行 IlrSessionResponse ruleResponse = session.execute(ruleRequest); //実行結果を取得 loan = (loan.Loan) ruleResponse.getOutputParameters().get("loan"); report = (loan.Report) ruleResponse.getOutputParameters().get("report"); 58 © 2012 IBM Corporation まとめ 59 © 2012 IBM Corporation 本日のまとめ WODMでは、役割に応じたルール開発環境を提供する オブジェクト・モデルはルールの根幹でもあり、ビジネス・ルールと アプリケーションの間のインターフェースにもなる重要な設計要素 ルールを設計・実装するに当たって、ビジネス・ユーザーとITユー ザーの双方で仕様を共有し、メンテナンスを行いやすくするよう配 慮する DVSを利用したテストによって継続的なテストを実施できる ルールの実行環境はJava SE、Java EEの両方に対応 アプリケーションからの呼び出しには様々なテクノロジーを利用で きる 60 © 2012 IBM Corporation