<dependency>
<groupId>de.faktorzehn.versicherungsmodell</groupId>
<artifactId>vm-basis-extapimapper</artifactId>
</dependency>
Projekte
ios-basis-extapimapper
Die Mapper dieses Schnittstellenmodells sind kompatibel zum alten Schnittstellenmodell des Versicherungsmodells. Weitere Informationen hierzu befinden sich in der Dokumentation des F10-Versicherungsmodells |
-
stellt Mapper und notwendige Utility-Klassen für die Konvertierung der Modellklassen aus dem Angebotsmodell in DTO-Darstellungen zur Verfügung
-
definiert Abhängigkeiten zu den entsprechenden Mappern aus dem Versicherungsmodell, um die Versicherung und ihre Komponenten mappen zu können
Mapper-Klassen
Für folgende Modellklassen wurde ein Mapper implementiert:
Mapper | Modellklasse |
---|---|
AngebotDtoMapper |
Angebot und Verkaufsprodukt |
AngebotVariantenDtoMapper |
AngebotsVariante |
RollenDtoMapper |
RolesAndPartner und Role |
PolicenReferenzDtoMapper |
PolicyReference |
Der AngebotDtoMapper
ist hierbei der Ausgangspunkt. Wenn die Methode mapFromModel(Angebot angebot, EXTERNAL_PARENT null, ServiceMappingContext context)
aufgerufen wird, werden auch die anderen Mapper über mapChildrenToModel(AngebotDto dto, Angebot angebot, ServiceMappingContext context)
aufgerufen. In bestimmten Fällen können auch die Methoden mapFromModel()
und mapToModel()
von Mappern auf der tieferen Ebene direkt aufgerufen werden (beispielsweise in den TAA-Services, wo der RollenDtoMapper
ohne die Anwendung des AngebotDtoMapper
verwendet wird).
Zusätzlich steht auch ein MessageListMapper
für das Mappen von IPS-Messages in DTO’s zur Verfügung.
Partnerdaten
Wenn optional Partnerdaten für die Ein- und Ausgabe verwendet werden, befindet sich im Standard ein PartnerDtoMapper
für das Mapping zwischen den hier definierten DTO’s und den Modellklassen aus dem Partnerinterface. Zum Zugriff auf partnerbezogene Informationen wird das PartnerRepository
verwendet, diese Abhängigkeit kann jedoch in einer Ableitung aufgelöst und anders definiert werden.
Customizing
Um die Mapper anwenden zu können, muss ein ServiceMappingContext
instanziiert und mitgegeben werden, der mehrere unterstützende Komponenten enthält. Im Standard sind folgende Eigenschaften definiert:
-
Function<Versicherung, VersicherungDto> : Das Mapping der Versicherung ist spartenspezifisch und sollte in einer Spartenableitung der jeweiligen Versicherungsmodell-Schnittstelle entnommen werden. Diese Komponente wird für jeden Service benötigt.
-
Function<VorversicherungsInfo, VorversicherungsInfoDto> : Das Mapping der Vorversicherungsinfo ist spartenspezifisch und sollte in einer Spartenableitung der jeweiligen Versicherungsmodell-Schnittstelle entnommen werden. Diese Komponente wird für Services benötigt, in denen Vorversicherungsinformationen teil der Ausgabe sind.
-
HashMap<RoleKind, String> : Ein Rollenart-Mapper, der für nicht-primäre Rollen anhand der
RoleKind
einen Rollennamen ausgibt. Für die primären Rollen Versicherungsnehmer, Beitragszahler, Korrespondenzempfänger und Vermittler (RoleKind = POLICY_HOLDER, PREMIUM_PAYER, CORRESPONDENCE_RECIPIENT und BROKER) muss kein Rollennamenmapping bereitgestellt werden. Ein beispielhafter RollenartMapperRollenArtMappingContainer
ist im Modul enthalten. Diese Komponente wird für Services benötigt, in denen Rolleninformationen teil der Ein- oder Ausgabe sind. -
Function<VersicherungDto, Versicherung> : Das Mapping des VersicherungDto’s ist spartenspezifisch und sollte in einer Spartenableitung der jeweiligen Versicherungsmodell-Schnittstelle entnommen werden. Diese Komponente wird für Services benötigt, in der gesamte Versicherungsdaten mitgegeben werden müssen (beipielsweise die Tarifierung).
-
Function<VorversicherungsInfoDto, VorversicherungsInfo> : Das Mapping des VorversicherungsinfoDto’s ist spartenspezifisch und sollte in einer Spartenableitung der jeweiligen Versicherungsmodell-Schnittstelle entnommen werden. Diese Komponente wird für Services benötigt, in der Vorversicherungsinformationen relevante Bestandteile sein können (z.B. Abschluss eines Angebots).
-
boolean mapPartnerData : Über ein Boolean kann gesteuert werden, ob zusätzlich die Ausgabe von Partnerdaten berücksichtigt werden soll und ist standardmäßig auf
false
gesetzt. -
PartnerRepository : Schnittstelle zur Kommunikation mit einem externen Partnersystem. Wenn im Standard boolean mapPartnerData auf
true
gesetzt ist, muss diese Schnittstelle mit angegeben werden. Diese Komponente wird für Services benötigt, in denen Partnerinformationen teil der Ein- oder Ausgabe sind. -
IProductConfiguration: Zugang zur Produktkonfiguration, die bereits in der Superklasse
MappingContext
implementiert ist. Diese Komponente wird für Services benötigt, in denen produktkonfigurierte Enum-Werte ausgelesen werden müssen. -
Function<Angebot, MessageList> : In dieser Komponente kann für die Ausgabe des Angebots optional eine nachfolgende Validierungsstrategie festgelegt werden, deren Messages bei der Ausgabe ebenfalls in DTO’s gemappt weden.
-
FilterVariantenContainer : Optional kann eine Filterregel angewendet werden, wenn nicht alle Varianten eines Angebots ausgegeben werden sollen (beispielsweise aus Performancegründen). Der Container beinhaltet zwei Komponenten: die eigentliche Filterregel in Form eines
Predicate<AngebotsVariante>
(z.B.AngebotsVariante::isGewaehlt
, um nach gewählten Varianten zu filtern) und eine optionale, benutzerdefinierte Message, die als Info in der Ausgabe mit angezeigt wird. Die Message ist alsBiFunction<Integer, Integer, Optional<Message>>
definiert, um die Gesamtanzahl der Varianten und die Anzahl der in der Ausgabe beibehaltenen Varianten nachträglich in die Message mappen zu können.
Der ServiceMappingContext
enthält eine integrierte Builder-Klasse, mit der alle benötigten Komponenten durch Verkettung in einem Schritt hinzugefügt werden können.
Ausgabe von Metadaten und Wertebereichen
Ein AttributeHandler kann dazu genutzt werden, einzelne Metadaten zu einem Attribut auszugeben. Die Mapper Klasse AbstractAttributeHandlerMapper
ruft die entsprechende Methode am AttributeHandler
automatisch auf. Dazu wird der konfigurierte Mapper (Instanz von MetadataMapperProcessor
) vom AttributeHandler
oder einer Implementierung im IMappingContext
verwendet.
Eine Implementierung von MetadataMapperProcessor
ist im Modul basis-extapimapper enthalten. Die Klasse MetadataMapper
implementiert dabei die Interface-Methode createMetadata
und erzeugt ein MetadataDto
im übergebenen externen Dto-Objekt.
/**
* Creates the meta data and adds the data to the external object.
*/
<EXTERNAL, MODEL_OBJECT extends IModelObject, EXTERNAL_VALUE, MODEL_VALUE, CONTEXT extends IMappingContext> void createMetadata(
AttributeHandler<EXTERNAL, MODEL_OBJECT, EXTERNAL_VALUE, MODEL_VALUE, CONTEXT> attributeHandler,
MODEL_OBJECT modelObject,
EXTERNAL externalObject,
CONTEXT context);
Um Metadaten im Dto ausgeben zu können, muss die Klasse das Interface MetadataContainer
mit der Methode addMetadata(Object dto)
implementieren.
Die Klasse MetadataDto
enthält die Wertebereiche in einem Attribut vom Typ ValueSetDto
.
Beispielausgabe von Metadaten und Wertebereichen eines Attributes wohnflaeche mit einem gültigen Bereich.
"metadata": [
{
"attributeName": "wohnflaeche",
"defaultValue": null,
"valueSet": {
"type": "RANGE",
"min": 1,
"max": 150,
"step": null,
"containsNull": false
}
}
]
Beispielausgabe von Metadaten und Wertebereichen eines Attributes selbstbehalt mit einer Aufzählung.
"metadata": [
{
"attributeName": "selbstbehalt",
"defaultValue": 100,
"valueSet": {
"type": "ENUMERATION",
"values": [
0,
100,
200
],
"containsNull": false
}
}
]
Im Kundenprojekt kann die Ausgabe der Metadaten nach eigenen Wünschen angepasst werden.