<variable> エレメントは、変数を定義し、式によって参照可能な 形式で情報を保持します。変数は、ルール・セット、ルール・ブロック、または ルールの各レベルで定義できます。
変数には、ルール階層の異なるレベルで同じ名前を 指定することができます。変数がアクセスされると、その変数の最も ローカルな定義が使用されます。例えば、ルール・セット・レベル、ルール・ブロック・レベル、および ルール・レベルで同じ名前を持つ変数が定義されている場合、ルール・レベルの変数定義が そのルール内の式によって使用されます。
変数が ルール・セットまたはルール・ブロック・レベルで定義されている場合、複数のルールが 別々の時点でこれらの変数を取得し、設定します。このため、正しい変数値が 確実に保持されるようにするには、ルール・セット内で変数間の相互作用をどのように コーディングするかについて認識しておく必要があります。
変数がルール・セット・レベルまたは ルール・ブロック・レベルで定義されている場合、ルール・パターンに一致した後は 再初期化されません。
ルールがグループ化キーを使用して定義されている場合、 <variable> エレメントによって定義されたルール変数は、ライフ・サイクル・アクション内、 または <activateOnEvent> エレメントに含まれる <filteringPredicate> エレメント内、 あるいは <activationInterval> エレメントに含まれる <deactivateOnEvent> エレメントで 無効です。これは、この場合ルール変数がルール・インスタンスにのみ適用され、 これらの式の実行時にルール・インスタンスが存在しない ためです。
<variable> には、以下の属性があります。
名前 | 説明 | データ・タイプ | 必須? |
---|---|---|---|
name | 特定の変数を識別します。変数はその名前によって 参照されます。 | xsd:NMTOKEN | はい |
dataType | 変数に含まれる情報のタイプを識別します。 これは、java.lang.String のように、完全修飾されたデータ・タイプでなければなりません。 | xsd:NMTOKEN | はい |
<variable> には、以下のエレメントが含まれます。
以下のエレメントは、表示されている順序でコーディングする必要があります。エレメントがオプションである場合、コーディングする必要はありませんが、コーディングするエレメントはすべて正しい順序になっている必要があります。
エレメント | 必須/オプション |
---|---|
<comment> | オプション。指定できるのは 0 回または 1 回です。 |
<varInitializer> | 必須。指定できるのは 1 回のみです。 |