This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new ccd8aae  [Improvement][Server] Improve dependent task unit tests 
(#4911)
ccd8aae is described below

commit ccd8aaebab635174c0b8dccbd49f7415c43cd405
Author: Shiwen Cheng <[email protected]>
AuthorDate: Wed Mar 3 08:52:45 2021 +0800

    [Improvement][Server] Improve dependent task unit tests (#4911)
---
 .../server/master/DependentTaskTest.java           | 445 +++++++++++++++------
 1 file changed, 316 insertions(+), 129 deletions(-)

diff --git 
a/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/master/DependentTaskTest.java
 
b/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/master/DependentTaskTest.java
index 0f6239a..48a0750 100644
--- 
a/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/master/DependentTaskTest.java
+++ 
b/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/master/DependentTaskTest.java
@@ -14,212 +14,399 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.dolphinscheduler.server.master;
 
+import org.apache.dolphinscheduler.common.Constants;
+import org.apache.dolphinscheduler.common.enums.DependResult;
+import org.apache.dolphinscheduler.common.enums.DependentRelation;
 import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
-import org.apache.dolphinscheduler.common.model.DateInterval;
+import org.apache.dolphinscheduler.common.enums.TaskType;
+import org.apache.dolphinscheduler.common.model.DependentItem;
+import org.apache.dolphinscheduler.common.model.DependentTaskModel;
 import org.apache.dolphinscheduler.common.model.TaskNode;
-import org.apache.dolphinscheduler.common.utils.dependent.DependentDateUtils;
-import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.common.task.dependent.DependentParameters;
+import org.apache.dolphinscheduler.common.thread.Stopper;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
 import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
 import org.apache.dolphinscheduler.dao.entity.TaskInstance;
 import org.apache.dolphinscheduler.server.master.config.MasterConfig;
 import 
org.apache.dolphinscheduler.server.master.runner.DependentTaskExecThread;
 import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
 import org.apache.dolphinscheduler.service.process.ProcessService;
+
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationContext;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
+/**
+ * DependentTaskTest
+ */
 @RunWith(MockitoJUnitRunner.Silent.class)
 public class DependentTaskTest {
 
-    private static final Logger logger = 
LoggerFactory.getLogger(DependentTaskTest.class);
+    /**
+     * TaskNode.runFlag : task can be run normally
+     */
+    public static final String FLOWNODE_RUN_FLAG_NORMAL = "NORMAL";
 
     private ProcessService processService;
-    private ApplicationContext applicationContext;
-
 
-    private MasterConfig config;
+    /**
+     * the dependent task to be tested
+     * ProcessDefinition  id=1
+     * Task               id=task-10, name=D
+     * ProcessInstance    id=100
+     * TaskInstance       id=1000
+     * notice: must be initialized by setupTaskInstance() on each test case
+     */
+    private ProcessInstance processInstance;
+    private TaskInstance taskInstance;
 
     @Before
-    public void before() throws Exception{
+    public void before() {
+        ApplicationContext applicationContext = 
Mockito.mock(ApplicationContext.class);
+        SpringApplicationContext springApplicationContext = new 
SpringApplicationContext();
+        springApplicationContext.setApplicationContext(applicationContext);
 
-        config = new MasterConfig();
+        MasterConfig config = new MasterConfig();
         config.setMasterTaskCommitRetryTimes(3);
         config.setMasterTaskCommitInterval(1000);
-        processService = Mockito.mock(ProcessService.class);
-        DateInterval dateInterval =DependentDateUtils.getTodayInterval(new 
Date()).get(0);
-        Mockito.when(processService
-                .findLastRunningProcess(4, dateInterval.getStartTime(),
-                        dateInterval.getEndTime()))
-                .thenReturn(findLastProcessInterval());
+        
Mockito.when(applicationContext.getBean(MasterConfig.class)).thenReturn(config);
 
+        processService = Mockito.mock(ProcessService.class);
+        
Mockito.when(applicationContext.getBean(ProcessService.class)).thenReturn(processService);
 
+        processInstance = getProcessInstance(100, 1);
 
+        // for MasterBaseTaskExecThread.call
+        // for DependentTaskExecThread.waitTaskQuit
         Mockito.when(processService
-                .getTaskNodeListByDefinitionId(4))
-                .thenReturn(getTaskNodes());
-        Mockito.when(processService
-                .findValidTaskListByProcessId(11))
-                .thenReturn(getTaskInstances());
+                .findProcessInstanceById(100))
+                .thenAnswer(i -> processInstance);
 
+        // for MasterBaseTaskExecThread.submit
         Mockito.when(processService
-                .findTaskInstanceById(252612))
-                .thenReturn(getTaskInstance());
+                .submitTask(Mockito.argThat(taskInstance -> 
taskInstance.getId() == 1000)))
+                .thenAnswer(i -> taskInstance);
 
-
-        Mockito.when(processService.findProcessInstanceById(10111))
-                .thenReturn(getProcessInstance());
-        Mockito.when(processService.findProcessDefineById(0))
-                .thenReturn(getProcessDefinition());
-        Mockito.when(processService.saveTaskInstance(getTaskInstance()))
+        // for DependentTaskExecThread.initTaskParameters
+        Mockito.when(processService
+                .updateTaskInstance(Mockito.any()))
+                .thenReturn(true);
+        // for DependentTaskExecThread.updateTaskState
+        Mockito.when(processService
+                .saveTaskInstance(Mockito.any()))
                 .thenReturn(true);
 
-        applicationContext = Mockito.mock(ApplicationContext.class);
-        SpringApplicationContext springApplicationContext = new 
SpringApplicationContext();
-        springApplicationContext.setApplicationContext(applicationContext);
-        
Mockito.when(applicationContext.getBean(ProcessService.class)).thenReturn(processService);
-        
Mockito.when(applicationContext.getBean(MasterConfig.class)).thenReturn(config);
+        // for DependentTaskExecThread.waitTaskQuit
+        Mockito.when(processService
+                .findTaskInstanceById(1000))
+                .thenAnswer(i -> taskInstance);
     }
 
-    @Test
-    public void testDependAll() throws Exception{
+    private void testBasicInit() {
+        TaskNode taskNode = getDependantTaskNode();
+        DependentTaskModel dependentTaskModel = new DependentTaskModel();
+        dependentTaskModel.setRelation(DependentRelation.AND);
+        dependentTaskModel.setDependItemList(Stream.of(
+                getDependentItemFromTaskNode(2, "A", "today", "day")
+        ).collect(Collectors.toList()));
 
-        TaskInstance taskInstance = getTaskInstance();
-        String dependString = 
"{\"dependTaskList\":[{\"dependItemList\":[{\"dateValue\":\"today\",\"depTasks\":\"ALL\",\"projectId\":1,\"definitionList\":[{\"label\":\"C\",\"value\":4},{\"label\":\"B\",\"value\":3},{\"label\":\"A\",\"value\":2}],\"cycle\":\"day\",\"definitionId\":4}],\"relation\":\"AND\"}],\"relation\":\"AND\"}";
-        taskInstance.setDependency(dependString);
+        DependentParameters dependentParameters = new DependentParameters();
+        dependentParameters.setRelation(DependentRelation.AND);
+        
dependentParameters.setDependTaskList(Stream.of(dependentTaskModel).collect(Collectors.toList()));
 
-        Mockito.when(processService.submitTask(taskInstance))
-                .thenReturn(taskInstance);
-        DependentTaskExecThread dependentTask =
-                new DependentTaskExecThread(taskInstance);
+        // dependence: AND(AND(2-A-day-today))
+        taskNode.setDependence(JSONUtils.toJsonString(dependentParameters));
 
-        dependentTask.call();
+        setupTaskInstance(taskNode);
+    }
 
-        Assert.assertEquals(ExecutionStatus.SUCCESS, 
dependentTask.getTaskInstance().getState());
+    @Test
+    public void testBasicSuccess() throws Exception {
+        testBasicInit();
+        ProcessInstance dependentProcessInstance =
+                getProcessInstanceForFindLastRunningProcess(200, 2, 
ExecutionStatus.FAILURE);
+        // for DependentExecute.findLastProcessInterval
+        Mockito.when(processService
+                .findLastRunningProcess(Mockito.eq(2), Mockito.any(), 
Mockito.any()))
+                .thenReturn(dependentProcessInstance);
 
-        DateInterval dateInterval =DependentDateUtils.getTodayInterval(new 
Date()).get(0);
+        // for DependentExecute.getDependTaskResult
+        Mockito.when(processService
+                .findValidTaskListByProcessId(200))
+                .thenReturn(Stream.of(
+                        getTaskInstanceForValidTaskList(2000, 
ExecutionStatus.SUCCESS, "A", dependentProcessInstance),
+                        getTaskInstanceForValidTaskList(2000, 
ExecutionStatus.FAILURE, "B", dependentProcessInstance)
+                ).collect(Collectors.toList()));
+
+        DependentTaskExecThread taskExecThread = new 
DependentTaskExecThread(taskInstance);
+        taskExecThread.call();
+        Assert.assertEquals(ExecutionStatus.SUCCESS, 
taskExecThread.getTaskInstance().getState());
+    }
 
+    @Test
+    public void testBasicFailure() throws Exception {
+        testBasicInit();
+        ProcessInstance dependentProcessInstance =
+                getProcessInstanceForFindLastRunningProcess(200, 2, 
ExecutionStatus.SUCCESS);
+        // for DependentExecute.findLastProcessInterval
+        Mockito.when(processService
+                .findLastRunningProcess(Mockito.eq(2), Mockito.any(), 
Mockito.any()))
+                .thenReturn(dependentProcessInstance);
 
+        // for DependentExecute.getDependTaskResult
         Mockito.when(processService
-                .findLastRunningProcess(4, dateInterval.getStartTime(),
-                        dateInterval.getEndTime()))
-                .thenReturn(findLastStopProcessInterval());
-        DependentTaskExecThread dependentFailure = new 
DependentTaskExecThread(taskInstance);
-        dependentFailure.call();
-        Assert.assertEquals(ExecutionStatus.FAILURE, 
dependentFailure.getTaskInstance().getState());
+                .findValidTaskListByProcessId(200))
+                .thenReturn(Stream.of(
+                        getTaskInstanceForValidTaskList(2000, 
ExecutionStatus.FAILURE, "A", dependentProcessInstance),
+                        getTaskInstanceForValidTaskList(2000, 
ExecutionStatus.SUCCESS, "B", dependentProcessInstance)
+                ).collect(Collectors.toList()));
+
+        DependentTaskExecThread taskExecThread = new 
DependentTaskExecThread(taskInstance);
+        taskExecThread.call();
+        Assert.assertEquals(ExecutionStatus.FAILURE, 
taskExecThread.getTaskInstance().getState());
     }
 
     @Test
-    public void testDependTask() throws Exception{
-
-        TaskInstance taskInstance = getTaskInstance();
-        String dependString = 
"{\"dependTaskList\":[{\"dependItemList\":[{\"dateValue\":\"today\",\"depTasks\":\"D\",\"projectId\":1,\"definitionList\":[{\"label\":\"C\",\"value\":4},{\"label\":\"B\",\"value\":3},{\"label\":\"A\",\"value\":2}],\"cycle\":\"day\",\"definitionId\":4}],\"relation\":\"AND\"}],\"relation\":\"AND\"}";
-        taskInstance.setDependency(dependString);
-        Mockito.when(processService.submitTask(taskInstance))
-                .thenReturn(taskInstance);
-        DependentTaskExecThread dependentTask =
-                new DependentTaskExecThread(taskInstance);
+    public void testDependentRelation() throws Exception {
+        DependentTaskModel dependentTaskModel1 = new DependentTaskModel();
+        dependentTaskModel1.setRelation(DependentRelation.AND);
+        dependentTaskModel1.setDependItemList(Stream.of(
+                getDependentItemFromTaskNode(2, "A", "today", "day"),
+                getDependentItemFromTaskNode(3, "B", "today", "day")
+        ).collect(Collectors.toList()));
+
+        DependentTaskModel dependentTaskModel2 = new DependentTaskModel();
+        dependentTaskModel2.setRelation(DependentRelation.OR);
+        dependentTaskModel2.setDependItemList(Stream.of(
+                getDependentItemFromTaskNode(2, "A", "today", "day"),
+                getDependentItemFromTaskNode(3, "C", "today", "day")
+        ).collect(Collectors.toList()));
+
+        /*
+         * OR   AND 2-A-day-today 3-B-day-today
+         *      OR  2-A-day-today 3-C-day-today
+         */
+        DependentParameters dependentParameters = new DependentParameters();
+        dependentParameters.setRelation(DependentRelation.OR);
+        dependentParameters.setDependTaskList(Stream.of(
+                dependentTaskModel1,
+                dependentTaskModel2
+        ).collect(Collectors.toList()));
+
+        TaskNode taskNode = getDependantTaskNode();
+        taskNode.setDependence(JSONUtils.toJsonString(dependentParameters));
+        setupTaskInstance(taskNode);
+
+        ProcessInstance processInstance200 =
+                getProcessInstanceForFindLastRunningProcess(200, 2, 
ExecutionStatus.FAILURE);
+        ProcessInstance processInstance300 =
+                getProcessInstanceForFindLastRunningProcess(300, 3, 
ExecutionStatus.SUCCESS);
+
+        // for DependentExecute.findLastProcessInterval
+        Mockito.when(processService
+                .findLastRunningProcess(Mockito.eq(2), Mockito.any(), 
Mockito.any()))
+                .thenReturn(processInstance200);
+        Mockito.when(processService
+                .findLastRunningProcess(Mockito.eq(3), Mockito.any(), 
Mockito.any()))
+                .thenReturn(processInstance300);
 
-        dependentTask.call();
+        // for DependentExecute.getDependTaskResult
+        Mockito.when(processService
+                .findValidTaskListByProcessId(200))
+                .thenReturn(Stream.of(
+                        getTaskInstanceForValidTaskList(2000, 
ExecutionStatus.FAILURE, "A", processInstance200)
+                ).collect(Collectors.toList()));
+        Mockito.when(processService
+                .findValidTaskListByProcessId(300))
+                .thenReturn(Stream.of(
+                        getTaskInstanceForValidTaskList(3000, 
ExecutionStatus.SUCCESS, "B", processInstance300),
+                        getTaskInstanceForValidTaskList(3001, 
ExecutionStatus.SUCCESS, "C", processInstance300)
+                ).collect(Collectors.toList()));
+
+        DependentTaskExecThread taskExecThread = new 
DependentTaskExecThread(taskInstance);
+        taskExecThread.call();
+        Assert.assertEquals(ExecutionStatus.SUCCESS, 
taskExecThread.getTaskInstance().getState());
+    }
 
-        Assert.assertEquals(ExecutionStatus.SUCCESS, 
dependentTask.getTaskInstance().getState());
+    /**
+     * test when dependent on ALL tasks in another process
+     */
+    private void testDependentOnAllInit() {
+        TaskNode taskNode = getDependantTaskNode();
+        DependentTaskModel dependentTaskModel = new DependentTaskModel();
+        dependentTaskModel.setRelation(DependentRelation.AND);
+        dependentTaskModel.setDependItemList(Stream.of(
+                getDependentItemFromTaskNode(2, Constants.DEPENDENT_ALL, 
"today", "day")
+        ).collect(Collectors.toList()));
+
+        DependentParameters dependentParameters = new DependentParameters();
+        dependentParameters.setRelation(DependentRelation.AND);
+        
dependentParameters.setDependTaskList(Stream.of(dependentTaskModel).collect(Collectors.toList()));
+
+        // dependence: AND(AND(2:ALL today day))
+        taskNode.setDependence(JSONUtils.toJsonString(dependentParameters));
+
+        setupTaskInstance(taskNode);
+    }
 
-        DateInterval dateInterval =DependentDateUtils.getTodayInterval(new 
Date()).get(0);
+    @Test
+    public void testDependentOnAllSuccess() throws Exception {
+        testDependentOnAllInit();
+        // for DependentExecute.findLastProcessInterval
         Mockito.when(processService
-                .findLastRunningProcess(4, dateInterval.getStartTime(),
-                        dateInterval.getEndTime()))
-                .thenReturn(findLastStopProcessInterval());
+                .findLastRunningProcess(Mockito.eq(2), Mockito.any(), 
Mockito.any()))
+                .thenReturn(getProcessInstanceForFindLastRunningProcess(200, 
2, ExecutionStatus.SUCCESS));
 
-        Mockito.when(processService
-                .findValidTaskListByProcessId(11))
-                .thenReturn(getErrorTaskInstances());
-        DependentTaskExecThread dependentFailure = new 
DependentTaskExecThread(taskInstance);
-        dependentFailure.call();
-        Assert.assertEquals(ExecutionStatus.FAILURE, 
dependentFailure.getTaskInstance().getState());
+        DependentTaskExecThread taskExecThread = new 
DependentTaskExecThread(taskInstance);
+        taskExecThread.call();
+        Assert.assertEquals(ExecutionStatus.SUCCESS, 
taskExecThread.getTaskInstance().getState());
     }
 
-    private ProcessInstance findLastStopProcessInterval(){
-        ProcessInstance processInstance = new ProcessInstance();
-        processInstance.setId(11);
-        processInstance.setProcessDefinitionId(4);
-        processInstance.setState(ExecutionStatus.STOP);
-        return  processInstance;
-    }
+    @Test
+    public void testDependentOnAllFailure() throws Exception {
+        testDependentOnAllInit();
+        // for DependentExecute.findLastProcessInterval
+        Mockito.when(processService
+                .findLastRunningProcess(Mockito.eq(2), Mockito.any(), 
Mockito.any()))
+                .thenReturn(getProcessInstanceForFindLastRunningProcess(200, 
2, ExecutionStatus.FAILURE));
 
-    private ProcessInstance findLastProcessInterval(){
-        ProcessInstance processInstance = new ProcessInstance();
-        processInstance.setId(11);
-        processInstance.setProcessDefinitionId(4);
-        processInstance.setState(ExecutionStatus.SUCCESS);
-        return  processInstance;
+        DependentTaskExecThread dependentTask = new 
DependentTaskExecThread(taskInstance);
+        dependentTask.call();
+        Assert.assertEquals(ExecutionStatus.FAILURE, 
dependentTask.getTaskInstance().getState());
     }
 
-    private ProcessDefinition getProcessDefinition(){
-        ProcessDefinition processDefinition = new ProcessDefinition();
-        processDefinition.setId(0);
-        return processDefinition;
+    /**
+     * test whether waitTaskQuit has been well impl
+     */
+    @Test
+    public void testWaitAndCancel() throws Exception {
+        // for the poor independence of UT, error on other place may causes 
the condition happens
+        if (!Stopper.isRunning()) {
+            return;
+        }
+
+        TaskNode taskNode = getDependantTaskNode();
+        DependentTaskModel dependentTaskModel = new DependentTaskModel();
+        dependentTaskModel.setRelation(DependentRelation.AND);
+        dependentTaskModel.setDependItemList(Stream.of(
+                getDependentItemFromTaskNode(2, "A", "today", "day")
+        ).collect(Collectors.toList()));
+
+        DependentParameters dependentParameters = new DependentParameters();
+        dependentParameters.setRelation(DependentRelation.AND);
+        
dependentParameters.setDependTaskList(Stream.of(dependentTaskModel).collect(Collectors.toList()));
+
+        // dependence: AND(AND(2:A today day))
+        taskNode.setDependence(JSONUtils.toJsonString(dependentParameters));
+
+        setupTaskInstance(taskNode);
+
+        ProcessInstance dependentProcessInstance =
+                getProcessInstanceForFindLastRunningProcess(200, 2, 
ExecutionStatus.RUNNING_EXECUTION);
+        // for DependentExecute.findLastProcessInterval
+        Mockito.when(processService
+                .findLastRunningProcess(Mockito.eq(2), Mockito.any(), 
Mockito.any()))
+                .thenReturn(dependentProcessInstance);
+
+        DependentTaskExecThread taskExecThread = new 
DependentTaskExecThread(taskInstance);
+
+        // for DependentExecute.getDependTaskResult
+        Mockito.when(processService
+                .findValidTaskListByProcessId(200))
+                .thenAnswer(i -> {
+                    processInstance.setState(ExecutionStatus.READY_STOP);
+                    return Stream.of(
+                            getTaskInstanceForValidTaskList(2000, 
ExecutionStatus.RUNNING_EXECUTION, "A", dependentProcessInstance)
+                    ).collect(Collectors.toList());
+                })
+                .thenThrow(new IllegalStateException("have not been stopped as 
expected"));
+
+        taskExecThread.call();
+        Assert.assertEquals(ExecutionStatus.KILL, 
taskExecThread.getTaskInstance().getState());
     }
 
-    private ProcessInstance getProcessInstance(){
+    private ProcessInstance getProcessInstance(int processInstanceId, int 
processDefinitionId) {
         ProcessInstance processInstance = new ProcessInstance();
-        processInstance.setId(10111);
-        processInstance.setProcessDefinitionId(0);
+        processInstance.setId(processInstanceId);
+        processInstance.setProcessDefinitionId(processDefinitionId);
         processInstance.setState(ExecutionStatus.RUNNING_EXECUTION);
-
         return processInstance;
     }
 
-
-    private List<TaskNode> getTaskNodes(){
-        List<TaskNode> list = new ArrayList<>();
+    /**
+     * task that dependent on others (and to be tested here)
+     * notice: should be filled with setDependence() and be passed to 
setupTaskInstance()
+     */
+    private TaskNode getDependantTaskNode() {
         TaskNode taskNode = new TaskNode();
-        taskNode.setName("C");
-        taskNode.setType("SQL");
-        list.add(taskNode);
-        return list;
+        taskNode.setId("tasks-10");
+        taskNode.setName("D");
+        taskNode.setType(TaskType.DEPENDENT.toString());
+        taskNode.setRunFlag(FLOWNODE_RUN_FLAG_NORMAL);
+        return taskNode;
     }
 
-    private List<TaskInstance> getErrorTaskInstances(){
-        List<TaskInstance> list = new ArrayList<>();
-        TaskInstance taskInstance = new TaskInstance();
-        taskInstance.setName("C");
-        taskInstance.setState(ExecutionStatus.SUCCESS);
-        taskInstance.setDependency("1231");
-        list.add(taskInstance);
-        return list;
+    private void setupTaskInstance(TaskNode taskNode) {
+        taskInstance = new TaskInstance();
+        taskInstance.setId(1000);
+        taskInstance.setProcessInstanceId(processInstance.getId());
+        
taskInstance.setProcessDefinitionId(processInstance.getProcessDefinitionId());
+        taskInstance.setState(ExecutionStatus.SUBMITTED_SUCCESS);
+        taskInstance.setTaskJson(JSONUtils.toJsonString(taskNode));
+        taskInstance.setTaskType(taskNode.getType());
+        taskInstance.setName(taskNode.getName());
     }
 
-    private List<TaskInstance> getTaskInstances(){
-        List<TaskInstance> list = new ArrayList<>();
-        TaskInstance taskInstance = new TaskInstance();
-        taskInstance.setName("D");
-        taskInstance.setState(ExecutionStatus.SUCCESS);
-        taskInstance.setDependency("1231");
-        list.add(taskInstance);
-        return list;
+    /**
+     * DependentItem defines the condition for the dependent
+     */
+    private DependentItem getDependentItemFromTaskNode(
+            int processDefinitionId, String taskName,
+            String date, String cycle
+    ) {
+        DependentItem dependentItem = new DependentItem();
+        dependentItem.setDefinitionId(processDefinitionId);
+        dependentItem.setDepTasks(taskName);
+        dependentItem.setDateValue(date);
+        dependentItem.setCycle(cycle);
+        // so far, the following fields have no effect
+        dependentItem.setDependResult(DependResult.SUCCESS);
+        dependentItem.setStatus(ExecutionStatus.SUCCESS);
+        return dependentItem;
+    }
+
+    private ProcessInstance getProcessInstanceForFindLastRunningProcess(
+            int processInstanceId, int processDefinitionId, ExecutionStatus 
state
+    ) {
+        ProcessInstance processInstance = new ProcessInstance();
+        processInstance.setId(processInstanceId);
+        processInstance.setProcessDefinitionId(processDefinitionId);
+        processInstance.setState(state);
+        return processInstance;
     }
 
-    private TaskInstance getTaskInstance(){
+    private TaskInstance getTaskInstanceForValidTaskList(
+            int taskInstanceId, ExecutionStatus state,
+            String taskName, ProcessInstance processInstance
+    ) {
         TaskInstance taskInstance = new TaskInstance();
         taskInstance.setTaskType("DEPENDENT");
-        taskInstance.setId(252612);
-        taskInstance.setName("C");
-        taskInstance.setProcessInstanceId(10111);
+        taskInstance.setId(taskInstanceId);
+        taskInstance.setName(taskName);
+        taskInstance.setProcessInstanceId(processInstance.getId());
+        
taskInstance.setProcessDefinitionId(processInstance.getProcessDefinitionId());
         taskInstance.setTaskJson("{}");
-        taskInstance.setState(ExecutionStatus.SUBMITTED_SUCCESS);
+        taskInstance.setState(state);
         return taskInstance;
     }
-
-}
\ No newline at end of file
+}

Reply via email to