ZURÜCK zur Blogliste
Use Cases

Beispielanwendung für Reiseversicherungen erklärt

Vor Kurzem haben wir unsere erste Beispielanwendung vorgestellt: einen einfachen Rechner für Reiseversicherungen. Heute sehen wir uns seine Funktionsweise im Detail an.

Travel insurance sample application powered by DecisionRules

1. Einführung

In diesem Artikel erklären wir ausführlich, wie unsere Beispielanwendung für Reiseversicherungen funktioniert. Zunächst geben wir einen Überblick über die gesamte Webanwendung und ihre Komponenten. Anschließend beschreiben wir detailliert den Rule Flow, der den Berechnungsprozess steuert. Am Ende werden Sie genau verstehen, wie die Anwendung funktioniert und wie der Rule Flow den gesamten Berechnungsprozess steuert.

Wenn Sie nicht wissen, was eine Demo-App ist, lesen Sie unseren vorherigen Artikel: decisionrules.io/de/articles/decisionrules-in-action.

Alle verfügbaren Beispielanwendungen finden Sie unter samples.decisionrules.io.

2. Wie funktioniert die Anwendung?

Bevor wir die Webanwendung, den Rule Flow und die einzelnen Regeln in DecisionRules beschreiben, sollten wir den Prozess klären, der während der Laufzeit abläuft, sowie die Daten, mit denen die Anwendung arbeitet.

2.1. Allgemeiner Überblick über den Ablauf der Anwendung

Travel insurance sample application runtime flow from user input to calculated output

Ablauf der Reiseversicherungsanwendung: Eingabe, Verarbeitung im Rule Flow und berechnete Ausgabe

  1. In der Webanwendung trägt der Benutzer alle Eingabedaten in ein einfaches Formular ein.
  2. Sobald alle Eingabedaten eingetragen und validiert wurden, beginnt die Echtzeitkommunikation mit DecisionRules über HTTPS.
  3. DecisionRules verarbeitet die Eingabedaten mithilfe des Rule Flow und der darin enthaltenen Regeln und sendet die berechneten Ausgabedaten an die Webanwendung zurück.
  4. Die Webanwendung empfängt die Ausgabedaten und zeigt sie dem Benutzer an.

2.2. Eingabe- und Ausgabemodell

Um vollständig zu verstehen, wie die Anwendung funktioniert, muss man wissen, welche Daten verarbeitet werden.

2.2.1. Beispiel für Eingabedaten

2.2.2. Beispiel für Ausgabedaten

Die Ausgabedaten werden auf der Website als Ergebnis der Berechnung für den Kunden verwendet.

3. Beschreibung der Webanwendung

Travel insurance web application showing input form and insurance package results

Rule Flow zur Steuerung von Risikofaktoren, Gesamtrisiko und Preisberechnung der Versicherungspakete

Die Webanwendung besteht aus zwei Hauptseiten:

  1. Auf der ersten Seite befindet sich ein einfaches Formular, in dem der Kunde Reisezeitraum, Reiseziel, Reiseart, sportliche Aktivitäten sowie die Anzahl der Personen und deren jeweiliges Alter auswählen kann (Eingaben). Diese Daten werden zur Berechnung der Preise der einzelnen Versicherungspakete verwendet. Am unteren Bildschirmrand zeigt eine Fußzeile den Basispreis der Pakete (Ausgabe), der bei jeder Änderung der Eingabewerte in Echtzeit berechnet wird. So können Kunden sehen, wie sich ihre Auswahl auf die Gesamtkosten des Versicherungspakets auswirkt.
  2. Auf der zweiten Seite befindet sich eine Tabelle mit den einzelnen Versicherungspaketen (Ausgabe-Array). Nachdem deren Preise anhand der auf der ersten Seite eingegebenen Daten berechnet wurden, werden sie in die Tabelle eingetragen. So können Kunden die konkreten Kosten jedes Pakets sehen und vergleichen, um eine fundierte Entscheidung zu treffen. Die Tabelle enthält außerdem weitere relevante Informationen, beispielsweise zur Deckung medizinischer Kosten oder von Unfällen.

4. Beschreibung des Rule Flow und seiner einzelnen Regeln

4.1. Beschreibung des Rule Flow

DecisionRules Rule Flow for calculating travel insurance risk and package prices

Rule Flow zur Steuerung von Risikofaktoren, Gesamtrisiko und Preisberechnung der Versicherungspakete

Der gesamte Berechnungsprozess in DecisionRules wird von diesem Rule Flow gesteuert, der verschiedene Regeltypen enthält (Decision Tables und Scripting Rules). In der Abbildung oben sehen Sie das Rule-Flow-Diagramm.

