기본 구현 사용자 정의

curam.core.hook.task.impl.InboxActions 인터페이스의 getNextTask 함수에 대한 시그니처는 다음과 같습니다.

package curam.core.hook.task.impl;  

@ImplementedBy(InboxActionsImpl.class)
public interface InboxActions {

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

curam.core.hook.task.impl.InboxActionsImpl 클래스에는 함수의 기본 구현이 지정되어 있습니다.

package curam.core.hook.task.impl;  

public class InboxActionsImpl implements InboxActions {

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

  . 
  .
  .
  .
}

getNextTask를 사용자 정의하려면 기본 curam.core.hook.task.impl.InboxActionsImpl 구현 클래스를 확장하도록 이전에 작성한 새 사용자 정의 클래스에서 메소드를 구현해야 합니다.

package custom.hook.task.impl;  

public class CustomInboxActionsImpl extends InboxActionsImpl {

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

애플리케이션이 기본 구현이 아닌 새 사용자 정의 클래스를 실행하도록 하려면 com.google.inject.AbstractModule을 확장하는 새 클래스 custom.hook.task.impl.Module.java를 다음 예에서처럼 구현된 configure 메소드로 작성해야 합니다.

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

마지막으로 custom.hook.task.impl.Module 클래스 이름은 ModuleClassName 데이터베이스 테이블의 ModuleClassName 열에 삽입해야 합니다. 이 경우 ModuleClassName.DMX 파일에 행을 추가하거나 필요한 경우 데이터베이스 테이블에 직접 추가하여 열을 삽입할 수 있습니다.

이러한 방식으로 애플리케이션을 재배치할 경우 시스템은 기본 구현이 아니라 사용자 정의 버전의 getNextTask 함수를 호출합니다.