Enrichir l'objet Process
Vue dâensemble
Vous pouvez Ă©tendre le schĂ©ma par dĂ©faut de lâobjet Process afin dây ajouter des champs personnalisĂ©s pour rĂ©pondre aux besoins spĂ©cifiques de votre OAV.
Lâenrichissement suit trois Ă©tapes :
- la mise à jour de la définition du type graphQL ExtendedProcess ;
- la résolution des champs personnalisés cÎté serveur ;
- la mise à jour de la définition de ProcessFragment cÎté client.
Ătendre le schĂ©ma Process
Ătape 1 : Ăditer le type graphQL ExtendedProcess
Modifiez la définition du type graphQL ExtendedProcess dans le fichier server/graphql/types/extended-process-type.mjs pour ajouter vos champs personnalisés.
Exemple
import { gql } from 'graphql-tag';
export const ExtendedProcessType = gql`
type ExtendedProcess implements Process {
# base fields
projectId: ID
viewId: ID
sessionId: ID
clientId: ID
viewData: ViewData
# additional fields
message: String
}
`;Explications
Dans cet exemple, le champ message de type String est ajouté à la définition du type ExtendedProcess et par extension au schéma de l'objet Process.
Ătape 2 : RĂ©soudre les champs personnalisĂ©s
Ăditez le fichier server/process/extend-process.mjs et la fonction extendProcess pour rĂ©soudre les champs additionnels.
Exemple
export const extendProcess = async (process) => {
const message = 'Hello world!';
return {
...process,
message,
};
};Explications
La fonction de rappel extendProcess reçoit en paramÚtre l'objet qui représente le Process actuel. Il contient les champs résolus du schéma par défaut de l'objet Process.
Il est impératif que la fonction retourne ces champs par défaut, en plus des champs personnalisés résolus.
Dans cet exemple, nous avons résolu la valeur du champ personnalisé message.
Ătape 3 : Ăditer le fragment GraphQL ProcessFragment
Modifiez la définition du fragment graphQL ProcessFragment dans le fichier app/graphql/fragments/process.js pour inclure les champs personnalisés attendus cÎté client.
Exemple
import { gql } from '@apollo/client';
export const ProcessFragment = gql`
fragment ProcessFragment on ExtendedProcess {
# base fields
projectId
viewId
viewData
sessionId
clientId
# additional fields
message
}
`;Explication
Dans cet exemple, nous avons ajouté le champ personnalisé message à la liste des champs attendus pour la représentation de l'objet Process cÎté client.
Résumé
Pour ajouter une propriété personnalisée au schéma par défaut de l'objet Process, il faut :
- Ajouter le champ personnalisé à la définition du type graphQL ExtendedProcess ;
- Résoudre la propriété personnalisée grùce à la fonction de rappel extendProcess ;
- Ajouter le champ personnalisé à la définition du fragment graphQL ProcessFragment cÎté client.
La propriété personnalisée est alors accessible depuis l'objet Process récupéré cÎté client et cÎté serveur d'une vue.