의사결정 엔진

의사결정 엔진은 규칙 세트의 실행 성능을 최적화하도록 디자인되었습니다. 의사결정 엔진은 규칙의 컴파일과 로딩에는 차이가 있더라도 일반 규칙 엔진과 유사한 방식으로 작업합니다.

Decision Center에서 사용으로 설정되어 있는 XOM이 포함된 의사결정 서비스가 배치되기 전에 규칙은 기본적으로 실행 코드(Java™ 바이트 코드)로 컴파일됩니다. 일반 규칙 프로젝트 또는 XOM이 사용으로 설정되어 있지 않은 의사결정 서비스의 경우에는 Decision Center가 런타임 시 실행 코드로 최종 변환되기만 하면 되는 중간 코드로 규칙을 컴파일합니다.

Rule Designer는 기본적으로 규칙을 실행 가능 코드로 컴파일합니다. 규칙을 중간 코드로 컴파일하려면 규칙 세트 아카이브 내보내기 페이지에서 규칙 세트 로드 최적화(Java 바이트 코드 생성) 옵션을 선택 취소하십시오.

구현하는 데 차이가 있지만 의사결정 엔진에 대부분의 일반 규칙 엔진 기능이 있으며 두 엔진 모두에서 단축 경로, 순차 또는 RetePlus 실행 모드를 선택할 수 있습니다. 작업 메모리 및 아젠다 기능을 사용하면 애플리케이션 오브젝트를 저장하고 조작할 수 있습니다. 작업 메모리는 애플리케이션 오브젝트에 대한 참조를 포함합니다. 아젠다는 실행에 적합한 규칙 인스턴스를 나열하고 순서를 지정합니다.

의사결정 엔진으로 규칙 실행을 위한 워크플로우

의사결정 엔진으로 규칙을 실행하려면 다음 단계를 수행하십시오.

  1. 규칙 프로젝트를 작성하여 레거시 애플리케이션의 비즈니스 로직을 캡슐화하십시오.

    레거시 애플리케이션이 COBOL을 기반으로 하면 Rule Designer에서 COBOL 관리 기능을 사용하십시오. 자세한 정보는 COBOL 모델에 대한 BOM 디자인을 참조하십시오.

  2. 필요한 경우 규칙 프로젝트의 규칙 엔진 특성을 일반 규칙 엔진 대신 의사결정 엔진으로 변경하십시오. 규칙 프로젝트에 IRL(ILOG® Rule Language)에서의 BOM에서 XOM으로의 맵핑이 포함된 경우 ARL(Advanced Rule Language)에서의 BOM에서 XOM으로의 맵핑으로 마이그레이션됩니다. 마이그레이션은 한 번만 실행됩니다. 자세한 정보는 BOM에서 XOM으로의 맵핑 마이그레이션의 내용을 참조하십시오.
  3. Rule Designer에서 규칙의 실행을 테스트하십시오. 자세한 정보는 Java 애플리케이션으로 실행 테스트(더 이상 사용되지 않음) 일반 규칙 프로젝트 실행 및 디버그를 참조하십시오.
  4. 분산 플랫폼용 Rule Execution Server, z/OS®용 WebSphere® Application ServerRule Execution Server 또는 zRule Execution Server for z/OS의 지속성 계층에 규칙 세트를 배치하십시오. 자세한 정보는 비즈니스 규칙 배치를 참조하십시오.
  5. 규칙 세트를 호출하십시오.

    Rule Execution Server에서 규칙을 실행하려면 규칙 세트 호출 API는 일반 규칙 엔진과 의사결정 엔진에서 동일합니다. 규칙 세트에 정의된 규칙 엔진 특성은 규칙을 실행하는 엔진을 결정합니다.

BOM에서 XOM으로의 맵핑 마이그레이션

BOM에서 XOM으로의 맵핑 마이그레이션은 규칙 프로젝트의 규칙 엔진 특성을 일반 규칙 엔진 대신 의사결정 엔진으로 처음 변경할 때 수행됩니다.

마이그레이션은 IRL에서의 원래 BOM에서 XOM으로의 맵핑(.b2x 파일)을 수정하지 않지만 마이그레이션된 코드를 저장할 새 파일(.b2xa)을 작성합니다. 그러면 사용자가 엔진을 서로 전환할 수 있습니다.

한 번 작성되면 각 파일이 특정 엔진에 대해 변경된 사항을 별도로 보유하지만 두 개의 파일 간에 변경사항이 동기화되지는 않습니다.일반 규칙 엔진으로 전환하고 BOM에서 XOM으로의 맵핑을 수정하면 .b2x 파일이 수정됩니다. 의사결정 엔진으로 다시 전환해도 BOM에서 XOM으로의 맵핑이 수정되지 않습니다. .b2xa 파일도 변경되지 않습니다.

