Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在同一个应用程序(drools-spring)集成应用程序中并行运行drools 5和drool 6吗_Spring_Drools Guvnor - Fatal编程技术网

我们可以在同一个应用程序(drools-spring)集成应用程序中并行运行drools 5和drool 6吗

我们可以在同一个应用程序(drools-spring)集成应用程序中并行运行drools 5和drool 6吗,spring,drools-guvnor,Spring,Drools Guvnor,我有基于drools 5规则引擎的现有应用程序,需要迁移到drools 6,但我们不能一次性完成,即我们必须分多个阶段完成。 所以我的要求是我想在同一个应用程序中支持Drool5和Drool6并行执行 For that i have created sample poc 1) Created drools spring integration application having both drools 5 and drool 6 spring integration configurati

我有基于drools 5规则引擎的现有应用程序,需要迁移到drools 6,但我们不能一次性完成,即我们必须分多个阶段完成。 所以我的要求是我想在同一个应用程序中支持Drool5和Drool6并行执行

For that i  have created sample poc 
1) Created drools spring integration application having both drools 5 and drool 6 spring integration configuration files .

For Drools 5 : 
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:oxm="http://www.springframework.org/schema/oxm"
    xmlns:drools="http://drools.org/schema/drools-spring"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.1.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util-3.1.xsd
      http://www.springframework.org/schema/oxm
      http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd
      http://drools.org/schema/drools-spring org/drools/container/spring/drools-spring-1.2.0.xsd
      http://camel.apache.org/schema/spring
      http://camel.apache.org/schema/spring/camel-spring.xsd">

    <drools:grid-node id="node" />
      <drools:kbase id="drools5Kbase" node="node">
        <drools:resources >
            <!-- <drools:resource type="DRF" source="classpath:rules/distribution/regulatory/Test.rf" /> -->
            <drools:resource type="DRL" source="classpath:rules/Sample.drl" />
        </drools:resources>     
     </drools:kbase>    

</beans>


****Drools 6 :**** 

<kie:kmodule id="Drools6POC">

        <kie:kbase name="rules-two" packages="rules.two" />

        <kie:kbase name="drools6KieBase" packages="rules, process" includes="rules-two">
            <!--<kie:ksession name="ksessionRules">
                <kie:fileLogger file="drools.log" threaded="true" interval="10" />
                <kie:listeners>
                    <kie:ruleRuntimeEventListener ref="org.kie.api.event.rule.DebugRuleRuntimeEventListener" />
                    <kie:agendaEventListener ref="org.kie.api.event.rule.DebugAgendaEventListener" />
                    <kie:processEventListener ref="org.drools.core.event.DebugProcessEventListener" />
                </kie:listeners>
            </kie:ksession> 
            -->     
        </kie:kbase>

    </kie:kmodule>  


2) Added maven depencies for both drools 5 and drools 6 by changing drools 5 standard jar's group id and arctifact id in order to avoid version overwite 

3) With above  configuration drools 6 working fine but while loading drools 5 spring configuration file getting error 

INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@70c44470: defining beans [node,drools5Kbase,drools5RuleSet]; root of factory hierarchy
Apr 20, 2015 12:11:33 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@70c44470: defining beans [node,drools5Kbase,drools5RuleSet]; root of factory hierarchy
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'drools5Kbase': Invocation of init method failed; nested exception is org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration:mvel:org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration'
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.sample.service.ProcessAndRuleService.main(ProcessAndRuleService.java:55)
Caused by: org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration:mvel:org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration'
    at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:310)
    at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:295)
    at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:184)
    at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:162)
    at org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactoryServiceImpl.java:22)
    at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactory.java:74)
    at org.drools.container.spring.beans.KnowledgeBaseBeanFactory.afterPropertiesSet(KnowledgeBaseBeanFactory.java:80)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    ... 12 more
Caused by: java.lang.ClassCastException: org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration cannot be cast to org.drools.compiler.DialectConfiguration
    at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:305)
    ... 20 more


