drools ステートレス セッションのグローバル変数の設定方法。
2 つのスレッドが同じセッションにアクセスするが、各スレッドの新しい arraylist を使用してグローバル変数 customer arraylist を設定するとします。2 番目のスレッドの arraylist は、グローバル変数 customer の最初のスレッドの arraylist を置き換えますか?
それは StatelessKnowledgeSession クラスのドキュメントからのケースのようです:
StatelessKnowledgeSessions は、さまざまな方法でスコープが設定されたグローバルをサポートします。コマンドは特定の実行呼び出しに適用されるため、最初に非コマンドの方法について説明します。グローバルは 3 つの方法で解決できます。StatelessKnowledgeSession は、Globals インスタンスを返す getGlobals() をサポートしています。これらのグローバルはすべての実行呼び出しで共有されるため、これらの場合、変更可能なグローバルには特に注意してください。実行呼び出しは異なるスレッドで同時に実行されることが多いためです。グローバルは、グローバルを解決する 2 番目の方法を追加するデリゲートもサポートします。setGlobal(String, Object) の呼び出しは、実際には内部コレクションに設定されます。この内部コレクションの識別子は、指定されたデリゲートが追加されている場合、優先されます。内部コレクションで識別子が見つからない場合は、デリゲート グローバルをチェックします。
http://docs.jboss.org/jbpm/v5.1/javadocs/org/drools/runtime/StatelessKnowledgeSession.html
私は正しいですか?