Exemplo n.º 1
0
 private void addImports(PMML pmml, Package aPackage) {
   String importsFromDelimitedString =
       ScorecardPMMLUtils.getExtensionValue(
           pmml.getHeader().getExtensions(), PMMLExtensionNames.SCORECARD_IMPORTS);
   if (!(importsFromDelimitedString == null || importsFromDelimitedString.isEmpty())) {
     for (String importStatement : importsFromDelimitedString.split(",")) {
       Import imp = new Import();
       imp.setClassName(importStatement);
       aPackage.addImport(imp);
     }
   }
   Import defaultScorecardImport = new Import();
   defaultScorecardImport.setClassName("org.drools.scorecards.DroolsScorecard");
   aPackage.addImport(defaultScorecardImport);
   defaultScorecardImport = new Import();
   defaultScorecardImport.setClassName("org.drools.scorecards.PartialScore");
   aPackage.addImport(defaultScorecardImport);
   defaultScorecardImport = new Import();
   defaultScorecardImport.setClassName("org.drools.scorecards.InitialScore");
   aPackage.addImport(defaultScorecardImport);
   defaultScorecardImport = new Import();
   defaultScorecardImport.setClassName("org.drools.scorecards.BaselineScore");
   aPackage.addImport(defaultScorecardImport);
 }
Exemplo n.º 2
0
  private Package buildRuleSet() {
    final String defaultPackageName = "rule_table";
    final String rulesetName = getProperties().getSingleProperty(RULESET_TAG, defaultPackageName);

    final Package ruleset = new Package((showPackage) ? rulesetName : null);
    for (Rule rule : this._ruleList) {
      ruleset.addRule(rule);
    }

    final List<Import> importList =
        RuleSheetParserUtil.getImportList(getProperties().getProperty(IMPORT_TAG));
    for (Import import1 : importList) {
      ruleset.addImport(import1);
    }

    final List<Global> variableList =
        RuleSheetParserUtil.getVariableList(getProperties().getProperty(VARIABLES_TAG));
    for (Global global : variableList) {
      ruleset.addVariable(global);
    }

    final List<String> functions = getProperties().getProperty(FUNCTIONS_TAG);
    if (functions != null) {
      for (String function : functions) {
        ruleset.addFunctions(function);
      }
    }

    final List<String> queries = getProperties().getProperty(QUERIES_TAG);
    if (queries != null) {
      for (String query : queries) {
        ruleset.addQueries(query);
      }
    }

    final List<String> declarations = getProperties().getProperty(DECLARES_TAG);
    if (declarations != null) {
      for (String declaration : declarations) {
        ruleset.addDeclaredType(declaration);
      }
    }

    for (Code code : ActionType.ATTRIBUTE_CODE_SET) {
      List<String> values = getProperties().getProperty(code.getColHeader());
      if (values != null) {
        if (values.size() > 1) {
          List<String> cells = getProperties().getPropertyCells(code.getColHeader());
          throw new DecisionTableParseException(
              "Multiple values for " + code.getColHeader() + " in cells " + cells.toString());
        }
        String value = values.get(0);
        switch (code) {
          case SALIENCE:
            try {
              ruleset.setSalience(new Integer(value));
            } catch (NumberFormatException nfe) {
              throw new DecisionTableParseException(
                  "Priority is not an integer literal, in cell "
                      + getProperties().getSinglePropertyCell(code.getColHeader()));
            }
            break;
          case DURATION:
            try {
              ruleset.setDuration(new Long(value));
            } catch (NumberFormatException nfe) {
              throw new DecisionTableParseException(
                  "Duration is not an integer literal, in cell "
                      + getProperties().getSinglePropertyCell(code.getColHeader()));
            }
            break;
          case TIMER:
            ruleset.setTimer(value);
            break;
          case ENABLED:
            ruleset.setEnabled(RuleSheetParserUtil.isStringMeaningTrue(value));
            break;
          case CALENDARS:
            ruleset.setCalendars(value);
            break;
          case NOLOOP:
            ruleset.setNoLoop(RuleSheetParserUtil.isStringMeaningTrue(value));
            break;
          case LOCKONACTIVE:
            ruleset.setLockOnActive(RuleSheetParserUtil.isStringMeaningTrue(value));
            break;
          case AUTOFOCUS:
            ruleset.setAutoFocus(RuleSheetParserUtil.isStringMeaningTrue(value));
            break;
          case ACTIVATIONGROUP:
            ruleset.setActivationGroup(value);
            break;
          case AGENDAGROUP:
            ruleset.setAgendaGroup(value);
            break;
          case RULEFLOWGROUP:
            ruleset.setRuleFlowGroup(value);
            break;
          case DATEEFFECTIVE:
            ruleset.setDateEffective(value);
            break;
          case DATEEXPIRES:
            ruleset.setDateExpires(value);
            break;
        }
      }
    }

    return ruleset;
  }