Skip to content

Intermediate Operation Model Specification

This page specifies the structure and semantics of the intermediate metamodel for LEMMA operation models. All obtained intermediate LEMMA operation models must conform to this metamodel to ensure consistent behavior of LEMMA model processors. The following figure shows the metamodel's structure:

Structure of the metamodel for intermediate operation models

The source code of the metamodel specification can be found at https://github.com/SeelabFhdo/lemma/blob/main/de.fhdo.lemma.operation.intermediate.metamodel/model/IntermediateOperationModel.xcore.

Each of the following sections describes certain concepts of the metamodel.

Note

Attributes that may contain more than one value but exhibit a * multiplicity, i.e., they may contain an arbitrary number of values or even none at all (* is shorthand UML notation for 0..*), are never null.

In case no multiplicity is stated after the object type of an attribute, the attribute may be null. For example, an attribute defined as String name implicitly has a multiplicity 0..1 and in the zero-case the String may be null.

However, in case the attribute's type is a built-in primitive Java type, e.g. int, the attribute will never be null but exhibits the type's default value in case it did not receive an explicit value.

Model Root

Class IntermediateOperationModel

Root of an intermediate operation model.

String[1] sourceModelUri

file:// URI pointing to the source operation model file from which this intermediate operation model was derived.

Note

Model processors must not depend on this URI being absolute or relative. Both cases may occur in practice and are up to the modeler.

IntermediateImport[*] imports

References to imported technology models, intermediate operation models, or intermediate service models.

IntermediateContainer[*] containers

Containers defined in the operation model.

IntermediateInfrastructureNode[*] infrastructureNodes

Infrastructure nodes defined in the operation model.

Note

Operation models must not be empty. Consequently, at least one of the attributes containers or infrastructureNodes is never empty.

Operation Nodes

Abstract Class IntermediateOperationNode

Super class of IntermediateContainer and IntermediateInfrastructureNode.

String[1] name

Name of the operation node. Unique within the same operation model.

IntermediateImport[1..*] imports

References to imported technology models.

IntermediateOperationEnvironment[1] operationEnvironment

The node's operation environment.

OperationMicroserviceReference[*] deployedServices

References to the microservices that are associated with the node.

Note

In case the concrete instance of the node is an IntermediateInfrastructureNode and despite its name, the attribute identifies the microservices that use the node.

IntermediateEndpoint[1..*] endpoints

Endpoints specified for the node.

IntermediateTechnologySpecificPropertyValue[*] defaultValues

Default values for technology-specific configuration properties. In general, these values account for all services that are associated with the node.

Hint

The getEffectiveConfigurationValues method allows the retrieval of the effective configuration values of a given associated service.

IntermediateImportedAspect[*] aspects

Aspects of the operation node.

IntermediateTechnologySpecificPropertyValue[*] getEffectiveConfigurationValues(OperationMicroserviceReference service)

Helper to return the effective configuration values of the operation node for the given OperationMicroserviceReference. The effective configuration values consist of the default values for the technology-specific properties on the node and the property values specific to the service's deployment.

Hint

Service-specific property values overwrite default values.

Class IntermediateOperationEndpoint : IntermediateEndpoint

Intermediate representation of an endpoint on an operation node. This representation extends the IntermediateEndpoint concept from the intermediate service model specification by the endpoint's technology.

IntermediateEndpointTechnology[1] endpointTechnology

Technology of the endpoint.

IntermediateOperationNode[1] node

Operation node for which the endpoint was specified.

Class IntermediateEndpointTechnology : IntermediateTechnology

Intermediate representation of the technology of an operation node's endpoint. This representation extends the IntermediateTechnology concept from the intermediate service model specification to make the technology information on operation node endpoints specific to operation models.

IntermediateOperationEndpoint[1] endpoint

The endpoint to which this technology was assigned.

Class IntermediateTechnologySpecificPropertyValue

Represents the value of a technology-specific property.

String[1] value

The property's value.

Hint

The value is represented as a string but is always compatible to the property's type.

IntermediateTechnologySpecificProperty[1] technologySpecificProperty

The property for which the value was specified.

IntermediateServiceDeploymentSpecification specification

The service deployment specification that this value configures.

IntermediateOperationNode operationNode

The operation node that this value configures.

Class IntermediateContainer : IntermediateOperationNode

This concept reifies a container as a certain kind of operation node.

String qualifiedDeploymentTechnologyName

Qualified name of the container's deployment technology.

IntermediateDeploymentTechnologyReference[1] technologyReference

Reference to the container's deployment technology.

IntermediateOperationModel[1] operationModel

The container's defining operation model.

IntermediateOperationNodeReference[*] dependsOnNodes

Dependencies of a container on other nodes, e.g., databases or service discoveries required by deployed microservices.

IntermediateOperationNodeReference[*] usedByNodes

Usage relationships of a container to other nodes that make use of the container's infrastructure-related capabilities.

Note

The attribute models the dependency of another node on a container. The dependsOnNodes attribute takes the opposite perspective and reflects the dependency of a container on another node.

Class IntermediateInfrastructureNode : IntermediateOperationNode

This concept reifies an infrastructure node as a certain kind of operation node.

String qualifiedInfrastructureTechnologyName

Qualified name of the infrastructure node's technology.

IntermediateInfrastructureTechnologyReference[1] reference

