package com.ustrust.service.bpm.repository.api;

import java.util.ArrayList;
import java.util.Calendar;

import com.ustrust.service.bpm.domain.AppTask;
import com.ustrust.service.bpm.domain.ArrayOfAppTask;
import com.ustrust.service.bpm.domain.UnfinishedTasksReport;

public interface CommonBPMRepositoryIF extends RepositoryIF {
	 
	 public ArrayOfAppTask getTasks(String processName,String actorId,String[] taskNames);
	 
     public ArrayOfAppTask getTasks(String processName,String[] actorIds);
     
	 public ArrayOfAppTask getAllTasks(String processName);
	 
	 public AppTask getTask(long processInstanceId,String taskName);
	 
	 public ArrayOfAppTask getPendingTasks(String processName,String actorId);
	 
     public ArrayOfAppTask getPendingTasksByName(String processName,String taskName);
     
     public ArrayOfAppTask getPendingTasksByNameAndPage(String processName,String taskName,int pageSize,int startIndex);
     
     public ArrayOfAppTask getPendingTasksByNameAndAge(String processName,String taskName,Calendar startDateCrietria);
     
     public ArrayOfAppTask getPendingTasks(String processName,String actorId,String[] taskNames);
     
     public ArrayOfAppTask getPendingTasks(String processName,String[] actorIds,String[] taskNames);
     
	 public void completeTask(AppTask task);
	 
	 public void assignTask(AppTask task);
	 
	 public void saveTaskData(AppTask task);
	 
	 public void deleteProcessInstance(long processInstanceId);
     
     public UnfinishedTasksReport getUnfinishedTasksReport(String process);
     
     public ArrayList getCompletedProcesses(String processName);
}
