AUTOSAR_AP_EXP_ARAComAPI
FIG-31706bbe1f5ec49f
856 × 332 px
1 Release(s)
Figure 6.9: DDS Provided Service Instance Deployment
SHA-256 Inhalts-Fingerabdruck:
31706bbe1f5ec49fc398a518b8b224aa750200f0fa4037453d5eff4407b24fc9
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08
1. Diagrammtyp & Architektur-Kontext
- Typ: UML-Klassendiagramm (Ausschnitt des AUTOSAR Adaptive Platform Metamodells / Service Instance Manifest).
- Architektur-Kontext: Spezifikation des DDS-Netzwerk-Bindings innerhalb von
ara::com(AUTOSAR Adaptive Platform, Release R22-11). - Funktionaler Zweck: Modellierung des Deployments einer serverseitigen Service-Instanz (
ProvidedApServiceInstance) auf die Data Distribution Service (DDS) Middleware. Das Metamodell definiert die Zuordnung von abstrakten Service-Interfaces, Events und Fields zu konkreten DDS-Instanzen, Discovery-Mechanismen, Identifikationsstrategien und DDS-spezifischen Quality-of-Service (QoS)-Parametern.
2. Komponenten, Entitäten & Schnittstellen
Metamodell-Klassen & Hierarchie
AdaptivePlatformServiceInstance(abstrakt, Basis:UploadableDesignElement): Abstrakte Basisklasse aller Service-Instanzen im Adaptive System.- Assoziation
+serviceInterfaceDeployment(Kardinalität0..1): Referenziert das zugehörigeServiceInterfaceDeployment.
- Assoziation
ProvidedApServiceInstance(Basis:AdaptivePlatformServiceInstance): Repräsentiert die serverseitig angebotene (provided) Service-Instanz.DdsProvidedServiceInstance(Spezialisierung vonProvidedApServiceInstance, erweitert durchDdsServiceInstanceProps): Konkrete Ausprägung einer bereitgestellten Service-Instanz für den DDS-Kommunikationsstack.- Attribute:
+discoveryType: DdsServiceInstanceDiscoveryTypeEnum [0..1]: Bestimmt den Discovery-Pfad.+resourceIdentifierType: DdsServiceInstanceResourceIdentifierTypeEnum [0..1]: Definiert die Adressierungs-/Kapselungsstrategie für DDS-Entities.+serviceInstanceId: PositiveInteger [0..1]: Eindeutige numerische Instanz-ID des Services.
- Attribute:
ServiceInterfaceDeployment(Basis:UploadableDesignElement): Protokollspezifische Konfiguration des Service-Interfaces. Hält per Komposition (1zu0..*, annotiert mit«atpVariation,atpSplitable»):+eventDeployment: Liste vonServiceEventDeployment.+fieldDeployment: Liste vonServiceFieldDeployment.
ServiceEventDeployment(Basis:ServiceInterfaceDeploymentElement): Deployment-Konfiguration eines konkreten Service-Events.ServiceFieldDeployment(Basis:ServiceInterfaceDeploymentElement): Deployment-Konfiguration eines Service-Fields (Getter/Setter/Notifier).DdsEventQosProps(Spezialisierung vonDdsQosProps): DDS-spezifische QoS-Richtlinien für Events.- Komposition:
DdsProvidedServiceInstanceaggregiert+eventQosProps(0..*). - Assoziation: Referenziert
+event(ServiceEventDeployment, Kardinalität0..1).
- Komposition:
DdsFieldQosProps(Spezialisierung vonDdsQosProps): DDS-spezifische QoS-Richtlinien für Field-Notifier.- Komposition:
DdsProvidedServiceInstanceaggregiert+fieldNotifierQosProps(0..*). - Assoziation: Referenziert
+field(ServiceFieldDeployment, Kardinalität0..1).
- Komposition:
Enumerationen
DdsServiceInstanceDiscoveryTypeEnum:domainParticipantUserDataQos: Discovery erfolgt über das standardisierte DDS-Built-in-Discovery-Protokoll (SPDP/SEDP) mittels Payload imUserDataQosPolicydesDomainParticipant.topic: Service-Ankündigung erfolgt über dedizierte DDS-Discovery-Topics.
DdsServiceInstanceResourceIdentifierTypeEnum:partition: Trennung/Adressierung unterschiedlicher Service-Instanzen erfolgt über DDS-Partitions innerhalb derselben Topics.topicPrefix: Instanztrennung erfolgt durch dynamischen Prefix im Topic-Namen.instanceId: Unterscheidung einzelner Service-Instanzen über den DDS-Instanzschlüssel (Instance Handle).
3. Dynamisches Verhalten & Sequenzablauf
Das statische Metamodell steuert die Laufzeitphasen des ara::com-DDS-Bindings:
- Service Offering (
Skeleton::OfferService()):- Die Binding-Schicht liest
DdsProvidedServiceInstance. - Discovery-Phase: Je nach
discoveryTypepropagiert der Stack dieserviceInstanceIdvia DDSDomainParticipantQos.user_dataoder publiziert eine Ankündigung auf dem konfigurierten Announcement-Topic.
- Die Binding-Schicht liest
- DDS-Entity-Initialisierung:
- Anlegen der
DataWriterfür Events und Field-Notifier. - Namespace-Auflösung gemäß
resourceIdentifierType:- Bei
partition: Zuweisung der Publisher/DataWriter zu einer spezifischen DDS-Partition. - Bei
topicPrefix: Generierung topikspezifischer Topic-Strings. - Bei
instanceId: Zuweisung des Key-Werts in den serialisierten CDR-Samples.
- Bei
- Anlegen der
- QoS-Parametrisierung:
- Die in
DdsEventQosPropsundDdsFieldQosPropshinterlegten Parameter (z. B.Reliability[Reliable vs. Best-Effort],Durability[Volatile vs. Transient-Local],History,Deadline) werden direkt in dieDataWriterQosder jeweiligen Event-/Field-Topics injiziert.
- Die in
4. Normative Relevanz & Entwickler-Hinweise
- ARXML-Generierung / Manifest-Konfiguration:
- Jede DDS-basierte Server-Instanz erfordert ein valides
DdsProvidedServiceInstance-Element imServiceInstanceManifest. serviceInstanceIdmuss innerhalb der DDS-Domain eindeutig sein, sofernresourceIdentifierTypenicht aufpartitionodertopicPrefixisoliert ist.
- Jede DDS-basierte Server-Instanz erfordert ein valides
- Stack-/Binding-Implementierung (
ara::comDDS-Plugin):- Entwickler des Middleware-Stacks müssen sicherstellen, dass Inkompatibilitäten zwischen
discoveryTypeundresourceIdentifierTypezur Generierzeit validiert werden. - Late-Joiner-Semantik für Fields erfordert in
DdsFieldQosPropszwingendDurabilityQosPolicyKind = TRANSIENT_LOCAL_DURABILITY_QOSin Kombination mit passendemHistoryQosPolicyKind.
- Entwickler des Middleware-Stacks müssen sicherstellen, dass Inkompatibilitäten zwischen
- Applikations-Entwickler:
- Vollständige Abstraktion auf C++-API-Ebene (
ara::com::Skeleton). Das Mapping auf Topics, Partitions und DDS-QoS erfolgt deklarativ über das Manifest und beeinflusst Determinismus, Speicherallokation im DDS-Treiber und Echtzeitverhalten (z. B. blockierendes Senden bei vollen DataWriter-Queues unterRELIABLE).
- Vollständige Abstraktion auf C++-API-Ebene (
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.