Beschreibung des Rule-Flow-Diagramms:

  1. Der Rule Flow empfängt Eingabedaten von der Webanwendung. (Eingabe)
  2. Im ersten Abschnitt berechnet jede Regel ihren eigenen Risikofaktor. Eine Ausnahme bildet die Regel “Dates”, die die Anzahl der Reisetage berechnet. Die Berechnungen basieren auf den Eingabedaten aus der Webanwendung.
  3. Im zweiten Abschnitt berechnet die Regel “Total Risk Factor” aus den zuvor berechneten Werten (Risikofaktoren und Anzahl der Reisetage) das Gesamtrisiko der Reise.
  4. Im dritten Abschnitt werden die Preise der einzelnen Pakete berechnet. Die Preisberechnung hängt vom Wert “totalRiskFactor” ab, der im vorherigen Schritt berechnet wurde.
  5. Abschließend gibt der Rule Flow die berechneten Pakete an die Webanwendung zurück, wo sie dem Benutzer angezeigt werden. (Ausgabe)

4.2. Beschreibung der einzelnen Regeln

Jede Regel spielt bei der Berechnung des endgültigen Versicherungspreises eine bestimmte Rolle, sei es bei der Ermittlung des Risikofaktors oder bei der Berechnung der endgültigen Preise der Reisepakete. Die Berechnung basiert hauptsächlich auf sogenannten Risikofaktoren. Das sind Zahlen zwischen 0 und 1, die den Risikograd der einzelnen Eingabedaten bestimmen. Dazu gehören etwa der regionale und der altersbezogene Risikofaktor. Nachdem alle Faktoren ermittelt und die Reisetage berechnet wurden, werden die Werte in eine vordefinierte Formel eingesetzt. Diese berechnet den Wert “totalRiskFactor”, der zur Berechnung der endgültigen Paketpreise dient. Fachanwender können die Risikofaktoren einfach einschätzen und die Regeln mit ihren Werten aktualisieren; die Änderungen werden ohne Implementierung mit einem Klick angewendet.

Vielleicht ist Ihnen aufgefallen, dass unser Rule Flow einige Scripting Rules verwendet. Bei der Entwicklung haben wir festgestellt, dass bestimmte Operationen darin angemessener und effizienter umgesetzt werden können. Alle Scripting Rules dienen der erweiterten Verarbeitung oder Änderung von Daten. Sie sind jedoch nicht der einzige mögliche Ansatz: Alle in diesem Beispiel verwendeten Scripting Rules können durch Decision Tables oder andere Alternativen ersetzt werden.

4.2.1. Dates (Decision Table)

Dates decision table calculating trip duration from departure and arrival dates

Decision Table “Dates” zur Berechnung der Anzahl der Reisetage

Diese Regel berechnet die Anzahl der Reisetage. Sie nimmt “departureDate” und “arrivalDate” als Eingabe entgegen und gibt die Anzahl der Reisetage aus. Dafür verwenden wir die Funktion DATEDIFF(), die die Differenz zwischen zwei Datumswerten berechnet. Weitere Informationen zu DATEDIFF() finden Sie in unserer Dokumentation.

4.2.2. Regeln für Kontinente

Diese Regelgruppe ermittelt den Wert continentsRiskFactor für ein bestimmtes Array von Kontinenten. Die Eingabe ist ein Array von Kontinenten; die Ausgabe ist ein einzelner Wert, der den Gesamtrisikofaktor für alle Kontinente im Array darstellt.

Zur Berechnung von continentsRiskFactor ruft die Scripting Rule "Continents Script" die Decision Table "Continents" auf, um den Risikofaktor für jeden Kontinent im Eingabe-Array zu bestimmen. Die Ergebnisse werden an die Scripting Rule zurückgegeben, die sie zu einem Gesamtrisikofaktor addiert.

Betrachten wir das Eingabe-Array \["europe","america"\]. Die Scripting Rule "Continents Script" ruft die Decision Table "Continents" auf, um die Risikofaktoren für den ersten Kontinent (“europe”) und den zweiten Kontinent (“america”) zu bestimmen. Anschließend addiert sie diese Werte zum Gesamtrisikofaktor continentsRiskFactor. In diesem Beispiel beträgt der resultierende Wert "0.45".

4.2.2.1. Continents Script (Scripting Rule)

