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 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/ drools-guvnor/rest
/packages/mortgage/assets /testAsset1 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
?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 ?
- when I try the URL given "as this" (
http://host:portnumber/drools-guvnor/rest/packages/mortgage/assets ) 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...
, 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 ?
- 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...)
:
<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
?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