Zum Hauptinhalt springen

Arbeiten mit JobLines-Entitäten

In InsuranceSuite wird eine Produktdefinition als eine Struktur mehrerer zugehöriger Entitäten dargestellt. Diese Struktur wird im Digital SDK als ein JobLines-TypeScript-Typ materialisiert, der eine Zusammensetzung der einzelnen Entitätstypen ist, die die Produktdefinition bilden. Alle vom JobLines-Typ im Digital SDK verwendeten Entitäten werden als JobLines-Entitäten betrachtet.

Note: Der JobLines-Typ kann aus dem Stammpfad des generierten Digital SDK importiert werden.

Im Gegensatz zu unabhängigen Entitätsschemas, die nur die Daten ihrer eigenen Entität verwenden, können die Schemaregeln für JobLines-Entitäten auf die Daten anderer Entitäten innerhalb des JobLines-Graphen verweisen.

Folglich erfordern die Digital SDK-Schemafunktionen für diese JobLines-Entitäten die Daten des gesamten JobLines-Graphen als Argument für die Auswertung der Schemaregeln und die Validierung einer bestimmten Entität. Die Funktionsweise dieser Schemafunktionen erfordert eine Sonderbearbeitung in den Digital SDK UI Extensions.

Erwägungen zur Statusverwaltung​

Die Entitätsanbieter und Hooks unabhängiger Entitäten können direkt verwendet werden, ohne dass ihr Status in einer größeren Struktur kontextualisiert werden muss. Das liegt daran, dass sie autark sind und nur auf ihren eigenen Status angewiesen sind.

Die JobLines-Entitäten sind jedoch voneinander abhängig und benötigen Zugriff auf den gesamten JobLines-Status, um ordnungsgemäß zu funktionieren. Dies erfordert einen anderen Ansatz für die Statusverwaltung in den Digital SDK UI Extensions.

Status des JobLines-Graphen​

Da wir einen Ort zum Speichern des gesamten Status des JobLines-Graphen benötigen, enthalten die Digital SDK UI Extensions eine JobLinesProvider-Komponente und einen useJobLines-Hook.

Diese Exporte sind im Verzeichnis JutroUtils/${sdkName}/${apiName}/JobLines verfügbar, wenn der JobLines-Typ im Digital SDK für die jeweilige API verfügbar ist.

import {
JobLinesProvider,
useJobLines,
} from 'src/generated/JutroUtils/PcSdk/job/JobLines';

const App = () => (
<JobLinesProvider>
<Page />
</JobLinesProvider>
);

const Page = () => {
// In most cases, you will not need to access the JobLines state directly.
// The entity-level utils will access this state automatically.
const { jobLinesState, setJobLinesState } = useJobLines();

return <pre>{JSON.stringify(jobLinesState, null, 2)}</pre>;
};

JobLinesProvider-Komponente​

Der JobLinesProvider erstellt den React-Status für den gesamte JobLines-Graphen mithilfe des JobLines-Typs aus dem Digital SDK. Mithilfe von React Context wird der JobLines-Status für alle untergeordneten Verbraucher verfügbar gemacht.

Eigenschaften:

  • defaultValue: Optionale Eigenschaft, die zum Initialisieren des JobLines-Status verwendet wird, wenn er zum ersten Mal erstellt wird. Es wird der JobLines-Typ aus dem Digital SDK verwendet.

useJobLines-Hook​

Der useJobLines-Hook muss innerhalb einer JobLinesProvider-Komponente verwendet werden. Er ermöglicht Verbrauchern den Zugriff auf den JobLines-Status und gibt ein Objekt mit den folgenden Eigenschaften zurück:

  • jobLinesState: Status von JobLines.
  • setJobLinesState: State-Setter-Funktion.

Status der JobLines-Entitäten​

Wie die unabhängigen Entitäten hat auch jede JobLines-Entität ihren eigenen Anbieter. Diese Anbieter befinden sich in demselben Verzeichnis.

