• Index
  •  » Talend Open Studio for Data Integration » Usage, Operation
  •  » Regarding implementation of bussiness Rule in Talend

#1 2011-12-21 10:03:43

Lalitha
Member
Registered: 2011-02-15
Posts: 35

Regarding implementation of bussiness Rule in Talend

Hi All,


    I am new user of Drools tool. I have done a sample business Rule in Drools and tested. It is working fine in Drools. So I validated the package and imported .drl file into talend studio under Meta data (Embedded Rules).

The code generated for the business rule is as follows:

package modelonsales

import salesmodel.Sales


import java.util.ArrayList
import java.util.HashMap
import java.lang.Integer

global ArrayList list
global HashMap globalMap



rule "SalesBR"
    dialect "mvel"
    when
        exists Sales( sales >= "100" )
    then
        Sales fact0 = new Sales();
        fact0.setName( "Discount" );
        fact0.setSales( -10 );
        insert(fact0 );
end



When I executing the job it is giving errors as follows:


Starting job DroolsJob at 14:14 21/11/2011.

[statistics] connecting to socket on port 3678
[statistics] connected
[Error: unknown class or illegal statement: Sales]
[Near : {... es fact0 = new Sales();
fact0. ....}]
                      ^
[Line: 1, Column: 13]
    at org.mvel2.compiler.AbstractParser.procTypedNode(AbstractParser.java:1278)
    at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:712)
    at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:106)
    at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:55)
    at org.drools.rule.builder.dialect.mvel.MVELExprAnalyzer.analyzeExpression(MVELExprAnalyzer.java:86)
    at org.drools.rule.builder.dialect.mvel.MVELDialect.analyzeBlock(MVELDialect.java:492)
    at org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilder.build(MVELConsequenceBuilder.java:84)
    at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:86)
    at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:1159)
    at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:649)
    at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:290)
    at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:488)
    at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:25)
    at project1.droolsjob_0_1.DroolsJob$1KnowledgeBase_tRules_2.readKnowledgeBaseDRL(DroolsJob.java:595)
    at project1.droolsjob_0_1.DroolsJob$1KnowledgeBase_tRules_2.readKnowledgeBase(DroolsJob.java:584)
    at project1.droolsjob_0_1.DroolsJob.tFileInputExcel_2Process(DroolsJob.java:648)
    at project1.droolsjob_0_1.DroolsJob.runJobInTOS(DroolsJob.java:1247)
    at project1.droolsjob_0_1.DroolsJob.main(DroolsJob.java:1121)
Unable to resolve ObjectType 'Sales' : [Rule name='SalesBR']

Unable to build expression for 'consequence': unknown class or illegal statement: Sales 'Sales fact0 = new Sales();
fact0.setName( "Discount" );
fact0.setSales( -10 );
insert(fact0 );
' : [Rule name='SalesBR']

Error importing : 'salesmodel.Sales'
Exception in component tRules_2
java.lang.IllegalArgumentException: Could not parse knowledge.
    at project1.droolsjob_0_1.DroolsJob$1KnowledgeBase_tRules_2.readKnowledgeBaseDRL(DroolsJob.java:604)
    at project1.droolsjob_0_1.DroolsJob$1KnowledgeBase_tRules_2.readKnowledgeBase(DroolsJob.java:584)
    at project1.droolsjob_0_1.DroolsJob.tFileInputExcel_2Process(DroolsJob.java:648)
    at project1.droolsjob_0_1.DroolsJob.runJobInTOS(DroolsJob.java:1247)
    at project1.droolsjob_0_1.DroolsJob.main(DroolsJob.java:1121)
[statistics] disconnected
Job DroolsJob ended at 14:14 21/11/2011. [exit code=1]




I have attached the screen shots along with this topic. Please find the attachments.
Please help me out on this issue.

Thanks and Regards,
Lalitha.


Uploaded Images

Last edited by Lalitha (2011-12-21 10:10:46)

Offline

#2 2011-12-30 10:44:00

anilmca4u
Member
Registered: 2011-02-14
Posts: 90

Re: Regarding implementation of bussiness Rule in Talend

Hi Lalitha

Some Business Rule implemented in Drools engine varies in syntax which talend recognize's.  I think there is some syntax error in your imported Business Rule.

    And for best Business Rule implementation refer:  http://www.ibm.com/developerworks/java/ … /j-drools/ and http://docs.jboss.org/drools/release/5. … ml#d0e2785


tHANKS
ANIL KUMAR
anilmca4u@gmail.com
__________________________________________

Greeting on the eve of New Year..Have a wonderful new year u and to  your team.
Happy 2012

Last edited by anilmca4u (2012-01-02 09:56:50)

Offline

#3 2012-01-04 10:20:14

Lalitha
Member
Registered: 2011-02-15
Posts: 35

Re: Regarding implementation of bussiness Rule in Talend

Hi Anil,


    Thank you for your reply. I took the component from palette. Those configurations are different from it. At last we got the output.

Regards,
Lalitha.

Offline

#4 2012-01-04 11:07:48

anilmca4u
Member
Registered: 2011-02-14
Posts: 90

Re: Regarding implementation of bussiness Rule in Talend

Hey Lalitha

        Good to here you that you got it...Congratulation




tHANKS
ANIL KUMAR
anilmca4u@gmail.com
__________________________________________

Greeting on the eve of New Year..Have a wonderful new year u and to  your team.
Happy 2012

Offline

  • Index
  •  » Talend Open Studio for Data Integration » Usage, Operation
  •  » Regarding implementation of bussiness Rule in Talend

Board footer

Powered by FluxBB