/*
 * This file has been developed at the University of Munich, Chair for Programming & Software Engineering.
 * 
 * This file is licensed under the Eclipse Public License (EPL) 1.0
 * 
 */
package eu.mdd4soa.smm.behaviour;

import org.eclipse.emf.ecore.EObject;

import eu.mdd4soa.smm.statik.InterfaceOperation;

/**
 * <!-- begin-user-doc --> A representation of the model object '
 * <em><b>Protocol Transition</b></em>'. <!-- end-user-doc -->
 * 
 * <p>
 * The following features are supported:
 * <ul>
 * <li>{@link eu.mdd4soa.smm.behaviour.ProtocolTransition#getOperation <em>
 * Operation</em>}</li>
 * <li>{@link eu.mdd4soa.smm.behaviour.ProtocolTransition#isIsOptional <em>Is
 * Optional</em>}</li>
 * <li>{@link eu.mdd4soa.smm.behaviour.ProtocolTransition#getSource <em>Source
 * </em>}</li>
 * <li>{@link eu.mdd4soa.smm.behaviour.ProtocolTransition#getTarget <em>Target
 * </em>}</li>
 * </ul>
 * </p>
 * 
 * @see eu.mdd4soa.smm.behaviour.ISMBehaviourPackage#getProtocolTransition()
 * @model abstract="true"
 * @generated
 */
public interface ProtocolTransition extends EObject {
	/**
	 * Returns the value of the '<em><b>Operation</b></em>' reference. <!--
	 * begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Operation</em>' reference isn't clear, there
	 * really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * 
	 * @return the value of the '<em>Operation</em>' reference.
	 * @see #setOperation(InterfaceOperation)
	 * @see eu.mdd4soa.smm.behaviour.ISMBehaviourPackage#getProtocolTransition_Operation()
	 * @model
	 * @generated
	 */
	InterfaceOperation getOperation();

	/**
	 * Sets the value of the '
	 * {@link eu.mdd4soa.smm.behaviour.ProtocolTransition#getOperation
	 * <em>Operation</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
	 * -->
	 * 
	 * @param value the new value of the '<em>Operation</em>' reference.
	 * @see #getOperation()
	 * @generated
	 */
	void setOperation(InterfaceOperation value);

	/**
	 * Returns the value of the '<em><b>Is Optional</b></em>' attribute. <!--
	 * begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Is Optional</em>' attribute isn't clear, there
	 * really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * 
	 * @return the value of the '<em>Is Optional</em>' attribute.
	 * @see #setIsOptional(boolean)
	 * @see eu.mdd4soa.smm.behaviour.ISMBehaviourPackage#getProtocolTransition_IsOptional()
	 * @model
	 * @generated
	 */
	boolean isIsOptional();

	/**
	 * Sets the value of the '
	 * {@link eu.mdd4soa.smm.behaviour.ProtocolTransition#isIsOptional
	 * <em>Is Optional</em>}' attribute. <!-- begin-user-doc --> <!--
	 * end-user-doc -->
	 * 
	 * @param value the new value of the '<em>Is Optional</em>' attribute.
	 * @see #isIsOptional()
	 * @generated
	 */
	void setIsOptional(boolean value);

	/**
	 * Returns the value of the '<em><b>Source</b></em>' reference. <!--
	 * begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Source</em>' reference isn't clear, there
	 * really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * 
	 * @return the value of the '<em>Source</em>' reference.
	 * @see #setSource(ProtocolState)
	 * @see eu.mdd4soa.smm.behaviour.ISMBehaviourPackage#getProtocolTransition_Source()
	 * @model
	 * @generated
	 */
	ProtocolState getSource();

	/**
	 * Sets the value of the '
	 * {@link eu.mdd4soa.smm.behaviour.ProtocolTransition#getSource
	 * <em>Source</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
	 * -->
	 * 
	 * @param value the new value of the '<em>Source</em>' reference.
	 * @see #getSource()
	 * @generated
	 */
	void setSource(ProtocolState value);

	/**
	 * Returns the value of the '<em><b>Target</b></em>' reference. <!--
	 * begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Target</em>' reference isn't clear, there
	 * really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * 
	 * @return the value of the '<em>Target</em>' reference.
	 * @see #setTarget(ProtocolState)
	 * @see eu.mdd4soa.smm.behaviour.ISMBehaviourPackage#getProtocolTransition_Target()
	 * @model
	 * @generated
	 */
	ProtocolState getTarget();

	/**
	 * Sets the value of the '
	 * {@link eu.mdd4soa.smm.behaviour.ProtocolTransition#getTarget
	 * <em>Target</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
	 * -->
	 * 
	 * @param value the new value of the '<em>Target</em>' reference.
	 * @see #getTarget()
	 * @generated
	 */
	void setTarget(ProtocolState value);

} // ProtocolTransition
