Connecteur de pause¶
La mise en pause du connecteur est possible après l’assistant. Elle peut être exécutée après l’étape Finalize Configuration
. Cette étape permet à l’utilisateur de manipuler le statut du connecteur après son lancement. Le point d’entrée de cette phase est une procédure appelée PUBLIC.PAUSE_CONNECTOR()
. Il peut être personnalisé en le remplaçant en SQL ou en utilisant PauseConnectorHandlerBuilder
. Le processus inverse, qui consiste à mettre le connecteur en pause et à permettre à l’utilisateur de le redémarrer, est Reprendre connecteur.
Pour lancer cette procédure, l’utilisateur doit avoir le rôle d’application ADMIN
.
L’étape du connecteur de mise en pause se compose en interne de plusieurs phases. Certaines d’entre elles sont entièrement personnalisables et, par défaut, n’ont pas d’impact. Les phases sont les suivantes :
Validation des privilèges
Validation du statut
Validation de l’état
Mise à jour du statut (PAUSING)
Rappel interne
Mise en pause de Task Reactor (si Task Reactor est activé)
Mise à jour du statut (PAUSED)
Exigences¶
Le connecteur de mise en pause nécessite au moins les fichiers SQL suivants pour être exécutés lors de l’installation de l’application native :
core.sql
configuration/app_config.sql
lifecycle/pause.sql
Recommandé :
configuration/finalize_configuration.sql
Validation des privilèges¶
Pour mettre le connecteur en pause, le privilège EXECUTE TASK
doit être accordé à l’application.
Cette validation ne peut pas être écrasée par l’utilisation de PauseConnectorHandlerBuilder
ni par l’écrasement d’une procédure stockée. Toutefois, il est possible de mettre en œuvre un gestionnaire (handler) personnalisé.
Validation du statut¶
Pour mettre le connecteur en pause, le statut interne du connecteur doit être STARTED
.
Cette validation ne peut pas être écrasée par l’utilisation de PauseConnectorHandlerBuilder
ni par l’écrasement d’une procédure stockée. Toutefois, il est possible de mettre en œuvre un gestionnaire (handler) personnalisé.
Validation de l’état¶
Dans le cas où des validations personnalisées supplémentaires doivent être satisfaites, il existe une procédure stockée PUBLIC.PAUSE_CONNECTOR_VALIDATE()
, qui peut être personnalisée par l’utilisateur. Par défaut, cette procédure renvoie simplement 'response_code': 'OK'
. La procédure peut être personnalisée en l’écrasant par le biais de SQL ou en utilisant PauseConnectorHandlerBuilder
et en fournissant une implémentation personnalisée de l’interface PauseConnectorStateValidator
.
Rappel interne¶
Le rappel interne est une autre étape personnalisable. Par défaut, elle appelle PUBLIC.PAUSE_CONNECTOR_INTERNAL()
, qui renvoie 'response_code': 'OK'
. Cette procédure permet à l’utilisateur d’effectuer toute procédure supplémentaire nécessaire lors de la mise en pause du connecteur. Par exemple, la mise en pause de tâches spécifiques au connecteur additionnel. Il peut être remplacé par le script SQL ou en utilisant un PauseConnectorHandlerBuilder
pour fournir une implémentation personnalisée de l’interface PauseConnectorCallback
.
Mise à jour du statut¶
Lorsque toutes les phases ci-dessus sont achevées avec succès, le statut interne du connecteur est mis à jour :
{
"status": "PAUSED",
"configurationStatus": "FINALIZED"
}
Pour le diagramme complet des transitions d’état, voir Débit du connecteur.
Réponse¶
Réponse aboutie¶
Lorsque la procédure réussit à mettre en pause toutes les tâches en arrière-plan et à faire passer son statut sur PAUSED, le message Connector successfully paused.
sera renvoyé directement par le corps de la méthode PauseConnectorHandler
. Il est recommandé d’utiliser le format suivant :
{ "response_code": "OK" }
Erreur de réponse¶
En cas d’erreur, la réponse suivra le format ci-dessous :
{ "response_code": "<ERROR_CODE>", "message": "error message" }
Les codes d’erreur possibles sont les suivants :
INVALID_CONNECTOR_STATUS
- La procédure a été appelée sur un connecteur dont l’état est différent de[STARTED, PAUSING]
CONNECTOR_STATUS_NOT_FOUND
- L’enregistrement du statut du connecteur n’existe pas dans la base de données (indépendamment de la contribution de l’utilisateur à cette zone de préparation - une erreur interne)ROLLBACK_CODE
- Une erreur s’est produite, mais les modifications ont été annulées avec succès.INTERNAL_ERROR
- Quelque chose s’est mal passé en interne, le message doit être descriptifUNKNOWN_ERROR_CODE
- Une erreur inconnue s’est produite et le connecteur est maintenant dans un état non spécifié