私は並列で動作するはずのactivitiに2つのサービスタスクを実装しようとしています。以下に書かれたコードは無作為に(そして面白く)うまくいく。私はそれがときどき "最初"(または "秒")だけを印刷するか、2つの "最初の" 1秒 "などを印刷することを意味します。これらのサービスを、現在サービスの数を無条件でランニング?Activiti並列サービスのタスク
PS:プロセス定義からactiviti:async = "true"を削除したとき、 "first"または "second"のみが表示されました。私は私が必要と推測
:)そのプロセス定義:
<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn" targetNamespace="Examples">
<process id='testparallelact' name="Developer Hiring" isExecutable="true" activiti:exclusive="false" activiti:async="true">
<startEvent id="theStart" />
<sequenceFlow id="flow1" sourceRef="theStart" targetRef="fork" />
<parallelGateway id="fork" activiti:async="true" />
<sequenceFlow sourceRef="fork" targetRef="receivePayment" />
<sequenceFlow sourceRef="fork" targetRef="shipOrder" />
<serviceTask id="receivePayment" name="Receive Payment" activiti:async="true" activiti:exclusive="false"
activiti:expression="${serviceConnections.runThis2('First')}"/>
<sequenceFlow sourceRef="receivePayment" targetRef="join" />
<serviceTask id="shipOrder" name="Ship Order" activiti:async="true" activiti:exclusive="false"
activiti:expression="${serviceConnections.runThis2('Second')}"/>
<sequenceFlow sourceRef="shipOrder" targetRef="join" />
<parallelGateway id="join" />
<sequenceFlow sourceRef="join" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
runThis2:
public void runThis2(String test1) throws InterruptedException {
while(true)
{
Thread.sleep(1000);
System.out.println(test1);
}
}