001    package 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     */
010    public 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    }