blob: d67ec4808b9a40a9d4990306d6aacc2773bec69a [file] [log] [blame]
/*
* Copyright (c) 2005, 2007 IBM Corporation 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
*
* $Id: ObjectFlow.java,v 1.7 2007/04/25 17:47:04 khussey 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>Object Flow</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* An object flow is an activity edge that can have objects or data passing along it.
* Object flows have support for multicast/receive, token selection from object nodes, and transformation of tokens.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.uml2.uml.ObjectFlow#isMulticast <em>Is Multicast</em>}</li>
* <li>{@link org.eclipse.uml2.uml.ObjectFlow#isMultireceive <em>Is Multireceive</em>}</li>
* <li>{@link org.eclipse.uml2.uml.ObjectFlow#getTransformation <em>Transformation</em>}</li>
* <li>{@link org.eclipse.uml2.uml.ObjectFlow#getSelection <em>Selection</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.uml2.uml.UMLPackage#getObjectFlow()
* @model
* @generated
*/
public interface ObjectFlow
extends ActivityEdge {
/**
* Returns the value of the '<em><b>Is Multicast</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Tells whether the objects in the flow are passed by multicasting.
* <!-- end-model-doc -->
* @return the value of the '<em>Is Multicast</em>' attribute.
* @see #setIsMulticast(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getObjectFlow_IsMulticast()
* @model default="false" dataType="org.eclipse.uml2.uml.Boolean" required="true" ordered="false"
* @generated
*/
boolean isMulticast();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.ObjectFlow#isMulticast <em>Is Multicast</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Multicast</em>' attribute.
* @see #isMulticast()
* @generated
*/
void setIsMulticast(boolean value);
/**
* Returns the value of the '<em><b>Is Multireceive</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Tells whether the objects in the flow are gathered from respondents to multicasting.
* <!-- end-model-doc -->
* @return the value of the '<em>Is Multireceive</em>' attribute.
* @see #setIsMultireceive(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getObjectFlow_IsMultireceive()
* @model default="false" dataType="org.eclipse.uml2.uml.Boolean" required="true" ordered="false"
* @generated
*/
boolean isMultireceive();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.ObjectFlow#isMultireceive <em>Is Multireceive</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Multireceive</em>' attribute.
* @see #isMultireceive()
* @generated
*/
void setIsMultireceive(boolean value);
/**
* Returns the value of the '<em><b>Transformation</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Changes or replaces data tokens flowing along edge.
* <!-- end-model-doc -->
* @return the value of the '<em>Transformation</em>' reference.
* @see #setTransformation(Behavior)
* @see org.eclipse.uml2.uml.UMLPackage#getObjectFlow_Transformation()
* @model ordered="false"
* @generated
*/
Behavior getTransformation();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.ObjectFlow#getTransformation <em>Transformation</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Transformation</em>' reference.
* @see #getTransformation()
* @generated
*/
void setTransformation(Behavior value);
/**
* Returns the value of the '<em><b>Selection</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Selects tokens from a source object node.
* <!-- end-model-doc -->
* @return the value of the '<em>Selection</em>' reference.
* @see #setSelection(Behavior)
* @see org.eclipse.uml2.uml.UMLPackage#getObjectFlow_Selection()
* @model ordered="false"
* @generated
*/
Behavior getSelection();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.ObjectFlow#getSelection <em>Selection</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Selection</em>' reference.
* @see #getSelection()
* @generated
*/
void setSelection(Behavior value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Object flows may not have actions at either end.
* 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 validateNoActions(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Object nodes connected by an object flow, with optionally intervening control nodes, must have compatible types. In particular, the downstream object node type must be the same or a supertype of the upstream object node type.
*
* 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 validateCompatibleTypes(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Object nodes connected by an object flow, with optionally intervening control nodes, must have the same upper bounds.
* 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 validateSameUpperBounds(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* An edge with constant weight may not target an object node, or lead to an object node downstream with no intervening actions, that has an upper bound less than the weight.
* 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 validateTarget(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A transformation behavior has one input parameter and one output parameter. The input parameter must be the same as or a supertype of the type of object token coming from the source end. The output parameter must be the same or a subtype of the type of object token expected downstream. The behavior cannot have side effects.
* 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 validateTransformationBehaviour(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* An object flow may have a selection behavior only if has an object node as a source.
* 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 validateSelectionBehaviour(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same as or a supertype of the type of source object node. The output parameter must be the same or a subtype of the type of source object node. The behavior cannot have side effects.
* 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 validateInputAndOutputParameter(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* isMulticast and isMultireceive cannot both be true.
* 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 validateIsMulticastOrIsMultireceive(DiagnosticChain diagnostics,
Map<Object, Object> context);
} // ObjectFlow