Anpassen der Standardimplementierung

Die Signatur der Funktion getNextTask in der Schnittstelle curam.core.hook.task.impl.InboxActions lautet folgendermaßen:

package curam.core.hook.task.impl;  

@ImplementedBy(InboxActionsImpl.class)
public interface InboxActions {

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

Die Standardimplementierung für die Funktion ist in der Klasse curam.core.hook.task.impl.InboxActionsImpl angegeben.

package curam.core.hook.task.impl;  

public class InboxActionsImpl implements InboxActions {

  public long getNextTask(String userName) { 
    // Default implementation code is here....
  }

  . 
  .
  .
  .
}

Um die Funktion getNextTask anzupassen, muss die Methode in der neuen, zuvor erstellten benutzerdefinierten Klasse implementiert werden, die die Standardimplementierungsklasse curam.core.hook.task.impl.InboxActionsImpl erweitert.

package custom.hook.task.impl;  

public class CustomInboxActionsImpl extends InboxActionsImpl {

  public long getNextTask(final String userName) { 
    // Custom implementation code goes here
  }
  
}

Um sicherzustellen, dass die Anwendung die neue benutzerdefinierte Klasse (und nicht die Standardimplementierung) ausführt, muss eine neue Klasse custom.hook.task.impl.Module.java als Erweiterung von com.google.inject.AbstractModule mit der implementierten Methode configure geschrieben werden, wie das folgende Beispiel zeigt:

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);
    }
}

Abschließend muss der Klassenname custom.hook.task.impl.Module in die Spalte ModuleClassName der Datenbanktabelle ModuleClassName eingefügt werden. Dies kann durch das Hinzufügen einer zusätzlichen Zeile in der Datei ModuleClassName.DMX oder bei Bedarf auch direkt in die Datenbanktabelle erfolgen.

Bei Verwendung dieses Ansatzes ruft das System bei der erneuten Bereitstellung der Anwendung die angepasste Version der Funktion getNextTask (und nicht die Standardimplementierung) auf.