Forgot the rule that creates the output :-)
rule isConnected
when
$r1: Room()
$r2: Room( this != $r1 )
$d: Door( fromRoom == $r1, toRoom == $r2 )
then
System.out.println( $d + " connects " + $r1 + " and " + $r1 );
end
-W
On 27/02/2014, Wolfgang Laun <wolfgang.laun(a)gmail.com> wrote:
Works as you'd exprect it - and here we go:
declare Thing
size : int
end
// A room is also a thing
declare Room extends Thing
name : String @key
end
// A door is a pathway between two rooms
declare Door extends Thing
fromRoom : Room @key
toRoom : Room @key
end
rule "startup"
when
then
Room kit = new Room("kitchen");
kit.setSize( 10 );
insert( kit );
Room off = new Room("office");
kit.setSize( 15 );
insert( off );
Door kitoff = new Door( kit, off );
insert( kitoff );
end
Output:
Door( size=0, fromRoom=Room( size=15, name=kitchen ), toRoom=Room(
size=0, name=office ) ) connects Room( size=15, name=kitchen ) and
Room( size=15, name=kitchen )
-W
On 27/02/2014, Matthew Versaggi <profversaggi(a)gmail.com> wrote:
> But what if you now have 2 declare statements in which one defines itself
> in terms of the other ...
>
> // A room is also a thing
> declare Room extends Thing
> name : String @key
> end
>
> One would instantiate an object like this:
> Room room = new Room("office");
>
>
> // A door is a pathway between two rooms
> declare Door extends Thing
> fromRoom : Room @key
> toRoom : Room @key
> end
>
> How would one instantiate an object of 'Door' ?
>
>
>
> On Wed, Feb 26, 2014 at 5:11 PM, Edson Tirelli <ed.tirelli(a)gmail.com>
> wrote:
>
>>
>> Drools bytecode generates these beans without generating java source
>> code (if you are using the declare, not the data modeller). Having said
>> that, it is very simple:
>>
>> declare Here
>> location: String @key
>> end
>>
>> Generates a java class roughly equivalent to:
>>
>> public class Here implements Serializable {
>> private String location;
>>
>> public Here() {}
>>
>> public Here( String location ) {
>> this.location = location;
>> }
>>
>> public String getLocation() { return location; }
>> public void setLocation(String location) { this.location = location;
>> }
>>
>> // generates a toString()
>>
>> // generates a hashCode()/equals() method that use the location's
>> hashcode()/equals()
>> }
>>
>> I did this from memory, but it is pretty much all it does. Nothing
>> complex there, just a javabean really.
>>
>> The difference to not using @key is that the hashCode()/equals()
>> methods would not take "location" in consideration, and in this case,
>> since
>> there are no other attributes, would then rely on system identity.
>>
>> Edson
>>
>>
>>
>>
>>
>> On Wed, Feb 26, 2014 at 2:23 PM, profversaggi
>> <profversaggi(a)gmail.com>wrote:
>>
>>> I was looking for something along the lines of a method of inspecting
>>> the
>>> resulting code of any arbitrary @key declarations I might want to
>>> deploy.
>>> Is
>>> there such a way?
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>>
http://drools.46999.n3.nabble.com/key-declarations-for-a-type-What-s-unde...
>>> Sent from the Drools: User forum mailing list archive at
Nabble.com.
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>
>>
>>
>> --
>> Edson Tirelli
>> Principal Software Engineer
>> Red Hat Business Systems and Intelligence Group
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
>
> --
> #########################################################
> Matthew R. Versaggi, President & CEO
> Versaggi Information Systems, Inc.
> Adjunct Professor of eBusiness DePaul University
> Email: mailto:matt@versaggi.com, ProfVersaggi(a)gmail.com
> M: 630-292-8422
> LinkedIn:
http://www.linkedin.com/in/versaggi
> #########################################################
>