//----------------------------BEGIN LICENSE----------------------------
/* 
 * Willow : the Open Source WorkFlow Project
 * Distributable under GNU LGPL license by gun.org
 *
 * Copyright (C) 2004-2010 huihoo.org 
 * Copyright (C) 2004-2010  ZosaTapo <dertyang@hotmail.com> 
 * 
 * ====================================================================
 * Project Homepage : http://www.huihoo.org/willow
 * Source Forge     : http://sourceforge.net/projects/huihoo
 * Mailing list     : willow@lists.sourceforge.net 
 */
//----------------------------END  LICENSE-----------------------------
package org.huihoo.workflow.store;

import org.huihoo.workflow.WorkflowComponent;
import org.huihoo.workflow.server.WorkflowCase;
import org.huihoo.workflow.server.WorkflowSession;
import org.huihoo.workflow.xpdl.WorkflowProcess;

public interface WorkflowCaseValidator  extends WorkflowComponent
{
//---------------------------------------------------------------------------
//
//---------------------------------------------------------------------------
	public WorkflowTemplate getWorkflowTemplate();
	public void  setWorkflowTemplate(WorkflowTemplate workflowTemplate);

//---------------------------------------------------------------------------
//
//---------------------------------------------------------------------------
	
	public boolean checkCreate(WorkflowSession workflowSession, WorkflowProcess workflowProcess) throws ValidationException;

	public boolean checkFind(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkUpdate(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkDelete(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkCancel(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkComplete(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkConfirm(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkSuspend(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;

	public boolean checkResume(WorkflowSession workflowSession, WorkflowCase workflowCase) throws ValidationException;
}
