Drools Planner Solver Type
by DroolersEye
Geoffrey,
Please help me to understand clearly,
1. What are the solver type drools planner currently support or use?
2. From the examples I learned Local search(SA, tabu..), is this type
applicable to all kind of problems?
3. How to select or build a solver? (eg.scenario.....100 doctors 1000
patients, administrator needs to schedule an appoinment with doctors based
on the patient type and doctor specialization)
Thanks,
-----
with kind regards,
Prabakar
--
View this message in context: http://drools.46999.n3.nabble.com/Drools-Planner-Solver-Type-tp3172464p31...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 4 months
drools-JBPM integration
by DroolersEye
Hi,
Please let me understand (not understand completely using the
documentation), regarding drools integration I have two questions....
1. Why do we need to use Spring, can I ignore spring in this integration
process, if so what is the alternative for that?
2. Is the there any simple way for this integration process, It seems bit
difficult for me to see lots of technologies involved in this process
(drools, JBPM, REST, CFX, spring and Camal than some ESB..)
thanks,
-----
Drooler
--
View this message in context: http://drools.46999.n3.nabble.com/drools-JBPM-integration-tp3167306p31673...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 4 months
Is my project a suitable candidate for Drools?
by bolsover
Although a reasonably experienced Java programmer, I'm completely new to
Drools and am just in the process of exploring some options for my current
project. Advice from practioners here would be very welcome.
An existing web based b2b application allows clients to select products from
the available range by selecting items from a product tree where nodes are
used to group similar items.
The new requirement is for and expert engine that guides the client through
a series of qestions and can accept a range of parameters that describe the
product (in terms such as RPM, pressure, flow rate, size, colour, etc.). The
engine should then select an appropriate solution from a range of existing
product or, propose a new custom product (that might actaully get designed
in the fly) based on the client requirements. If no suitable solution is
found, the collected data should be referred to human engineers for
consideration.
I had originally considered a simple Question/Answer mechanism where the
Answer to a Question simply points the user to the next Question or the
Solution. But this seems to lack sophistication and has difficulty when
applied to questions that give rise to multi-dimensional (spatial) and
multi-type (double, boolean, string etc.) answers.
Can practitioners advise, is Drools a suitable solution? Or is it overkill
for what is actually a reasonably simple problem?
db
--
View this message in context: http://drools.46999.n3.nabble.com/Is-my-project-a-suitable-candidate-for-...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 4 months
Filtering eligible records for authorization - Is a rules engine right solution ?
by gmkumar2005
I have an authorization screen for say payments
A list of transactions is displayed. This is a filtered list. Each
transaction listed in this screen needs to satisfy following conditions
A) Meets Authorization Verification Matrix (AVM) conditions
B) .. few more conditions not imp at this time
In simplest form AVM is defined as below
Below 5000 -- ApproverRole
Above 5000 -- SeniorApproverRole
Hence if the loggedIn user belongs to ApproverRole , all the transactions
which are below 5000 should be displayed.
I am trying to solve this problem using drools.
Proposed solution.
Create a rule "AVMRULE"
Each payment is modeled as a FACT.
Payment has two interesting properties 1) amount 2) isEligible
When payment object is asserted into working memory the "AVMRULE" modifies
the payment.isEligible. The user interface displays or hides the transaction
based on payment.isEligible
*Problem :* Average number of payments in a system can go up to a million.
The above solution implies that the application has to fetch all the million
records to the business layer.
It can be optimized to fetch batch of records and stop reading as soon as we
find first 10 records which have isEligible true. This works if the user
wants to see first page. Doesn't work if he wants to see the last page. I am
not sure if overall performance will improve in a multi-user environment
at-least 20 concurrent users
*Question :* Please note the problem is to display the filtered list. Also
consider that there are more conditions to handle and AVM is much complex
than what is defined above.
Is rules engine appropriate to solve this problem ?
--
View this message in context: http://drools.46999.n3.nabble.com/Filtering-eligible-records-for-authoriz...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 4 months
Should update be called moving from one rule task to another in a ruleflow
by Wishing Carebear
Hi,
If I have a ruleflow with a sequence of rule tasks, should an update be
called to reflect the state of the fact in the working memory? In another
words If all the rules are mutually exclusive within a rule task, will the
changes made in first rule task, if used as a condition in the next rule
task will be reflected without calling explicit update.
Thanks for your time and help.
13 years, 4 months
Re: [rules-users] jaxb generated fact loaded into Guvnor throws errors when using the ' is contained in the comma separated list' operator
by rouvas@mm.di.uoa.gr
Sreeram.Vadlamudi(a)wellsfargo.com wrote:
> Hello ,
>
> I am using 5.2.0.CR1 version of Guvnor .
>
> I have a jaxb generated class loaded through the model jar into Guvnor to
> be used as a fact in the Guided Decision Table editor.
>
> When I use a field ACTIVITYCODE of type String from the JAXB generated
> class with ' is contained in the comma separated list' operator, I get
> compilation errors.
>
> Unable to Analyse Expression ACTIVITYCODE == "A" || ACTIVITYCODE == "B":
> [Error: no such identifier: ACTIVITYCODE] [Near : {... ACTIVITYCODE == "A"
> || ACTIVI ....}] ^ [Line: 1, Column: 1]
>
> But when I use equal to operator to compare value to just a string value,
> it compiles fine.
>
> This rule fails.
>
> 3. | rule "Row 1 dds"
> 4. | ruleflow-group "None"
> 5. | dialect "mvel"
> 6. | when
> 7. | factClass : FACTCLASS( ACTIVITYCODE in ("A", "B")
The missing parenthesis is a typo?
-Stathis
> 8. | then
> 9. | factClass.setRATE( "5.25" );
> 10. | end
>
> The below rule compiles fine.
>
>
> 3. | rule "Row 1 dds"
> 4. | ruleflow-group "None"
> 5. | dialect "mvel"
> 6. | when
> 7. | factClass : FACTCLASS ( ACTIVITYCODE =="A")
> 8. | then
> 9. | factClass.setRATE( "5.25" );
> 10. | end
>
> Is this issue being caused by jaxb generated class? If so, is there a way
> to fix this problem?
>
> When I use a regular pojo that is not jaxb generated, the
>
> is contained in the comma separated list' operator works fine.
>
> Can someone provide any direction or thoughts on this?
>
> Thanks,
>
> Ram
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
13 years, 4 months
Memory issues
by Jeffrey Schneller
I am currently running version 5.1.0M2. I have 18 different binary
rulesets [packages] that are stored on the local filesystem. The
rulesets range in size from 4K to 131Mb.
When my application starts I load each ruleset into a knowledgeAgent and
store the knowledgeAgent into a hashmap which is stored in memory.
They are loaded using the following xml:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd'>
<add>
<resource source='file://PATH_TO_BINARY' type='PKG' />
</add>
</change-set>
The knowledgeAgentConfiguration is setup as:
drools.agent.scanDirectories = false
drools.agent.newInstance = false
drools.agent.scanResources = false
drools.agent.monitorChangeEvents = false
After the all the agents are loaded and stored in the hashmap the total
memory used in the app is 6.2GB.
Once the application is running, if a business user needs to update a
set of rules there is a process in place to refresh all the
knowledgeAgents with new rulesets. In a new thread. the code clears the
hashmap, sets the hashmap to null, calls for garbage collection to
occur, and it then constructs a new hashmap and loads all the rules as
it does at application startup.
The knowledge agent is logging the following when the ruleset is loaded:
KnowledgeAgent applying ChangeSet
KnowledgeAgent performing an incremental build of the ChangeSet
KnowledgeAgent incremental build of KnowledgeBase finished and in use
It takes a large amount of time to do this process [double to triple the
time of application startup]. After this occurs the memory used by the
app increases [to nearly double the original size 12.2GB] and the CPU is
maxed out. After some time the CPU usage drops and the app is usable
again but the memory never decreases. If a business user refreshes the
rules again, the memory increases again and the CPU is maxed out and the
app becomes unresponsive because the memory is completely maxed out.
There is obviously a memory leak somewhere and a large one at that. Is
this the proper way to be caching KnowledgeAgents into memory so the
rulessets don't need to be re-loaded everytime a knowledgeAgent is run?
Is my problem the use of the hashmap? Do I need to remove the original
knowledgeAgents that were in the hashmap?
Thanks for any help.
13 years, 4 months