getValue 계산 실행 전 세션에 대한 모든 규칙 오브젝트 작성

규칙 세트 테스트는 규칙 오브젝트에 대해 계산된 임의의 수의 값을 확인하기 전에 CER 세션에서 임의의 수의 규칙 오브젝트를 설정할 수 있습니다.

그러나 계산이 시작되고 나면 RecalculationsProhibited 전략상 이전에 계산된 readall 계산의 값을 무효화하는 규칙 오브젝트를 작성하지 못합니다.

임의의 계산을 수행하기 (즉, getValue 실행 전)에 모든 테스트 규칙 오브젝트를 작성하도록 테스트를 구성해야 합니다. 실제로는 지나치게 제한적이지 않습니다.

계산이 수행된 후 테스트에서 세션에 새 규칙 오브젝트를 작성하려고 시도하면 (미리 계산된 readall 계산이 영향을 받는 경우) RecalculationsProhibited 전략이 런타임 오류를 일으킵니다.

public void newObjectsAddedAfterCalculationsStarted() {

    final FlexibleRetirementYear flexibleRetirementYear =
        FlexibleRetirementYear_Factory.getFactory().newInstance(
            session);

    flexibleRetirementYear.retirementCause().specifyValue(
        "Reached statutory retirement age.");

    /**
     * 퇴직 연령을 계산하고 해당 값을 테스트합니다.
     */
    CREOLETestHelper.assertEquals(65, flexibleRetirementYear
        .ageAtRetirement().getValue());

    /**
     * 다른 규칙 오브젝트를 작성합니다.
     */

    /**
     * 작동하지 않을 수 있습니다. 계산이 시작된 후 세션에 추가된
     * 새 규칙 오브젝트는 이전 <code><readall></code>
     * 계산에서 무효화될 수 있습니다.
     *
     * {@linkplain RecalculationsProhibited}가 다음 메시지를
     * 보고할 수 있습니다. "이 세션이 이미 계산 요청을
     * 승인했으므로 이 세션에 대해 새 규칙 오브젝트를 작성할 수
     * 없습니다."
     *
     * 이 문제점을 방지하려면 계산을 수행하기 전에
     * 규칙 오브젝트를 모두 작성하십시오.
     */
    final FlexibleRetirementYear flexibleRetirementYear2 =
        FlexibleRetirementYear_Factory.getFactory().newInstance(
            session);

  }
경고: 규칙 세트에 현재 readall 표현식이 포함되지 않은 경우 계산 전에 모든 규칙 오브젝트가 작성되도록 테스트를 구성하지 않고 진행할 수 있습니다.

그러나 readall 표현식을 포함하도록 나중에 규칙 세트를 변경하는 경우 테스트를 다시 구성해야 합니다.

다시 작업하지 않으려면 계산이 시작하기 전에 모든 규칙 오브젝트 작성이 수행되도록 테스트를 항상 구성하십시오.