001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.krms.api.repository.agenda;
017
018import org.kuali.rice.core.api.mo.common.Identifiable;
019import org.kuali.rice.core.api.mo.common.Versioned;
020import org.kuali.rice.krms.api.repository.rule.RuleDefinitionContract;
021
022/**
023 * Agenda Item Definition Contract
024 *
025 * @see AgendaItemDefinition
026 */
027public interface AgendaItemDefinitionContract extends Identifiable, Versioned {
028
029        /**
030         * Returns the agenda id to which the agenda item belongs.
031         *
032         * @return id for the agenda associated with the agenda item
033         */
034        public String getAgendaId();
035
036    /**
037     * Returns the rule id associated with the agenda item.
038     *
039     * @return ID of the Rule associated with the agenda item
040     */
041        public String getRuleId();
042
043    /**
044     * This is ID of the SubAgenda associated with this AgendaItemDefinition.
045     *
046     * Each AgendaItemDefinition has either a Rule or a SubAgenda associated with it, but not both.
047     *
048     * @return ID of the SubAgenda associated with the AgendaItemDefinition
049     */
050        public String getSubAgendaId();
051
052    /**
053     * This is ID of the next AgendaItemDefinition to be executed if the Rule associated
054     * AgendaItemDefinition evaluates to true.
055     *
056     * @return ID of the next AgendaItemDefinition
057     */ 
058        public String getWhenTrueId();
059        
060    /**
061     * This is ID of the next AgendaItemDefinition to be executed if the Rule associated
062     * AgendaItemDefinition evaluates to false.
063     *
064     * @return ID of the next AgendaItemDefinition
065     */ 
066        public String getWhenFalseId();
067        
068    /**
069     * This is ID of the next AgendaItemDefinition to be executed after following any
070     * defined true or false actions.
071     *
072     * @return ID of the next AgendaItemDefinition
073     */ 
074        public String getAlwaysId();
075
076        /**
077         * This method returns the Rule associated with this AgendaItemDefinition.
078         * 
079         * @return an immutable representation of the Rule
080         */
081        public RuleDefinitionContract getRule();
082
083        /**
084         * 
085         * This method returns the SubAgenda associated with this AgendaItemDefinition.
086         * 
087         * @return an immutable representation of the SubAgenda
088         */
089        public AgendaDefinitionContract getSubAgenda();
090        
091    /**
092     * This method returns the next AgendaItemDefinition to be executed if the
093     * Rule associated with this AgendaItemDefinition evaluates to true.
094     *
095     * @return an immutable representation of the next AgendaItemDefinition
096     */ 
097        public AgendaItemDefinitionContract getWhenTrue();
098        
099    /**
100     * This method returns the next AgendaItemDefinition to be executed if the
101     * Rule associated with this AgendaItemDefinition evaluates to false.
102     *
103     * @return an immutable representation of the next AgendaItemDefinition
104     */ 
105        public AgendaItemDefinitionContract getWhenFalse();
106
107        /**
108     * This is ID of the next AgendaItemDefinition to be executed after following any
109     * defined true or false actions.
110     *
111     * @return an immutable representation of the next AgendaItemDefinition
112     */ 
113        public AgendaItemDefinitionContract getAlways();
114
115}