001package org.kuali.student.lum.program.server;
002
003/**
004 * This interface allows us to inject a different StateChangeService implementation for each of
005 * the program types (credential, core, major discipline) using the spring configuration. 
006 * 
007 * @author Kuali Rice Team (kuali-rice@googlegroups.com)
008 *
009 */
010public interface StateChangeService {
011    
012    /**
013     * 
014     * This method will eventually be called from the Rice workflow after a major discipline, core, or 
015     * credential program passes back into the local workflow.  It executes the same code as the other
016     * change state method, but uses null for entry and enroll term, since they will not be available in 
017     * the rice workflow (these parameters are entered when a program is superseded)
018     * 
019     * @param programId
020     * @param newState
021     * @throws Exception
022     */
023    public void changeState(String programId, String newState) throws Exception;
024
025    /**
026     * 
027     * This method is called from the servlet when state is changed in the GWT application (e.g. the user
028     * approves, activates, or creates a new major discipline, credential, or core program)
029     * 
030     * @param endEntryTerm
031     * @param endEnrollTerm
032     * @param programId
033     * @param newState
034     * @throws Exception
035     */
036    public void changeState(String endEntryTerm, String endEnrollTerm, String endInstAdmitTerm, String programId, String newState) throws Exception;
037}