[rules-users] Guvnor service to compile part of a package ?
Jervis Liu
jliu at redhat.com
Fri May 6 02:19:14 EDT 2011
On 2011/5/6 2:33, Vincent LEGENDRE wrote:
> I am not sure if I understand you correctly. You want to return a
> compiled package binary based on certain criteria or you want to
> return individual assets based on certain criteria?
> The main objective is the first one : get compiled package including
> filtred assert on certain criteria
> But if I can do the second (get all assets having certain criteria), I
> can compile it myself.
>
> If its the former, you can do this through Guvnor REST API (to be
> precise, it is the new JAX-RS based REST api). In this case, you dont
> provide filters through the URL. When you hit the REST URL for example
> http://localhost:8080/drools-guvnor/rest/packages/mortgage, the REST
> service will first check if this package's binary is up-to-date. If
> not, it will build the package first, then return compiled binary. It
> is the Guvnor selector in charge of which assets get into the build.
> At the moment, we dont have a REST API to control which selector is
> taking effect during the build, but if this is what you need, I am
> sure we can figure this out.
> It is exactly that : be able to choose the filter used to compile the
> package.
>
>
> If what you want is to return individual assets, you can send a HTTP
> GET request to URL
> http://host:portnumber/drools-guvnor/rest/packages/mortgage/assets
> <http://community.jboss.org/docs/DOC-16217>with
> Accept="application/atom+xml", this returns a list of assets under the
> mortgage package in Atom feed format.
> /.../
> For example a GET request to http://host:portnumber/
> <http://community.jboss.org/docs/DOC-16217>drools-guvnor/rest
> <http://localhost:9080/repository/packages/testPackage1/assets>/packages/mortgage/assets
> <http://localhost:9080/repository/packages/packageName/asset/testAsset2>/testAsset1
> <http://community.jboss.org/docs/DOC-16217>with
> Accept="application/atom+xml" returns an atom entry which is the meta
> data info of that asset.
> The links you provide and these sample seems really great to access
> some internal values of repository, and even do updates to
> programmatically ... but ... I can't get it work ... may be I hit my
> limits on web-base things here ... So lots of questions :
> - I don't understand when you say "with
> Accept="application/atom+xml" : what is "with" ? URL parameters like
> http://host:portnumber/drools-guvnor/rest/packages/mortgage/assets
> <http://community.jboss.org/docs/DOC-16217>?Accept="application/atom+xml"
> ? Guess not according to what you say after. So what is "with", how do
> you provide these args to the URL ?
This is an example code of how you set up HTTP headers on your client side:
URL url = new
URL("http://localhost:8080/drools-guvnor/rest/packages/mortgage");
HttpURLConnection connection =
(HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept",
MediaType.APPLICATION_ATOM_XML);
connection.connect();
assertEquals (200, connection.getResponseCode());
assertEquals(MediaType.APPLICATION_ATOM_XML,
connection.getContentType());
> - when I try the URL given "as this" (
> http://host:portnumber/drools-guvnor/rest/packages/mortgage/assets
> <http://community.jboss.org/docs/DOC-16217> ) tomcat replies that
> there is no service. I get something to work with this URL
> http://localhost:8080/drools-5.2.0.M1-guvnor/org.drools.guvnor.Guvnor/api/packages/mortgages
> , ie adding "org.drools.guvnor.Guvnor", with "api" instead of "rest",
> and without "assets" (which tells me that the "assets" is not a valid
> path). Does this mean that I am not running the correct version ? Need
> to deploy something else ? Need to configure something ?
>
In your case the URL should be
http://localhost:8080/drools-5.2.0.M1-guvnor/rest/packages/mortgages/assets
<about:blank>
The new JAX-Rs based REST interface is available from 5.2.0.M1. The URL
starts with
http://localhost:8080/drools-5.2.0.M1-guvnor/org.drools.guvnor.Guvnor/api/
<about:blank> etc is the old non-Jax-RS based implementation and will be
deprecated later.
<about:blank>
> - with my URL form, I can get the content of a package (raw text,
> one resource by line) like this :
> drools.package=2008-09-30T03:36:29,1
> MortgageModel.model.drl=2008-10-22T22:01:14,6
> Underage.brl=2008-10-01T04:54:34,2
> ...
>
> - or one rule
> (http://localhost:8080/drools-5.2.0.M1-guvnor/org.drools.guvnor.Guvnor/api/packages/mortgages/RegexDslRule.brl)
> :
> <rule>
> <name>RegexDslRule</name>
> <modelVersion>1.0</modelVersion>
> <attributes/>
> <metadataList/>
> <lhs>
> <dslSentence>
> <sentence>When the ages is less than {57:1?[0-9]?[0-9]}</sentence>
> </dslSentence>
> </lhs>
> <rhs/>
> </rule>
> I noticed a metadataList there, but empty ... and I explicitely set
> some metadata in that rule in guvnor before query it. What should go
> there ? Annotations ?
>
> JAX-RS does support query using URL like
> http://host:portnumber/drools-guvnor/rest/packages/mortgage/assets
> <http://community.jboss.org/docs/DOC-16217>?category=foo&category=bar&status=prod
> (and several other query mechanisms). But we have not implemented
> query in Guvnor yet. Of course you will be very welcome if you want to
> help ;-)
> Yep why not ... if you don't find my previous questions too stupid :)
> For now we will try to make the business user arrange their rules
> directly in different packages and then query the package "as usual"
> for each rule app we have
> But it is quite sure that this won't fit their needs in a real living
> application where rules numbers will grow .... as for rule apps
>
> Thanks a lot for you time anyway
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110506/335cf797/attachment.html
More information about the rules-users
mailing list