need help or any links customizing guvnor
by Abdullah Shaikh
Hi,
I am new to drools & guvnor. I was able to create simple drl file and
run from classpath and from guvnor too using url.
I saw that we can create rules in guvnor but I want to know if we can
provide UI for creating rules ? I am not sure but I think what I want
is guided editor ?
Thanks,
Abdullah
14 years
Papers about Drools Verifier
by Jackson Cunha
Anyone knows about academic papers involving drools verifier? I'm working
in a project where will be produced a paper and I need to cite some
caracteristics of it.
Thanks.
----------------------------------------------------------------------------------------------------------------
Jackson Cunha Cassimiro (CereB)
Bacharel em Ciencia da Computação - UFPI
MSN: jackson.cereb(a)gmail.com
Telefone Móvel +55 86 9928 1251
Analista de Sistemas - Infoway - http://www.infoway-pi.com.br
Missão Infoway - "Influenciar a Gestão de Sistemas de Saúde através de
e-health"
("A vida é um combate que os fracos abate, aos bravos, aos fortes só pode
exaltar" - Canção do Tamoio, Gonçalves Dias)
----------------------------------------------------------------------------------------------------------------
14 years
Guvnor test case with fact with Object fields
by mpgong
Hello,
I have a fact that has is also my entity model and it has a field that is a
class called state which holds previous and current state values (enum).
So i have a condition that gets the state and gets the two values to check.
The issue i'm running into is with creating a test case in guvnor, is it
possible to create a test case with a field that is an object like this?
Guvnor recognizes that i have a field called state but it doesn't realize
that it is a class so it doesn't look like i would be able to test any rules
the uses state as a condition check.
Thanks
--
View this message in context: http://drools.46999.n3.nabble.com/Guvnor-test-case-with-fact-with-Object-...
Sent from the Drools: User forum mailing list archive at Nabble.com.
14 years
command line to import repository
by halljme
we have many environments and require the ability to refresh these
environments weekly. this would be much easier to perform via a script/cron
then requiring to perform via manually. Has any thought been put into
creating such or does the ability exist but is just undocumented?
I read a post back on Dec 1, 2009 requesting such ability and as of then,
there was not a way of performing this. I cannot imagine there has not been
any thought or development to perform such a menial task via command line to
enable scripted processes.
If the ability exist via GUI then there has to be some command(s) that exist
to perform an import via command line. At least the logic exists, so the
command should not be to difficult to develop.
respectfully, jme
--
View this message in context: http://drools.46999.n3.nabble.com/command-line-to-import-repository-tp401...
Sent from the Drools: User forum mailing list archive at Nabble.com.
14 years
DRL to XML transformation
by Anirban Bandyopadhyay
Hi,
We have a set of rule files in DRL format. We couldn't find a way (tool) of importing them into Guvnor as BRL file so that we can edit using the designer.
We ended up using the DrlParser and XmlDumper to transform them from DRL to BRL. It produces the XML and when we add it to the repository using WebDav, Guvnor lists the files under Business Rule which is perfect. BUT when I try to open it, it throws the following error:
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$Unkno
wnFieldException: No such field org.drools.ide.common.client.modeldriven.brl.Rul
eModel.rule-attribute
---- Debugging information ----
field : rule-attribute
class : org.drools.ide.common.client.modeldriven.brl.RuleModel
required-type : org.drools.ide.common.client.modeldriven.brl.RuleModel
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionC
onverter
path : /rule/rule-attribute
version : null
-------------------------------
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv
erter.determineType(AbstractReflectionConverter.java:449)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv
erter.doUnmarshal(AbstractReflectionConverter.java:290)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConv
erter.unmarshal(AbstractReflectionConverter.java:230)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshall
er.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(A
bstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnm
arshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnm
arshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller
.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarsh
al(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1035)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1019)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)
at org.drools.ide.common.server.util.BRXMLPersistence.unmarshal(BRXMLPer
sistence.java:191)
at org.drools.guvnor.server.contenthandler.drools.BRLContentHandler.retr
ieveAssetContent(BRLContentHandler.java:41)
at org.drools.guvnor.server.RepositoryAssetService.handlePackageItem(Rep
ositoryAssetService.java:132)
at org.drools.guvnor.server.RepositoryAssetService.loadRuleAsset(Reposit
oryAssetService.java:118)
at org.drools.guvnor.server.RepositoryAssetService$Proxy$_$$_WeldClientP
roxy.loadRuleAsset(RepositoryAssetService$Proxy$_$$_WeldClientProxy.java)
at org.drools.guvnor.server.RepositoryServiceServlet.loadRuleAsset(Repos
itoryServiceServlet.java:403)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:5
69)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(Remot
eServiceServlet.java:208)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(Remot
eServiceServlet.java:248)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Ab
stractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
r.java:877)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
ocess(Http11AprProtocol.java:594)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:16
75)
at java.lang.Thread.run(Thread.java:662)
I am able to re-produce the same error when I try to convert the BRL to DRL using BRDRLPersistence and BRXMLPersistence marshalling and unmarshalling. I checked that the field 'rule-attribute' is indeed not present in org.drools.brms.client.modeldriven.brl.RuleModel. when I look at the example brl file from the sample mortgage, they don't have 'rule-attribute', and it's not only that specific node, the whole set of node names are different.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public void convertDrlToBrl() throws IOException, DroolsParserException {
Resource fileResource = new ClassPathResource("Beneficiary_User_KYC_Level_3_Daily_Limit.drl");
DrlParser parser = new DrlParser();
XmlDumper dumper = new XmlDumper();
Reader source = new InputStreamReader(new FileInputStream(fileResource.getFile()));
PackageDescr pkg = parser.parse(source);
String xmlString = dumper.dump(pkg);
System.out.println(xmlString);
}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public void convertBrlToDrl() throws IOException {
Resource fileResource = new ClassPathResource("Beneficiary_User_KYC_Level_3_Daily_Limit_BRL.brl");
String fileAsString = FileUtils.readFileToString(fileResource.getFile());
BRDRLPersistence write = (BRDRLPersistence) BRDRLPersistence.getInstance();
BRXMLPersistence read = (BRXMLPersistence) BRXMLPersistence.getInstance();
RuleModel ruleModel = read.unmarshal(fileAsString);
String outputDRL = write.marshal(ruleModel);
System.out.println(outputDRL);
}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Generated xml file:
===============================================
<rule name="Beneficiary_User_KYC_Level_3_Daily_Limit_BRL">
<rule-attribute name="dialect" value="mvel" />
<lhs><pattern object-type="UserBean" >
<field-constraint field-name="kycLevel">
<literal-restriction evaluator="==" value="KYC_LEVEL_3" />
</field-constraint>
<field-constraint field-name="userType">
<literal-restriction evaluator="==" value="BENEFICIARY" />
</field-constraint>
</pattern>
<pattern object-type="Activity" >
<field-constraint field-name="type">
<literal-restriction evaluator="!=" value="TRANSACTION.SEND" />
</field-constraint>
</pattern>
</lhs><rhs> Limit fact0 = new Limit();
fact0.setType( "DAILY_TRANSACTION_LIMIT" );
fact0.setValue( 10000 );
fact0.setErrorMessage( "Maximum daily total amount of N10,000 exceeded for {0}." );
insert(fact0 );
</rhs>
</rule>
================================================
Am I doing something wrong? Is there a better way of converting the DRLs to BRLs?
Thanks in advance!
Anirban Bandyopadhyay
________________________________
This message contains confidential and proprietary information of the sender, and is intended only for the person(s) to whom it is addressed. Any use, distribution, copying, disclosure or taking of any action in reliance upon it by any other person is strictly prohibited. If you have received this message in error, please notify the e-mail sender immediately, and delete the original message without making a copy.
The Monitise group comprises: Monitise plc (Reg. No. 6011822), Monitise Group Limited (Reg. No. 5590897), Monitise International Limited (Reg. No. 5556711) and Monitise Europe Limited (Reg. No. 4831976). These companies are registered in England and Wales and their registered office address is: Warnford Court, 29 Throgmorton Street, London, EC2N 2AT United Kingdom.
14 years
Drools integration with Spring
by Ini
Hi All,
I am new to drools and have some how got through my previous
issue of updating user defined error object with details.
I need help in following items:
1. how to integrate the drools with my Spring application.
2. I have a scenario like i need to write different rules file for different
beans ... say i have two beans (Employee, Department) to validate for which
i have written two rules file say EmployeeRule.drl and DepartmentRule.drl
files. i have a common method where i am passing the object(either employee
or Department) that need to be checked. In this case how will i add
different drl file in KnowledgeBuilder.
Like to validate Employee bean i need to add EmployeeRule.drl file and to
validate Department bean i need to add DepartmentRule.drl file.
Hope i am making some sense here..
thanks,
Ini
--
View this message in context: http://drools.46999.n3.nabble.com/Drools-integration-with-Spring-tp397301...
Sent from the Drools: User forum mailing list archive at Nabble.com.
14 years
Function calls in decision table
by San
Hi
I am trying to cal a local function getMaturityAge() in the decision table
condition column like
RuleTable MaturityAge Validation
CONDITION
ACTION
pp:PremiumCalculatorFormBean
getMaturityAge() > "$1"
System.out.println("invalid maturity age");
Premium Payment Term Print out
message?
70 X
The method is defined localy using functions key word.
And moreover whenever I trying to pass pp as the argument to my functions,
its not able to find pp. I am getting cud not parse knowledge error.
can anyone pz help me out.
--
View this message in context: http://drools.46999.n3.nabble.com/Function-calls-in-decision-table-tp3919...
Sent from the Drools: User forum mailing list archive at Nabble.com.
14 years
Help
by Olfa h
HI,
My master thesis is to develop a model interface that allows the
doctor to pose
the question for the patient. it consists of an interface and a database
format connaissace ontology. this application must guide the doctor.
The purpose of the ontology is to implement the interface model that
contains a text box to enter the question and a text box to type the answer
and then clicking a button data are displayed which are imported for the
ontology weight the answer and then if the readings are not in good clicks
a button to display other data but not displayed the first time and if the
election is made on a data. By clicking a button to display the data that
are connected to select data and then validate the choice.
Please can you guide me to make this work?
can you give to me a detailed description and the simplest methods to
follow and i inform you about all the information concerned my
environment to lead a good results because i'm a beginner in this domain ?
If there is any point on the ontology create or something missing you
can tell me because this is the first that I work with ontologies.
so I just need to realized this little application to validate the model
interface and the ontology and I like that you guide me.
Attached is the interface model and the ontology.
I await your advise and your help.
Thank you very much.
14 years
Inserting facts using declared types from XML
by Francois Rouaix
Folks,
I'm trying to use Drools in a mostly Java-less environment (rules are
written in .drl files, facts will be inserted from XML files). I'm running
into an issue where the XStream unmarshaller is unable to convert my XML to
a BatchExecutionCommand because it cannot find the class for a type
declared in the .drl file.
Is there any configuration required to make sure the XStream marshaller
knows about the dynamically generated classes from the .drl?
I'd appreciated any clues. I cannot add POJO classes for my types due to
the nature of the app.
Thanks.
DRL file
-----------
package com.example
declare Answers
....
end
/* some rules after this */
...
XML file
-----------
<batch-execution>
<insert>
<com.example.Answers>
....
Runner code
public static void Run(String xmlFactsFile, String drlFilename)
{
// Compile the drl file
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newFileResource(drlFilename),
ResourceType.DRL );
if ( kbuilder.hasErrors() ) {
System.err.println( kbuilder.getErrors().toString() );
throw new RuntimeException("Cannot compile \"" + drlFilename + "\"");
}
// kbase setup from the compiled rules
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
File facts = new File(xmlFactsFile);
BatchExecutionCommand command = (BatchExecutionCommand)
BatchExecutionHelper.newXStreamMarshaller().fromXML(facts);
ExecutionResults bresults = ksession.execute(command);
System.out.println(BatchExecutionHelper.newXStreamMarshaller().toXML(bresults));
}
}
Error at runtime
----------------------
Exception in thread "main"
com.thoughtworks.xstream.converters.ConversionException:
com.example.Answers : com.example.Answers
---- Debugging information ----
message : com.example.Answers
cause-exception :
com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : com.example.Answers
class : org.drools.command.runtime.rule.InsertObjectCommand
required-type : org.drools.command.runtime.rule.InsertObjectCommand
converter-type :
org.drools.runtime.help.impl.XStreamXML$InsertConverter
path : /batch-execution/insert/com.example.Answers
line number : 3
class[1] : org.drools.command.runtime.BatchExecutionCommandImpl
converter-type[1] :
com.thoughtworks.xstream.converters.reflection.ReflectionConverter
version : null
-------------------------------
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
at
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:318)
at
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:230)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at
com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1035)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1019)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:930)
at
com.intentsoft.RulesEngine.RulesExecution.Run(RulesExecution.java:34)
at com.intentsoft.RulesEngine.Main.main(Main.java:10)
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException:
com.example.Answers
at
com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:56)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at
com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:45)
at
com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
at
com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:70)
at
org.drools.runtime.help.impl.XStreamXML$InsertConverter.unmarshal(XStreamXML.java:135)
at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
... 16 more
14 years