ools-benchmark.6.0.0.Beta2.source-code.manners.drl Maven / Gradle / Ivy
/*
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.drools.benchmark.model.manners.*
rule assignFirstSeat
when
context : Context( state == Context.START_UP )
guest : Guest()
count : Count()
then
String guestName = guest.getName();
Seating seating = new Seating( count.getValue(), 1, true, 1, guestName, 1, guestName);
insert( seating );
Path path = new Path( count.getValue(), 1, guestName );
insert( path );
modify( count ) { setValue ( count.getValue() + 1 ) }
System.out.println( "assign first seat : " + seating + " : " + path );
modify( context ) {
setState( Context.ASSIGN_SEATS )
}
end
rule findSeating
when
context : Context( state == Context.ASSIGN_SEATS )
$s : Seating( pathDone == true )
$g1 : Guest( name == $s.rightGuestName )
$g2 : Guest( sex != $g1.sex, hobby == $g1.hobby )
count : Count()
not ( Path( id == $s.id, guestName == $g2.name) )
not ( Chosen( id == $s.id, guestName == $g2.name, hobby == $g1.hobby) )
then
int rightSeat = $s.getRightSeat();
int seatId = $s.getId();
int countValue = count.getValue();
Seating seating = new Seating( countValue, seatId, false, rightSeat, $s.getRightGuestName(), rightSeat + 1, $g2.getName() );
insert( seating );
Path path = new Path( countValue, rightSeat + 1, $g2.getName() );
insert( path );
Chosen chosen = new Chosen( seatId, $g2.getName(), $g1.getHobby() );
insert( chosen );
//System.err.println( "find seating : " + seating + " : " + path + " : " + chosen);
modify( count ) {setValue( countValue + 1 )}
modify( context ) {setState( Context.MAKE_PATH )}
end
rule pathDone
when
context : Context( state == Context.MAKE_PATH )
seating : Seating( pathDone == false )
then
//System.out.println("fire rule pathDone");
modify( seating ) {setPathDone( true )}
modify( context ) {setState( Context.CHECK_DONE)}
end
rule makePath
when
Context( state == Context.MAKE_PATH )
Seating( seatingId:id, seatingPid:pid, pathDone == false )
Path( id == seatingPid, pathGuestName:guestName, pathSeat:seat )
not Path( id == seatingId, guestName == pathGuestName )
then
//System.out.println("fire rule makePath");
insert( new Path( seatingId, pathSeat, pathGuestName ) );
end
rule continue
when
context : Context( state == Context.CHECK_DONE )
then
//System.out.println("fire rule continue");
modify( context ) {setState( Context.ASSIGN_SEATS )}
end
rule areWeDone
when
context : Context( state == Context.CHECK_DONE )
LastSeat( lastSeat: seat )
Seating( rightSeat == lastSeat )
then
//System.out.println("fire rule areWeDone");
modify( context ) {setState(Context.PRINT_RESULTS )}
end
rule allDone
when
context : Context( state == Context.PRINT_RESULTS )
then
//System.out.println("fire rule allDone");
System.out.println( "All Done" );
end
//query getResults
// context : Context( state == Context.PRINT_RESULTS )
//end
© 2015 - 2025 Weber Informatics LLC | Privacy Policy