Passer au contenu principal

Utilisation des entités JobLines

Dans InsuranceSuite, une définition de produit est représentée sous la forme d'une structure composée de plusieurs entités associées. Cette structure est matérialisée dans le SDK Digital sous la forme d'un type de TypeScript JobLines, qui est une composition des types d'entité individuels formant la définition du produit. Toutes les entités utilisées par le type JobLines dans le SDK Digital sont considérées comme des entités JobLines.

Note: Le type JobLines peut être importé à partir du chemin d'accès racine du SDK Digital généré.

Contrairement aux schémas d'entité indépendants, qui utilisent uniquement les données de leur propre entité, les règles de schéma pour les entités JobLines peuvent référencer les données d'autres entités dans le graphique JobLines.

Par conséquent, les fonctions de schéma du SDK Digital pour ces entités JobLines nécessitent les données de l'ensemble du graphique JobLines en tant qu'argument pour évaluer les règles de schéma et valider une entité donnée. Le mode de fonctionnement de ces schémas nécessite un traitement spécial dans les extensions d'interface utilisateur du SDK Digital.

Considérations relatives à la gestion de l'état​

Les fournisseurs d'entités et les crochets d'entités indépendantes peuvent être utilisés directement, sans avoir à contextualiser leur état dans une structure plus large, car ils sont autosuffisants et ne dépendent que de leur propre état.

Cependant, les entités JobLines sont interdépendantes et ont besoin d'accéder à l'ensemble de l'état JobLines pour fonctionner correctement. Cela nécessite une approche différente de la gestion de l'état dans les extensions d'interface utilisateur du SDK Digital.

État du graphique JobLines​

Étant donné que nous avons besoin d'un emplacement pour stocker tout l'état du graphique JobLines, les extensions d'interface utilisateur du SDK Digital incluent un composant JobLinesProvider et un crochet useJobLines.

Ces exportations seront disponibles dans le répertoire JutroUtils/${sdkName}/${apiName}/JobLines lorsque le type JobLines sera disponible dans le SDK Digital pour l'API donnée.

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>;
};

Composant JobLinesProvider​

Le JobLinesProvider crée l'état React pour tout le graphique JobLines à l'aide du type JobLines du SDK Digital. En utilisant le contexte React, cela rend l'état JobMLnes disponible pour tous les utilisateurs enfants.

Propriétés :

  • defaultValue : propriété facultative utilisée pour initialiser l'état JobLines lors de sa création initiale. Il utilise le type JobLines du SDK Digital.

Crochet useJobLines​

Le crochet useJobLines doit être utilisé à l'intérieur d'un composant JobLinesProvider. Il permet aux utilisateurs d'accéder à l'état JobLines et renvoie un objet avec les propriétés suivantes :

  • jobLinesState : l'état JobLines.
  • setJobLinesState : la fonction de définition d'état.

État des entités JobLines​

Comme les entités indépendantes, chaque entité JobLines possède son propre fournisseur. Ces fournisseurs se trouvent dans le même répertoire.

Ces fournisseurs ne créent pas leur propre état, mais utilisent une partie d'un état JobLines parent. Cela modifie la façon dont les fournisseurs d'entités JobLines sont utilisés par rapport aux fournisseurs d'entités standards :

  • Ils doivent être utilisés à l'intérieur d'un composant JobLinesProvider.
  • Une nouvelle propriété path est requise : les utilisateurs doivent indiquer le chemin d'accès menant à l'emplacement de l'état de l'entité dans l'état JobLines.
  • La propriété defaultValue n'est pas prise en charge, car l'état n'est pas créé ou initialisé par le fournisseur lui-même, mais par le JobLinesProvider.
  • Le schéma du SDK Digital et les fonctions de validation sont exécutés chaque fois que l'état de JobLines change, et pas uniquement lorsque l'état de l'entité change. Étant donné que ces entités sont interdépendantes d'autres entités, l'exécution de ces fonctions à chaque fois que l'état de JobLines change permet de s'assurer que les résultats de la validation sont à jour.

Les utilisateurs de ces fournisseurs d'entités (crochets et composants de champ générés) fonctionnent de la même manière que les entités normales, sauf que les changements d'état déclenchés par ces utilisateurs se propagent jusqu'à JobLinesProvider.

// 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"
// }
// }]
// }
// }
// }
};

Caractéristiques spécifiques à la garantie​

Les entités de garantie font partie du graphique JobLines et suivent les mêmes règles de gestion d'état que celles décrites dans cette page. Toutefois, en raison de la façon dont les conditions de garantie sont exprimées dans les schémas d'entité InsuranceSuite, il existe certaines fonctionnalités supplémentaires spécifiques aux entités de garantie.

Note: Les entités de garantie peuvent être identifiées dans le SDK Digital et les extensions d'interface utilisateur du SDK Digital par le suffixe _Coverage (par ex. UALLiability_Coverage) accolé au nom de répertoire.

