Load initial rules from configuration service.
This commit is contained in:
parent
fbeaebab7d
commit
74e5bc0635
@ -1,11 +1,15 @@
|
|||||||
package com.iqser.red.service.redaction.v1.server;
|
package com.iqser.red.service.redaction.v1.server;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import org.kie.api.KieServices;
|
import org.kie.api.KieServices;
|
||||||
import org.kie.api.builder.KieBuilder;
|
import org.kie.api.builder.KieBuilder;
|
||||||
import org.kie.api.builder.KieFileSystem;
|
import org.kie.api.builder.KieFileSystem;
|
||||||
import org.kie.api.builder.KieModule;
|
import org.kie.api.builder.KieModule;
|
||||||
import org.kie.api.runtime.KieContainer;
|
import org.kie.api.runtime.KieContainer;
|
||||||
import org.kie.internal.io.ResourceFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
@ -15,6 +19,8 @@ import org.springframework.context.annotation.Bean;
|
|||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
import com.iqser.gin4.commons.spring.DefaultWebMvcConfiguration;
|
import com.iqser.gin4.commons.spring.DefaultWebMvcConfiguration;
|
||||||
|
import com.iqser.red.service.configuration.v1.api.model.RulesResponse;
|
||||||
|
import com.iqser.red.service.redaction.v1.server.client.RulesClient;
|
||||||
import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettings;
|
import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettings;
|
||||||
|
|
||||||
@Import({DefaultWebMvcConfiguration.class})
|
@Import({DefaultWebMvcConfiguration.class})
|
||||||
@ -22,19 +28,22 @@ import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettin
|
|||||||
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
|
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
|
||||||
public class Application {
|
public class Application {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RulesClient rulesClient;
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(Application.class, args);
|
SpringApplication.run(Application.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String drlFile = "drools/rules.drl";
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public KieContainer kieContainer() {
|
public KieContainer kieContainer() {
|
||||||
|
|
||||||
KieServices kieServices = KieServices.Factory.get();
|
KieServices kieServices = KieServices.Factory.get();
|
||||||
|
|
||||||
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
|
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
|
||||||
kieFileSystem.write(ResourceFactory.newClassPathResource(drlFile));
|
RulesResponse rules = rulesClient.getRules();
|
||||||
|
InputStream input = new ByteArrayInputStream(rules.getRules().getBytes(StandardCharsets.UTF_8));
|
||||||
|
kieFileSystem.write("src/main/resources/drools/rules.drl", kieServices.getResources().newInputStreamResource(input));
|
||||||
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
|
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
|
||||||
kieBuilder.buildAll();
|
kieBuilder.buildAll();
|
||||||
KieModule kieModule = kieBuilder.getKieModule();
|
KieModule kieModule = kieBuilder.getKieModule();
|
||||||
|
|||||||
@ -34,12 +34,15 @@ public class DroolsExecutionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Section executeRules(Section section) {
|
public Section executeRules(Section section) {
|
||||||
|
|
||||||
KieSession kieSession = kieContainer.newKieSession();
|
KieSession kieSession = kieContainer.newKieSession();
|
||||||
kieSession.setGlobal("section", section);
|
kieSession.setGlobal("section", section);
|
||||||
kieSession.insert(section);
|
kieSession.insert(section);
|
||||||
kieSession.fireAllRules();
|
kieSession.fireAllRules();
|
||||||
kieSession.dispose();
|
kieSession.dispose();
|
||||||
|
|
||||||
return section;
|
return section;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateRules(String drlAsString) {
|
public void updateRules(String drlAsString) {
|
||||||
|
|||||||
@ -38,7 +38,7 @@ public class ResourceLoader {
|
|||||||
try (InputStream is = resource.openStream();
|
try (InputStream is = resource.openStream();
|
||||||
InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
|
InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
|
||||||
BufferedReader br = new BufferedReader(isr)) {
|
BufferedReader br = new BufferedReader(isr)) {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuilder sb = new StringBuilder();
|
||||||
String str;
|
String str;
|
||||||
while ((str = br.readLine()) != null) {
|
while ((str = br.readLine()) != null) {
|
||||||
sb.append(str).append("\n");
|
sb.append(str).append("\n");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user