001// license-header java merge-point
002//
003// Attention: generated code (by Metafacade.vsl) - do not modify!
004//
005package org.andromda.metafacades.uml;
006
007import java.util.Collection;
008
009/**
010 * A representation of the model object 'Instance Specification'. Represents an instance in a
011 * modeled system. Has the capability of being a deployment target in a deployment relationship, in
012 * the case that it is an instance of a node. Has the capability of being a deployed artifact, if it
013 * is an instance of an artifact.
014 *
015 * Metafacade interface to be used by AndroMDA cartridges.
016 */
017public interface InstanceFacade
018    extends ModelElementFacade
019{
020    /**
021     * Indicates the metafacade type (used for metafacade mappings).
022     *
023     * @return boolean always <code>true</code>
024     */
025    public boolean isInstanceFacadeMetaType();
026
027    /**
028     * Returns those slots that map onto attributes.
029     * @return Collection<AttributeLinkFacade>
030     */
031    public Collection<AttributeLinkFacade> getAttributeLinks();
032
033    /**
034     * A Classifier is a classification of instances - it describes a set of instances that have
035     * features
036     * in common. Can specify a generalization hierarchy by referencing its general classifiers. It
037     * may be
038     * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a
039     * generalization hierarchy by referencing its general classifiers. Has the capability to own
040     * collaboration uses. These collaboration uses link a collaboration with the classifier to give
041     * a
042     * description of the workings of the classifier. Classifier is defined to be a kind of
043     * templateable
044     * element so that a classifier can be parameterized. It is also defined to be a kind of
045     * parameterable
046     * element so that a classifier can be a formal template parameter.
047     * @return Collection<ClassifierFacade>
048     */
049    public Collection<ClassifierFacade> getClassifiers();
050
051    /**
052     * Those slots that map onto association ends.
053     * @return Collection<LinkEndFacade>
054     */
055    public Collection<LinkEndFacade> getLinkEnds();
056
057    /**
058     * A representation of the model object 'Instance Specification'. Represents an instance in a
059     * modeled
060     * system. Has the capability of being a deployment target in a deployment relationship, in the
061     * case
062     * that it is an instance of a node. Has the capability of being a deployed artifact, if it is
063     * an
064     * instance of an artifact.
065     * @return Collection<InstanceFacade>
066     */
067    public Collection<InstanceFacade> getOwnedInstances();
068
069    /**
070     * A representation of the model object 'Instance Specification'. Represents an instance in a
071     * modeled
072     * system. Has the capability of being a deployment target in a deployment relationship, in the
073     * case
074     * that it is an instance of a node. Has the capability of being a deployed artifact, if it is
075     * an
076     * instance of an artifact.
077     * @return Collection<LinkFacade>
078     */
079    public Collection<LinkFacade> getOwnedLinks();
080
081    /**
082     * All slots for this instance, this includes the ones that map onto attributes and the ones
083     * that map onto association ends. In fact, this feature holds the collection of both
084     * InstanceFacade.attributeLinks and InstanceFacade.linkEnds.
085     * @return Collection<AttributeLinkFacade>
086     */
087    public Collection<AttributeLinkFacade> getSlots();
088}