---
# System prepended metadata

title: Communications Pearl/Queen

---

# Communications Pearl/Queen


Récapitulatif des communications


| Id  | Expéditeur | Destinataire | Objectif / message                                        |
| --- | ---------- | ------------ | ------------------------------------------ |
| 1   | Pearl      | Queen        | Synchroniser Queen                         |
| 2   | Pearl      | Queen        | Ouvrir Queen selon un contexte             |
| 3   | Pearl      | Queen        | HealthCheck             |
| 4   | Queen      | Pearl        | Synchronisation terminée (succès ou échec) |
| 5   | Queen      | Pearl        | Questionnaire démarré                      |
| 6   | Queen      | Pearl        | Questionnaire complété à 100%              |
| 7   | Queen      | Pearl        | Demande de fermeture de Queen              |
| 8   | Queen      | Pearl        | Retour healthCheck              |

5-6: envoyer l'évènement dès qu'il survient.
Pas d'évènement mixte.

Question : un questionnaire est marqué comme terminé, l'enquêteur


## De Pearl à Queen

### 1) Synchronisation
Pour déclencher la synchronisation de Queen, Pearl envoie un évènement à Queen :

postMessage
```
message = {
    type : 'PEARL',
    command:'SYNCHRONIZE'
}
```

### 2) Ouverture d'un questionnaire
Pour déclencher l'ouverture de Queen dans un certain contexte, l'application Pearl communique le context via l'url :

exemple : 

http://pearl.insee.fr/queen/survey-unit/123


Redirect par Queen -> http://pearl.insee.fr/queen/questionnaire/simpsons/survey-unit/123

"simpsons" récupére par Queen (l'info est dans survey-unit)

"simpsons" est l'id de questionnaire (pas de campagne)

- queen ouvre le questionnaire "simpsons" avec les donnnées de l'unitée enquêtées "123"

Pas de message dans ce cas.

### 3) HealthCheck
Pour vérifier si Queen est bien embarqué dans Pearl

postMessage
```
message = {
    type : 'PEARL',
    command:'HEALTH_CHECK'
}
```


## De Queen à Pearl

### 4) Synchronisation terminée
Pour notifier que la synchronisation de Queen est terminée (avec le bilan), Queen envoie un évènement à Pearl :

postMessage
```
message = {
    type : 'QUEEN',
    command : 'UPDATE_SYNCHRONIZE',
    state: 'SUCCESS/FAILURE'
}
```

### 5) Questionnaire démarré
Pour notifier que le questionnaire est démarré (au moins une variable collectée dans Queen), Queen envoie un évènement à Pearl :

postMessage

```
message = {
    type : 'QUEEN',
    command : 'UPDATE_SURVEY_UNIT',
    surveyUnit : '123',
    state: 'STARTED'
}
```


### 6) Questionnaire terminé (100%)
Pour notifier que le questionnaire est terminé à 100%, Queen envoie un évènement à Pearl :

postMessage


```
message = {
    type : 'QUEEN',
    command : 'UPDATE_SURVEY_UNIT', 
    surveyUnit : '123',
    state: 'COMPLETED'
}
```

### 7) Fermer Queen
Pour déclencher la fermeture de Queen, Queen envoie un évènement à Pearl :

postMessage
```
message = {
    type : 'QUEEN',
    command : 'CLOSE_QUEEN'
}
```


propostion de nouvel endPoint
```
{
  "operations": ["simpsons2020x00", "vqs2021x00"],

  "reporting-units": [
    { "id": "11", "operation": "simpsons2020x00" },
    { "id": "12", "operation": "simpsons2020x00" },
    { "id": "13", "operation": "simpsons2020x00" },
    { "id": "14", "operation": "simpsons2020x00" },
    { "id": "20", "operation": "vqs2021x00" },
    { "id": "21", "operation": "vqs2021x00" },
    { "id": "22", "operation": "vqs2021x00" },
    { "id": "23", "operation": "vqs2021x00" }
  ],

  "nomenclatures": ["cities2019", "regions2019"]
}
```

### 8) Retour healthCheck
Pour notifier que Queen est bien embarqué dans Pearl, Queen envoie un évènement à Pearl :

postMessage


```
message = {
    type : 'QUEEN',
    command : 'HEALTH_CHECK',
    state: 'READY'
}
```