2017-07-26 18 views
0

Activitiバージョン5.21から6.0.0への移行中です。期待された変更(予期せぬもの)を除いて、私は非同期メールタスクを実行するときに興味深い問題にぶつかってきました。 Mailタスクはメッセージを期待どおりに送信し、エラーはスローされませんが、正常な操作にもかかわらずエラーフローの再試行が続行されているように見えます。 3回の試行(および3回の電子メールの送信)が行われた後、エラーが発生したかのように、ジョブはデッドレターテーブルに移動します。表中のエラーメッセージがActivision 5.21から6.0.0への移行の問題、非同期メールタスク

奇妙何

「をJobEntity [ID = SOME ID]は、同時に別のトランザクションによって更新された」されActivitiからスローされたエラーがないことです。ログレベルをトレースするように設定しましたが、何も普通のように見えません。

ユーザーガイド(https://www.activiti.org/userguide/#failRetry)によると、何かが失敗した場合に操作を再試行すると考えられますが、この場合は何も失敗してメールが正しく送信されました。

Process config AsyncExecutorNumberOfRetriesプロパティを0(configurationImpl.setAsyncExecutorNumberOfRetries(0);)に設定するとこのエラーを回避できますが、これは何かする必要があるようには見えません。

ProcessEngineConfigurationImplのasyncExecutorNumberOfRetriesプロパティのデフォルト値は3で、3回の試行を説明していますが、なぜエンジンが成功したメールイベントをキャプチャしていないのかと不思議です。

ここに私のbpmnモデルコードがあります:電子メールとアドホックタスクを使った単なるスタート/エンドイベントです。

<?xml version="1.0" encoding="UTF-8"?> 
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:activity="http://activiti.org/bpmn" xmlns:klover="http://klover.io/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn"> 
<bpmn:process id="MigrationTest3" name="Migration Test 3" isExecutable="true" klover:category="tenant1|Incident:TaskCategoryType"> 
<bpmn:documentation>test 3</bpmn:documentation> 
<bpmn:startEvent id="StartEvent_1" name="Start Event" activity:initiator="initiator"> 
    <bpmn:documentation>This element denotes the start of the process instance</bpmn:documentation> 
    <bpmn:outgoing>SequenceFlow_0xdrrlx</bpmn:outgoing> 
</bpmn:startEvent> 
<bpmn:serviceTask id="ServiceTask_0p317lq" name="MIgration Test 3" activity:async="true" activity:type="mail"> 
    <bpmn:documentation>This element denotes the service to send email</bpmn:documentation> 
    <bpmn:extensionElements> 
    <activity:field name="from"> 
     <activity:expression></activity:expression> 
    </activity:field> 
    <activity:field name="to"> 
     <activity:expression>[email protected]</activity:expression> 
    </activity:field> 
    <activity:field name="subject"> 
     <activity:expression>Test Migration 3</activity:expression> 
    </activity:field> 
    <activity:field name="text"> 
     <activity:expression>testing re-enabling async mail task - did this send 3 times?</activity:expression> 
    </activity:field> 
    </bpmn:extensionElements> 
    <bpmn:incoming>SequenceFlow_0xdrrlx</bpmn:incoming> 
    <bpmn:outgoing>SequenceFlow_0wboybt</bpmn:outgoing> 
</bpmn:serviceTask> 
<bpmn:endEvent id="EndEvent_11vu7d5" name="Undefined End Event"> 
<bpmn:documentation>This element denotes the end of the process instance</bpmn:documentation> 

<bpmn:incoming>SequenceFlow_17ff3nr</bpmn:incoming> 
</bpmn:endEvent> 
<bpmn:sequenceFlow id="SequenceFlow_0xdrrlx" sourceRef="StartEvent_1" targetRef="ServiceTask_0p317lq" /> 
<bpmn:sequenceFlow id="SequenceFlow_0wboybt" sourceRef="ServiceTask_0p317lq" targetRef="UserTask_1sghk67" /> 
<bpmn:userTask id="UserTask_1sghk67" name="Testing Adhoc task after email" activity:assignee="tenant1|718abdcf-e192-11e5-b7f0-9f235e785c94" activity:priority="0" klover:formType="Adhoc"> 
<bpmn:documentation>Testing the new execution id change</bpmn:documentation> 
<bpmn:incoming>SequenceFlow_0wboybt</bpmn:incoming> 
    <bpmn:outgoing>SequenceFlow_17ff3nr</bpmn:outgoing> 
</bpmn:userTask> 
<bpmn:sequenceFlow id="SequenceFlow_17ff3nr" sourceRef="UserTask_1sghk67" targetRef="EndEvent_11vu7d5" /> 
</bpmn:process> 
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> 
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MigrationTest3"> 
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> 
<dc:Bounds x="44" y="84" width="36" height="36" /> 
<bpmndi:BPMNLabel> 
     <dc:Bounds x="34" y="120" width="55" height="12" /> 
    </bpmndi:BPMNLabel> 
    </bpmndi:BPMNShape> 
<bpmndi:BPMNShape id="ServiceTask_0p317lq_di" bpmnElement="ServiceTask_0p317lq"> 
    <dc:Bounds x="285" y="128" width="100" height="80" /> 
    </bpmndi:BPMNShape> 
    <bpmndi:BPMNShape id="EndEvent_11vu7d5_di" bpmnElement="EndEvent_11vu7d5"> 
    <dc:Bounds x="663" y="281" width="36" height="36" /> 
    <bpmndi:BPMNLabel> 
     <dc:Bounds x="644" y="317" width="74" height="24" /> 
    </bpmndi:BPMNLabel> 
    </bpmndi:BPMNShape> 
<bpmndi:BPMNEdge id="SequenceFlow_0xdrrlx_di" bpmnElement="SequenceFlow_0xdrrlx"> 
    <di:waypoint xsi:type="dc:Point" x="80" y="102" /> 
    <di:waypoint xsi:type="dc:Point" x="183" y="102" /> 
    <di:waypoint xsi:type="dc:Point" x="183" y="168" /> 
    <di:waypoint xsi:type="dc:Point" x="285" y="168" /> 
    <bpmndi:BPMNLabel> 
     <dc:Bounds x="198" y="125" width="0" height="0" /> 
    </bpmndi:BPMNLabel> 
    </bpmndi:BPMNEdge> 
<bpmndi:BPMNEdge id="SequenceFlow_0wboybt_di" bpmnElement="SequenceFlow_0wboybt"> 
    <di:waypoint xsi:type="dc:Point" x="385" y="168" /> 
    <di:waypoint xsi:type="dc:Point" x="452" y="168" /> 
    <di:waypoint xsi:type="dc:Point" x="452" y="207" /> 
    <di:waypoint xsi:type="dc:Point" x="453" y="259" /> 
    <bpmndi:BPMNLabel> 
     <dc:Bounds x="467" y="187.5" width="0" height="0" /> 
    </bpmndi:BPMNLabel> 
    </bpmndi:BPMNEdge> 
    <bpmndi:BPMNShape id="UserTask_1sghk67_di" bpmnElement="UserTask_1sghk67"> 
    <dc:Bounds x="403" y="259" width="100" height="80" /> 
    </bpmndi:BPMNShape> 
<bpmndi:BPMNEdge id="SequenceFlow_17ff3nr_di" bpmnElement="SequenceFlow_17ff3nr"> 
    <di:waypoint xsi:type="dc:Point" x="503" y="299" /> 
    <di:waypoint xsi:type="dc:Point" x="581" y="299" /> 
    <di:waypoint xsi:type="dc:Point" x="581" y="299" /> 
    <di:waypoint xsi:type="dc:Point" x="663" y="299" /> 
    <bpmndi:BPMNLabel> 
     <dc:Bounds x="596" y="299" width="0" height="0" /> 
    </bpmndi:BPMNLabel> 
    </bpmndi:BPMNEdge> 
</bpmndi:BPMNPlane> 
</bpmndi:BPMNDiagram> 
</bpmn:definitions> 

ご意見をいただければ幸いです!

+0

はエラーが作業が行われた後にトランザクションをcomittingについてです。アクティビティエンジンの動作は既知です。作業をロールバックするか、複数回実行する必要があります。高負荷環境では、複数のエグゼキュータとタスクを使用して同様のことを実現できます。この場合、非同期ジョブの実行前にプロセスをロックするほとんどのシナリオでは、排他的なジョブ(次のセクション8.7.3のユーザーガイドを参照)を使用することができます。 –

答えて

0

ここで問題が出てくるのは、私たちのDEV envでは、各開発者がアプリケーションで作業しているときにプロセスエンジンの複数のインスタンスを起動するということでした。当時私が唯一の人だったので、当初はこれが問題ではないと思っていました。私たちには、エンジンを実行する古いアプリケーションサーバーがあったことが分かります。その後、AWSのローカルタイムインスタンスとは異なるタイムゾーンで実行されていました。これは、このAWSインスタンスでロック時間がUTCにあったため、ローカルMST上で実行されていたため、認識されたエラーを引き起こしていました。含まれているローカル環境を設定した後

、期待通りに実行され、私の非同期メールタスク... 1時間

関連する問題