4) Pom.xml 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>TestDroolsVersion</groupId>
  <artifactId>TestDroolsVersion</artifactId>
  <version>1.0.0</version>
  <name>TestDroolsVersion</name>
  <description>TestDroolsVersion</description>

      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <drools6.version>6.1.0.Final</drools6.version>
         <spring.framework.version>3.1.0.RELEASE</spring.framework.version>
         <mvel2.version>2.1.0.drools4</mvel2.version>

      </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.kie</groupId>
                <artifactId>kie-maven-plugin</artifactId>
                <version>${drools6.version}</version>
                <extensions>true</extensions>


            </plugin>
        </plugins>
    </build> 

    <dependencies>
    <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
            <version>6.1.0.Final</version>
        </dependency>



        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-ci</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-spring</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jbpm</groupId>
            <artifactId>jbpm-bpmn2</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.0.2</version>
        </dependency>


        <!-- START : Drools 5  -->

            <dependency>
            <groupId>org.drools.custom</groupId>
            <artifactId>drools-core-custom</artifactId>
            <version>5.3.1.Final</version> 
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.drools.custom</groupId>
            <artifactId>drools-compiler-custom</artifactId>
            <version>5.3.1.Final</version> 
            <exclusions>
                <exclusion>
                    <groupId>org.mvel</groupId>
                    <artifactId>mvel2</artifactId>
                </exclusion>
            </exclusions>
            <scope>provided</scope>
        </dependency> 


        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-spring</artifactId>
                <version>5.3.1.Final</version> 
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.framework.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.framework.version}</version>
        </dependency>



    </dependencies>


</project>


Your help will be appriciated .

1) Can we support drools 5 and drool 6 in parallel in same classpath 

2) If yes is there any way or any one have any sample 

Thanks and regards 
Sri
为此,我创建了示例poc
1) 创建了drools spring集成应用程序,该应用程序具有drools 5和drool 6 spring集成配置文件。
对于口水5:
****口水6:**
2) 通过更改drools 5 standard jar的组id和arctifact id,为drools 5和drools 6添加了maven依赖性,以避免版本过度使用
3) 以上配置drools 6工作正常,但加载drools 5时,弹簧配置文件出错
信息:在org.springframework.beans.factory.support中预实例化单例。DefaultListableBeanFactory@70c44470:定义bean[节点,drools5Kbase,drools5RuleSet];工厂层次结构的根
2015年4月20日下午12:11:33 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry销毁单例
信息:在org.springframework.beans.factory.support中销毁单例。DefaultListableBeanFactory@70c44470:定义bean[节点,drools5Kbase,drools5RuleSet];工厂层次结构的根
org.springframework.beans.factory.BeanCreationException:创建名为“drools5Kbase”的bean时出错:调用init方法失败;嵌套异常为org.drools.RuntimeDroolsException:无法加载方言“org.drools.compiler.rule.builder.dialen.mvel.MVELDialectConfiguration:mvel:org.drools.compiler.rule.builder.dialen.mvel.MVELDialectConfiguration”
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:567)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)
位于com.sample.service.ProcessAndRuleService.main(ProcessAndRuleService.java:55)
原因:org.drools.RuntimeDroolsException:无法加载方言“org.drools.compiler.rule.builder.dialent.mvel.MVELDialectConfiguration:mvel:org.drools.compiler.rule.builder.dialent.mvel.MVELDialectConfiguration”
位于org.drools.compiler.PackageBuilderConfiguration.adddialent(PackageBuilderConfiguration.java:310)
在org.drools.compiler.PackageBuilderConfiguration.build方言配置图(PackageBuilderConfiguration.java:295)上
位于org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:184)
位于org.drools.compiler.PackageBuilderConfiguration.(PackageBuilderConfiguration.java:162)
位于org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactoryServiceImpl.java:22)
在org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactory.java:74)上
位于org.drools.container.spring.beans.KnowledgeBaseBeanFactory.AfterPropertieSet(KnowledgeBaseBeanFactory.java:80)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 还有12个
原因:java.lang.ClassCastException:org.drools.compiler.rule.builder.dial.mvel.MVELDialectConfiguration无法强制转换为org.drools.compiler.DialectConfiguration
位于org.drools.compiler.PackageBuilderConfiguration.adddialent(PackageBuilderConfiguration.java:305)
... 20多
4) Pom.xml
4.0.0
TestDroolsVersion
TestDroolsVersion
1.0.0
TestDroolsVersion
TestDroolsVersion
UTF-8
6.1.0.1最终版本
3.1.0.1发布
2.1.0.4
org.kie
kie maven插件
${drools6.version}
真的
org.drools
drools编译器
6.1.0.1最终版本
org.kie
基亚皮
6.1.0.1最终版本
org.kie
基茨
6.1.0.1最终版本
org.kie
基斯普林
6.1.0.1最终版本
org.jbpm
jbpm-bpmn2
6.1.0.1最终版本
朱尼特
朱尼特
4.11
测试
org.apache.logging.log4j
log4j型芯