Re: [rules-users] Guvnor - assigning roles to users
Hi, here's my understanding: Roles are only then taken from JAAS, if you *disable* fine grained authorization (set enable-role-based-authorization to false). There are two roles that are available if you use JAAS: admin and non-admin. So you can use JAAS for *authentication*, no problem. You can also use JAAS for *authorization*, but then you have only two roles available. If you want to use *Guvnor specific roles* for *authorization*, then you need to enable fine grained authorization and set up all roles in Guvnor. Before you do this you will have to create some user that is an administrator in Guvnor using the GUI. Otherwise enabling fine grained authorization will make it impossible to login as an administrator - JAAS will let you in, but Guvnor will not let you do anything. 2009/5/6 Darrin Mison dmi...@redhat.com The Drools 5 guvnor guide states that you can specify the admin role for a user in your JAAS login configuration. It is also possible (thanks to JAAS) to define what users have the admin role for Guvnor This is also stated here: http://magazine.redhat.com/2008/08/12/jboss-drools-how-to-tuning-guvnor-part-1/#password I can't get this to work, the only way I can assign roles to users is using the web UI. Is this a bug or are the docs out of date ? Or am I missing something ? *server/default/deploy/jboss-brms.war/WEB-INF/components.xml* security:identity authenticate-method=#{authenticator.authenticate} jaas-config-name=brms/ security:role-based-permission-resolver enable-role-based-authorization=true/ *server/default/conf/login-config.xml:* application-policy name=brms authentication login-module code=org.jboss.security.auth.spi.UsersRolesLoginModule flag=required module-option name=usersPropertiesprops/brms-users.properties/module-option module-option name=rolesPropertiesprops/brms-roles.properties/module-option /login-module /authentication /application-policy *server/default/conf/props/brms-users.properties* admin=admin123 *server/default/conf/props/brms-roles.properties* admin=admin ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools 5 Final location
J. Michael Dean wrote: Where can I locate the 5.00 FINAL artifacts? On Hudson the revisions are way beyond this version; I found everything on SVN but not eager to try to build it myself. Sorry for probable idiotic question. We aren't doing a full release of 5.0.0, that was branched for the Drools Product. We'll publish 5.0.1 as the community release. Mark ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Hibernate proxy objects equality tests failing in Drools 5
Testing, I don´t think my 2 recent messages were sended to the list!!! Oh, and a couple other things I forgot to mention. I believe Hibernate by default will lazily load all association objects. You have to explicitly set the lazy loading to false in order to get eager fetching. I don't consider to be ideal as I have a pricing object that contains many optional attributes to about 10-15 tables out there. Also, there appears one way to fix this under Groovy. If you assign a proxy hibernate object to a class property that explicitly define the type of the object, then groovy will actually automatically recast it as that type. For example: class MyDomainA { String b } class MyDomainB { MyDomainA a // this will get proxied by hibernate } class MyPOJO { MyDomainA a } if I assign it as follows: def pojo = new MyPOJO() pojo = myDomainB.a // groovy will autoconvert the proxied object to the real class and store it as MyDomainA in MyPOJO. Drools, under this condition, will be fine with it. However, this is not ideal as that means I need to basically create a duplicate POJO object to store all of the hibernate domain objects. No good. oh well, back to my a.id == b.id. :) -Chris On May 4, 2009, at 1:29 PM, Guto wrote: Thanks Greg, But it´s not a lazy loading problem at all. I am not using any kind of lazy attribute inside the statefull drools session... Unfortunelly, i´ve just upgrade from drools 4GA to 5CR1 and the problem persist. Now I will try to make CLONES of the objects the came from the bank, just to see if that (temporary) solution works. Do you need the lazy loading functionality that proxies provide? It seems to me that if you have an EJB call that's providing the objects loaded from hibernate, that's probably not the case. (i.e. once the objects are loaded and returned by the EJB method, the hibernate session may no longer be available, so lazy loading could fail anyway.) If you have access to the hibernate mapping just set lazy=false on your class mappings. Not to say that this use case shouldn't be addressed with drools, but if you're under a deadline... :) --- On Mon, 5/4/09, Guto g...@guto.net wrote: From: Guto g...@guto.net Subject: Re: [rules-users] Hibernate proxy objects equality tests failing in Drools 5 To: Rules Users List rules-users@lists.jboss.org Date: Monday, May 4, 2009, 2:42 PM Just now I notice one thing. The application that i am building is compleatly EJB centric. I have um EJB project that usually do all the database stuff, and another EJB project for the drools rules. Lets call them EJB-DATA and EJB-DROOLS. When the client calls for an specific data that must be threated thru the Drools rules it calls an Stateless method from EJB-DATA, inside the method, it gather the necessarie parameter information and them inside the EJB-DATA method it calls the EJB-DROOLS. (hoping not been confusing) (if you are using an fixed space font, here comes the sequence) Client -- EJB-DATA (gather information inside) -- EJB-DROOLS -- return to Client data from EJB-DROOLS-- return to EJB-DATA Now looking over my two projects, I notice that I make them apart so one could evolve with interfering the other. When I call EJB-DROOLS directly from an UNIT-TEST client with pojos parameters intantiated by the test, it pass. When I call EJB-DATA from an UNIT-TEST client (pojos created inside this), first i was getting an CORBA exception ´cause of a ClassNotFoundException for the hibernate PersistenceBag. That´s the way i figure out that my objects are bagged or proxied thru hibernate. I´ve tried to use the EntityManager.clear() (EJB3-JPA) to clean the pojos before send it and make them more like the ones from the first unit-test, but even so it´s not working. Then, possible solutions: 1) Make equality test works from objects that came from hibernate from jpa. 2) Kill the proxies and make them simple objects (not hibernate derivated). 3) don´t know, but i´m been realy in a deadline here. again thanks for anyone in advance ! -- Guto Maia Consultor de TI / Desenvolvedor CSM - SCJP- SCWCD - SCBCD - ZCE In fact, i´m really using JPA with hibernate as an provider. Could you send me your hibernate config? I will compare some proprieties of tyour hibernate.config with my persistence.xml. I plenty sure that the rule is ok, since it is working with the unit test. If you need any help to mimic what your using with JPA, just ask. Thanks anyway. I'm using non-proxied hibernate backed POJOs in drools with no problems. (THe pojos aer generaed by hbm2java.) I'll try configuring for proxies to see what happens. --- On Mon, 5/4/09, Gustavo Maia Neto g...@guto.net wrote: From: Gustavo Maia Neto g...@guto.net Subject: Re: [rules-users] Hibernate proxy objects equality tests failing in Drools 5 To: Rules Users List
Re: [rules-users] Hibernate proxy objects equality tests failing in Drools 5
I don´t have a clue why is not working eather. Unfortunelly I can´t really rely on a.id == b.id ´cause I have rules like: $participante:Participante() $participacoes: ArrayList(size == 0) from collect(ParticipacaoCiclo(participante == $participante saidaPosto == null periodo == 1 )) Do eager fetching, will really reduce my perfomace, since most of my collection properties have a huge amount of data (I don´t use that data inside the drools session, I don´t need them). I have 2 clients one is an UnitTest that access the EJB and the other is an JSF 1.2 webclient (the real application itself). I´m not using groovy (not in this project, however I found that really interesting). thanks. just a question (==) will be translated to (equals) right? With the new hibernate jars and the migration to the new Javassist, what hibernate is essentially doing is dynamically generating hibernate proxy objects that should subclass the original file. Here's the interesting part. In groovy, comparing two hibernate objects: a.a == b.a works fine when they are the same type of object. Under groovy, == uses equals() to do the comparison. That appears to work all good. However, taking these same two objects into Drools and comparing their subproperty when they are lazily loaded will cause the problems that a.a no longer equals to b.a. Yet under groovy, it still says they are equal. There could be one of 2-3 things that can be done to fix this, which I haven't entirely tried. 1) implement your own version of equals() and hashCode() and use the instanceOf() hibernate util method to do comparison. Sadly, I have over 50 domains objects and I'm hoping not to have to implement all the methods. 2) do a eager fetch of the properties. This is probably the best and easy way, but I am getting this working well under Grails/groovy. Somehow it's still fetching them as proxy objects, but just loaded. Either that or the eager fetching isn't even working (I've yet to fully test this yet with hibernate logging turned on to check). 3) use each domain's identity or some unique constraint to do the equality check. This is my current cheating way of getting around the problem. I simply use a.a.id == b.a.id. However, this poses an additional complexity where I actually have to do null checks for the property. Otherwise, I'd get NPEs all over the place. At the end of the day, I don't see why Drools cannot see proxy objects as equal. The only way I can think of is that there is some sort of direct object/class type check in Drools that's causing it not to realize that two objects are equal. But I could be wrong, and I hope I'm wrong. :) -Chris On May 4, 2009, at 1:29 PM, Guto wrote: Thanks Greg, But it´s not a lazy loading problem at all. I am not using any kind of lazy attribute inside the statefull drools session... Unfortunelly, i´ve just upgrade from drools 4GA to 5CR1 and the problem persist. Now I will try to make CLONES of the objects the came from the bank, just to see if that (temporary) solution works. Do you need the lazy loading functionality that proxies provide? It seems to me that if you have an EJB call that's providing the objects loaded from hibernate, that's probably not the case. (i.e. once the objects are loaded and returned by the EJB method, the hibernate session may no longer be available, so lazy loading could fail anyway.) If you have access to the hibernate mapping just set lazy=false on your class mappings. Not to say that this use case shouldn't be addressed with drools, but if you're under a deadline... :) --- On Mon, 5/4/09, Guto g...@guto.net wrote: From: Guto g...@guto.net Subject: Re: [rules-users] Hibernate proxy objects equality tests failing in Drools 5 To: Rules Users List rules-users@lists.jboss.org Date: Monday, May 4, 2009, 2:42 PM Just now I notice one thing. The application that i am building is compleatly EJB centric. I have um EJB project that usually do all the database stuff, and another EJB project for the drools rules. Lets call them EJB-DATA and EJB-DROOLS. When the client calls for an specific data that must be threated thru the Drools rules it calls an Stateless method from EJB-DATA, inside the method, it gather the necessarie parameter information and them inside the EJB-DATA method it calls the EJB-DROOLS. (hoping not been confusing) (if you are using an fixed space font, here comes the sequence) Client -- EJB-DATA (gather information inside) -- EJB-DROOLS -- return to Client data from EJB-DROOLS-- return to EJB-DATA Now looking over my two projects, I notice that I make them apart so one could evolve with interfering the other. When I call EJB-DROOLS directly from an UNIT-TEST client with pojos parameters intantiated by the test, it pass. When I call EJB-DATA from an UNIT-TEST client (pojos created inside this), first i was getting an CORBA exception
Re: [rules-users] Hibernate proxy objects equality tests failing in Drools 5
Hi, Using RuleFlow in Drools 5 into a action element, how can I read or get the classes that were in working memory ? Thanks, Kevin ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Drools and OpenJPA
Greetings all, I am trying to use Drools 4.0.7 with objects that are retrieved via OpenJPA. So I have a Person entity which is in the package com.my.company.entity. When I retrieve it via OpenJPA what I get, and subsequently insert into working memory, is a org.apache.openjpa.enhance.com$my$company$entity$Person$pcsubclass. I have tried casting before inserting into working memory but that does not change things. Drools is throwing java.lang.NoClassDefFoundError: org/apache/openjpa/enhance/com$my$company$entity$Person$pcsubclass exception. Any ideas of how to get around this? I really don't want to have to declare the concrete (OpenJPA) classes in my rules if I can help it. Thanks in advance for any and all help! Earnie!___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Guvnor Package Builds The EGT w/ver. 5.0.0 CR1
Hello, I use Guvnor's repository to store, organize and deploy our rules. However Eclipse Ganymede with the Eclipse Guvnor Toolkit is used for all of our editing and testing. My question is this: After making a change to a rule (we use drls only) I save the local copy and commit it to Guvnor. However, when I run a test class that checks to make sure these changes went into effect they do not. In order for the changes to truly become effective, I must rebuild the rule package in Guvnor. The .properties file has newInstance=true which according to the comments means the RuleBase will be created fresh whenever there are changes. I would really rather not have to switch over to guvnor and rebuild the package anytime I make even a minor change in my rules for testing. Does anyone know a way around this or am I doing something foolish without realizing it? Thanks, Jon ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Guvnor Package Builds The EGT w/ver. 5.0.0 CR1
Hi, same happens if you update your rule in Guvnor. The rule agent won't pick up the changes; you have to rebuild the whole package. Same for EGT. So it looks fine to me what you're seeing. Cheers, Jarek On Wed, May 6, 2009 at 8:05 PM, Ingold, Jonathan jonathan.ing...@jackson.com wrote: Hello, I use Guvnor's repository to store, organize and deploy our rules. However Eclipse Ganymede with the Eclipse Guvnor Toolkit is used for all of our editing and testing. My question is this: After making a change to a rule (we use drls only) I save the local copy and commit it to Guvnor. However, when I run a test class that checks to make sure these changes went into effect they do not. In order for the changes to truly become effective, I must rebuild the rule package in Guvnor. The .properties file has newInstance=true which according to the comments means the RuleBase will be created fresh whenever there are changes. I would really rather not have to switch over to guvnor and rebuild the package anytime I make even a minor change in my rules for testing. Does anyone know a way around this or am I doing something foolish without realizing it? Thanks, Jon ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Guvnor Enumerations; values to be taken from db table
Hello, We would like to have an enumeration that grabs values from a db table. We will have a list of clients, which change quite regularly. Maybe not at real-time, but at the time guvnor is started or something to that effect. Currently it is hard-coded. Has someone implemented something similar to this effect? If it could pick up from a flat-file which is on the path and the file name could be configured, it would be workable. We could query the db and load the flat-file. Please let me know if you have other work-arounds for this scenario. Regards, Prem ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools 5 Final location
Mark, My team is currently evaluating Drools 5 and are very excited about it's upcoming release. Do you have a target date for a 5.x.x.GA release? It would really be helpful when we are putting together our project's timeline. Thanks! Steve Ronderos From: Mark Proctor mproc...@codehaus.org To: Rules Users List rules-users@lists.jboss.org Date: 05/06/2009 09:24 AM Subject: Re: [rules-users] Drools 5 Final location Sent by: rules-users-boun...@lists.jboss.org J. Michael Dean wrote: Where can I locate the 5.00 FINAL artifacts? On Hudson the revisions are way beyond this version; I found everything on SVN but not eager to try to build it myself. Sorry for probable idiotic question. We aren't doing a full release of 5.0.0, that was branched for the Drools Product. We'll publish 5.0.1 as the community release. Mark ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools 5 Final location
Steve Ronderos wrote: Mark, My team is currently evaluating Drools 5 and are very excited about it's upcoming release. Do you have a target date for a 5.x.x.GA release? It would really be helpful when we are putting together our project's timeline. Thanks! Steve Ronderos From: Mark Proctor mproc...@codehaus.org To: Rules Users List rules-users@lists.jboss.org Date: 05/06/2009 09:24 AM Subject:Re: [rules-users] Drools 5 Final location Sent by:rules-users-boun...@lists.jboss.org J. Michael Dean wrote: Where can I locate the 5.00 FINAL artifacts? On Hudson the revisions are way beyond this version; I found everything on SVN but not eager to try to build it myself. Sorry for probable idiotic question. We aren't doing a full release of 5.0.0, that was branched for the Drools Product. We'll publish 5.0.1 as the community release. Just waiting on MVEL 2.0.9 to be released, hoping mike brock will do that tomorrow. Once MVEL has a release we can release drools 5.0, as it's ready. Mark ___ rules-users mailing list _rules-us...@lists.jboss.org_ mailto:rules-users@lists.jboss.org _https://lists.jboss.org/mailman/listinfo/rules-users_ ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users