2016-11-28 6 views
0

私は単純なactivitiプロセスに取り組んでいます。どういうわけか、現在のプロセスが既に実行中かどうかを確認する必要があります。私の考えでは、このようなコードを使用していた:activitiのアクティブなプロセスのリストを取得する方法は?

activitiInitEngineBean.getRuntimeService() 
           .createExecutionQuery() 
           .processDefinitionKey(BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS) 
           .count() > 1; 

ので、私はちょうどactiviti BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESSプロセスで実行されるJavaメソッド内runtimeServiceを取得し、definitionKey(プロセスのID)を使用してフィルタを追加し、カウントを確認してください。 .createExecutionQuery()は常に空のリストを返します。私は、プロセス内で呼び出すので、それは期待できないです

activitiInitEngineBean.getRuntimeService() 
           .createExecutionQuery() 
           .list() 

が(それは、少なくとも1の実行を返す必要があります):例えば、このようなコードは、空のリストを返します。 runtimeServiceを使用するにはどうすればよいですか?

答えて

0

デフォルトでは、activitiはルーテーブルには何も保存しません。< serviceTask>タグで動作します。あなたの更新が到達した状態を待つまでDBに保存されていない

<serviceTask activiti:async="true" 
1

Transactions and Concurrencyを参照してください):ソリューションは、非同期属性を追加することでした。プロセスインスタンスを実行しているクエリからプロセスインスタンスを取得する場合は、最初の待機状態に到達する必要があります。実際には、実行がすでに存在しているため、実行するためにクエリを作成する必要はありません。 script task variablesまたはインターフェイスメソッドのパラメータとして使用します。

+0

プロセスIDで実行中のプロセスがどれほどないかを例を挙げて教えてください。 –

関連する問題