提交 3a9fbfa4 编写于 作者: F Frederik Heremans

Added retry-mechanism (3 times)

上级 9d5f998f
......@@ -24,6 +24,9 @@ import org.activiti.engine.impl.identity.Authentication;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.Deployment;
import org.apache.ibatis.exceptions.PersistenceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
......@@ -33,6 +36,8 @@ import org.activiti.engine.test.Deployment;
*/
public class ConcurrentEngineUsageTest extends PluggableActivitiTestCase {
private static Logger log = LoggerFactory.getLogger(ConcurrentEngineUsageTest.class);
@Deployment
public void testConcurrentUsage() throws Exception {
......@@ -65,6 +70,34 @@ public class ConcurrentEngineUsageTest extends PluggableActivitiTestCase {
}
}
protected void retryStartProcess(String runningUser) {
int retries = 3;
boolean success = false;
while(retries > 0 && !success) {
try {
runtimeService.startProcessInstanceByKey("concurrentProcess", Collections.singletonMap("assignee", (Object)runningUser));
success = true;
} catch(PersistenceException pe) {
log.debug("Retrying process start: " + pe.getMessage());
retries = retries - 1;
}
}
}
protected void retryFinishTask(String taskId) {
int retries = 3;
boolean success = false;
while(retries > 0 && !success) {
try {
taskService.complete(taskId);
success = true;
} catch(PersistenceException pe) {
retries = retries - 1;
log.debug("Retrying task completion: " + pe.getMessage());
}
}
}
private class ConcurrentProcessRunnerRunnable implements Runnable {
private String drivingUser;
......@@ -86,7 +119,7 @@ public class ConcurrentEngineUsageTest extends PluggableActivitiTestCase {
{
if(numberOfProcesses > 0 && !finishTask) {
// Start a new process
runtimeService.startProcessInstanceByKey("concurrentProcess", Collections.singletonMap("assignee", (Object)drivingUser));
retryStartProcess(drivingUser);
finishTask = true;
if(numberOfProcesses == 0) {
......@@ -98,7 +131,9 @@ public class ConcurrentEngineUsageTest extends PluggableActivitiTestCase {
// Finish a task
List<Task> taskToComplete = taskService.createTaskQuery().taskAssignee(drivingUser).listPage(0, 1);
tasksAvailable = taskToComplete.size() > 0;
taskService.complete(taskToComplete.get(0).getId());
if(tasksAvailable) {
retryFinishTask(taskToComplete.get(0).getId());
}
finishTask = false;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册