<dependency>
<groupId>de.faktorzehn.ipm-shu</groupId>
<artifactId>ipm-basis-extapi</artifactId>
</dependency>
<dependency>
<groupId>de.faktorzehn.versicherungsmodell</groupId>
<artifactId>vm-basis-extapimapper</artifactId>
</dependency>
Projekte
ios-basis-ipm-adapter
Dieser Adapter ist kompatibel zum alten Schnittstellenmodell des Versicherungsmodells. Weitere Informationen hierzu befinden sich in der Dokumentation des F10-Versicherungsmodells |
-
definiert Abhängigkeiten zu den Faktor-IPM Basis Schnittstellenobjekten sowie den entsprechenden Mappern aus dem Versicherungsmodell
-
bietet eine abstrakte Implementierung
AbstractIpmFacade
des InterfaceIPolicyManagementFacade
für die Übertragung der Polcierungssdaten nach IPM
AbstractIpmFacade
Abstrakte Implementierung des Interface IPolicyManagementFacade
. Vor der Übertragung wird ein Mappen der Angebotsdaten (Offer
) zu Ableitungen von PolicyEditingDto
durchgeführt.
Wichtige Methoden:
-
MessageList check(Offer offer)
- Validierung der gewählten Angebotsvariante -
PolicyReference submit(Offer offer, MessageList messages)
- Übertragung der DTO-Klassen an IPM-
abstract V mapInternal(OfferVariant chosenVariant, MappingContext ctx)
- abstrakte Methode, um die Konvertierung in Ableitungen zu den konkreten Mappern zu ermöglichen -
PolicyEditingResultDto callServer(PolicyEditingDto dto, Offer offer, AdditionalPolicyData additionalPolicyData)
- Aufruf der IPM-Schnittstelle
-
IpmPolicyRestService
Abstrakte Klasse und Erweiterung von AbstractIpmFacade
um per REST-Client auf IPM zuzugreifen. Die wichtigsten Methoden sind callServer
für den Aufruf des Neu- und Änderungsservice und die Methode loadPolicy
, um eine Police aus dem Bestandsservice zu laden.
Folgende Query-Parameter werden bei der Übertragung des Antrags (Neu- und Änderungsservice) an IPM gesetzt (fett default-Wert):
-
abschlussTyp - wird dynamisch ermittelt über die Methode
ermittleAbschlussTyp
- mögliche Werte sindABSCHLUSS
oderSCHWEBE
-
verhaltenAbschlussNichtMoeglich - wird dynamisch ermittelt über die Methode
ermittleVerhaltenAbschlussNichtMoeglich
- mögliche Werte sindSCHWEBE
oderABBRECHEN
Query-Parameter beim Änderungsservice:
-
policenNr - Nummer der Police, für die eine Änderung durchgeführt werden soll
-
aenderungsDatum - Datum, ab wann die Änderung gültig ist
-
verhaltenRueckwirkendeAenderungen - wird dynamisch ermittelt über die Methode
ermittleVerhaltenRueckwirkendeAenderungen
- mögliche Werte sindABSCHLIESSEN
,NICHT_ABSCHLIESSEN
oderAUTOMATISIERTE_PROZESSE_ABSCHLIESSEN
Beim Query-Parameter abschlussTyp existiert zusätzlich die Methode sindAbschlussbedingungenErfuellt
. Bei Rückgabe von true
(default) wird in IPM ein Abschluss durchgeführt. Bei Rückgabe von false
wird der Antrag in IPM in Schwebe gestellt.
IpmPolicyMapper
Die Klasse bietet Methoden zum Mappen der DTOs von IPM bzw. das Mappen des Modells in Dtos an.
Wichtige Methoden:
-
mapToModel(String policyManagementSystemId,PolicyInformationResultDto resultDto, MappingContext ctx)
- mappt das DTOPolicyInformationResultDto
zur einerPolicy
und liefert das Ergebnis alsLookupResult<Policy>
zurück. Dies wird im Kontext der Bestandsauskunft aus IPM verwendet. -
mapVersicherungToDto(PolicyEditingDto editingDto, Versicherung versicherung, MappingContext ctx)
- wird im Kundenprojekt implementiert. Dies wird im Kontext der Übertragung von Policendaten nach IPM nach Abschluss eines Angebotes verwendet.
IpmPolicySearchService
Die Klasse sucht über IPM nach Policen und liefert diese in einer Liste zurück.
IpmPolicyInfoMapper
Die Klasse mappt Information eines DTOs für eine Police aus IPM in ein Containerobjekt PolicyInfo
, das sich auf Basisinformationen einer Police beschränkt.
Wichtige Methoden:
-
mapToModel(PoliciesResultDto resultdto)
- mappt das DTOPoliciesResultDto
bzw. die darin enthaltene Liste vonPolicyInfoDto
in eine Liste vonPolicyInfo
. Dies wird im Kontext von kurzen Policenübersichten verwendet.
Anbindung in einer Spring-Anwendung
Beispiel mit zwei IPM-Anbindungen
policy.type=IPM # IPM Konfiguration Auskunft und Abschluss und Policensuche ipm: shu: username: gl_sa password: base-url.intern: http://localhost:8080/ipm policy-search-path: /rest/policies base-url.extern: http://localhost:8080/ipm hr: submit-path: /rest/hr/neugeschaeft submit-change-path: /rest/hr/aenderung policy-path: /rest/hr/bestandsauskunft created-policy-link: /ui/policies/1/{0}/{1} uv: submit-path: /rest/uv/neugeschaeft submit-change-path: /rest/uv/aenderung policy-path: /rest/uv/bestandsauskunft created-policy-link: /ui/policies/1/{0}/{1}
Implementierung Policensuche
Im Projekt wird eine Ableitung der Klasse IpmPolicySearchService
erstellt, in der die Konfigurationsparameter eingelesen werden. Im Prinzip ist man bei der Benennung der Konfigurationsparameter in der Konfigurationsdatei frei. Bei der Erstellung der IpmPolicySearchRestClientProperties
muss dann die entsprechende Variable übergeben werden.
@Repository
@ConditionalOnProperty(prefix = "policy", name = "type", havingValue = PolicyRepositoryType.IPM_LITERAL)
public class ShuIpmPolicySearchService extends IpmPolicySearchService {
@Autowired
public HrIpmPolicySearchService(@Value("${ipm.shu.username}") String username,
@Value("${ipm.shu.password}") String password,
@Value("${ipm.shu.base-url.intern}") String basepath,
@Value("${ipm.shu.policy-search-path}") String policySearchPath) {
this(new SpringRestClientImpl(), IpmPolicySearchRestClientProperties.of(username, password, basepath, policySearchPath));
}
protected HrIpmPolicySearchService(RestClient restClient, IpmPolicySearchRestClientProperties properties) {
super(restClient, properties);
}
}
Beispielhafter Aufruf (anhand eines Partners): /ipm/rest/policies?partnerId=5
Beispielhafter Aufruf (anhand einer Policennummer): /ipm/rest/policies?policyNumber=143120783003
Implementierung Abschluss und Auskunft
Im Projekt wird eine Ableitung der Klasse IpmPolicyRestService
erstellt, in der die Konfiguration ebenfalls eingelesen und für das Laden der Police und den Abschluss verwendet wird.
In der Ableitung müssen ebenfalls Mapper zur Verfügung gestellt werden, die die spartenspezifischen Versicherungsdaten aus der Bestandsauskunft (Ableitung von IpmPolicyMapper
) und die Abschlussdaten in ein spartenspezifisches PolicyEditingDto
mappen können.
Beispielhafter Aufruf:
-
Bestandsauskunft:
/ipm/rest/hr/bestandsauskunft?policenNr=143645501256
-
Antrag Neugeschäft:
/ipm/rest/hr/neugeschaeft?abschlussTyp=ABSCHLUSS?verhaltenAbschlussNichtMoeglich=SCHWEBE
mit einem(Hr)PolicyEditingDto
-
Antrag Änderungsgeschäft:
/ipm/rest/hr/aenderung?aenderungsDatum=2021-03-01?policenNr=145555867885?abschlussTyp=ABSCHLUSS?verhaltenAbschlussNichtMoeglich=SCHWEBE?verhaltenRueckwirkendeAenderungen=ABSCHLIESSEN
mit einem(Hr)PolicyEditingDto