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 함수를 호출합니다.