2016-08-08 2 views
0

Я хочу интегрировать рабочую станцию ​​для слюни 6.4.0.Final с моим собственным приложением.KieScanner не может автоматически загружать ПОСЛЕДНЮЮ версию!

Это ниже основной класс:

package com.example; 
import com.idss.poc.CouponFact; 
import com.idss.poc.Result; 
import org.codehaus.plexus.util.FileUtils; 
import org.drools.compiler.kie.builder.impl.KieServicesImpl; 
import org.drools.compiler.kproject.ReleaseIdImpl; 
import org.drools.core.io.impl.UrlResource; 
import org.kie.api.KieServices; 
import org.kie.api.builder.KieModule; 
import org.kie.api.builder.KieRepository; 
import org.kie.api.builder.KieScanner; 
import org.kie.api.builder.ReleaseId; 
import org.kie.api.runtime.KieContainer; 
import org.kie.api.runtime.StatelessKieSession; 
import org.kie.scanner.KieScannerFactoryServiceImpl; 

import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 


public class FunctionExample { 
    public static void main(String[] args) { 
     KieServices ks = KieServices.Factory.get(); 
     ReleaseId releaseId = ks.newReleaseId("com.test", "poc", "LATEST"); 

     KieContainer kContainer = ks.newKieContainer(releaseId); 
     KieScanner kieScanner = ks.newKieScanner(kContainer); 

     kieScanner.start(10000L); 

     Scanner scanner = new Scanner(System.in); 

     while (true) { 
      kieScanner.scanNow(); 
      String line = scanner.nextLine(); 
      runRule(kContainer); 
     } 
    } 

    private static void runRule(KieContainer kieKontainer) { 
     StatelessKieSession kSession =kieKontainer.newStatelessKieSession("ks"); 
     Result result = new Result(); 
     List<String> list = new ArrayList<String>(); 
     result.setRules(list); 

     kSession.setGlobal("result", result); 

     CouponFact cf = new CouponFact(); 
     cf.setPhoneCount(2); 
     cf.setUserCount(2); 
     cf.setDeviceCount(2); 
     cf.setIp10mCount(10); 
     cf.setIpDayCount(10); 
     kSession.execute(cf); 

     System.out.println(result.getScore() + "," + result.getRules()); 
    } 
} 

Это ниже моего settings.xml используется собственное приложение.

<?xml version="1.0" encoding="UTF-8"?> 
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <localRepository>~/.m2/repository</localRepository> 
    <pluginGroups> 
    </pluginGroups> 
    <proxies> 
    </proxies> 
    <servers> 
    <server> 
     <id>guvnor-m2-repo</id> 
     <username>workbench</username> 
     <password>workbench!</password> 
     <configuration> 
     <wagonProvider>httpclient</wagonProvider> 
     <httpConfiguration> 
      <all> 
      <usePreemptive>true</usePreemptive> 
      </all> 
     </httpConfiguration> 
     </configuration> 
    </server> 
    <server> 
     <id>mymirror</id> 
     <username>workbench</username> 
     <password>workbench!</password> 
     <configuration> 
     <wagonProvider>httpclient</wagonProvider> 
     <httpConfiguration> 
      <all> 
      <usePreemptive>true</usePreemptive> 
      </all> 
     </httpConfiguration> 
     </configuration> 
    </server> 
    </servers> 
    <mirrors> 
    <mirror> 
     <id>mymirror</id> 
     <url>http://10.10.10.57:8080/kie-wb/maven2</url> 
     <mirrorOf>*</mirrorOf> 
     <layout>default</layout> 
    </mirror> 
    </mirrors> 
    <profiles> 
    <profile> 
     <id>guvnor-m2-repo</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <repositories> 
     <repository> 
      <id>guvnor-m2-repo</id> 
      <name>Guvnor M2 Repo</name> 
      <url>http://10.10.10.57:8080/kie-wb/maven2</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <updatePolicy>always</updatePolicy> 
     </repository> 
     </repositories> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <activeProfile>guvnor-m2-repo</activeProfile> 
    </activeProfiles> 
</settings> 

Когда я обновить мою Drools править в верстаке, и обновить версию моего репо, но мое приложение не получить последнюю версию моей репо автоматически. я получаю журнал так:

