코드

앞서 언급했듯이 할당 함수로 지정된 비즈니스 프로세스 오브젝트 메소드는 curam.util.workflow.struct.AllocationTargetList 유형의 구조를 리턴해야 합니다.

자동 활동과 연관된 비즈니스 메소드가 있는 경우 수동 활동을 실행할 때 할당 함수가 실패하면 워크플로우 오류 처리 전략이 호출됩니다. 이로 인해 실패한 메소드와 연관된 활동을 몇 번이고 재시도하게 될 수 있습니다. 이에 따라 복구할 수 없는 상황이 발생하지 않는 한 수동 또는 결정 활동의 할당 전략과 연관된 할당 함수는 일반적으로 예외 처리(throw)를 하지 않습니다.

애플리케이션은 애플리케이션에서 태스크를 할당하는 방법을 결정하기 위해 curam.util.workflow.impl.WorkResolver 콜백 인터페이스를 구현해야 합니다. 워크플로우 엔진은 이 특성을 사용하여 태스크에 할당할 수 있는 올바른 함수를 결정하기 때문에 애플리케이션 특성 curam.custom.workflow.workresolver는 애플리케이션의 curam.util.workflow.impl.WorkResolver 구현 클래스를 참조해야 합니다.

다양한 할당 전략 유형이 서로 다른 형식의 할당 대상을 리턴하기 때문에 curam.util.workflow.impl.WorkResolver 클래스에는 오버로드된 메소드 resolveWork가 포함되어 있습니다. 하지만 이것은 구현 세부사항으로, 모든 버전의 메소드에 대한 비즈니스 처리는 동일해야 하므로 사용자 정의 작업 분석기 클래스 개발자는 이 문제를 별도로 처리해서는 안 됩니다.

package curam.util.workflow.impl;
      
      ...
      
      public interface WorkResolver {
      
        void resolveWork(
          final TaskDetails taskDetails,
          final Object allocationTargets,
          final boolean previouslyAllocated);
      
        void resolveWork(
            final TaskDetails taskDetails,
            final Map allocationTargets,
            final boolean previouslyAllocated);
      
        void resolveWork(
            final TaskDetails taskDetails,
            final String allocationTargetID,
            final boolean previouslyAllocated);
            
            ...
      }

이 문제를 해결하기 위해 curam.core.sl.impl.DefaultWorkResolverAdapter에서는 작업 분석기를 구현하기 위한 보다 효율적인 메커니즘을 제공합니다. 이 클래스는 다른 메소드를 구현하고 입력 매개변수를 할당 대상 목록으로 변환하여 사용자 정의 작업 분석 로직 개발자가 이 클래스를 확장하여 할당 대상 소스와 관계없이 호출되는 메소드를 구현할 수 있도록 합니다.

package curam.core.sl.impl;
      
      ...
      
      public abstract class DefaultWorkResolverAdapter
        implements curam.util.workflow.impl.WorkResolver {
      
        public abstract void resolveWork(
          final TaskDetails taskDetails,
          final AllocationTargetList allocationTargets,
          final boolean previouslyAllocated);
            
            ...
      }

이 어댑터 클래스 외에 애플리케이션에는 기본 작업 분석기 구현이 제공됩니다. 이 클래스를 curam.core.sl.impl.DefaultWorkResolver라고 하며 어댑터 확장 방법에 대한 예로 사용되기도 합니다.