[rules-users] @key declarations for a type - What's under the hood?
Wolfgang Laun
wolfgang.laun at gmail.com
Thu Feb 27 13:24:04 EST 2014
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 at 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 at 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 at 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 at 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-under-the-hood-tp4028343p4028346.html
>>>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users at 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 at 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 at versaggi.com, ProfVersaggi at gmail.com
>> M: 630-292-8422
>> LinkedIn: http://www.linkedin.com/in/versaggi
>> #########################################################
>>
>
More information about the rules-users
mailing list