drools ワークベンチ 6.4.0.Final を自分のアプリケーションに統合したいと考えています。
以下はメインクラスです。
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.
誰でもそれを理解するのを手伝ってもらえますか? ありがとうございました!