RED-9349 - Remove context from rules and check before setting the global logger

This commit is contained in:
Andrei Isvoran 2024-06-28 08:29:39 +02:00
parent c869aab13b
commit 5cb81e7f8b
23 changed files with 53 additions and 61 deletions

View File

@ -6,31 +6,33 @@ import java.util.regex.Pattern;
import com.iqser.red.service.redaction.v1.server.service.WebSocketService;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@RequiredArgsConstructor
public class RulesLogger {
private final WebSocketService webSocketService;
private final Context context;
public void info(Context context, String message, Object... args) {
public void info(String message, Object... args) {
log(LogLevel.INFO, context, message, args);
log(LogLevel.INFO, message, args);
}
public void warn(Context context, String message, Object... args) {
public void warn(String message, Object... args) {
log(LogLevel.WARN, context, message, args);
log(LogLevel.WARN, message, args);
}
public void error(Context context, String message, Throwable throwable, Object... args) {
public void error(Throwable throwable, String message, Object... args) {
log(LogLevel.ERROR, context, message + " Exception: " + throwable.toString(), args);
log(LogLevel.ERROR, message + " Exception: " + throwable.toString(), args);
}
private void log(LogLevel logLevel, Context context, String message, Object... args) {
private void log(LogLevel logLevel, String message, Object... args) {
var formattedMessage = formatMessage(message, args);
var ruleLog = RuleLogEvent.builder()

View File

@ -9,6 +9,8 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.drools.model.Global;
import org.kie.api.definition.KiePackage;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.QueryResults;
@ -63,11 +65,15 @@ public class ComponentDroolsExecutionService {
KieSession kieSession = kieContainer.newKieSession();
ComponentCreationService componentCreationService = new ComponentCreationService(kieSession);
ComponentMappingService componentMappingService = new ComponentMappingService(componentMappingMemoryCache, componentMappings);
RulesLogger logger = new RulesLogger(webSocketService);
RulesLogger logger = new RulesLogger(webSocketService, context);
kieSession.setGlobal("componentCreationService", componentCreationService);
kieSession.setGlobal("logger", logger);
kieSession.setGlobal("context", context);
try {
kieSession.setGlobal("logger", logger);
} catch (RuntimeException e) {
log.warn("Logger is not present");
}
if (hasComponentMappingServiceGlobal(kieSession)) {
kieSession.setGlobal(COMPONENT_MAPPING_SERVICE_GLOBAL, componentMappingService);
@ -103,14 +109,14 @@ public class ComponentDroolsExecutionService {
completableFuture.orTimeout(settings.getDroolsExecutionTimeoutSecs(document.getNumberOfPages()), TimeUnit.SECONDS)
.get();
} catch (ExecutionException e) {
logger.error(context, "Exception during rule execution", e);
logger.error(e, "Exception during rule execution");
kieSession.dispose();
if (e.getCause() instanceof TimeoutException) {
throw new DroolsTimeoutException(e, false, RuleFileType.COMPONENT);
}
throw new RuntimeException(e);
} catch (InterruptedException e) {
logger.error(context, "Exception during rule execution", e);
logger.error(e, "Exception during rule execution");
kieSession.dispose();
throw new RuntimeException(e);
}

View File

@ -10,6 +10,8 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.drools.model.Global;
import org.kie.api.KieBase;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.QueryResults;
@ -95,14 +97,17 @@ public class EntityDroolsExecutionService {
.count() ? Collections.emptySet() : buildSet(sectionsToAnalyze, document);
EntityCreationService entityCreationService = new EntityCreationService(entityEnrichmentService, kieSession, nodesInKieSession);
RulesLogger logger = new RulesLogger(webSocketService);
RulesLogger logger = new RulesLogger(webSocketService, context);
kieSession.setGlobal("document", document);
kieSession.setGlobal("entityCreationService", entityCreationService);
kieSession.setGlobal("manualChangesApplicationService", manualChangesApplicationService);
kieSession.setGlobal("dictionary", dictionary);
kieSession.setGlobal("logger", logger);
kieSession.setGlobal("context", context);
try {
kieSession.setGlobal("logger", logger);
} catch (RuntimeException e) {
log.warn("Logger is not present");
}
kieSession.insert(document);
@ -142,14 +147,14 @@ public class EntityDroolsExecutionService {
completableFuture.orTimeout(settings.getDroolsExecutionTimeoutSecs(document.getNumberOfPages()), TimeUnit.SECONDS)
.get();
} catch (ExecutionException e) {
logger.error(context, "Exception during rule execution", e);
logger.error(e,"Exception during rule execution");
kieSession.dispose();
if (e.getCause() instanceof TimeoutException) {
throw new DroolsTimeoutException(e, false, RuleFileType.ENTITY);
}
throw new RuntimeException(e);
} catch (InterruptedException e) {
logger.error(context, "Exception during rule execution", e);
logger.error(e,"Exception during rule execution");
kieSession.dispose();
throw new RuntimeException(e);
}

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.IEntity;
import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType;
@ -55,7 +54,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.component.Component;
import com.iqser.red.service.redaction.v1.server.model.component.Entity;
@ -32,7 +31,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribu
global ComponentCreationService componentCreationService
global ComponentMappingService componentMappingService
global RulesLogger logger
global Context context
/**
The imports, globals, queries and rules from this file are required for any component rule file.

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -62,7 +61,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
/**
The imports, globals, queries and rules from this file are required for any entity rule file.

View File

@ -40,7 +40,8 @@ class RulesLoggerTest {
void testRulesLogging() {
System.setOut(new PrintStream(outContent));
RulesLogger logger = new RulesLogger(webSocketService);
Context context = new Context("fileId", "dossierId", "dossierTemplateId", 1, 1, "redaction");
RulesLogger logger = new RulesLogger(webSocketService, context);
KieServices ks = KieServices.Factory.get();
KieFileSystem kfs = ks.newKieFileSystem();
@ -52,14 +53,12 @@ class RulesLoggerTest {
KieContainer kContainer = ks.newKieContainer(releaseId);
KieSession kSession = kContainer.newKieSession();
Context context = new Context("fileId", "dossierId", "dossierTemplateId", 1, 1, "redaction");
kSession.setGlobal("logger", logger);
kSession.setGlobal("context", context);
try {
kSession.fireAllRules();
} catch (Exception e) {
logger.error(context, "Exception during rule execution", e);
logger.error(e,"Exception during rule execution");
} finally {
kSession.dispose();
}

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.IEntity;
import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType;
@ -55,7 +54,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.component.Component;
import com.iqser.red.service.redaction.v1.server.model.component.Entity;
@ -32,7 +31,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribu
global ComponentCreationService componentCreationService
global ComponentMappingService componentMappingService
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.component.Component;
import com.iqser.red.service.redaction.v1.server.model.component.Entity;
@ -30,7 +29,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribu
global ComponentCreationService componentCreationService
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.component.Component;
import com.iqser.red.service.redaction.v1.server.model.component.Entity;
@ -30,7 +29,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribu
global ComponentCreationService componentCreationService
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -1,10 +1,8 @@
package drools
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
global RulesLogger logger
global Context context
rule "LOG.0.0: Test log info"
@ -12,7 +10,7 @@ salience 1
when
eval(true)
then
logger.info(context, "This is a test log {}", "placeholder");
logger.info("This is a test log {}", "placeholder");
end
rule "LOG.0.1: Test log warn"
@ -20,7 +18,7 @@ salience 1
when
eval(true)
then
logger.warn(context, "This is a warning log with multiple placeholders {} {} {}", "p1", "p2", "p3");
logger.warn("This is a warning log with multiple placeholders {} {} {}", "p1", "p2", "p3");
end
rule "LOG.0.2: Test log error"

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.document.graph.*;
import com.iqser.red.service.redaction.v1.server.document.graph.nodes.*;
import com.iqser.red.service.redaction.v1.server.document.graph.nodes.Section;
@ -58,7 +57,7 @@ global ManualChangesApplicationService manualChangesApplicationService
global NerEntitiesAdapter nerEntitiesAdapter
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.*;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.*;
@ -63,7 +62,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------

View File

@ -13,7 +13,6 @@ import java.util.stream.Stream;
import java.util.Optional;
import com.iqser.red.service.redaction.v1.server.logger.RulesLogger;
import com.iqser.red.service.redaction.v1.server.logger.Context;
import com.iqser.red.service.redaction.v1.server.model.document.TextRange;
import com.iqser.red.service.redaction.v1.server.model.document.entity.IEntity;
import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType;
@ -55,7 +54,7 @@ global EntityCreationService entityCreationService
global ManualChangesApplicationService manualChangesApplicationService
global Dictionary dictionary
global RulesLogger logger
global Context context
//------------------------------------ queries ------------------------------------