Interface ServiceEffectSpecification

All Superinterfaces:
org.eclipse.emf.cdo.CDOObject, org.eclipse.emf.cdo.common.id.CDOWithID, EObject, Notifier
All Known Subinterfaces:
ResourceDemandingSEFF
All Known Implementing Classes:
ResourceDemandingSEFFImpl, ServiceEffectSpecificationImpl

public interface ServiceEffectSpecification extends org.eclipse.emf.cdo.CDOObject
A representation of the model object 'Service Effect Specification'. Service Effect Specification Models the effect of invoking a specific service of a basic component. Therefore, it references a Signature from an Interface, for which the component takes a ProvidedRole, to identify the described service. This class is abstract and SEFFs for specific analysis purposes need to inherit from this class. A BasicComponent may have an arbitrary number of SEFFs. It can have multiple SEFFs of a different type for a single provided service. For example, one SEFF can express all external service calls with no particular order, while another one includes a restricted order, or still another one expresses resource demands of the service. While different SEFF types have been proposed, the only type currently included in the meta-model is the ResourceDemandingSEFF for performance prediction. Different types of SEFFs should not contradict each other if the languages are equally powerful. For example, the order of allowed external service calls should be the same for each SEFF type modelling sequences of such calls if the modelling languages have the same expressiveness. SEFFs are part of a component and not part of an interface, because they are implementation dependent. The SEFFs of a CompositeComponent are not represented in the meta-model and can be derived automatically by connecting the SEFFs of the encapsulated components of its nested AssemblyContexts. Different SEFFs of a single component access the same component parameter specifications. That means that parameter dependencies to the same component parameters in different SEFF types refer also to the same characterisations.

The following features are supported:

See Also:
Generated class or method.
EMF model class or method.
abstract="true" annotation="http://www.eclipse.org/emf/2002/Ecore constraints='referencedOperationSignatureMustBelongToInterfaceReferencedByProvidedRole referencedEventTypeMustBelongToEventGroupReferencedByProvidedRole'" annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/LPG referencedOperationSignatureMustBelongToInterfaceReferencedByProvidedRole='let describedService : repository::Signature = self.describedService__SEFF in\n not describedService.oclIsKindOf(repository::OperationSignature) or\n let providedRoles : Set(repository::ProvidedRole) = self.basicComponent_ServiceEffectSpecification.providedRoles_InterfaceProvidingEntity in\n -- collect all directly provided interfaces\n let directlyProvidedInterfaces : Set(repository::Interface) = providedRoles->selectByKind(repository::OperationProvidedRole).providedInterface__OperationProvidedRole->selectByKind(repository::Interface)->asSet() in\n -- collect all provided interfaces including parent interfaces\n let providedInterfaces : Set(repository::Interface) = directlyProvidedInterfaces->closure(interface : repository::Interface | interface.parentInterfaces__Interface)->union(directlyProvidedInterfaces) in\n -- collect all provided signatures\n let providedSignatures : Set(repository::Signature) = providedInterfaces->selectByKind(repository::OperationInterface).signatures__OperationInterface->selectByKind(repository::Signature)->asSet() in\n -- compare signatures\n providedSignatures->includes(self.describedService__SEFF)' referencedEventTypeMustBelongToEventGroupReferencedByProvidedRole='let describedService : pcm::repository::Signature = self.describedService__SEFF in\n not describedService.oclIsKindOf(pcm::repository::EventType) or\n let providedRoles : Set(pcm::repository::ProvidedRole) = self.basicComponent_ServiceEffectSpecification.providedRoles_InterfaceProvidingEntity in\n -- collect all directly provided interfaces\n let directlyProvidedInterfaces : Set(pcm::repository::Interface) = providedRoles->selectByKind(pcm::repository::SinkRole).eventGroup__SinkRole->selectByKind(pcm::repository::Interface)->asSet() in\n -- collect all provided interfaces including parent interfaces\n let providedInterfaces : Set(pcm::repository::Interface) = directlyProvidedInterfaces->closure(interface : pcm::repository::Interface | interface.parentInterfaces__Interface)->union(directlyProvidedInterfaces) in\n -- collect all provided signatures\n let providedSignatures : Set(pcm::repository::Signature) = providedInterfaces->selectByKind(pcm::repository::EventGroup).eventTypes__EventGroup->selectByKind(pcm::repository::Signature)->asSet() in\n -- compare signatures\n providedSignatures->includes(self.describedService__SEFF)'"