Diese Scripting Rule berechnet den Gesamtrisikofaktor für ein Array von Kontinenten, indem sie die Decision Table "Continents" mit dem Array der ausgewählten Kontinente als Daten-Payload aufruft. Die Decision Table gibt den Risikofaktor für jeden Kontinent zurück. Diese Werte werden abgebildet und im Array "continentsRiskFactorMapped" gespeichert. Anschließend addiert die Scripting Rule mit reduce() alle Werte zu einer Zahl, die den Gesamtrisikofaktor “totalContinentsRiskFactor” darstellt. Die Zahl wird auf zwei Dezimalstellen gerundet, um die Rundung binärer Gleitkommazahlen in JavaScript zu berücksichtigen. Der gerundete Wert wird als Ausgabe zurückgegeben.

Fachanwender müssen das Skript nicht aktualisieren. Es ist als sofort einsatzbereite Lösung vorbereitet; die Decision Table mit der gesamten Konfiguration der Risikofaktoren lässt sich direkt verwalten.

4.2.2.2. Continents (Decision Table)

Continents decision table assigning risk factors to selected continents

Decision Table “Continents” zur Berechnung des geografischen Risikos

Diese Regel weist einer Menge von Kontinenten anhand vordefinierter Bedingungen Risikofaktorwerte zu. Sie nimmt das Array "continents" als Eingabe entgegen und gibt ein Array von "continentRiskFactor"-Werten aus. Lautet die Eingabe etwa \["europe", "america"\], ist die Ausgabe \[{"continentRiskFactor": 0.35}, {"continentRiskFactor": 0.1}\].

4.2.3. Reisearten (Decision Table)

Travel Types decision table assigning risk factors to different trip types

Decision Table “Travel Types” mit Risikofaktoren für jede Reiseart

Diese Regel weist einer Reiseart anhand vordefinierter Bedingungen einen Risikofaktor zu. Sie nimmt "travelType" als Eingabe entgegen und gibt "travelTypeRiskFactor" aus. Lautet die Eingabe beispielsweise "study-visit", beträgt "travelTypeRiskFactor" “0.4”.

4.2.4. Sportliche Aktivitäten (Decision Table)

Sport Activities decision table assigning risk factors to travel activities

Decision Table “Sport Activities” zur Berechnung des Aktivitätsrisikos

Diese Regel weist einer sportlichen Aktivität anhand vordefinierter Bedingungen einen Risikofaktor zu. Sie nimmt "sportActivities" als Eingabe entgegen und gibt "sportRiskFactor" aus. Lautet die Eingabe beispielsweise "risk-sports", beträgt "sportRiskFactor" “0.9”.

4.2.5. Alter der Personen

Diese Regelgruppe ermittelt peopleRiskFactor für ein Array von Personen und deren Alter. Die Eingabe ist ein Array von Objekten, wobei das jeweilige Alter eine Eigenschaft des entsprechenden Objekts ist. Die Ausgabe ist ein einzelner Wert, der den Gesamtrisikofaktor für alle Personen im Array darstellt.

Zur Berechnung von peopleRiskFactor ruft die Scripting Rule "People's Age Script" die Decision Table "People's Age" auf, um den Risikofaktor für jede Person im Eingabe-Array zu bestimmen. Die Ergebnisse werden an die Scripting Rule zurückgegeben, die sie zu einem Gesamtrisikofaktor addiert.

Betrachten wir das Eingabe-Array \[{"age": 18}, {"age": 26}\]. Die Scripting Rule "People's Age Script" ruft die Decision Table "People's Age" auf, um die Risikofaktoren für die erste Person (Alter: 18) und die zweite Person (Alter: 26) zu bestimmen. Anschließend addiert sie diese Werte zum Gesamtrisikofaktor peopleRiskFactor. In diesem Beispiel beträgt der resultierende Wert "0.75".

4.2.5.1. People’s Age Script (Scripting Rule)

Diese Scripting Rule berechnet den Gesamtrisikofaktor für ein Array von Personen anhand ihres Alters. Sie ruft die Decision Table "People's Age" mit dem Array von Objekten, in denen das Alter jeder Person eine Eigenschaft ist, als Daten-Payload auf. Aufgrund der Struktur der Decision Table “People's Age" verwendet der Aufruf die Lösungsstrategie FIRST\_MATCH. Die Decision Table gibt den Risikofaktor für jede Person zurück. Die Werte werden abgebildet und im Array "peopleRiskFactorsMapped" gespeichert. Anschließend addiert die Scripting Rule mit reduce() alle Werte zu einer Zahl, die den Gesamtrisikofaktor totalAgeRiskFactor darstellt. Die Zahl wird auf zwei Dezimalstellen gerundet, um die Rundung binärer Gleitkommazahlen in JavaScript zu berücksichtigen, und als Ausgabe zurückgegeben.

