rule "Golfers problem"
dialect "mvel"
when # Define Fred $fred : Row ( externalSource == true, column["name"] == "Fred" ) # Define Joe $joe : Row ( externalSource == true, column["name"] == "Joe", column["position"] == 2, column["position"] != $fred.column["position"], column["color"] != $fred.column["color"] )
# Define Bob $bob : Row ( externalSource == true, column["name"] == "Bob", column["position"] != $fred.column["position"], column["position"] != $joe.column["position"], column["color"] == "plaid", column["color"] != $fred.column["color"], column["color"] != $joe.column["color"] ) # Define Tom $tom : Row ( externalSource == true, column["name"] == "Tom", column["position"] != 1, column["position"] != 4, column["position"] != $fred.column["position"], column["position"] != $joe.column["position"], column["position"] != $bob.column["position"], column["color"] != "orange", column["color"] != $fred.column["color"], column["color"] != $joe.column["color"], column["color"] != $bob.column["color"] ) # Define Unknown $unknown : Row ( externalSource == true, column["position"] == ($fred.column["position"] + 1), column["color"] == "blue", this in ( $joe, $bob, $tom) )
then
Row fredRow = new Row();
Row joeRow = new Row();
Row bobRow = new Row();
Row tomRow = new Row(); fredRow.addColumn("name", "Fred"); fredRow.addColumn("position", $fred.column["position"]); fredRow.addColumn("color", $fred.column["color"]); joeRow.addColumn("name", "Joe"); joeRow.addColumn("position", $joe.column["position"]); joeRow.addColumn("color", $joe.column["color"]); bobRow.addColumn("name", "Bob"); bobRow.addColumn("position", $bob.column["position"]); bobRow.addColumn("color", $bob.column["color"]); tomRow.addColumn("name", "Tom"); tomRow.addColumn("position", $tom.column["position"]); tomRow.addColumn("color", $tom.column["color"]);
insert(fredRow);
insert(joeRow);
insert(bobRow);
insert(tomRow);
end
Sample: rules-golfer.ktr
Overview
...