今回の JBoss BPM Suite のヒント/トリック集では、BPMプロジェクトをデプロイする際、どうやってセッションストラテジーを設定するかご紹介します。
GitHubで公開しているデモコレクションでご確認いただけますが、シンプルなデモプロジェクトを使います。JBoss BPM Suite でお試しいただけます。
JBoss BPM Suite のインストール作業は別途実施していただく必要があります。JBoss BPM Suite インストールプロジェクトをご利用いただくことで、遭遇する可能性のあるトラブルを回避できます。
ゴール
前回の投稿で、ルールからプロセス変数にアクセスする方法をご紹介しました。セッション ストラテジーの初期値に付随する問題と、プロセスインスタンスがスタートする度にルールが実行される解決法をご理解いただけたかと思います。今回は、ランタイム セッション ストラテジーの変更方法をご紹介します。これにより、前回のような特別な修正をルールに実施する必要はありません。プロセスインスタンスがスタートする度にルールは実行されます。
セットアップ
デモプロジェクトのリポジトリーを解凍し、JBpss BPM Suite インストールプロジェクトディレクトリにコピーしてください。
# Start by cloning project at # https://github.com/eschabell/demo-collections. # $ git clone git@github.com:eschabell/demo-collections.git $ cd demo-collections $ unzip niogit-rule-procvar-perinstance-strategy.zip # Follow instructions and install JBoss BPM Suite # via https://github.com/eschabell/bpms-install-demo. # # Then copy the demo repository into the JBoss BPM Suite server. # $ cp -rv .niogit bpms-install-demo/target/jboss-eap-6.1/bin # Start the JBoss BPM Suite server. # $ ./bpms-install-demo/target/jboss-eap-6.1/bin/standalone.sh # Login with user 'erics' and password 'bpmsuite' to get started.
さて、これでビジネスプロセスを確認できます。プロセスはどのように設定されデプロイされていますか? ルールの内容は? プロセス変数の値を変更する為にどういった修正が必要ですか? 出力結果はどうなりますか?
ストラテジー
デプロイ単位でストラテジーを設定 |
前回の投稿で、セッション ストラテジーが SINGLETON である為、複数プロセスインスタンスが実行された場合、初回のインスタンスのみルールを実行することをご紹介しました。これは、メモリーの中にあるファクトが初回にファイヤーされたタイミングで削除され、それ以降のプロセスインスタンスがルールの実行を試みても、ワーキングメモリー内にはファクトが存在しない為です。
今回は、デプロイメントに設定するランタイム ストラテジーを PER_PROCESS_INSTANCE に変更します。このストラテジーを選択すると、プロセスインスタンスはそれぞれ個別のセッションを保有します。
ストラテジーを変更する為、JBoss BPM Suite のダッシュボードから Deploy -> Deployments ビューを選択し、既存のデプロイメントを削除してください。そして、新規デプロイメントを作成し、PER_PROCESS_INSTANCE ストラテジーを選択してください。
デプロイメント用の新しい デフォルト ストラテジー |
作業が終了すれば、プロセスインスタンスを実行し、毎回ルールがファイヤーされることをご確認いただけます。その前に、SINGLETON セッション ストラテジー用に前回修正した内容を戻す必要があります。
毎回実行される為に修正されたルール |
次に、ルールタスクノードの設定されたデータインプットセットを削除します。アサインメントにマップされたオブジェクトを削除してください。
修正作業が完了したらルールを保存し、デプロイ及びプロセスインスタンスの実行をしてください。プロセスインスタンスが実行される度に、ルールが実行されるはずです。
アサインメントのマッピングを削除 |
その場合は再び作成していただき、 PER_PROCESS_INSTANCE を忘れずに選択してください。そうしなければ、初回に実行されたプロセスインスタンスのみがルールを実行します。
3回プロセスインスタンスを実行し、成功した出力は以下の通りです。
11:35:47,038 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Execute Java Step 11:35:47,044 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Tested Rule 11:35:47,047 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Rule fired! 11:36:05,965 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Execute Java Step 11:36:05,968 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Tested Rule 11:36:05,970 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Rule fired! 11:36:10,479 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Execute Java Step 11:36:10,482 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Tested Rule 11:36:10,484 INFO [stdout] (http-localhost/127.0.0.1:8080-3) Rule fired!
プロセスインスタンスビューからご確認いただくと、以下のように見えるはずです。
ルールを含んだプロセスがどのようにデプロイされたか理解いただけたと思います。また、ルールからプロセス変数へどのようにアクセスするかもご理解いただけたはずです。セッション ストラテジーによる影響もご理解いただけたはずです。ぜひ、このテクニックをあなたのプロジェクトにご活用ください。
原文: Red Hat JBoss BPM Suite - how to change runtime session strategy by Eric D. Schabell
0 件のコメント:
コメントを投稿