Auch hier müssen Fachanwender das Skript nicht aktualisieren. Es ist als sofort einsatzbereite Lösung vorbereitet, da die Berechnung durch die Parameter der Decision Table gesteuert wird.

4.2.5.2. People’s Age (Decision Table)

People’s Age decision table assigning risk factors to traveler age groups

Decision Table “People’s Age” zur Berechnung des altersbezogenen Risikos

Diese Regel weist einer Altersgruppe anhand vordefinierter Bedingungen einen Risikofaktor zu. Sie nimmt "age" als Eingabe entgegen und gibt "ageRiskFactor" aus. Lautet die Eingabe beispielsweise "23", beträgt "ageRiskFactor" “0.4”. Aufgrund der Struktur dieser Decision Table müssen wir die Lösungsstrategie FIRST\_MATCH verwenden. Andernfalls gibt die Regel alle Ergebnisse aus, die die Bedingungen erfüllen.

4.2.6. Total Risk Factor (Decision Table)

Total Risk Factor decision table combining individual risks and trip duration

Berechnung des Total Risk Factor durch Kombination der Risikoeingaben der Reise

Diese Regel berechnet den Gesamtrisikofaktor. Sie nimmt alle berechneten Risikofaktoren und die Anzahl der Reisetage als Eingabewerte entgegen und gibt totalRiskFactor aus. Dieser wird mit einer Platzhalterformel in der Abbildung oben berechnet, die jederzeit durch eine genauere Formel ersetzt werden kann.

Für diese Regel benötigen wir in diesem Beispiel keine Bedingungen. Decision Tables erfordern jedoch im Allgemeinen mindestens eine Bedingung. Daher verwenden wir eine Platzhalterbedingung wie "peopleRiskFactor == anything", da sie immer wahr ist.

4.2.7. Pakete

Diese Regelgruppe berechnet die endgültigen Paketpreise anhand von totalRiskFactor. Die Eingabe ist totalRiskFactor; die Ausgabe ist ein Array einzeln berechneter Paketobjekte, die in der Decision Table leicht geändert werden können.

Diese Scripting Rule dient ausschließlich der Formatierung der Rückgabewerte. Sie ruft die Decision Table "Packages" mit totalRiskFactor als Daten-Payload auf und gibt die berechneten Pakete aus.

4.2.7.2. Packages (Decision Table)

Packages decision table calculating final insurance package prices

Decision Table “Packages” zur Berechnung der Preise aus dem Gesamtrisikofaktor

Diese Regel dient zum Erstellen, Löschen, Verwalten und Berechnen der Preise von Paketen. Sie nimmt totalRiskFactor als Eingabe entgegen und gibt die berechneten Pakete aus. Die Paketpreise werden mit einer Platzhalterformel in der Abbildung oben berechnet, die jederzeit ersetzt werden kann. Dabei wird ROUND() verwendet, um die Zahl auf zwei Dezimalstellen zu runden.

Sie können weitere Pakete hinzufügen, indem Sie eines der vorhandenen Pakete duplizieren und seine Daten bearbeiten. Alternativ können Sie die Preisberechnung durch Änderung der Berechnungsformel anpassen. Die Möglichkeiten sind praktisch unbegrenzt.

Für diese Regel benötigen wir in diesem Beispiel keine Bedingungen. Decision Tables erfordern jedoch im Allgemeinen mindestens eine Bedingung. Daher verwenden wir eine Platzhalterbedingung wie "peopleRiskFactor == anything", da sie immer wahr ist."

5. Fazit

In diesem Artikel haben wir einen umfassenden Überblick über unsere Beispielanwendung gegeben. Zunächst haben wir die Webanwendung betrachtet und uns anschließend mit dem Rule Flow und seinen einzelnen Regeln befasst. Wir hoffen, dass diese Informationen hilfreich waren und Sie nun besser verstehen, wie unsere Beispielanwendung funktioniert.

Wenn Sie mehr darüber erfahren möchten, wie DecisionRules Ihr Unternehmen unterstützen kann, besuchen Sie unsere Website oder LinkedIn-Seite. Sie können auch mit unseren Experten über Ihren konkreten Anwendungsfall oder die Funktionen von DecisionRules sprechen. Unser Vertriebsteam beantwortet gerne Ihre Fragen und vereinbart eine Demo, damit Sie DecisionRules in Aktion erleben können.

Vielen Dank fürs Lesen!

Jaroslav Spac

Jaroslav Spac

Frontend-Entwickler