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