001 /* 002 * Copyright 2005 Stephen J. McConnell. 003 * 004 * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0 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 013 * implied. 014 * 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package net.dpml.state; 020 021 /** 022 * Interface describing an application state. 023 * 024 * @author <a href="http://www.dpml.net">Digital Product Management Library</a> 025 * @version 2.1.1 026 */ 027 public interface State 028 { 029 /** 030 * Constant artifact type for a state graph. 031 */ 032 static final String TYPE = "state"; 033 034 /** 035 * Return the name of the state. 036 * @return the state name 037 */ 038 String getName(); 039 040 /** 041 * Set the parent state. 042 * @param state the parent state 043 */ 044 void setParent( State state ); 045 046 /** 047 * Return the parent state to this state or null if this is 048 * the root of a state graph. 049 * @return the parent state 050 */ 051 State getParent(); 052 053 /** 054 * Return the state path. The path is composed of a sequence of 055 * states from the root to this state. 056 * @return the state path 057 */ 058 State[] getStatePath(); 059 060 /** 061 * Return the substates within this state. 062 * @return the substate array 063 */ 064 State[] getStates(); 065 066 /** 067 * Return the array of triggers associated with the state. 068 * @return the trigger array 069 */ 070 Trigger[] getTriggers(); 071 072 /** 073 * Return the array of transtions associated with the state. 074 * @return the transition array 075 */ 076 Transition[] getTransitions(); 077 078 /** 079 * Return the array of operations associated with the state. 080 * @return the operation array 081 */ 082 Operation[] getOperations(); 083 084 /** 085 * Return the array of management interfaces associated with 086 * the state. 087 * @return the interfaces array 088 */ 089 Interface[] getInterfaces(); 090 091 /** 092 * Test is the state is a terminal state. 093 * @return true if terminal 094 */ 095 boolean isTerminal(); 096 }