RED-6369: Rules Refactor
* marked entities as resized if a resizeRedaction with same id exists
This commit is contained in:
parent
a2776f24cd
commit
4f3305ecba
@ -139,6 +139,12 @@ public class EntityNode {
|
||||
}
|
||||
|
||||
|
||||
public boolean matchesResizedAnnotationId(String resizedAnnotationId) {
|
||||
|
||||
return getEntityPositionsPerPage().stream().anyMatch(entityPosition -> entityPosition.getId().equals(resizedAnnotationId));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.kie.api.KieServices;
|
||||
@ -20,6 +21,7 @@ import org.kie.api.runtime.rule.QueryResultsRow;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribute;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
||||
import com.iqser.red.service.redaction.v1.server.client.RulesClient;
|
||||
import com.iqser.red.service.redaction.v1.server.document.graph.DocumentGraph;
|
||||
import com.iqser.red.service.redaction.v1.server.document.graph.nodes.SectionNode;
|
||||
@ -58,7 +60,11 @@ public class DroolsExecutionService {
|
||||
|
||||
|
||||
@Timed("redactmanager_executeRules")
|
||||
public List<FileAttribute> executeRules(KieContainer kieContainer, DocumentGraph document, Dictionary dictionary, List<FileAttribute> fileAttributes) {
|
||||
public List<FileAttribute> executeRules(KieContainer kieContainer,
|
||||
DocumentGraph document,
|
||||
Dictionary dictionary,
|
||||
List<FileAttribute> fileAttributes,
|
||||
Set<ManualResizeRedaction> resizeRedactions) {
|
||||
|
||||
KieSession kieSession = kieContainer.newKieSession();
|
||||
kieSession.setGlobal("document", document);
|
||||
@ -69,6 +75,7 @@ public class DroolsExecutionService {
|
||||
document.getTableOfContents().streamAllEntriesInOrder().forEach(entry -> kieSession.insert(entry.getNode()));
|
||||
document.getPages().forEach(kieSession::insert);
|
||||
fileAttributes.forEach(kieSession::insert);
|
||||
resizeRedactions.forEach(kieSession::insert);
|
||||
|
||||
kieSession.getAgenda().getAgendaGroup("LOCAL_DICTIONARY_ADDS").setFocus();
|
||||
kieSession.fireAllRules();
|
||||
@ -82,7 +89,8 @@ public class DroolsExecutionService {
|
||||
DocumentGraph document,
|
||||
List<SectionNode> sectionsToReanalyze,
|
||||
Dictionary dictionary,
|
||||
List<FileAttribute> fileAttributes) {
|
||||
List<FileAttribute> fileAttributes,
|
||||
Set<ManualResizeRedaction> resizeRedactions) {
|
||||
|
||||
KieSession kieSession = kieContainer.newKieSession();
|
||||
kieSession.setGlobal("document", document);
|
||||
@ -90,9 +98,11 @@ public class DroolsExecutionService {
|
||||
kieSession.setGlobal("dictionary", dictionary);
|
||||
|
||||
document.getEntities().forEach(kieSession::insert);
|
||||
sectionsToReanalyze.forEach(kieSession::insert);
|
||||
sectionsToReanalyze.stream().flatMap(SemanticNode::streamAllSubNodes).forEach(kieSession::insert);
|
||||
document.getPages().forEach(kieSession::insert);
|
||||
fileAttributes.forEach(kieSession::insert);
|
||||
resizeRedactions.forEach(kieSession::insert);
|
||||
|
||||
kieSession.getAgenda().getAgendaGroup("LOCAL_DICTIONARY_ADDS").setFocus();
|
||||
kieSession.fireAllRules();
|
||||
|
||||
@ -185,7 +185,12 @@ public class AnalyzeService {
|
||||
|
||||
KieContainer kieContainer = droolsExecutionService.updateRules(analyzeRequest.getDossierTemplateId());
|
||||
|
||||
Set<FileAttribute> addedFileAttributes = entityRedactionService.addRuleEntities(dictionary, documentGraph, sectionsToReAnalyse, kieContainer, analyzeRequest, nerEntities);
|
||||
Set<FileAttribute> addedFileAttributes = entityRedactionService.addRuleEntitiesToGraphAndReturnAddedFileAttributes(dictionary,
|
||||
documentGraph,
|
||||
sectionsToReAnalyse,
|
||||
kieContainer,
|
||||
analyzeRequest,
|
||||
nerEntities);
|
||||
|
||||
List<RedactionLogEntry> newRedactionLogEntries = redactionLogCreatorService.createRedactionLog(documentGraph.getEntities(), analyzeRequest.getDossierTemplateId());
|
||||
|
||||
@ -220,7 +225,11 @@ public class AnalyzeService {
|
||||
Dictionary dictionary = dictionaryService.getDeepCopyDictionary(analyzeRequest.getDossierTemplateId(), analyzeRequest.getDossierId());
|
||||
|
||||
entityRedactionService.addDictionaryEntities(dictionary, documentGraph);
|
||||
Set<FileAttribute> addedFileAttributes = entityRedactionService.addRuleEntities(dictionary, documentGraph, kieContainer, analyzeRequest, nerEntities);
|
||||
Set<FileAttribute> addedFileAttributes = entityRedactionService.addRuleEntitiesToGraphAndReturnAddedFileAttributes(dictionary,
|
||||
documentGraph,
|
||||
kieContainer,
|
||||
analyzeRequest,
|
||||
nerEntities);
|
||||
|
||||
List<RedactionLogEntry> redactionLogEntries = redactionLogCreatorService.createRedactionLog(documentGraph.getEntities(), analyzeRequest.getDossierTemplateId());
|
||||
|
||||
|
||||
@ -33,29 +33,34 @@ public class EntityRedactionService {
|
||||
EntityCreationService entityCreationService;
|
||||
|
||||
|
||||
public Set<FileAttribute> addRuleEntities(Dictionary dictionary,
|
||||
DocumentGraph documentGraph,
|
||||
KieContainer kieContainer,
|
||||
AnalyzeRequest analyzeRequest,
|
||||
NerEntities nerEntities) {
|
||||
public Set<FileAttribute> addRuleEntitiesToGraphAndReturnAddedFileAttributes(Dictionary dictionary,
|
||||
DocumentGraph documentGraph,
|
||||
KieContainer kieContainer,
|
||||
AnalyzeRequest analyzeRequest,
|
||||
NerEntities nerEntities) {
|
||||
|
||||
List<FileAttribute> allFileAttributes = droolsExecutionService.executeRules(kieContainer, documentGraph, dictionary, analyzeRequest.getFileAttributes());
|
||||
List<FileAttribute> allFileAttributes = droolsExecutionService.executeRules(kieContainer,
|
||||
documentGraph,
|
||||
dictionary,
|
||||
analyzeRequest.getFileAttributes(),
|
||||
analyzeRequest.getManualRedactions().getResizeRedactions());
|
||||
return allFileAttributes.stream().filter(fileAttribute -> !analyzeRequest.getFileAttributes().contains(fileAttribute)).collect(Collectors.toUnmodifiableSet());
|
||||
}
|
||||
|
||||
|
||||
public Set<FileAttribute> addRuleEntities(Dictionary dictionary,
|
||||
DocumentGraph documentGraph,
|
||||
List<SectionNode> sectionsToReanalyze,
|
||||
KieContainer kieContainer,
|
||||
AnalyzeRequest analyzeRequest,
|
||||
NerEntities nerEntities) {
|
||||
public Set<FileAttribute> addRuleEntitiesToGraphAndReturnAddedFileAttributes(Dictionary dictionary,
|
||||
DocumentGraph documentGraph,
|
||||
List<SectionNode> sectionsToReanalyze,
|
||||
KieContainer kieContainer,
|
||||
AnalyzeRequest analyzeRequest,
|
||||
NerEntities nerEntities) {
|
||||
|
||||
List<FileAttribute> allFileAttributes = droolsExecutionService.executeRules(kieContainer,
|
||||
documentGraph,
|
||||
sectionsToReanalyze,
|
||||
dictionary,
|
||||
analyzeRequest.getFileAttributes());
|
||||
analyzeRequest.getFileAttributes(),
|
||||
analyzeRequest.getManualRedactions().getResizeRedactions());
|
||||
return allFileAttributes.stream().filter(fileAttribute -> !analyzeRequest.getFileAttributes().contains(fileAttribute)).collect(Collectors.toUnmodifiableSet());
|
||||
}
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlo
|
||||
import com.iqser.red.service.redaction.v1.server.document.services.EntityCreationService;
|
||||
import com.iqser.red.service.redaction.v1.server.redaction.model.dictionary.Dictionary;
|
||||
import com.iqser.red.service.redaction.v1.server.redaction.model.dictionary.DictionaryModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
||||
|
||||
global DocumentGraph document
|
||||
global EntityCreationService entityCreationService
|
||||
@ -31,6 +32,19 @@ query "getFileAttributes"
|
||||
$fileAttribute: FileAttribute()
|
||||
end
|
||||
|
||||
// --------------------------------------- apply resize redactions -------------------------------------------------------------------
|
||||
|
||||
rule "apply resize redactions"
|
||||
salience 200
|
||||
no-loop true
|
||||
|
||||
when
|
||||
$resizeRedaction: ManualResizeRedaction($id: annotationId)
|
||||
$resizedEntity: EntityNode(matchesResizedAnnotationId($id))
|
||||
then
|
||||
$resizedEntity.setResized(true);
|
||||
update($resizedEntity);
|
||||
end
|
||||
// --------------------------------------- merging rules -------------------------------------------------------------------
|
||||
|
||||
rule "merge intersecting Entities of same type"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user