第6章 Variables
ランタイム時に使用するデータを格納する変数。プロセスデザイナーは、3 種類の変数を使用します。
グローバル変数
グローバル変数は、特定のセッションのすべてのプロセスインスタンスとアセットに表示されます。これらは、主にビジネスルールおよび制約によって使用されることを目的としており、ルールまたは制約によって動的に作成されます。
プロセス変数
プロセス変数は、BPMN2 定義ファイルのプロパティーとして定義され、プロセスインスタンス内で表示されます。プロセスの作成時に初期化され、プロセスの完了時に破棄されます。
ローカル変数
ローカル変数は、アクティビティーなどの特定のプロセス要素に関連付けられ、その中で使用できます。要素コンテキストが初期化されると、ローカル変数は初期化されます。つまり、実行ワークフローがノードに入り、onEntry
アクションの実行が終了した場合に初期化されます (該当する場合)。要素コンテキストが破棄されると、ローカル変数は破棄されます。つまり、実行ワークフローが要素を離れる場合に破棄されます。
プロセス、サブプロセス、またはタスクなどの要素は、独自のコンテキストと親コンテキストの変数にのみアクセスできます。要素は、要素の子要素で定義された変数にアクセスできません。したがって、実行時に要素が変数へのアクセスを必要とする場合は、独自のコンテキストが最初に検索されます。
変数が要素のコンテキストで直接見つからない場合は、直近の親コンテキストが検索されます。検索は、プロセスコンテキストに到達するまで続行されます。グローバル変数の場合、検索はセッションコンテナーで直接実行されます。
変数が見つからない場合、読み取りアクセス要求は null
を返し、書き込みアクセスはエラーメッセージを生成して、プロセスは実行を継続します。変数は ID に基づいて検索されます。
6.1. 変数タグ
変数の動作をより細かく制御するには、BPMN プロセスファイルでプロセス変数とローカル変数にタグ付けすることができます。タグは、特定の変数にメタデータとして追加する単純な文字列値です。
Red Hat Process Automation Manager は、プロセス変数とローカル変数の以下のタグをサポートします。
-
required
: プロセスインスタンスを開始するための要件として変数を設定します。必要な変数なしでプロセスインスタンスが起動すると、Red Hat Process Automation Manager はVariableViolationException
エラーを生成します。 -
readonly
: 変数が情報提供のみを目的としており、設定できるのはプロセスインスタンスの実行中に 1 回のみであることを示します。readonly 変数の値がいずれかの時点で変更されると、Red Hat Process Automation Manager はVariableViolationException
エラーを生成します。 restricted
:VariableGuardProcessEventListener
で使用される特別なタグで、必要かつ既存のロールに基づいて変数を変更する権限が付与されていることを示します。VariableGuardProcessEventListener
は、DefaultProcessEventListener
から拡張されたもので、2 つの異なるコンストラクターをサポートします。VariableGuardProcessEventListener
public VariableGuardProcessEventListener(String requiredRole, IdentityProvider identityProvider) { this("restricted", requiredRole, identityProvider); }
VariableGuardProcessEventListener
public VariableGuardProcessEventListener(String tag, String requiredRole, IdentityProvider identityProvider) { this.tag = tag; this.requiredRole = requiredRole; this.identityProvider = identityProvider; }
したがって、以下の例に示すように、許可されたロール名とユーザーロールを返す ID プロバイダーを使用して、イベントリスナーをセッションに追加する必要があります。
ksession.addEventListener(new VariableGuardProcessEventListener("AdminRole", myIdentityProvider));
上記の例では、
VariableGuardProcessEventListener
メソッドで、変数にセキュリティー制約タグ (restricted
) が付いているかどうかを確認します。ユーザーに必要なロールがない場合、Red Hat Process Automation Manager はVariableViolationException
エラーを生成します。
Business Central UI に表示される変数タグ (internal
、input
、output
、business-relevant
、tracked
など) は、Red Hat Process Automation Manager ではサポートされません。
タグは、![CDATA[TAG_NAME]]
形式で定義されたタグ値を使用し、customTags
メタデータプロパティーとして BPMN プロセスソースファイルに直接追加できます。
たとえば、以下の BPMN プロセスは、required
タグを approver
プロセス変数に適用します。
図6.1 BPMN モデラーでタグ付けされた変数の例
BPMN ファイルでタグ付けされた変数の例
<bpmn2:property id="approver" itemSubjectRef="ItemDefinition_9" name="approver"> <bpmn2:extensionElements> <tns:metaData name="customTags"> <tns:metaValue><![CDATA[required]]></tns:metaValue> </tns:metaData> </bpmn2:extensionElements> </bpmn2:property>
必要に応じて、変数に複数のタグを使用できます。BPMN ファイルでカスタム変数タグを定義して、Red Hat Process Automation Manager プロセスイベントリスナーが変数データを利用できるようにすることも可能です。カスタムタグは、標準の変数タグのように Red Hat Process Automation Manager のランタイムに影響を与えることはせず、情報提供のみを目的としています。カスタム変数タグは、標準の Red Hat Process Automation Manager 変数タグに使用する場合と同じ customTags
メタデータプロパティー形式で定義します。