2017-06-14 14 views
0

バッチ処理についてお聞きしたいと思います。私はこれらのステップからなる100,000のビジネスフローを処理する必要があります:PDF(非同期)を生成し、メールを送信し、文書をアーカイブシステムにアップロードします。私は失敗したジョブを制御しているので、春のブート(非同期サービスタスク)でactivitiを使用することを検討しています。アクティビティやカンダなどのツールを使用するのが良いかどうかはわかりません。バッチ処理業務フロー

flow

+0

、あなたはcamunda-BPM-カスタムバッチ拡張子をチェックアウト、カスタムジョブのためにエンジン内部のバッチ処理を使用することができます。 –

+0

もう一つの可能​​性はhttp://www.flowable.org/です。ジョブ処理がActiviti5(Flowable5)<-> Flowable6の間で変更されました。例えばデッドレターキューと++ チームをチェックするとhttp://www.flowable.org/team.html - >コアアクティビティチームがFlowableに移動しました。 –

答えて

0

あなたは、マルチインスタンス・コール・アクティビティを使用することができます。マルチインスタンスを使用すると、コールアクティビティの実行方法を指定することができます(100〜1000回)。コールアクティビティはプロセスモデルを呼び出してpdfをアーカイブします。各呼び出し(マルチインスタンスのインスタンス)では、呼び出されたプロセスに忘れてはならない変数を定義することができるので、メインプロセスにPDFファイル名のリストを持ち、各サブプロセスに名前を送ることができます。 主なプロセスは、次のようになります。

enter image description here

がそうでなければ、これは100_000インスタンスでは動作しません、あなたは非同期継続を使用する前に、非同期のマルチインスタンスを作成することを確認してください。

マルチインスタンス・コール・アクティビティは、次のようになります。camundaで

<bpmn:callActivity id="Task_0fl5th9" name="archiving pdf" calledElement="archivePdf"> 
    <bpmn:incoming>SequenceFlow_04xoo79</bpmn:incoming> 
    <bpmn:outgoing>SequenceFlow_0036ezx</bpmn:outgoing> 
    <bpmn:multiInstanceLoopCharacteristics camunda:asyncBefore="true" camunda:collection="pdfNames" camunda:elementVariable="pdfName"> 
    <bpmn:loopCardinality xsi:type="bpmn:tFormalExpression">100_000</bpmn:loopCardinality> 
    </bpmn:multiInstanceLoopCharacteristics> 
</bpmn:callActivity> 
+0

multiInstanceLoopCharacteristicsは各項目に対してコミットしているようです。コミット数を設定する方法はありますか?私がcamunda.bpm.job-execution.core-pool-size = 5を使用したとき、ログ内のデッドロック例外に気づいた。 '### SQL:select * from ACT_RU_EXECUTION where PROC_INST_ID_ =? ###原因:com.microsoft.sqlserver.jdbc.SQLServerException:トランザクション(プロセスID 62)が別のプロセスとロックリソースでデッドロックされ、デッドロックの対象として選択されました。トランザクションを再実行してください。 ' – Bully

+0

ACT_RU_JOBテーブルで同じデッドロックが表示されます '### SQL:select * from ACT_RU_JOB J where.EXECUTION_ID_ =?' – Bully