Personnalisation de l'implémentation par défaut

La signature de la fonction getNextTask sur l'interface curam.core.hook.task.impl.InboxActions est la suivante :

package curam.core.hook.task.impl;  

@ImplementedBy(InboxActionsImpl.class)
public interface InboxActions {

  public long getNextTask(String userName);
   
   .
   .
   .
   .
}

L'implémentation par défaut de la fonction est définie dans la classe curam.core.hook.task.impl.InboxActionsImpl

package curam.core.hook.task.impl;  

public class InboxActionsImpl implements InboxActions {

  public long getNextTask(String userName) { 
    // Le code d'implémentation par défaut se trouve ici....
  }

  . 
  .
  .
  .
}

Pour personnaliser getNextTask, la méthode doit être implémentée dans la nouvelle classe personnalisée créée précédemment qui étend la classe d'implémentation curam.core.hook.task.impl.InboxActionsImpl par défaut.

package custom.hook.task.impl;  

public class CustomInboxActionsImpl extends InboxActionsImpl {

  public long getNextTask(final String userName) { 
    // Le code de l'implémentation personnalisée doit être placé ici
  }
  
}

Afin de s'assurer que l'application exécute la nouvelle classe personnalisée au lieu de l'implémentation par défaut, une nouvelle classe custom.hook.task.impl.Module.java, qui étend com.google.inject.AbstractModule, doit être écrite avec la méthode configure implémentée comme dans l'exemple suivant :

package custom.hook.task.impl; 
 
public class Module extends com.google.inject.AbstractModule {
  protected void configure() {
    bind(
      curam.core.hook.task.impl.InboxActions.class).to(
        custom.hook.task.impl.CustomInboxActionsImpl.class);
    }
}

Enfin, le nom de la classe custom.hook.task.impl.Module doit être inséré dans la colonne ModuleClassName de la table de base de données ModuleClassName. Celui-ci peut être inséré en ajoutant une ligne supplémentaire au fichier ModuleClassName.DMX ou directement dans la table de base de données, si nécessaire.

Grâce à cette approche, lorsque l'application est redéployée, le système appellera la version personnalisée de la fonction getNextTask au lieu de l'implémentation par défaut.