blob: e6e6594ce02dbf8c3ad36f157c41ee02d7fd0797 [file] [log] [blame]
/*
* Copyright (c) 2005, 2011 IBM Corporation, CEA, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - initial API and implementation
* Kenn Hussey (CEA) - 327039
*
* $Id: Variable.java,v 1.12 2007/10/23 15:54:21 jbruck Exp $
*/
package org.eclipse.uml2.uml;
import java.util.Map;
import org.eclipse.emf.common.util.DiagnosticChain;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Variable</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A variable is considered a connectable element.
* Variables are elements for passing data between actions indirectly. A local variable stores values shared by the actions within a structured activity group but not accessible outside it. The output of an action may be written to a variable and read for the input to a subsequent action, which is effectively an indirect data flow path. Because there is no predefined relationship between actions that read and write variables, these actions must be sequenced by control flows to prevent race conditions that may occur between actions that read or write the same variable.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.uml2.uml.Variable#getActivityScope <em>Activity Scope</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Variable#getScope <em>Scope</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.uml2.uml.UMLPackage#getVariable()
* @model
* @generated
*/
public interface Variable
extends ConnectableElement, MultiplicityElement {
/**
* Returns the value of the '<em><b>Activity Scope</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Activity#getVariables <em>Variable</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.NamedElement#getNamespace() <em>Namespace</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* An activity that owns the variable.
* <!-- end-model-doc -->
* @return the value of the '<em>Activity Scope</em>' container reference.
* @see #setActivityScope(Activity)
* @see org.eclipse.uml2.uml.UMLPackage#getVariable_ActivityScope()
* @see org.eclipse.uml2.uml.Activity#getVariables
* @model opposite="variable" transient="false" ordered="false"
* @generated
*/
Activity getActivityScope();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Variable#getActivityScope <em>Activity Scope</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Activity Scope</em>' container reference.
* @see #getActivityScope()
* @generated
*/
void setActivityScope(Activity value);
/**
* Returns the value of the '<em><b>Scope</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.StructuredActivityNode#getVariables <em>Variable</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.NamedElement#getNamespace() <em>Namespace</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A structured activity node that owns the variable.
* <!-- end-model-doc -->
* @return the value of the '<em>Scope</em>' container reference.
* @see #setScope(StructuredActivityNode)
* @see org.eclipse.uml2.uml.UMLPackage#getVariable_Scope()
* @see org.eclipse.uml2.uml.StructuredActivityNode#getVariables
* @model opposite="variable" transient="false" ordered="false"
* @generated
*/
StructuredActivityNode getScope();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Variable#getScope <em>Scope</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Scope</em>' container reference.
* @see #getScope()
* @generated
*/
void setScope(StructuredActivityNode value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A variable is owned by a StructuredNode or Activity, but not both.
* true
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateOwned(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The isAccessibleBy() operation is not defined in standard UML. Implementations should define it to specify which actions can access a variable.
* result = true
* <!-- end-model-doc -->
* @model dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false" aRequired="true" aOrdered="false"
* @generated
*/
boolean isAccessibleBy(Action a);
} // Variable