ruleset ruleset1{ } rule startSort{ when{ ?c:sort.Control(?Id:id;?Id==InitTask); } then { modify ?c{id = SortTask;} } } rule startDisplay{ when{ ?c:sort.Control(?Id:id;?Id==SortTask); } then { modify ?c{id = DisplayTask;} } } rule switchPosition{ when{ ?c:sort.Control(?Id:id;?Id== SortTask ); ?first:sort.Element(?p1:position;?v1:value); ?second:sort.Element(?v2:value;?p2:position;?v2>?first.value;?p2?e1.value;?p2==?e1.position); } then { modify ?e2{position = ?e1.position+1;} } } rule displayElement{ when{ ?c:sort.Control(?Id:id;?Id==DisplayTask); ?e:sort.Element(); } then { bind ?v=?e.value; bind ?p=?e.position; System.out.println(("value" + ?v + "is at position" + ?p)); } }