사용자 정의 기능 구현

인터페이스 사용자 정의 기능

등록된 인터페이스를 활용하여 사용자가 직접 정의한 기능을 추가할 수 있습니다.

  1. JDK 8 기반의 프로젝트를 생성합니다. (※ 본 안내서는 Gradle 프로젝트를 사용)

    Gradle 프로젝트 구성
    .
    |-- build.gradle
    |-- src/main/java/com/tmax/eims/action
        |-- CustomActionImpl.java
  2. build.gradle 파일에 AnyEIMS 설치 파일에 포함된 'AnyEIMS-custom-action-<버전명>.jar’와 'AnyEIMS-export-model-<버전명>.jar' 파일의 의존성을 추가합니다.

    dependencies {
        implementation files('libs/AnyEIMS-custom-action-<버전명>.jar')
        implementation files('libs/AnyEIMS-export-model-<버전명>.jar')
    }
  3. CustomActionImpl.java 파일에 'com.tmax.anyeims.external.action.CustomAction' 클래스를 상속받는 클래스를 생성하고, 해당 클래스에서 모든 추상 메서드를 구현합니다.

    public abstract CustomActionResult process(CustomActionParameter parameter, OutputStream outputStream) throws IOException;  ....(1)
    public boolean isFileOut()  ....(2)
    추상 메서드 설명

    (1)

    사용자 정의 기능을 실행하는 메서드입니다.

    • parameter: 기능 이름, 인터페이스 전문 등의 정보를 포함합니다.

    • outputStream: 파일을 반환할 경우 해당 파일의 내용을 작성합니다.

    (2)

    파일을 반환할지 여부를 판단하는 메서드입니다.

    • true: 파일을 반환합니다. (기본값)

    • false: 파일을 반환하지 않습니다.

    CustomActionParameter는 CustomAction이 호출될 때 전달되는 파라미터 객체로 다음과 같은 변수를 포함합니다.

    변수 타입 설명

    actionName

    String

    기능의 이름입니다.

    사용자 정의 기능을 구현한 클래스의 getName 메서드와 비교되어 해당 기능을 식별하는 데 사용됩니다.

    interfaceDefinition

    InterfaceDefinition

    인터페이스를 정의하는 객체입니다.

    기존에 구현하던 어댑터에서 사용하던 인터페이스 객체와 동일한 객체입니다.

    messageDefinitions

    Map<Long, MessageDefinition>

    메시지 정의 정보를 저장하는 맵입니다.

    인터페이스 내에서 사용된 메시지 정보를 포함하며, 기존 어댑터에서 사용하던 메시지 객체와 동일한 객체입니다.

    additionalParameter

    List<String>

    사용자 정의 추가 파라미터입니다. 필요에 따라 파라미터를 더 추가할 수 있습니다.

  4. 프로젝트를 JAR 파일로 빌드합니다.

  5. AnyEIMS 백엔드 서버의 'libs' 디렉터리에 빌드한 JAR 파일을 추가합니다.

  6. application-extensions.yml 파일에 다음과 같이 내용을 추가합니다.

    eims:
        custom-action:
            activate: true
            actions:
                - class-name: {Class-Name}
                  action-name: {Action-Name}
    속성 설명

    class-name

    사용자가 정의한 클래스의 전체 패키지 이름을 입력합니다.

    action-name

    인터페이스 상세 화면의 [사용자 정의] 버튼 하위에 표시될 버튼 이름을 입력합니다. 해당 버튼을 클릭하면 지정된 클래스의 동작이 수행됩니다.

    class-name과 action-name 조합을 여러 개 추가할 수 있습니다.

  7. 백엔드 서버를 재기동합니다.

결재 알림 기능

특정 결재 승인자에게 새로운 배포 결재 문서가 할당될 때 사용자가 정의한 알림이 발생하도록 기능을 추가할 수 있습니다.

  1. JDK 8 기반의 프로젝트를 생성합니다. (※ 본 안내서는 Gradle 프로젝트를 사용)

    Gradle 프로젝트 구성
    .
    |-- build.gradle
    |-- src/main/java/com/tmax/anyeims/external/notification/deployment/impl
        |-- CustomDeploymentApprovalNotificationHandlerImpl.java
  2. build.gradle 파일에 AnyEIMS 설치 파일에 포함된 'AnyEIMS-custom-notification-<버전>.jar' 파일의 의존성을 추가합니다.

    dependencies {
        implementation files('libs/AnyEIMS-custom-notification-<버전>.jar')
    }
  3. CustomDeploymentApprovalNotificationHandlerImpl.java 파일에 사용자 정의 클래스를 생성하고, 해당 클래스에서 'com.tmax.anyeims.external.notification.deployment.approval.CustomDeploymentApprovalNotificationHandler’를 구현합니다.

    package com.tmax.anyeims.external.notification.deployment.impl;
    
    import com.tmax.anyeims.external.notification.deployment.approval.CustomDeploymentApprovalNotification;
    import com.tmax.anyeims.external.notification.deployment.approval.CustomDeploymentApprovalNotificationHandler;
    
    public class CustomDeploymentApprovalNotificationHandlerImpl implements CustomDeploymentApprovalNotificationHandler {
        @Override
        public void handle(CustomDeploymentApprovalNotification deploymentNotification) {
            // TODO: impl
            /* 사용 가능한 메서드:
                    public String deploymentNotification.getApprovalTitle();
                    public String deploymentNotification.getApprovalContent();
                    public String deploymentNotification.getInterfaceId();
                    public Long deploymentNotification.getInterfaceResourceId();
                    public Integer deploymentNotification.getInterfaceVersion();
                    public Long deploymentNotification.getReceiverResourceId();
                    public String deploymentNotification.getReceiverId();
                    public String deploymentNotification.getReceiverName();
                    public String deploymentNotification.getReceiverPhoneNumber();
                    public String deploymentNotification.getReceiverContactNumber();
            */
        }
    }

    다음은 CustomDeploymentApprovalNotification 클래스의 각 메서드에 대한 설명입니다.

    메서드 설명

    getApprovalTitle

    배포 결재 문서의 제목을 반환합니다.

    getApprovalContent

    배포 결재 문서의 내용을 반환합니다.

    getInterfaceId

    배포하는 인터페이스의 ID를 반환합니다.

    getInterfaceResourceId

    배포하는 인터페이스의 기본 키(Primary Key)를 반환합니다.

    getInterfaceVersion

    배포하는 인터페이스의 버전을 반환합니다.

    getReceiverResourceId

    알림을 받는 결재 승인자의 기본 키(Primary Key)를 반환합니다.

    getReceiverId

    알림을 받는 결재 승인자의 계정 ID를 반환합니다.

    getReceiverName

    알림을 받는 결재 승인자의 이름을 반환합니다.

    getReceiverPhoneNumber

    알림을 받는 결재 승인자의 휴대폰 번호를 반환합니다.

    getReceiverContactNumber

    알림을 받는 결재 승인자의 연락처를 반환합니다.

  4. 프로젝트를 JAR 파일로 빌드합니다.

  5. AnyEIMS 백엔드 서버의 'libs' 디렉터리에 빌드한 JAR 파일을 추가합니다.

  6. application-extensions.yml 파일에 다음과 같이 내용을 추가합니다.

    eims:
        custom-notification:
            deployment:
                approval:
                    class-name: {Class-Name}
    속성 설명

    class-name

    사용자가 정의한 클래스의 전체 패키지 이름을 입력합니다.

  7. 백엔드 서버를 재기동합니다.