01/04/2017
Introduction
Une API événementielle a pour but d’exécuter du code lorsqu’une opération a lieu dans un contexte précis. Il est possible d’effectuer des actions avant et après l’exécution de l’opération provenant de FlowerDocs.
Les avantages de l’utilisation de cette nouvelle API sont :
- Stabilité : elle est pérenne, les développements spécifiques ne sont pas impactés à chaque sortie de version
- Générique et cohérente : elle s’applique sur tous les objets du domaine, sans dénaturer le produit
- Extensible : de nouvelles fonctionnalités peuvent être ajoutées sans impacter l’existant
- Scalable : il n’y a aucuns préjugés de l’architecture d’exécution (embarquant le spécifique sur une même instance, multi-agents)
Un peu de vocabulaire
Operation : Action sur un objet du domaine
OperationHandler : Fragment de code exécuté de façon synchrone avant ou après l’opération
OperationHook : Service REST à notifier de manière asynchrone après l’exécution d’une opération
Fonctionnement
Une opération va être découpée en 4 phases :
- Les OperationHandler enregistrés dans la phase de pré-traitement sont appelés
- L’Operation est executée
- Les OperationHandler enregistrés dans la phase de post-traitement sont appelés
- Les OperationHook asynchrones sont exécutés
S’il y a un problème lors du pré-traitement comme la levée d’une exception, le déroulement des étapes est bloqué.
Configuration
Un OperationHandler est défini par le nom complet de sa classe, Exemple : com.flower.docs.core.tsp.OperationHandlerSample
Ils peuvent être exécutées en fonction de différents contextes d’opération :
- La phase d’exécution :
BEFORE
ouAFTER
- Le type d’action :
CREATE
,READ
,UPDATE
,SEARCH
,ADD_CONTENT
,DELETE_CONTENT
,ANSWER
ouASSIGN
- Le type d’objet :
DOCUMENT
,FOLDER
,TASK
ouVIRTUAL_FOLDER
Les paramètres suivants peuvent aussi être définis :
- L’activation de l’
OperationHandler
- Son exécution de façon asynchrone ou non
- La levée d’une exception doit-elle ou non bloquer le déroulement de l’opération
- Son ordre d’exécution en fonction des autres
OperationHandler
Contexte d’opération
Les classes de contextes d’opérations existant sont les suivantes :
DefaultComponentOperationContext
, concernant les opérations CRUD de tous les composantsTaskOperationContext
, concernant les opérations CRUD des tâchesSearchOperationContext
, concernant les opérations de recherchesUpdateContentOperationContext
, concernant la mise à jour de contenu