/** * Create a frame for a rete structure. * @param title The title for the frame. * @param rs The rule system. * @return The frame. */ public static JFrame createReteFrame(String title, RuleSystem rs, ISteppable steppable) { JFrame f = new JFrame(title); f.getContentPane().setLayout(new BorderLayout()); RulebasePanel rbp = new RulebasePanel(rs.getRulebase(), steppable); RetePanel rp = new RetePanel(rs, steppable, rbp); rp.showHiddenNodes(); f.add("West", rbp); f.add("Center", rp); f.pack(); f.setVisible(true); return f; } }
for(int i=0; i<rules.length; i++) INode node = root.getTerminalNode(system.getRulebase().getRule(rules[i])); subgraph.add(node); np.setNode(root.getTerminalNode(system.getRulebase().getRule(rules[0])));
/** * Create a rule engine panel. */ public RuleEnginePanel(final RuleSystem rulesystem, final ISteppable steppable) { this.oavpanel = new OAVPanel(rulesystem.getState()); this.rulebasepanel = new RulebasePanel(rulesystem.getRulebase(), steppable); this.retepanel = new RetePanel(rulesystem, steppable, rulebasepanel); JSplitPane sp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); sp1.setOneTouchExpandable(true); sp1.add(rulebasepanel); sp1.add(retepanel); sp1.setDividerLocation(150); this.addTab("Working Memory", icons.getIcon("show_state"), oavpanel); this.addTab("Rule Engine", icons.getIcon("show_rete"), sp1); this.setSelectedIndex(0); }
fncon.addConstraint(new BoundConstraint(null, fn)); fncon.addConstraint(new LiteralConstraint(fibo_has_value, Long.valueOf(-1))); rete.getRulebase().addRule(new Rule("recurse", fncon, new IAction() f1con.addConstraint(new LiteralConstraint(fibo_has_value, Long.valueOf(-1))); f1con.addConstraint(new LiteralConstraint(fibo_has_sequence, Integer.valueOf(1))); rete.getRulebase().addRule(new Rule("bootstrap1", f1con, new IAction() f2con.addConstraint(new LiteralConstraint(fibo_has_value, Long.valueOf(-1))); f2con.addConstraint(new LiteralConstraint(fibo_has_sequence, Integer.valueOf(2))); rete.getRulebase().addRule(new Rule("bootstrap2", f2con, new IAction() new Object[]{f1seq, new FunctionCall(new Sub(), new Object[]{f2seq, Integer.valueOf(1)})}))); rete.getRulebase().addRule(new Rule("calc", new AndCondition(new ICondition[]{f00con, f11con, f22con}), new IAction()
system.getRulebase().addRule(rule);