Diese Anbieter erstellen keinen eigenen Status, sondern verwenden einen Teil eines übergeordneten Status von JobLines. Dies ändert die Art und Weise, wie die JobLines-Entitätsanbieter im Vergleich zu standardmäßigen Entitätsanbietern verwendet werden:

  • Sie müssen innerhalb einer JobLinesProvider-Komponente verwendet werden.
  • Eine neue erforderliche path-Eigenschaft: Benutzer müssen den Pfad zum Ort des Entitätsstatus innerhalb des JobLines-Status angeben.
  • Die defaultValue-Eigenschaft wird nicht unterstützt, da der Status nicht vom Anbieter selbst, sondern vom JobLinesProvider erstellt oder initialisiert wird.
  • Das Digital SDK-Schema und die Validierungsfunktionen werden immer ausgeführt, wenn sich der JobLines-Status ändert, und nicht nur, wenn sich der Status der Entität selbst ändert. Da diese Entitäten voneinander abhängig sind, wird durch die Ausführung dieser Funktionen bei jeder Änderung des JobLines-Status sichergestellt, dass die Validierungsergebnisse aktuell sind.

Die Verbraucher dieser Entitätsanbieter (sowohl die Hooks als auch die generierten Feldkomponenten) funktionieren ähnlich wie reguläre Entitäten, mit der Ausnahme, dass die von diesen Verbraucher ausgelösten Statusänderungen bis zum JobLinesProvider propagiert werden.

// Illustrative example of how the entity and JobLines states are connected.
// In most cases you will not need to access the JobLines state directly.

import {
JobLinesProvider,
useJobLines,
} from 'src/generated/JutroUtils/PcSdk/job/JobLines';
import {
UALPersonalVehicleProvider,
useUALPersonalVehicle,
} from 'src/generated/JutroUtils/PcSdk/job/UALPersonalVehicle';

const App = () => (
<JobLinesProvider>
<UALPersonalVehicleProvider path="lines.UALPersonalAutoLine.personal-vehicles[0].data">
<Page />
</UALPersonalVehicleProvider>
</JobLinesProvider>
);

const Page = () => {
const { jobLinesState } = useJobLines();

const { fields } = useUALPersonalVehicle();
const { licensePlate } = fields;
const { setState: setLicensePlateState } = licensePlate;

return (
<div>
<button onClick={() => setLicensePlateState('1234567890')}>
Set license plate
</button>
<h1>JobLines state</h1>
<pre>{JSON.stringify(jobLinesState, null, 2)}</pre>
</div>
);

// After the license plate is set at the entity level,
// the JobLines state will be updated to reflect the change:
//
// {
// "lines": {
// "UALPersonalAutoLine": {
// "personal-vehicles": [{
// "data": {
// "licensePlate": "1234567890"
// }
// }]
// }
// }
// }
};

Deckungsspezifische Funktionen​

Deckungsentitäten sind Teil des JobLines-Graphen und unterliegen denselben Statusverwaltungsregeln, die auf dieser Seite erläutert werden. Aufgrund der Art und Weise, wie Deckungsbedingungen in den InsuranceSuite-Entitätsschemas ausgedrückt werden, gibt es jedoch einige zusätzliche spezifische Funktionen für Deckungsentitäten.

Note: Deckungsentitäten können im Digital SDK und in den Digital SDK UI Extensions durch den Verzeichnisnamen mit dem Suffix _Coverage identifiziert werden (z. B. UALLiability_Coverage).

Bedingungshelfer in Entitäts-Hooks​

Die Entitäts-Hooks für Deckungsentitäten geben eine zusätzliche Eigenschaft terms zurück. Dabei handelt es sich um ein Objekt mit so vielen Eigenschaften wie die Bedingungen, die in der Deckungsentität vorhanden sind.

Alle Funktionen der Feldhelfer sind auch in den Bedingungshelfern verfügbar, mit dem zusätzlichen Vorteil, dass diese automatisch die entsprechende Eigenschaft ...Value basierend auf dem covTermType der Bedingung verwenden.

import { useUALLiability_Coverage } from 'src/generated/JutroUtils/PcSdk/job/UALLiability_Coverage';
// other imports and providers omitted

