Trigger

Référentiel d’utilisation des triggers

Création et utilisation d’un trigger

Ces extensions sont appelées très bas niveau (indépendamment de toute interface graphique) sur des évènements identifiés.

Il faut hériter de la classe com.axemble.vdoc.sdk.triggers.base.BaseObjectTrigger<T> (utilisation des « generics »).

public void onBeforeCreate(T object)

public void onBeforeSave(T object)
public void onAfterSave(T object)

public void onBeforeDelete(T object)
public void onAfterDelete(T object)

public void onFieldChanged(T object, String fieldName, Object oldValue, Object newValue)

Un appel est généré sur ces évènements quelle que soit la manière dont ils ont été déclenchés.

Ordre de déclenchement des méthodes

  • Dans le cas d’une création :
    public void onBeforeCreate(T object)
    public void onBeforeSave(T object)
    public void onAfterSave(T object)
  • Dans le cas d’une mise à jour :
    public void onBeforeSave(T object)
    public void onAfterSave(T object)
  • Dans le cas d’une suppression :
    public void onBeforeDelete(T object)
    public void onAfterDelete(T object)

Déclaration des triggers

La classe peut être déclarée dans un fichier XML situé sous « custom\triggers ».

Paramètres XML

Paramètre Description
name Nom système du trigger (unique)
type Sur quel objet SDK captons-nous des évènements ?
triggerClass Classe trigger
fields On peut placer les noms systèmes des champs de l’annuaire séparés par des ‘,’.
  • Pour ces champs là, l’événement onFieldChanged répondra.
  • Page contenant les noms systèmes des champs de l’annuaire
Attention, les noms systèmes des champs paramétrés (afin d’être appelé dans la méthode onPropertyChanged) ne doivent pas commencer par des majuscules.
execution
  • synchronous (ou attribut absent) : appels en temps réel dans le trigger
  • asynchronous : appels déportés sur le serveur Engine (dans ce cas, il n’y a pas d’appel sur les événements « before »)

Exemple de fichier XML de déclaration de triggers

<triggers>
 <trigger name="UpdateUserFromAD" type="com.axemble.vdoc.sdk.interfaces.IUser" triggerClass="com.vdoc.speLVL.directory.trigger.UpdateUsersFromAD" />
</triggers>

Ou pour le “onPropertyChanged” :

<triggers>
 <trigger name="UpdateUserFields" type="com.axemble.vdoc.sdk.interfaces.IUser" triggerClass="com.vdoc.speLVL.directory.trigger.UpdateUsersFromAD" fields="XXX,XXX,XXX" execution="synchronous" />
</triggers>

Source : https://wiki.myvdoc.net/xwiki/bin/view/Dev+Floor/ReferenceTrigger