XML 仮想ドキュメントのルール・セットの定義
ここでは、ビジネス・プロセスで使用できるように、XML 仮想ドキュメントのルール・セットを作成する方法を示します。
ルール・セットを使用するようにビジネス・プロセスを構成するには、その [ビジネスルール名] 設定を指定します。"XML 仮想ドキュメントを処理するためのビジネス・プロセスの追加" を参照してください。
ルール・セットの作成
XML 仮想ドキュメントのルール・セットを作成するには、以下の操作を行います。
-
必要に応じて、1 つまたは複数の適用可能な XML スキーマを InterSystems IRIS® データ・プラットフォームにロードします。
"InterSystems IRIS への XML スキーマのロード" を参照してください。
-
"ビジネス・ルールの開発" の説明に従って、管理ポータルまたは IDE でルール・セット・エディタを使用します。
-
ルール・セットの基本的な定義については、[タイプ] で [仮想ドキュメントのメッセージ・ルーティング・ルール] を使用します。
この選択によって、[コンテキスト・クラス] が EnsLib.MsgRouter.VDocRoutingEngineOpens in a new tab に設定されます。また、[ルール・アシスト・クラス] に EnsLib.MsgRouter.VDocRuleAssistOpens in a new tab が設定されます。
-
ルール・セットで何らかのルールの制約がある場合、以下の値を使用します。
-
[メッセージ・クラス] で、InterSystems IRIS で XML 仮想ドキュメントを示すための [EnsLib.EDI.XML.Document] を使用します。
-
[スキーマ・カテゴリ] で、必要に応じて InterSystems IRIS に事前にロードした XML スキーマを選択します。
スキーマをロードしていない、またはスキーマを使用したくない場合は、この値を空白のままにしてください。
-
[ドキュメント名] で、必要に応じてそのスキーマで定義されているドキュメント・タイプを選択します。
[スキーマ・カテゴリ] を指定していない場合は、この値を空白のままにしてください。
-
-
前述したように、XML プロパティ・パスを使用して、通常どおりルールを作成します。これには、以下の 2 つの基本的なシナリオがあります。
-
スキーマをロードし、ターゲット・ドキュメント・タイプを指定済みの場合は、Document を入力し始めると式編集機能による支援が得られます。
これらのプロパティ・パスは、スキーマ依存パスであることに注意してください。ただし、何らかの理由で DOM スタイル・パスを使用する必要がある場合は、そのように編集することもできます。
-
スキーマをロードしておらず、ドキュメント・タイプを指定済みでない場合は、このパスを手動で入力する必要があります。スキーマ依存パスまたは DOM スタイル・パスのいずれかを使用できます。
-
ルール・セットを保存してコンパイルすると、ビジネス・プロセスで使用できるようになります。
例
以下に、単純なルール・セットのクラス定義を紹介します。このルール・セットには DOM スタイル・パスを使用する 1 つのルールが含まれており、<Patient> ドキュメントの <MRN> 要素がチェックされます。このルールでは、戻り値に応じてメッセージが FileOut1 または FileOut2 にルーティングされます。この場合、このルールの制約は XML スキーマまたはタイプを参照しないことに注意してください。
Class Demo09.MyRules Extends Ens.Rule.Definition
{
Parameter RuleAssistClass = "EnsLib.MsgRouter.VDocRuleAssist";
XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="EnsLib.MsgRouter.VDocRoutingEngine">
<ruleSet name="" effectiveBegin="" effectiveEnd="">
<rule name="CheckMRN" disabled="false">
<constraint name="msgClass" value="EnsLib.EDI.XML.Document"></constraint>
<when condition="Document.{/$2:Patient/$2:MRN}="123456789"">
<send transform="" target="FileOut1"></send>
<return></return>
</when>
<when condition="Document.{/$2:Patient/$2:MRN}!="123456789"">
<send transform="" target="FileOut2"></send>
<return></return>
</when>
</rule>
</ruleSet>
</ruleDefinition>
}
}