const Page = () => {
const { terms } = useUALLiability_Coverage();
const { UALLiabilityLiabPack } = terms;
const { setState: setUALLiabilityLiabPackState } = UALLiabilityLiabPack;

return (
<div>
<button onClick={() => setUALLiabilityLiabPackState('P255010')}>
Set UALLiabilityLiabPack
</button>
</div>
);

// Setting the UALLiabilityLiabPack term with the hook term helper will
// automatically use the right "...Value" property for the given "covTermType".
};

Generierte Bedingungskomponenten in der Entität​

Zusätzlich zu den Feldkomponenten, die aus dem Entitätspfad exportiert werden, exportieren die Deckungsentitäten auch eine React-Komponente für jede ihrer Bedingungen.

Diese Komponenten sind nach den Bedingungen benannt, die sie repräsentieren, mit vorangestelltem Präfix Term_, und bieten die gleiche Funktionalität wie die Feldkomponenten, mit dem zusätzlichen Vorteil, dass Sie auf die entsprechende Eigenschaft ...Value für den angegebenen covTermType der Bedingung zugreifen können, da sie im Hintergrund die Bedingungshelfer verwenden.

import { JobLinesProvider } from 'src/generated/JutroUtils/PcSdk/job/JobLines';
import {
UALLiability_CoverageProvider,
Term_UALLiabilityLiabPack,
} from 'src/generated/JutroUtils/PcSdk/job/UALLiability_Coverage';

const Page = () => {
return (
<JobLinesProvider>
<UALLiability_CoverageProvider path="lines.UALPersonalAutoLine.coverages.UALLiability">
<Term_UALLiabilityLiabPack />
</UALLiability_CoverageProvider>
</JobLinesProvider>
);
};

// The Term_UALLiabilityLiabPack component will render a field using the schema
// and state of the corresponding "...Value" property for the given "covTermType".

Diese Term_-Komponenten sind auch im fieldsList-Array enthalten.

Spezifische Funktionen für geplante Elemente​

Entitäten für geplante Elemente sind Teil des JobLines-Graphen und befolgen daher dieselben Statusverwaltungsregeln, die auf dieser Seite erläutert werden. Aufgrund der Art, wie Eigenschaften von geplanten Elementen in den Entitätsschemas von InsuranceSuite ausgedrückt werden, gibt es jedoch einige zusätzliche spezifische Funktionen für Entitäten für geplante Elemente.

Note: Entitäten für geplante Elemente können im Digital SDK und in den Digital SDK UI Extensions durch den Verzeichnisnamen mit dem Suffix _Item identifiziert werden (z. B. HLLScheduledPersonalProperty_Item).

Helfer für Eigenschaften von geplanten Elementen in den Entitäts-Hooks​

Die Entitäts-Hooks für Entitäten für geplante Elemente geben eine zusätzliche Eigenschaft scheduledItemProperties zurück. Dabei handelt es sich um ein Objekt mit so vielen Eigenschaften, wie Eigenschaften von geplanten Elementen in der Entität für geplante Elemente vorhanden sind.

Alle Funktionen der Feldhelfer sind auch in den Helfern für Eigenschaften von geplanten Elementen verfügbar, mit dem zusätzlichen Vorteil, dass diese automatisch die entsprechende Eigenschaft <X>value basierend auf der Eigenschaft von geplanten Elementen verwenden.

import { useHLLScheduledPersonalProperty_Item } from 'src/generated/JutroUtils/PcSdk/job/HLLScheduledPersonalProperty_Item';
// other imports and providers omitted

const Page = () => {
const { scheduledItemProperties } = useHLLScheduledPersonalProperty_Item();
const { SerialNumber } = scheduledItemProperties;
const { setState: setSerialNumberState } = SerialNumber;

return (
<div>
<button onClick={() => setSerialNumberState('1234567890')}>
Set serial number
</button>
</div>
);

// Setting the SerialNumber scheduled item property with the hook's scheduledItemProperties helper
// will automatically use the right "<X>value" property for the given scheduled item property.
};

Generierte Eigenschaftskomponenten für geplante Elemente in der Entität​

