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:

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.
IntermediateServiceDeploymentSpecification[*]
specifications
Deployment specifications for services that are associated with 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.