11:50:24.158 [Timer-0] DEBUG org.kie.scanner.embedder.MavenEmbedderUtils - Not in OSGi: using plexus based maven parser 
11:50:24.212 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pinter/Desktop/RiskGuard/~/.m2/repository 
11:50:24.212 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pinter/Desktop/RiskGuard/~/.m2/repository 
11:50:24.213 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for guvnor-m2-repo (http://10.10.10.57:8080/kie-wb/maven2). 
11:50:24.215 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for guvnor-m2-repo (http://10.10.10.57:8080/kie-wb/maven2). 
11:50:24.215 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for central (https://repo.maven.apache.org/maven2). 
11:50:24.216 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultDependencyCollector - Dependency collection stats: {ConflictMarker.analyzeTime=0, ConflictMarker.markTime=0, ConflictMarker.nodeCount=1, ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=0, ConflictIdSorter.conflictIdCount=0, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=0, ConflictResolver.conflictItemCount=0, DefaultDependencyCollector.collectTime=0, DefaultDependencyCollector.transformTime=0} 
11:50:24.217 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for ~/.m2/repository 
11:50:24.217 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultUpdateCheckManager - Skipped remote request for com.idss:poc/maven-metadata.xml, locally cached metadata up-to-date. 

Может кто-нибудь помочь мне, чтобы понять это? Спасибо!

+0

После обновления версии репо вы «создали и развернули» свой проект? –

+0

, конечно, я сделал «сборку и развертывание» моего проекта. Но это не сработало, я получил старую версию. – PINTER

ответ

0

Я предполагаю, что вы поставили «ПОСЛЕДНИЕ», чтобы получить последнюю версию моментального снимка вашего KJAR.

Если это так, я полагаю, вам нужно установить политику обновления моментального снимка на значение, превышающее значение «ежедневно» по умолчанию. Кроме того, у вас, похоже, есть ошибка в вашем файле настроек maven, поскольку тег updatePolicy не вложен правильно. Я хотел бы предложить вам попробовать что-то вроде этого:

<profiles> 
    <profile> 
     <id>guvnor-m2-repo</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <repositories> 
     <repository> 
      <id>guvnor-m2-repo</id> 
      <name>Guvnor M2 Repo</name> 
      <url>http://10.10.10.57:8080/kie-wb/maven2</url> 

     <releases> 
     <enabled>false</enabled> 
     <updatePolicy>always</updatePolicy> 
     </releases> 
     <snapshots> 
     <enabled>true</enabled> 
     <updatePolicy>always</updatePolicy> 
     </snapshots> 

     </repository> 
     </repositories> 
    </profile> 
    </profiles> 

Ref: https://maven.apache.org/settings.html#Repositories

+0

Не работает. – PINTER

+0

Отныне он работает. – PINTER

1

Если вы используете LATEST в версии поля номера в вашем приложении, KieScanner пытаются соответствовать номеру версии банки доступны в локальном репозиторий с номером версии банки, доступным в kie-workbench. Если обе версии одинаковы, она не извлекает банку из удаленного репозитория и использует банку из локального репозитория. Каждый раз, когда вы создаете и развертываете, увеличьте свой номер версии, чтобы изменения отражались на вашей стороне приложения.

Если вы увеличиваете число версий при каждом развертывании, это слишком много для вас работы, я бы предложил использовать номер вашего номера версии -SNAPSHOT. Версия моментального снимка всегда извлекается из удаленного репозитория, даже если такая же версия доступна в локальном репо. <version>-SNAPSHOT следует использовать только для целей развития.

0

Благодаря @tarilabs и @Naved Alam, ваш ответить только помочь мне. Я прочитал документ Drools, он говорит мне:

KieScanner будет только пикап изменения в развернутых баночки, если он использует съёмка, диапазон версий последней, или параметр RELEASE. Исправленные версии не будут автоматически обновляться во время выполнения.

Итак, я изменил свой верстак проект, и установить номер версии 2.0.0-SNAPSHOT и изменить свой код

ReleaseId releaseId = ks.newReleaseId("com.test", "poc", "LATEST"); 

в

ReleaseId releaseId = ks.newReleaseId("com.test", "poc", "2.0.0-SNAPSHOT"); 

Как пока это не работает отлично.Программа показывает журнал, как это:

11:50:24.158 [Timer-0] DEBUG org.kie.scanner.embedder.MavenEmbedderUtils - Not in OSGi: using plexus based maven parser 
11:50:24.212 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pinter/Desktop/RiskGuard/~/.m2/repository 
11:50:24.212 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pinter/Desktop/RiskGuard/~/.m2/repository 
11:50:24.213 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for guvnor-m2-repo (http://10.10.10.57:8080/kie-wb/maven2). 
11:50:24.215 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for guvnor-m2-repo (http://10.10.10.57:8080/kie-wb/maven2). 
11:50:24.215 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for central (https://repo.maven.apache.org/maven2). 
11:50:24.216 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultDependencyCollector - Dependency collection stats: {ConflictMarker.analyzeTime=0, ConflictMarker.markTime=0, ConflictMarker.nodeCount=1, ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=0, ConflictIdSorter.conflictIdCount=0, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=0, ConflictResolver.conflictItemCount=0, DefaultDependencyCollector.collectTime=0, DefaultDependencyCollector.transformTime=0} 
11:50:24.217 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for ~/.m2/repository 
11:50:24.217 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultUpdateCheckManager - Skipped remote request for com.idss:poc/maven-metadata.xml, locally cached metadata up-to-date. 

Как мы видим, центральное хранилище https://repo.maven.apache.org/maven2 имеет переопределение мой обычай удаленного хранилища http://10.10.10.57:8080/kie-wb/maven2.

Я пытаюсь изменить свою settings.xml,

в

<mirrors> 
    <mirror> 
     <id>mymirror</id> 
     <url>http://10.10.10.57:8080/kie-wb/maven2</url> 
     <mirrorOf>guvnor-m2-repo</mirrorOf> 
     <layout>default</layout> 
    </mirror> 
</mirrors> 

Он просто работает отлично !!!

Смежные вопросы