I'm having a problem a little odd trying to fire rules using the Guvnor.

In Guvnor I have a package named package kobo.regularSafaris, inside this
package I have defined rules (with some DSL definitions), a decision table
(xls) and two functions.

The problem is that when I'm trying to call the functions in the consequence
of a rule I'm having the following error:

org.drools.runtime.rule.ConsequenceException: [Error: unable to resolve
method:
kobo.regularSafaris.AddBookingPayment.addBookingPayment(kobo.regularSafaris.BookingRequest,
java.lang.Integer, java.lang.Integer) [arglength=3]]
[Near : {... Unknown ....}]
             ^
[Line: 1, Column: 0]
        at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23)
        at 
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:943)
        at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:885)
        at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1086)
        at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:660)
        at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:632)
        at
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:187)
        at
com.rudder.packages.test.rules.PricesRulesTestCase.testNobelLowSeasonPrices(PricesRulesTestCase.java:108)

The function definition is as follows:

function void addBookingPayment(BookingRequest request, int days, int
percentage) {
     PaymentPolicy payment = new PaymentPolicy();
     payment.setPercentage(percentage);

     if( days > 0 ) {
         DateMidnight dueDate = new
DateMidnight(request.getDepartureDate().getTime()).minusDays(days); 
         payment.setType("DEFERRED"); 
         payment.setDueDate(dueDate.toDate()); 
     } else {
         payment.setType("NOW"); 
         payment.setDueDate(null);
     }

     List payments = request.getBookingData().getPayments();
     if(payments == null) {
         payments = new ArrayList();
         request.getBookingData().setPayments(payments);
     }

     payments.add(payment);
}

And the rule that is calling the function is the following:

rule "Def. Deferred Payment for Credit Operator"
        dialect "mvel"
        when
                $request: BookingRequest()
                user: User(type == "Professional") from $request.user
                eval($request.getBookingData().getPayments() == null) || 
ArrayList(size ==
0) from $request.bookingData.payments
                eval( 
"true".equals($request.getUser().getTags().get("hasCredit")))
                eval( (new
DateMidnight($request.getDepartureDate().getTime())).minusDays(35).toDate().after(new
Date()))
        then
                addBookingPayment($request, 35, 100);
end

It seems that the system is adding an extra "AddBookingPayment" to the
package name and this is causing the problem. Why is doing that? how can i
solve this?

Thanks in advance

-- 
View this message in context: 
http://n3.nabble.com/Error-unable-to-resolve-method-tp108194p108194.html
Sent from the Drools - User mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to