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.proposition;
017
018
019import org.kuali.rice.core.api.mo.common.Identifiable;
020import org.kuali.rice.core.api.mo.common.Versioned;
021
022/**
023 * The contract for {@link PropositionParameter}
024 * @author Kuali Rice Team (rice.collab@kuali.org)
025 */
026public interface PropositionParameterContract extends Identifiable, Versioned {
027        /**
028         * Returns the Id for the parent proposition.
029         *
030         * <p>
031         * It is the Id of the parent proposition.
032         * </p>
033         * @return Id for parent parameter.
034         */
035        public String getPropId();
036
037        
038        /**
039         * Returns the value of the proposition parameter
040         *
041         * <p>
042         * It is the value of the parameter
043         * </p>
044         * @return value of the parameter
045         */
046        public String getValue();
047
048        /**
049         * Returns the type of the parameter.
050         * Proposition parameters are one of the following types:
051         *    Constant Values:  numbers, strings, dates, etc.
052         *    Terms: data available in the execution environment or provided by a term resolver
053         *    Functions: custom functions that resolve to a value, 
054         *      or standard operators (equals, greater than, less than, ...)
055         *
056         * <p>
057         * It identified the type of the parameter.
058         * </p>
059         * @return the parameter type code. Valid values are C, T, and F.
060         */
061        public String getParameterType();
062
063        /**
064         * Returns the sequence number of the proposition parameter.
065         * Proposition parameters are listed in Reverse Polish Notation.
066         * The sequence number (starting with 1) identifies the position of the 
067         * parameter in the list.
068         * 
069         * @return the sequence number of the proposition parameter
070         */
071        public Integer getSequenceNumber();
072}