Interface Requires<Out extends Software,​In extends Service>

  • All Superinterfaces:
    org.gcube.informationsystem.base.reference.Element, org.gcube.informationsystem.model.reference.ERElement, org.gcube.informationsystem.base.reference.IdentifiableElement, org.gcube.informationsystem.model.reference.relations.IsRelatedTo<Out,​In>, org.gcube.informationsystem.model.reference.ModelElement, org.gcube.informationsystem.model.reference.relations.Relation<Out,​In>, org.gcube.informationsystem.base.reference.relations.RelationElement<Out,​In>, org.gcube.informationsystem.base.reference.SchemaMixedElement, Serializable
    All Known Implementing Classes:
    RequiresImpl

    @TypeMetadata(name="Requires",
                  description="Requires is used to indicate that the source [Software](type:Software) when activated requires to interact with a specific [Service](type:Service) instance, i.e., the target of the relation. This relation usually reflects an administrative constraint rather than a technological limitation. When there are no constraints on the instance the relation is instead [DependsOn](type:DependsOn) which is between two [Software](type:Software). Not necessarily all the [Software](type:Software) running in the infrastructure are represented as resources. Only the [Software](type:Software) required for infrastructure administration or the ones to be managed with specific policies are represented. Indeed, Requires relation is normally used as policy constraint. Let us imagine an open source software which uses a MySQL database as backend. In many cases, what characterises the software instance is the data present in the backend. The infrastructure manager could stipulate an agreement with a provider having a particular set of data which is not for public domain. The software once deployed, given the business agreement, is entitled to use the instance of the provider and not a generic MySQL database instance. The infrastructure manager imposes the use of such a particular instance because of the data it contains.",
                  version="1.0.0")
    @Change(version="1.0.0",
            description="First Version")
    public interface Requires<Out extends Software,​In extends Service>
    extends org.gcube.informationsystem.model.reference.relations.IsRelatedTo<Out,​In>
    Requires is used to indicate that the source Software when activated requires to interact with a specific Service instance, i.e., the target of the relation. This relation usually reflects an administrative constraint rather than a technological limitation. When there are no constraints on the instance the relation is instead DependsOn which is between two Software. Not necessarily all the Software running in the infrastructure are represented as resources. Only the Software required for infrastructure administration or the ones to be managed with specific policies are represented. Indeed, Requires relation is normally used as policy constraint. Let us imagine an open source software which uses a MySQL database as backend. In many cases, what characterises the software instance is the data present in the backend. The infrastructure manager could stipulate an agreement with a provider having a particular set of data which is not for public domain. The software once deployed, given the business agreement, is entitled to use the instance of the provider and not a generic MySQL database instance. The infrastructure manager imposes the use of such a particular instance because of the data it contains.
    Author:
    Luca Frosini (ISTI - CNR)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String NAME
      The name of the Requires relation type.
      • Fields inherited from interface org.gcube.informationsystem.base.reference.Element

        DATETIME_PATTERN, REDACTED, TYPE_PROPERTY, UNKNOWN_USER
      • Fields inherited from interface org.gcube.informationsystem.model.reference.ERElement

        CONTEXTS_PROPERTY
      • Fields inherited from interface org.gcube.informationsystem.base.reference.IdentifiableElement

        ID_PROPERTY, METADATA_PROPERTY
      • Fields inherited from interface org.gcube.informationsystem.model.reference.ModelElement

        EXPECTED_TYPE_PROPERTY, SUPERTYPES_PROPERTY
      • Fields inherited from interface org.gcube.informationsystem.model.reference.relations.Relation

        PROPAGATION_CONSTRAINT_PROPERTY
      • Fields inherited from interface org.gcube.informationsystem.base.reference.relations.RelationElement

        SOURCE_PROPERTY, TARGET_PROPERTY
    • Method Summary

      Static Methods 
      Modifier and Type Method Description
      static <Out extends Software,​In extends Service>
      Requires<Out,​In>
      getDefaultInstance​(Out out, In in)
      Returns a default instance of Requires
      • Methods inherited from interface org.gcube.informationsystem.base.reference.Element

        getTypeName
      • Methods inherited from interface org.gcube.informationsystem.model.reference.ERElement

        getContexts
      • Methods inherited from interface org.gcube.informationsystem.model.reference.ModelElement

        getExpectedType, getSupertypes
      • Methods inherited from interface org.gcube.informationsystem.model.reference.relations.Relation

        getAdditionalProperties, getAdditionalProperty, getPropagationConstraint, getSource, getTarget, setAdditionalProperties, setAdditionalProperty, setPropagationConstraint, setSource, setTarget
      • Methods inherited from interface org.gcube.informationsystem.base.reference.relations.RelationElement

        getID, getMetadata, setID, setMetadata
    • Method Detail

      • getDefaultInstance

        static <Out extends Software,​In extends Service> Requires<Out,​In> getDefaultInstance​(Out out,
                                                                                                         In in)
        Returns a default instance of Requires
        Type Parameters:
        Out - the source Software
        In - the target Service
        Parameters:
        out - the source Software instance
        in - the target Service instance
        Returns:
        a default instance of Requires