package com.evolveum.midpoint.model.api;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemDelegationMethodType;
import java.util.List;
/**
* @author mederly
*/
public interface WorkflowService {
/**
* Approves or rejects a work item (without supplying any further information).
* @param taskId identifier of activiti task backing the work item
* @param decision true = approve, false = reject
* @param comment
* @param additionalDelta
* @param parentResult
*/
void completeWorkItem(String workItemId, boolean decision, String comment, ObjectDelta additionalDelta,
OperationResult parentResult) throws SecurityViolationException, SchemaException;
void stopProcessInstance(String instanceId, String username, OperationResult parentResult)
throws SchemaException, ObjectNotFoundException, SecurityViolationException;
void claimWorkItem(String workItemId, OperationResult parentResult) throws SecurityViolationException, ObjectNotFoundException;
void releaseWorkItem(String workItemId, OperationResult parentResult) throws ObjectNotFoundException, SecurityViolationException;
void delegateWorkItem(String workItemId, List<ObjectReferenceType> delegates, WorkItemDelegationMethodType method,
OperationResult parentResult) throws ObjectNotFoundException, SecurityViolationException, SchemaException;
void cleanupActivitiProcesses(OperationResult parentResult) throws SchemaException, SecurityViolationException;
}