ビジネス・ルールについて
このページでは、相互運用プロダクション内で使用できるビジネス・ロジックのフォームであるビジネス・ルールについて紹介します。ビジネス・ルールはワークフロー内で使用できます。"ビジネス・ロジック・ツールの比較" を参照してください。
はじめに
ビジネス・ルールを使用すれば、非技術系ユーザでも、特定の判断ポイントにおけるビジネス・プロセスの動作を変更できます。ルールのロジックは、管理ポータルでルール・エディタを使用してすぐに変更できます。コーディングは不要です。以下の図は、ビジネス・ルールが機能するしくみについて示しています。
ある国際企業が、ローン申し込み処理するプロダクションを実行しているとします。判断のプロセスは全世界で共通していますが、企業内の各銀行にはそれぞれ独自の受け入れ基準があり、それは国によって異なる可能性があります。以下で説明するように、ビジネス・ルールは、この地域レベルでの責任範囲をサポートします。
-
ビジネス・プロセスの開発者は、ビジネス・プロセスの代わりに判断を行うビジネス・ルールに名前を付けて、この判断ポイントを識別します。開発者が、ビジネス・プロセス言語 (BPL) コード内のそのビジネス・ルールのプレースホルダを活用するには、ビジネス・プロセス言語 (BPL) 要素 <rule> を呼び出します。<rule> 要素は、ビジネス・ルール名、および判断結果とその結果の理由 (オプション) を保持するパラメータを指定します。ここでは、このルールを LoanDecision と呼びます。
-
BPL ビジネス・プロセス内に <rule> 要素が出現するたびに、プロダクション内に対応するルール定義が存在する必要があります。企業のユーザ (通常はビジネス・アナリスト) は、ルール・エディタというブラウザベースのオンライン・フォームを使用してルールを定義できます。このフォームでは、ユーザにメッセージが表示され、LoanDecision と呼ばれるビジネス・ルールの定義で必要とされる簡単な情報を入力するように促します。この情報は、InterSystems IRIS® の構成データベースに保存されます。
ルール・エディタに習熟している企業ユーザは、管理ポータルにあるこのエディタへのアクセス権を与えられていれば、ルール定義を変更できます。変更は単なるデータベースの更新であるため、実行中のプロダクションに即座に適用できます。したがって、各地域のビジネス・アナリストは、ルール・エディタを実行してルールのコピーを変更することによって、それぞれの地域に適したその地域固有の基準を別途作成できます。
-
実行時には、BPL <rule> 文に到達すると、ビジネス・プロセスは、LoanDecision という名前のルールを呼び出します。ルールは、構成データベースから、地域ごとに異なる判断基準を取得します。これらの基準に基づいて、ルールは、ビジネス・プロセスに回答を返します。ビジネス・プロセスは、この回答に基づく実行パスをリダイレクトします。
-
進行中の保守が目的である場合については、ルールを変更する必要があっても、ビジネス・プロセス開発者が参加する必要はありません。どのルール定義もビジネス・プロセス・コードとは完全に分離されています。ルール定義は構成データベース内にクラスとして格納され、実行時に評価されます。また、ルール定義は、InterSystems IRIS インストール間でエクスポートおよびインポートできます。
同様に、ビジネス・アナリストなどの企業ユーザは、ビジネス・プロセスの BPL またはクラス・コードの修正に必要なプログラミングの専門知識がなくても、判断ポイントでビジネス・プロセスのオペレーションを変更できます。
ルール定義
ルール定義は 1 つまたは複数のルール・セットの集まりで、ルール・セットは 1 つまたは複数のルールの集まりです。各ルール・セットには、有効期間開始日時と有効期間終了日時があります。ビジネス・プロセスがルール定義を呼び出すと、常に 1 つのルール・セットのみが実行されます。
クラスとしてのルール定義
内部的には、すべてのルール定義はクラスであり、開発者はビジュアル・ルール・エディタを使用する代わりに、IDEOpens in a new tab を使用してそれらを編集できます。以下に、ルール定義クラスの例を示します。
/// Business rule responsible for mapping an input location
///
Class Demo.ComplexMap.Rule.SemesterBatchRouting Extends Ens.Rule.Definition
{
Parameter RuleAssistClass = "EnsLib.MsgRouter.RuleAssist";
XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="EnsLib.MsgRouter.RoutingEngine" production="Demo.ComplexMap.SemesterProduction">
<ruleSet name="" effectiveBegin="" effectiveEnd="">
<rule name="" disabled="false">
<constraint name="source" value="Semester_Data_FileService"></constraint>
<constraint name="msgClass" value="Demo.ComplexMap.Semester.Batch"></constraint>
<when condition="1">
<send transform="" target="Semester_Data_FileOperation"></send>
<send transform="Demo.ComplexMap.Transform.SemesterBatchToSemesterSummaryBatch"
target="Semester_Summary_FileOperation"></send>
<send transform="Demo.ComplexMap.Transform.SemesterBatchToFixedClassBatch"
target="Semester_FixedClassBatch_FileOperation"></send>
<send transform="Demo.ComplexMap.Transform.SemesterBatchToFixedStudentBatch"
target="Semester_FixedStudentBatch_FileOperation"></send>
<send transform="" target="Semester_FixedStudent_BatchCreator"></send>
<return></return>
</when>
</rule>
</ruleSet>
</ruleDefinition>
}
}
IDE で行った変更が [ルール・エディタ] ページに直ちに表示されない場合があります。これらを表示するには、ページの更新が必要になることがあります。
ルール定義とパッケージ・マッピング
ルールがクラスである場合は、他のネームスペースにマッピングできます。マッピングする場合は、マッピングしたすべてのルール・クラスを使用先の各ネームスペースでリコンパイルすることによって、各ネームスペースでローカル・メタデータを確実に使用できるようにする必要があります。
詳細は、"パッケージ・マッピング" を参照してください。