Zusätzlich zu den Feldkomponenten, die aus dem Entitätspfad exportiert werden, exportieren die Entitäten für geplante Elemente auch eine React-Komponente für jede ihrer Eigenschaften von geplanten Elementen.

Diese Komponenten sind nach den Eigenschaften von geplanten Elementen benannt, die sie repräsentieren, mit vorangestelltem Präfix ItemProp_, und bieten die gleiche Funktionalität wie die Feldkomponenten, mit dem zusätzlichen Vorteil, dass Sie auf die entsprechende Eigenschaft <X>value für die angegebene geplante Eigenschaft zugreifen können, da sie im Hintergrund die scheduledItemProperties verwenden.

import { JobLinesProvider } from 'src/generated/JutroUtils/PcSdk/job/JobLines';
import {
HLLScheduledPersonalProperty_ItemProvider,
ItemProp_SerialNumber,
} from 'src/generated/JutroUtils/PcSdk/job/HLLScheduledPersonalProperty_Item';

const Page = () => {
return (
<JobLinesProvider>
<HLLScheduledPersonalProperty_ItemProvider path="lines.HomeownersLine.coverages.HLLScheduledPersonalProperty">
<ItemProp_SerialNumber />
</HLLScheduledPersonalProperty_ItemProvider>
</JobLinesProvider>
);
};

// The ItemProp_SerialNumber component will render a field using the schema
// and state of the corresponding "<X>value" property for the given scheduled item property.

Diese ItemProp_-Komponenten sind auch im Array der fieldsList-Array der Entität für das geplante Element enthalten.

Deckungsgruppenspezifische Funktionen​

Deckungsgruppenentitäten weisen einen speziellen Schematyp auf, bei dem es keine Felder, aber stattdessen Verweise auf andere Deckungsentitäten gibt. Aus diesem Grund geben die Entitäts-Hooks keine Feldhelfer jeglicher Art zurück.

Note: Deckungsgruppenentitäten können im Digital SDK und in den Digital SDK UI Extensions durch den Verzeichnisnamen mit dem Suffix _Coverages identifiziert werden (z. B. UALPersonalAutoLine_Coverages).

Abgesehen davon, dass keine Feldhelfer vorhanden sind, funktionieren die Entitäts-Hooks für Deckungsgruppenentitäten auf die gleiche Weise wie alle anderen Entitäten. Sie bieten Zugriff auf das Schema und das Validierungsergebnis der Deckungen als Gruppe, das bei einer Einzelauswertung vom Schema und den Validierungsergebnissen der Deckungen abweichen kann.

Array der einzelnen Deckungs-Utils​

Zusätzlich zum Entitätsanbieter und Hook exportieren die Deckungsgruppenentitäten auch coveragesList, ein Array mit Objekten, die auf die einzelnen Deckungs-Utils jeder Deckung in der Gruppe verweisen.

// Example of a coveragesList array
export const coveragesList: CoveragesListItem[] = [
{
coverageName: 'Coverage1', // Name of the coverage
CoverageProvider: Coverage1_CoverageProvider, // Entity provider for the individual coverage
useCoverage: useCoverage1_Coverage, // Entity hook for the individual coverage
coverageFieldsList: Coverage1FieldsList, // Array of the generated field components for the individual coverage
},
{
coverageName: 'Coverage2',
CoverageProvider: Coverage2_CoverageProvider,
useCoverage: useCoverage2_Coverage,
coverageFieldsList: Coverage2FieldsList,
},
];
Note:
  • Das Array coveragesList wird aus dem Entitätspfad der Deckungsgruppe exportiert (z. B. import { coveragesList } from 'src/generated/JutroUtils/PcSdk/job/UALPersonalAutoLine_Coverages';).
  • Die Typdefinition CoveragesListItem ist für alle Deckungsgruppenentitäten identisch und wird aus dem Stammpfad der generierten Digital SDK UI Extensions exportiert (z. B. import type { CoveragesListItem } from 'src/generated/JutroUtils/PcSdk/job/UALPersonalAutoLine_Coverages';).

Beachten Sie, dass die Regeln und Validierungsergebnisse für jede Deckung in diesem Array einzeln und nicht als Gruppe ausgewertet werden.