private void assertRuleExport(RuleBaseValues oldRule, RuleBaseValues newRule) {
    assertFalse("Ids should be different.", oldRule.getId().equals(newRule.getId()));
    assertEquals(oldRule.isActive(), newRule.isActive());
    assertEquals(
        DateUtils.round(oldRule.getActivationDate(), Calendar.DATE),
        DateUtils.round(newRule.getActivationDate(), Calendar.DATE));
    assertEquals(oldRule.getName(), newRule.getName());
    assertEquals(oldRule.getCurrentInd(), newRule.getCurrentInd());
    assertEquals(oldRule.getDeactivationDate(), newRule.getDeactivationDate());
    assertEquals(oldRule.getDelegateRule(), newRule.getDelegateRule());
    assertEquals(oldRule.getDescription(), newRule.getDescription());
    assertEquals(oldRule.getDocTypeName(), newRule.getDocTypeName());

    if (oldRule.getFromDateValue() == null) {
      assertNull(newRule.getFromDateValue());
    } else {
      assertEquals(
          DateUtils.round(oldRule.getFromDateValue(), Calendar.DATE),
          DateUtils.round(newRule.getFromDateValue(), Calendar.DATE));
    }
    if (oldRule.getToDateValue() == null) {
      assertNull(newRule.getToDateValue());
    } else {
      assertEquals(
          DateUtils.round(oldRule.getToDateValue(), Calendar.DATE),
          DateUtils.round(newRule.getToDateValue(), Calendar.DATE));
    }
    assertEquals(oldRule.getFromDateString(), newRule.getFromDateString());
    assertEquals(oldRule.getToDateString(), newRule.getToDateString());

    assertEquals(oldRule.isForceAction(), newRule.isForceAction());

    if (!oldRule.getDelegateRule().booleanValue())
      assertEquals(oldRule.getPreviousVersionId(), newRule.getPreviousVersionId());

    assertEquals(oldRule.getDocumentId(), newRule.getDocumentId());

    if (oldRule.getRuleTemplate() == null) {
      assertNull(newRule.getRuleTemplate());
    } else {
      assertEquals(oldRule.getRuleTemplate().getName(), newRule.getRuleTemplate().getName());
    }
    if (oldRule.getRuleExpressionDef() == null) {
      assertNull(newRule.getRuleExpressionDef());
    } else {
      assertEquals(
          oldRule.getRuleExpressionDef().getExpression(),
          newRule.getRuleExpressionDef().getExpression());
      assertEquals(
          oldRule.getRuleExpressionDef().getType(), newRule.getRuleExpressionDef().getType());
    }
    if (!oldRule.getDelegateRule().booleanValue())
      assertEquals(oldRule.getVersionNbr(), newRule.getVersionNbr());

    assertRuleExtensions(oldRule.getRuleExtensions(), newRule.getRuleExtensions());
    assertResponsibilities(oldRule.getRuleResponsibilities(), newRule.getRuleResponsibilities());
  }
 private void exportDefaults(Element parent, RuleTemplateBo ruleTemplate) {
   RuleBaseValues defaultRuleValues =
       KEWServiceLocator.getRuleService().findDefaultRuleByRuleTemplateId(ruleTemplate.getId());
   if (defaultRuleValues != null) {
     RuleDelegationBo defaultDelegationValues = getDefaultDelegationValues(defaultRuleValues);
     Element defaultsElement = renderer.renderElement(parent, RULE_DEFAULTS);
     if (defaultDelegationValues != null) {
       renderer.renderTextElement(
           defaultsElement,
           DELEGATION_TYPE,
           defaultDelegationValues.getDelegationType().getCode());
     }
     renderer.renderTextElement(defaultsElement, DESCRIPTION, defaultRuleValues.getDescription());
     if (defaultRuleValues.getFromDateValue() != null) {
       renderer.renderDateElement(
           defaultsElement, FROM_DATE, defaultRuleValues.getFromDateValue());
     }
     if (defaultRuleValues.getToDateValue() != null) {
       renderer.renderDateElement(defaultsElement, TO_DATE, defaultRuleValues.getToDateValue());
     }
     renderer.renderBooleanElement(
         defaultsElement, FORCE_ACTION, defaultRuleValues.isForceAction(), false);
     renderer.renderBooleanElement(defaultsElement, ACTIVE, defaultRuleValues.isActive(), true);
     if (defaultDelegationValues == null) {
       RuleTemplateOptionBo defaultActionOption = ruleTemplate.getDefaultActionRequestValue();
       RuleTemplateOptionBo supportsComplete = ruleTemplate.getComplete();
       RuleTemplateOptionBo supportsApprove = ruleTemplate.getApprove();
       RuleTemplateOptionBo supportsAck = ruleTemplate.getAcknowledge();
       RuleTemplateOptionBo supportsFYI = ruleTemplate.getFyi();
       if (defaultActionOption != null) {
         String defaultActionValue =
             (defaultActionOption == null ? null : defaultActionOption.getValue());
         renderer.renderTextElement(defaultsElement, DEFAULT_ACTION_REQUESTED, defaultActionValue);
       }
       if (supportsComplete != null) {
         String supportsCompleteValue = supportsComplete.getValue();
         renderer.renderTextElement(defaultsElement, SUPPORTS_COMPLETE, supportsCompleteValue);
       }
       if (supportsApprove != null) {
         String supportsApproveValue = supportsApprove.getValue();
         renderer.renderTextElement(defaultsElement, SUPPORTS_APPROVE, supportsApproveValue);
       }
       if (supportsAck != null) {
         String supportsAckValue = supportsAck.getValue();
         renderer.renderTextElement(defaultsElement, SUPPORTS_ACKNOWLEDGE, supportsAckValue);
       }
       if (supportsFYI != null) {
         String supportsFYIValue = supportsFYI.getValue();
         renderer.renderTextElement(defaultsElement, SUPPORTS_FYI, supportsFYIValue);
       }
     }
   }
 }