일부 IRL 명령문은 마이그레이션될 수 없으므로 마이그레이션된 코드에 본문이 없는 메소드가 포함되어 있을 수 있습니다. .b2xa 파일에서 이러한 누락 행을 ARL로 코딩해야 합니다.

컴파일과 실행

의사결정 엔진은 Java 바이트 코드로 변환될 때 실행 가능하게 되는 컴파일 및 최적화된 코드를 포함하는 아카이브로 규칙 아티팩트를 컴파일합니다.

이에 비해, 일반 규칙 엔진으로 빌드되는 규칙 세트에는 컴파일 및 최적화 전에 구문을 분석해야 하는 텍스트 파일 세트가 포함됩니다. 규칙 세트를 로드할 때 코드를 구문 분석하고 컴파일 및 최적화하는 것은 부담이 큰 태스크입니다.

따라서 의사결정 엔진에서 규칙 세트를 로드하는 것이 런타임 시 코드를 구문 분석하거나 해석하지 않으므로 더 빠릅니다. 모든 코드가 이미 컴파일되어 있고(중간 코드 또는 Java 바이트 코드로) 규칙 실행을 위해 완전하게 최적화되어 있습니다.

다음 그림은 일반 규칙 엔진과 의사결정 엔진(Java 바이트 코드 생성이 포함되는 경우 및 포함되지 않는 경우)의 컴파일 및 실행 프로세스를 보여줍니다. 이러한 프로세스는 규칙의 초기 컴파일에서 규칙의 실행까지 여러 단계를 통해 진행됩니다.

일반 규칙 엔진과 의사결정 엔진의 비교
중요사항: 바이트 코드 생성은 의사결정 엔진으로 빌드된 규칙 세트의 로딩 시간을 개선시킵니다. Rule DesignerDecision Center에서는 바이트 코드 생성 옵션이 기본적으로 선택됩니다. 그러나 Decision Center의 경우에는 XOM 관리를 사용으로 설정해야 바이트 코드 생성을 활성화할 수 잇습니다. Rule Execution Server에서는 중간 코드에서 Java 바이트 코드로의 변환을 최적화하는 방법이 있습니다. 컴파일된 아카이브 캐시를 사용하여 이 바이트 코드 생성을 의사결정 엔진 규칙 세트가 처음 로드될 때로만 제한할 수 있습니다. 자세한 정보는 컴파일된 아카이브 캐시 설정을 참조하십시오.

다음 표에서는 일반 규칙 엔진과 의사결정 엔진 사이의 차이를 비교합니다.

표 1. 규칙 엔진 사이의 차이
일반 규칙 엔진 의사결정 엔진
규칙은 규칙의 하위 레벨 텍스트 표시인 IRL로 변환됩니다. 엔진의 이러한 구현은 IRL에 의존하지 않습니다. 대신 BAL 규칙이 ARL(Advanced Rule Language)로 변환됩니다. Rule Designer에서, BAL 규칙 및 의사결정 테이블에 대한 ARL 탭은 규칙 컴파일의 미리보기를 제공합니다.

BOM 편집기에서 ARL을 사용하여 직접 의사결정 엔진에 대해 디자인된 규칙 프로젝트의 BOM에서 XOM으로의 맵핑을 정의할 수 있습니다.

또한 코드형 규칙, 규칙 플로우 조치 태스크 및 기능에서는 일반 규칙 엔진에서와 같이 IRL을 계속 사용할 수 있습니다.

Doubles는 다음 명령문을 사용하여 BigDecimal 오브젝트로 변환됩니다. new java.math.BigDecimal(java.lang.Double.toString(java.lang.Math.exp(value.doubleValue()))); Doubles는 다음 명령문을 사용하여 BigDecimal 오브젝트로 변환됩니다. scoreResponse.cpScore = new java.math.BigDecimal(Math.exp(value.doubleValue()));
일반 규칙 엔진은 다양한 방식으로 규칙 아티팩트를 처리합니다.
  • 규칙 플로우와 RetePlus 규칙 조치가 해석됩니다.
  • useJit 특성을 사용하는 RetePlus 규칙 조건이 바이트 코드에 컴파일됩니다.
  • 순차와 단축 경로 알고리즘을 사용하는 규칙이 바이트 코드에 컴파일됩니다.
규칙 및 규칙 플로우가 배치 전에 중간 코드 또는 Java 바이트 코드로 완전히 컴파일됩니다.
규칙 세트 아카이브 .jar 파일에 IRL 텍스트 파일의 규칙이 포함됩니다. 규칙 세트 아카이브 .dsar 파일이 규칙 및 규칙 플로우의 실행 코드가 포함된 2진 파일로 구성됩니다.