Beispiel #1
0
  private static void loadRuleFile() {
    try {

      ClassLoader classLoader = Steward.class.getClassLoader();

      PackageBuilderConfiguration configuration = new PackageBuilderConfiguration(classLoader);
      PackageBuilder builder = new PackageBuilder(configuration);

      Reader rulesFile = new InputStreamReader(Steward.class.getResourceAsStream("../Steward.drl"));

      builder.addPackageFromDrl(rulesFile);

      Reader ruleFlowFile1 =
          new InputStreamReader(Steward.class.getResourceAsStream("../ActionGeneration.rfm"));
      Reader ruleFlowFile2 =
          new InputStreamReader(Steward.class.getResourceAsStream("../ActionSelection.rfm"));

      builder.addRuleFlow(ruleFlowFile1);
      builder.addRuleFlow(ruleFlowFile2);

      if (builder.hasErrors()) {
        System.out.println(builder.getErrors().toString());
        throw new RuntimeException("Unable to compile rule file.");
      }

      RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration(classLoader);

      ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
      ruleBase.addPackage(builder.getPackage());

    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    }
  }
Beispiel #2
0
  @Test
  public void testDuplicateLocalVariableMVELConsequence() throws Exception {
    final PackageBuilder builder = new PackageBuilder();
    builder.addPackageFromDrl(
        new InputStreamReader(
            getClass().getResourceAsStream("test_DuplicateLocalVariableMVELConsequence.drl")));

    assertTrue(builder.hasErrors());
  }
  @Test
  public void testLogicalInsertionsWithModify() throws Exception {
    final PackageBuilder builder = new PackageBuilder();
    builder.addPackageFromDrl(
        new InputStreamReader(
            getClass().getResourceAsStream("test_LogicalInsertionsWithUpdate.drl")));
    if (builder.hasErrors()) {
      fail(builder.getErrors().toString());
    }
    final Package pkg = builder.getPackage();

    RuleBase ruleBase = getRuleBase();
    ruleBase.addPackage(pkg);
    ruleBase = SerializationHelper.serializeObject(ruleBase);
    StatefulSession workingMemory = ruleBase.newStatefulSession();

    List l;
    final Person p = new Person("person");
    p.setAge(2);
    FactHandle h = workingMemory.insert(p);
    assertEquals(1, IteratorToList.convert(workingMemory.iterateObjects()).size());

    workingMemory.fireAllRules();
    workingMemory = getSerialisedStatefulSession(workingMemory);
    assertEquals(2, IteratorToList.convert(workingMemory.iterateObjects()).size());

    l =
        IteratorToList.convert(
            workingMemory.iterateObjects(new ClassObjectFilter(CheeseEqual.class)));
    assertEquals(1, l.size());
    assertEquals(2, ((CheeseEqual) l.get(0)).getPrice());

    h = getFactHandle(h, workingMemory);
    workingMemory.retract(h);
    workingMemory = getSerialisedStatefulSession(workingMemory);
    assertEquals(0, IteratorToList.convert(workingMemory.iterateObjects()).size());

    TruthMaintenanceSystem tms =
        ((InternalWorkingMemory) workingMemory).getTruthMaintenanceSystem();

    final java.lang.reflect.Field field = tms.getClass().getDeclaredField("assertMap");
    field.setAccessible(true);
    final ObjectHashMap m = (ObjectHashMap) field.get(tms);
    field.setAccessible(false);
    assertEquals("assertMap should be empty", 0, m.size());
  }