Assistants de termes dans les crochets d'entité​

Les crochets d'entité pour les entités de garantie renvoient une propriété terms supplémentaire, qui est un objet ayant autant de propriétés qu'il existe de conditions dans l'entité de garantie.

Toutes les fonctionnalités des assistants de champ sont également disponibles dans les assistants de termes, avec l'avantage supplémentaire que ceux-ci utilisent automatiquement la propriété ...Value appropriée en fonction du covTermType du terme.

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".
};

Composants de terme générés dans l'entité​

En plus des composants Field exportés à partir du chemin d'entité, les entités de garantie exportent également un composant React pour chacune de leurs conditions.

Ces composants sont nommés d'après les termes qu'ils représentent, avec le préfixe Term_, et ils fournissent la même fonctionnalité que les composants Field, avec l'avantage supplémentaire de pouvoir accéder à la propriété correspondante ...Value pour le covTermType donné du terme, puisqu'ils utilisent les assistants de terme en arrière-plan.

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".

Ces composants Term_ sont également inclus dans la série fieldsList.

Fonctionnalités spécifiques à l'élément planifié​

Les entités d'un élément planifié font partie du graphique JobLines et, par conséquent, elles suivent les mêmes règles de gestion d'état que celles décrites dans cette page. Toutefois, en raison de la façon dont les propriétés d'élément planifié sont exprimées dans les schémas d'entité InsuranceSuite, il existe certaines fonctionnalités supplémentaires spécifiques aux entités d'élément planifié.

Note: Les entités d'élément planifié peuvent être identifiées dans le SDK Digital et les extensions d'interface utilisateur du SDK Digital par le suffixe _Item (par ex. HLLScheduledPersonalProperty_Item) accolé au nom de répertoire.

Assistants de propriété d'élément planifié dans les crochets d'entité​

Les crochets d'entité pour les entités d'élément planifié renvoient une propriété scheduledItemProperties supplémentaire, qui est un objet ayant autant de propriétés qu'il existe de propriétés dans l'entité d'élément planifié.

Toutes les fonctionnalités des assistants de champ sont également disponibles dans les assistants de propriété d'élément planifié, avec l'avantage supplémentaire que ceux-ci utilisent automatiquement la propriété <X>value appropriée en fonction de la propriété d'élément planifié.

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.
};

Composants de la propriété d'élément planifié générés dans l'entité​

Outre les composants Field exportés à partir du chemin d'entité, les entités d'élément planifié exportent également un composant React pour chacune de leurs propriétés d'élément planifié.

Ces composants sont nommés d'après les propriétés d'élément planifié qu'ils représentent, avec le préfixe ItemProp_, et ils fournissent la même fonctionnalité que les composants Field, avec l'avantage supplémentaire de pouvoir accéder à la propriété <X>value correspondante pour la propriété d'élément planifié donnée, puisqu'ils utilisent l'assistant de scheduledItemProperties en arrière-plan.

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.

Ces composants ItemProp_ sont également inclus dans la série fieldsList de l'entité de l'élément planifié.

Caractéristiques spécifiques au groupe de garantie​

Les entités de groupe de garantie ont un type de schéma spécial, dans lequel il n'y a pas de champs, mais des références à d'autres entités de garantie. Pour cette raison, les crochets d'entité ne renvoient aucune aide de champ quelle qu'elle soit.

Note: Les entités de groupe de garantie peuvent être identifiées dans le SDK Digital et les extensions d'interface utilisateur du SDK Digital par le suffixe _Coverages (par ex. UALPersonalAutoLine_Coverages) accolé au nom de répertoire.

Les crochets d'entité pour les entités de groupe de garantie fonctionnent de la même manière que toute autre entité, sauf qu'ils n'ont pas d'assistants de champ. Ils permettent d'accéder au schéma et au résultat de validation des garanties en tant que groupe, qui peuvent différer des résultats du schéma et de la validation des garanties lorsqu'elles sont évaluées individuellement.

Série d'utilitaires de garantie individuels​

Outre le fournisseur et le crochet d'entité, les entités de groupe de garantie exportent également coveragesList, soit une série d'objets pointant vers les utilitaires de garantie individuels de chaque garantie du groupe.

// 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:
  • La série coveragesList est exportée à partir du chemin d'accès de l'entité du groupe de garanties (par exemple import { coveragesList } from 'src/generated/JutroUtils/PcSdk/job/UALPersonalAutoLine_Coverages';).
  • La définition du type CoveragesListItem est commune à toutes les entités du groupe de garantie et est exportée à partir du chemin racine des extensions d'interface utilisateur du SDK Digital générées (par exempleimport type { CoveragesListItem } from 'src/generated/JutroUtils/PcSdk/job/UALPersonalAutoLine_Coverages';).

Veuillez noter que les règles et les résultats de validation pour chaque garantie de cette série sont évalués individuellement plutôt que collectivement.