Réalisation indexer en cours

This commit is contained in:
Nicolas Héron 2019-01-29 20:22:39 +01:00
commit 7798189414
16 changed files with 440 additions and 36 deletions

View file

@ -1,14 +1,18 @@
package org.chtijbug.drools.indexer.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.chtijbug.drools.SessionContext;
import org.chtijbug.drools.indexer.persistence.model.BusinessTransactionAction;
import org.chtijbug.drools.indexer.persistence.model.BusinessTransactionPersistence;
import org.chtijbug.drools.indexer.persistence.model.EventType;
import org.chtijbug.drools.indexer.persistence.repository.BusinessTransactionActionRepository;
import org.chtijbug.drools.indexer.persistence.repository.BusinessTransactionPersistenceRepository;
import org.chtijbug.drools.logging.SessionExecution;
import org.chtijbug.drools.logging.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.UUID;
import java.util.*;
@Service("storeService")
public class StoreLoggingService {
@ -16,8 +20,10 @@ public class StoreLoggingService {
ObjectMapper mapper = new ObjectMapper();
@Autowired
private BusinessTransactionPersistenceRepository repository;
private BusinessTransactionPersistenceRepository transactionRepository;
@Autowired
private BusinessTransactionActionRepository actionRepository;
public void store(String fileName, String fileContent) {
if (fileName!= null) {
@ -40,16 +46,116 @@ public class StoreLoggingService {
item.setSecond(second);
item.setMillis(millis);
item.setTransactionId(id);
item.setId(UUID.randomUUID().toString());
long ii=1;
try {
SessionExecution object = mapper.readValue(fileContent,SessionExecution.class);
SessionContext sessionContext = mapper.readValue(fileContent,SessionContext.class);
item.setContainerId(sessionContext.getContainerId());
item.setGroupID(sessionContext.getGroupID());
item.setArtefactID(sessionContext.getArtefactID());
item.setVersion(sessionContext.getVersion());
item.setContent(object);
item.setServerName(sessionContext.getServerName());
Map<Long, BusinessTransactionAction> actions = new HashMap<>();
SessionExecution sessionExecution = sessionContext.getSessionExecution();
BusinessTransactionAction businessTransactionoutput=null;
for (Fact fact : sessionExecution.getFacts()){
BusinessTransactionAction businessTransactionAction = new BusinessTransactionAction();
businessTransactionAction.setId(UUID.randomUUID().toString());
businessTransactionAction.setBusinessTransactionId(item.getId());
if (fact.getFactType().equals(FactType.INPUTDATA)){
businessTransactionAction.setEventType(EventType.INPUT);
businessTransactionAction.setInputData(fact);
businessTransactionAction.setEventNumber(0);
actions.put(businessTransactionAction.getEventNumber(),businessTransactionAction);
}else if (fact.getFactType().equals(FactType.OUTPUTDATA)){
businessTransactionAction.setEventType(EventType.OUPUT);
businessTransactionAction.setOutputData(fact);
businessTransactionoutput=businessTransactionAction;
}else if (fact.getFactType().equals(FactType.INSERTED)){
businessTransactionAction.setEventType(EventType.INSERTFACT);
businessTransactionAction.setFact(fact);
businessTransactionAction.setEventNumber(ii++);
actions.put(businessTransactionAction.getEventNumber(),businessTransactionAction);
} else if (fact.getFactType().equals(FactType.UPDATED_NEWVALUE)){
businessTransactionAction.setEventType(EventType.UPDATEFACTNEWVALUE);
businessTransactionAction.setFact(fact);
businessTransactionAction.setEventNumber(ii++);
actions.put(businessTransactionAction.getEventNumber(),businessTransactionAction);
}else if (fact.getFactType().equals(FactType.UPDATED_OLDVALUE)){
businessTransactionAction.setEventType(EventType.UPDATEFACTOLDVALUE);
businessTransactionAction.setFact(fact);
businessTransactionAction.setEventNumber(ii++);
actions.put(businessTransactionAction.getEventNumber(),businessTransactionAction);
}else if (fact.getFactType().equals(FactType.DELETED)){
businessTransactionAction.setEventType(EventType.RETRACTFACT);
businessTransactionAction.setFact(fact);
businessTransactionAction.setEventNumber(ii++);
actions.put(businessTransactionAction.getEventNumber(),businessTransactionAction);
}
}
for (ProcessExecution processExecution : sessionExecution.getProcessExecutions()){
BusinessTransactionAction businessTransactionActionStart = new BusinessTransactionAction();
businessTransactionActionStart.setEventType(EventType.STARTPROCESS);
businessTransactionActionStart.setProcessID(processExecution.getProcessId());
businessTransactionActionStart.setBusinessTransactionId(item.getId());
businessTransactionActionStart.setEventNumber(ii++);
actions.put(businessTransactionActionStart.getEventNumber(),businessTransactionActionStart);
for (RuleflowGroup rfg : processExecution.getRuleflowGroups()){
BusinessTransactionAction businessTransactionActionStartRFG = new BusinessTransactionAction();
businessTransactionActionStartRFG.setBusinessTransactionId(item.getId());
businessTransactionActionStartRFG.setEventType(EventType.STARTRULEFLOWGROUP);
businessTransactionActionStartRFG.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionStartRFG.setEventNumber(ii++);
actions.put(businessTransactionActionStartRFG.getEventNumber(),businessTransactionActionStartRFG);
for (RuleExecution ruleExecution : rfg.getRuleExecutionList()){
BusinessTransactionAction businessTransactionActionRule = new BusinessTransactionAction();
businessTransactionActionRule.setEventType(EventType.RULE);
businessTransactionActionRule.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionRule.setRuleExecution(ruleExecution);
businessTransactionActionRule.setBusinessTransactionId(item.getId());
businessTransactionActionRule.setProcessID(processExecution.getProcessId());
businessTransactionActionRule.setEventNumber(ii++);
actions.put(businessTransactionActionRule.getEventNumber(),businessTransactionActionRule);
}
BusinessTransactionAction businessTransactionActionSTOPRFG = new BusinessTransactionAction();
businessTransactionActionSTOPRFG.setEventType(EventType.STOPTRULEFLOWGROUP);
businessTransactionActionSTOPRFG.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionSTOPRFG.setBusinessTransactionId(item.getId());
businessTransactionActionSTOPRFG.setEventNumber(ii++);
actions.put(businessTransactionActionSTOPRFG.getEventNumber(),businessTransactionActionSTOPRFG);
}
BusinessTransactionAction businessTransactionActionEnd = new BusinessTransactionAction();
businessTransactionActionEnd.setEventType(EventType.STOPPROCESS);
businessTransactionActionEnd.setProcessID(processExecution.getProcessId());
businessTransactionActionEnd.setBusinessTransactionId(item.getId());
businessTransactionActionEnd.setEventNumber(ii++);
actions.put(businessTransactionActionEnd.getEventNumber(),businessTransactionActionEnd);
}
if (businessTransactionoutput!= null) {
businessTransactionoutput.setEventNumber(ii++);
actions.put(businessTransactionoutput.getEventNumber(), businessTransactionoutput);
}
List<Long> keys = new ArrayList<Long>(actions.keySet());
Collections.sort(keys);
List<BusinessTransactionAction> sortedList= new LinkedList<>();
for (Long i : keys){
sortedList.add(actions.get(i));
}
transactionRepository.save(item);
actionRepository.saveAll(sortedList);
} catch (IOException e) {
e.printStackTrace();
}
item.setContent(fileContent);
item.setId(UUID.randomUUID().toString());
repository.save(item);
//item.setContent(fileContent);
// repository.save(item);
}
System.out.println("coucou");

View file

@ -89,5 +89,14 @@
<orderEntry type="library" name="Maven: org.elasticsearch:jna:4.5.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.7" level="project" />
<orderEntry type="module" module-name="drools-framework-runtime-entity" />
<orderEntry type="module" module-name="drools-framework-common" />
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:13.0.1" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.1" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:7.16.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:7.16.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.kie.soup:kie-soup-maven-support:7.16.0.Final" level="project" />
</component>
</module>

View file

@ -43,6 +43,11 @@
<version>2.9.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-runtime-entity</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,136 @@
package org.chtijbug.drools.indexer.persistence.model;
import org.chtijbug.drools.logging.Fact;
import org.chtijbug.drools.logging.RuleExecution;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Document(indexName = "droolsaction", type = "droolsAction")
public class BusinessTransactionAction {
@Id
private String id;
@Field(type = FieldType.Text)
private EventType eventType;
private long eventNumber;
private String businessTransactionId;
@Field(type = FieldType.Object, includeInParent = true)
private Fact inputData;
@Field(type = FieldType.Object, includeInParent = true)
private Fact outputData;
@Field(type = FieldType.Object, includeInParent = true)
private RuleExecution ruleExecution;
@Field(type = FieldType.Object, includeInParent = true)
private Fact fact;
private String processID;
private String ruleflowGroupName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public EventType getEventType() {
return eventType;
}
public void setEventType(EventType eventType) {
this.eventType = eventType;
}
public long getEventNumber() {
return eventNumber;
}
public void setEventNumber(long eventNumber) {
this.eventNumber = eventNumber;
}
public String getBusinessTransactionId() {
return businessTransactionId;
}
public void setBusinessTransactionId(String businessTransactionId) {
this.businessTransactionId = businessTransactionId;
}
public Fact getInputData() {
return inputData;
}
public void setInputData(Fact inputData) {
this.inputData = inputData;
}
public Fact getOutputData() {
return outputData;
}
public void setOutputData(Fact outputData) {
this.outputData = outputData;
}
public RuleExecution getRuleExecution() {
return ruleExecution;
}
public void setRuleExecution(RuleExecution ruleExecution) {
this.ruleExecution = ruleExecution;
}
public String getProcessID() {
return processID;
}
public void setProcessID(String processID) {
this.processID = processID;
}
public String getRuleflowGroupName() {
return ruleflowGroupName;
}
public void setRuleflowGroupName(String ruleflowGroupName) {
this.ruleflowGroupName = ruleflowGroupName;
}
public Fact getFact() {
return fact;
}
public void setFact(Fact fact) {
this.fact = fact;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("BusinessTransactionAction{");
sb.append("id='").append(id).append('\'');
sb.append(", eventType=").append(eventType);
sb.append(", eventNumber=").append(eventNumber);
sb.append(", businessTransactionId='").append(businessTransactionId).append('\'');
sb.append(", inputData=").append(inputData);
sb.append(", outputData=").append(outputData);
sb.append(", ruleExecution=").append(ruleExecution);
sb.append(", fact=").append(fact);
sb.append(", processID='").append(processID).append('\'');
sb.append(", ruleflowGroupName='").append(ruleflowGroupName).append('\'');
sb.append('}');
return sb.toString();
}
}

View file

@ -4,25 +4,39 @@ package org.chtijbug.drools.indexer.persistence.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Document(indexName = "droolshistory", type = "loggingDrools")
@Document(indexName = "droolstransaction", type = "droolsTransaction")
public class BusinessTransactionPersistence {
@Id
private String id;
private String transactionId;
private Integer year ;
private Integer month ;
private Integer day ;
private Integer hour ;
private Integer year;
private Integer month;
private Integer day;
private Integer hour;
private Integer minute;
private Integer second ;
private Integer millis ;
// @Field( type = FieldType.Object)
private Object content;
private Integer second;
private Integer millis;
private String groupID;
private String artefactID;
private String version;
private String containerId;
private String serverName;
public String getId() {
return id;
@ -96,11 +110,45 @@ public class BusinessTransactionPersistence {
this.millis = millis;
}
public Object getContent() {
return content;
public String getGroupID() {
return groupID;
}
public void setContent(Object content) {
this.content = content;
public void setGroupID(String groupID) {
this.groupID = groupID;
}
public String getArtefactID() {
return artefactID;
}
public void setArtefactID(String artefactID) {
this.artefactID = artefactID;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
}

View file

@ -0,0 +1,5 @@
package org.chtijbug.drools.indexer.persistence.model;
public enum EventType {
INPUT,OUPUT,INSERTFACT, UPDATEFACTOLDVALUE, UPDATEFACTNEWVALUE,RETRACTFACT,RULE,STARTPROCESS,STOPPROCESS, STARTRULEFLOWGROUP,STOPTRULEFLOWGROUP
}

View file

@ -0,0 +1,9 @@
package org.chtijbug.drools.indexer.persistence.repository;
import org.chtijbug.drools.indexer.persistence.model.BusinessTransactionAction;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface BusinessTransactionActionRepository extends ElasticsearchRepository<BusinessTransactionAction,String> {
}

View file

@ -72,7 +72,6 @@ public class RuleService {
* remove facts from logging to avoid infinite loop when marshalling to json and size of logging
*/
SessionExecution sessionExecution = chtijbutObjectResponse.getSessionLogging().getSessionExecution();
sessionExecution.getFacts().clear();
if (kieServerAddOnElement != null) {
for (KieServerLoggingDefinition kieServerLoggingDefinition : kieServerAddOnElement.getKieServerLoggingDefinitions()) {