Reference to the infrastructure node's technology.

IntermediateOperationModel[1] operationModel

The infrastructure node's defining operation model.

IntermediateOperationNodeReference[*] dependsOnNodes

Dependencies of an infrastructure node on other nodes, e.g., databases or service discoveries required for the node's intended infrastructure capability.

IntermediateOperationNodeReference[*] usedByNodes

Usage relationships of an infrastructure node to other nodes that make use of the node's infrastructure-related capabilities.

Note

The attribute models the dependency of another node on an infrastructure node. The dependsOnNodes attribute takes the opposite perspective and reflects the dependency of an infrastructure node on another node.

Class IntermediateOperationNodeReference

A reference to an operation node.

String[1] name

Name of the referenced operation node.

boolean imported

This flag indicates whether the operation node reference originates from another operation model or is located in the same operation model where it occurs.

IntermediateImport import

In case the operation node is imported, this attribute points to the import of the operation model that defines the node.

String[1] qualifiedTechnologyName

Name of the referenced operation node's technology.

IntermediateOperationNode dependsOnNode

Link to the operation node that depends on the referenced operation node.

Hint

The attribute only receives a value in case the linked operation node is local and not imported from another operation model.

IntermediateOperationNode usedByNode

Link to the operation node that uses the referenced operation node.

Hint

The attribute only receives a value in case the linked operation node is local and not imported from another operation model.

Operation Technologies

Abstract Class IntermediateOperationTechnology

Super class for operation technologies.

String[1] name

Name of the operation technology.

IntermediateOperationEnvironment[1] environment

The technology's operation environment.

IntermediateTechnologySpecificProperty[*] properties

Technology-specific properties provided by the operation technology.

Class IntermediateOperationEnvironment

The operation environment of a certain operation technology. Operation environments may refer to technology that is mandatory to execute modeled operation nodes. For example, an operation environment may explicitly determine the version of the used operation technology.

String[1] environmentName

Name of the operation environment.

boolean default

Flag to indicate whether this is the default operation environment of an operation technology.

IntermediateOperationTechnology[1] operationTechnology

The operation technology to which this environment belongs.

Class IntermediateTechnologySpecificProperty

A property of a certain operation technology.

String[1] name

The name of the property.

String[1] type

The name of the property's primitive type. The following values are possible:

  • "boolean"
  • "byte"
  • "char"
  • "date"
  • "double"
  • "float"
  • "int"
  • "long"
  • "short"
  • "string"

Note

A property cannot be of the built-in primitive type unspecified.

String defaultValue

This attribute encodes the possible default value of the property. it is guaranteed that the default value fits the property's type.

String[*] featureNames

This attribute contains the names of all features specified for the property. The following values are possible:

Feature Name Description
"MANDATORY" Flag to indicate that the property needs to receive a value. It is guaranteed that all mandatory properties receive a value.
"SINGE_VALUED" Flag to indicate that a property may only receive a value once. It is guaranteed that all single-valued properties receive at most one value.

IntermediateOperationTechnology operationTechnology

The operation technology to which the property belongs.

Class IntermediateDeploymentTechnology : IntermediateOperationTechnology

A concrete operation technology that represents a deployment technology.

IntermediateDeploymentTechnologyReference[1] reference

The technology reference that points to this deployment technology.

Class IntermediateDeploymentTechnologyReference

A reference to a deployment technology.

IntermediateImport[1] import

The import of the technology model, which defines the referenced deployment technology.

IntermediateDeploymentTechnology[1] technology

The referenced deployment technology.

IntermediateContainer[1] container

The container that uses the deployment technology.

Class IntermediateInfrastructureTechnology : IntermediateOperationTechnology

A concrete operation technology that represents an infrastructure technology.

IntermediateInfrastructureTechnologyReference[1] reference

The technology reference that points to this infrastructure technology.

Class IntermediateInfrastructureTechnologyReference

A reference to an infrastructure technology.

IntermediateImport[1] import

The import of the technology model, which defines the referenced infrastructure technology.

IntermediateInfrastructureTechnology[1] technology

The referenced infrastructure technology.

IntermediateInfrastructureNode[1] container

The infrastructure node that uses the infrastructure technology.

Service Deployment Specifications

Class IntermediateServiceDeploymentSpecification

Specification of a microservice's deployment/usage of an operation node.

OperationMicroserviceReference[1] operationMicroserviceReference

The microservice targeted by the specification.

IntermediateOperationEndpoint[*] endpoints

Endpoints specified for the microservice.

IntermediateTechnologySpecificPropertyValue[*] propertyValues

Configuration values specific to the microservice.

IntermediateOperationNode[1] operationNode

The operation node to which the microservice is assigned.

Class OperationMicroserviceReference : MicroserviceReference

Reference to a microservice imported from an intermediate service model. The concept extends the MicroserviceReference concept from the intermediate service model specification and adds operation-related information.

boolean effectivelyImplemented

The value of the attribute corresponds to that of the effectivelyImplemented flag of the referenced microservice.

String[1] microserviceType

The value of the attribute corresponds to that of the type attribute of the referenced microservice.

String[1] visibility

The value of the attribute corresponds to that of the visibility attribute of the referenced microservice.

IntermediateOperationNode[1] node

The operation node to which the referenced microservice is deployed or that is used by the microservice.


Last update: 2022-12-16 by Florian Rademacher