<rule>
構文
<rule name="ApproveLoan"
rule="LoanApproval"
resultLocation="context.Answer"
reasonLocation="context.Reason">
</rule>
詳細
属性または要素 | 説明 | 値 |
---|---|---|
name 属性 | 必須項目。<rule> 要素の名前。 | 1 文字以上の文字列。 |
rule 属性 | 必須項目。実行されるビジネス・ルールの名前。ネームスペース内で有効なルールを指定する必要があります。後述の "ルールの特定" を参照してください。ルールが定義されていない場合、または実行時に見つからない場合は、そのルールからデフォルト値 "" (空の文字列) が返されます。 | 1 文字以上の文字列。 |
ruleContext 属性 |
オプション。定義すると、ルール・エンジンに渡されるオブジェクトを特定する式となります。後述の "コンテキストの特定" を参照してください。以下に例を示します。 context.MyObject デフォルトでは、このルールは、ルール・エンジンにビジネス・プロセスの実行コンテキストを渡します。 |
1 文字以上の文字列。 |
resultLocation 属性 | オプション。ルールの戻り値を格納する場所。通常、これはビジネス・プロセスの実行コンテキスト内のプロパティ、つまり context.MyValue です。 | 通常はビジネス・プロセスの実行コンテキスト内で有効なプロパティとオブジェクトの名前。 |
reasonLocation 属性 | オプション。ルールから返された理由を格納する場所。ルール理由は、ビジネス・ルールがその決定を行った理由を示す文字列です。例えば、[ルール 1] や [デフォルト] などです。ビジネス・ルールが空である場合 (ルールを含まないルール・セットである場合など) は、決定に対して [ルールがありません] という理由が設定されます。 | ゼロ文字以上の文字列。 |
disabled、xpos、ypos、xend、yend 属性 | "一般的な属性と要素" を参照してください。 | |
<annotation> 要素 |
説明
<rule> 要素は、ビジネス・プロセスからビジネス・ルールを呼び出します。<rule> が実行されると、関連するビジネス・ルール (rule 属性で指定) が呼び出され、その応答が直ちに返されます (<code> や <assign> アクティビティと同じ方法)。
ルールの特定
BPL で <rule> 要素を使用する場合、rule 属性の値は以下のいずれかになります。
-
単純なルール名
MyRule
-
完全なパッケージ名とルール名の組み合わせ
MyClassPackage.Organization.Levels.MyRule
<rule> 要素で単純なルール名を指定した場合は、その先頭にパッケージ名が自動的に追加されます。パッケージ名は、その <rule> 要素を含む BPL ビジネス・プロセスの完全なパッケージ名とクラス名に相当します。つまり、以下のようになります。
BPLFullPackageAndClassName.MyRule
この組み合わせは、ネームスペース内の有効なルールを表している必要があります。有効でない場合は、<rule> から NULL 文字列が返されます。
コンテキストの特定
デフォルトでは、ルールに渡される ruleContext は、ビジネス・プロセスの実行コンテキストです。別のオブジェクトをコンテキストとして指定する場合、そのオブジェクトに対していくつかの制約が発生します。まず、Ens.BusinessProcessOpens in a new tab タイプの %Process というプロパティが必要です。これは、ルール・エンジンにビジネス・プロセスの呼び出しコンテキストを渡すために使用します。このプロパティに値を設定する必要はありませんが、存在することは必要です。次に、目的のオブジェクトが、ルールそのもので想定されているオブジェクトと一致している必要があります。これらの制約が守られていることを確認するためのチェックは行われません。開発者側で、オブジェクトを正しく設定することが必要です。
簡単な例
以下は、<rule> アクティビティを <switch> 要素と共に使用して、ルールからの結果を処理する BPL の例を示しています。
<sequence>
<rule name="ExecuteRule"
rule="MyRule"
resultLocation="context.MyResult" />
<switch>
<case condition="context.MyResult=1">
<!-- ...Rule is true... -->
</case>
<default>
<!-- ... Rule is false... -->
</default>
</switch>
</sequence>
この例の <rule> アクティビティは、InterSystems IRIS の規則に従ってブーリアン値 (真または偽) を返します。つまり、整数値 1 は真、整数値 0 は偽を意味します。この例にあるように、すべてのルールは単一の値を返しますが、値の型がブーリアンである必要はありません。ルールから返される単一の値には、整数、小数、またはテキスト文字列などの任意のリテラル値を使用できます。
戻り値
結果および結果の理由は、それぞれ resultLocation 属性と reasonLocation 属性で指定した変数に格納されます。通常、これらの属性では、context 変数のプロパティ名を指定します。これは永続的な汎用変数で、<context> 要素と <property> 要素を使用して BPL ビジネス・プロセスの最初で定義します。