work in progress

This commit is contained in:
Nicolas Héron 2023-12-25 00:38:07 +01:00
commit c1808d7e9b
41 changed files with 349 additions and 393 deletions

View file

@ -4,8 +4,11 @@
name: Maven Package name: Maven Package
on: on:
release: push:
types: [created] branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs: jobs:
build: build:
@ -21,6 +24,17 @@ jobs:
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file settings-path: ${{ github.workspace }} # location for the settings.xml file
- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=pymma_pymma-kie-platform
- name: Build with Maven - name: Build with Maven
run: mvn -B package --file pom.xml run: mvn -B package --file pom.xml

View file

@ -145,6 +145,12 @@
<dependency> <dependency>
<groupId>com.vaadin</groupId> <groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId> <artifactId>vaadin-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.vaadin.olli</groupId> <groupId>org.vaadin.olli</groupId>

View file

@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.boot.web.servlet.MultipartConfigFactory;
@ -20,10 +21,12 @@ import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
@ -38,13 +41,15 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.servlet.MultipartConfigElement; import javax.servlet.MultipartConfigElement;
@Configuration //@Configuration
@SpringBootApplication @SpringBootApplication
@EnableJpaRepositories("org.chtijbug.drools.proxy.persistence.repository") @Configuration
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@ComponentScan({"org.chtijbug"})
@EntityScan("org.chtijbug.drools.proxy.persistence.model")
@PropertySource("classpath:application.properties") @PropertySource("classpath:application.properties")
@EnableSwagger2
@EnableScheduling
@EnableTransactionManagement @EnableTransactionManagement
@EnableJms
public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer { public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer {
@ -57,8 +62,8 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
private ActiveMQXAConnectionFactory connectionFactory; private ActiveMQXAConnectionFactory connectionFactory;
@Autowired //@Autowired
private DababaseContentUpdate dababaseContentUpdate; //private DababaseContentUpdate dababaseContentUpdate;
@Autowired @Autowired
private KieBusinessCentralConnector kieBusinessCentralConnector; private KieBusinessCentralConnector kieBusinessCentralConnector;
@Autowired @Autowired
@ -83,7 +88,6 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
} }
@Bean @Bean
public MultipartConfigElement multipartConfigElement() { public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory(); MultipartConfigFactory factory = new MultipartConfigFactory();
@ -132,58 +136,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
return jmsTemplate; return jmsTemplate;
} }
@EventListener(ApplicationReadyEvent.class)
public void initPlatform(){
dababaseContentUpdate.initDatabaseIfNecessary();
/**
for (KieWorkbench kieWorkbench: kieWorkbenchRepository.findAll()) {
Map<String, KieContainerResource> kies = new HashMap<>();
KieServerSetup kieServerSetup = kieBusinessCentralConnector.connectToBusinessCentral("nheron", "adminnheron00@", kieWorkbench.getName(),kieWorkbench.getExternalUrl());
if (kieServerSetup != null && kieServerSetup.getContainers() != null) {
for (KieContainerResource kieContainerResource : kieServerSetup.getContainers()) {
kies.put(kieContainerResource.getContainerId(), kieContainerResource);
}
}
List<ProjectPersist> projectRepositories = projectRepository.findByKieWorkbench(kieWorkbench);
if (!projectRepositories.isEmpty()){
for (ProjectPersist projectPersist : projectRepository.findAll()) {
if (projectPersist.getServerNames().size() > 0) {
if (!kies.containsKey(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion())) {
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@", projectPersist,kieWorkbench.getExternalUrl());
} else {
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@", projectPersist, kies.get(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion()),kieWorkbench.getExternalUrl());
}
}
}
}
/**
for (ProjectPersist projectPersist : projectRepository.findAll()) {
if (projectPersist.getServerNames().size() > 0) {
if (!kies.containsKey(projectPersist.getContainerID())) {
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@", projectPersist);
} else {
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@", projectPersist, kies.get(projectPersist.getContainerID()));
}
}
}
ServerInstanceKeyList serverInstanceKeyList = kieBusinessCentralConnector.getListInstances("nheron", "adminnheron00@");
if (serverInstanceKeyList != null) {
for (ServerInstanceKey serverInstanceKey : serverInstanceKeyList.getServerInstanceKeys()) {
String serverInstanceId = serverInstanceKey.getServerInstanceId();
ContainerList containerList = kieBusinessCentralConnector.getListContainers("nheron", "adminnheron00@", serverInstanceId);
System.out.println("coucou");
for (Container container : containerList.getContainers()) {
}
}
System.out.println("coucou");
}
System.out.println("coucou");
}
**/
}
@Bean @Bean
public Docket api() { public Docket api() {

View file

@ -14,6 +14,8 @@ import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLP
import org.drools.workbench.models.guided.template.shared.TemplateModel; import org.drools.workbench.models.guided.template.shared.TemplateModel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -248,5 +250,56 @@ public class DababaseContentUpdate {
} }
} }
@EventListener(ApplicationReadyEvent.class)
public void initPlatform(){
this.initDatabaseIfNecessary();
/**
for (KieWorkbench kieWorkbench: kieWorkbenchRepository.findAll()) {
Map<String, KieContainerResource> kies = new HashMap<>();
KieServerSetup kieServerSetup = kieBusinessCentralConnector.connectToBusinessCentral("nheron", "adminnheron00@", kieWorkbench.getName(),kieWorkbench.getExternalUrl());
if (kieServerSetup != null && kieServerSetup.getContainers() != null) {
for (KieContainerResource kieContainerResource : kieServerSetup.getContainers()) {
kies.put(kieContainerResource.getContainerId(), kieContainerResource);
}
}
List<ProjectPersist> projectRepositories = projectRepository.findByKieWorkbench(kieWorkbench);
if (!projectRepositories.isEmpty()){
for (ProjectPersist projectPersist : projectRepository.findAll()) {
if (projectPersist.getServerNames().size() > 0) {
if (!kies.containsKey(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion())) {
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@", projectPersist,kieWorkbench.getExternalUrl());
} else {
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@", projectPersist, kies.get(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion()),kieWorkbench.getExternalUrl());
}
}
}
}
/**
for (ProjectPersist projectPersist : projectRepository.findAll()) {
if (projectPersist.getServerNames().size() > 0) {
if (!kies.containsKey(projectPersist.getContainerID())) {
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@", projectPersist);
} else {
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@", projectPersist, kies.get(projectPersist.getContainerID()));
}
}
}
ServerInstanceKeyList serverInstanceKeyList = kieBusinessCentralConnector.getListInstances("nheron", "adminnheron00@");
if (serverInstanceKeyList != null) {
for (ServerInstanceKey serverInstanceKey : serverInstanceKeyList.getServerInstanceKeys()) {
String serverInstanceId = serverInstanceKey.getServerInstanceId();
ContainerList containerList = kieBusinessCentralConnector.getListContainers("nheron", "adminnheron00@", serverInstanceId);
System.out.println("coucou");
for (Container container : containerList.getContainers()) {
} }
}
System.out.println("coucou");
}
System.out.println("coucou");
}
**/
}
}

View file

@ -15,7 +15,9 @@ import org.chtijbug.guvnor.server.jaxrs.model.WorkspaceAuthData;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.DependsOn;
import org.springframework.context.event.EventListener;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;

View file

@ -11,13 +11,13 @@ org.kie.server.controller=${PYMMA_KIE_CONTROLLER:http://localhost:18080/kie-wb/r
org.kie.server.location=${PYMMA_KIE_LOCATION:http://localhost:8200/api/server} org.kie.server.location=${PYMMA_KIE_LOCATION:http://localhost:8200/api/server}
org.kie.server.id=${PYMMA_KIE_SERVER_ID:pymmaConsole2} org.kie.server.id=${PYMMA_KIE_SERVER_ID:pymmaConsole2}
almady.jms.url=tcp://localhost:1617
spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev} spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev}
almady.jms.url=tcp://localhost:1617 spring.jpa.properties.hibernate.dialect= org.chtijbug.drools.proxy.persistence.dialect.JSONBPostgreSQLDialect
spring.datasource.username=${PYMMA_DATABASE_USER:kiedev} spring.datasource.username=${PYMMA_DATABASE_USER:kiedev}
spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev} spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev}
spring.jpa.hibernate.ddl-auto=update
spring.servlet.multipart.enabled=false spring.servlet.multipart.enabled=false
kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094} kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094}
@ -36,6 +36,6 @@ spring.servlet.multipart.max-request-size=100MB
# Server properties # Server properties
server.tomcat.max-http-post-size=100000000 server.tomcat.max-http-post-size=100000000
server.tomcat.max-swallow-size=100MB server.tomcat.max-swallow-size=100MB
spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
springfox.documentation.auto-startup= false
secretkey=eRaYY7Wo24sDqKSX3IM9ASGmdGPmkTd9jo1QTy4b7P9Ze5_9hKolVX8xNrQDcNRfVEdTZNOuOyqEGhXEbdJI-ZQ19k_o9MI0y3eZN2lp9jow55FfXMiINEdt1XR85VipRLSOkT6kSpzs2x-jbLDiz9iFVzkd81YKxMgPA7VfZeQUm4n-mOmnWMaVX30zGFU4L3oPBctYKkl4dYfqYWqRNfrgPJVi5DGFjywgxx0ASEiJHtV72paI3fDR2XwlSkyhhmY-ICjCRmsJN4fX1pdoL8a18-aQrvyu4j0Os6dVPYIoPvvY0SAZtWYKHfM15g7A3HD4cVREf9cUsprCRK93w secretkey=eRaYY7Wo24sDqKSX3IM9ASGmdGPmkTd9jo1QTy4b7P9Ze5_9hKolVX8xNrQDcNRfVEdTZNOuOyqEGhXEbdJI-ZQ19k_o9MI0y3eZN2lp9jow55FfXMiINEdt1XR85VipRLSOkT6kSpzs2x-jbLDiz9iFVzkd81YKxMgPA7VfZeQUm4n-mOmnWMaVX30zGFU4L3oPBctYKkl4dYfqYWqRNfrgPJVi5DGFjywgxx0ASEiJHtV72paI3fDR2XwlSkyhhmY-ICjCRmsJN4fX1pdoL8a18-aQrvyu4j0Os6dVPYIoPvvY0SAZtWYKHfM15g7A3HD4cVREf9cUsprCRK93w

View file

@ -0,0 +1,17 @@
package org.chtijbug.drools.console.dto;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class VariableDataList {
private List<VariableData> rows = new ArrayList<>();
public List<VariableData> getRows() {
return rows;
}
public void setRows(List<VariableData> rows) {
this.rows = rows;
}
}

View file

@ -0,0 +1,16 @@
package org.chtijbug.drools.console.dto;
import java.util.ArrayList;
import java.util.List;
public class VariableDefinitionList {
private List<VariableDefinition> variables = new ArrayList<>();
public List<VariableDefinition> getVariables() {
return variables;
}
public void setVariables(List<VariableDefinition> variables) {
this.variables = variables;
}
}

View file

@ -38,6 +38,11 @@
<artifactId>joda-time</artifactId> <artifactId>joda-time</artifactId>
<version>1.6.2</version> <version>1.6.2</version>
</dependency> </dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View file

@ -1,11 +1,12 @@
package org.chtijbug.drools; package org.chtijbug.drools;
import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
* Created by nheron on 07/07/2016. * Created by nheron on 07/07/2016.
*/ */
public class ChtijbugObjectRequest { public class ChtijbugObjectRequest implements Serializable {
private String transactionID; private String transactionID;

View file

@ -0,0 +1,25 @@
package org.chtijbug.drools.jms;
import org.chtijbug.drools.ChtijbugObjectRequest;
import org.springframework.jms.core.MessageCreator;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.Session;
public class ChtijbugObjectRequestMessageCreator implements MessageCreator {
private ChtijbugObjectRequest chtijbugObjectRequest;
public ChtijbugObjectRequestMessageCreator(ChtijbugObjectRequest chtijbugObjectRequest) {
this.chtijbugObjectRequest = chtijbugObjectRequest;
}
@Override
public Message createMessage(Session session) throws JMSException {
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(chtijbugObjectRequest);
return objectMessage;
}
}

View file

@ -19,7 +19,6 @@ public class ReverseProxyMessageCreator implements MessageCreator {
@Override @Override
public Message createMessage(Session session) throws JMSException { public Message createMessage(Session session) throws JMSException {
ObjectMessage objectMessage = session.createObjectMessage(); ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(reverseProxyUpdate); objectMessage.setObject(reverseProxyUpdate);
return objectMessage; return objectMessage;
} }

View file

@ -40,18 +40,6 @@
<artifactId>activemq-broker</artifactId> <artifactId>activemq-broker</artifactId>
<version>${activemq.version}</version> <version>${activemq.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>${kafka.version}</version>
</dependency>
<!-- kie-server -->
<!--dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId> <artifactId>spring-boot-starter-actuator</artifactId>

View file

@ -16,34 +16,30 @@
*/ */
package org.chtijbug.drools.indexer; package org.chtijbug.drools.indexer;
import org.apache.activemq.ActiveMQXAConnectionFactory; import org.apache.activemq.ActiveMQXAConnectionFactory;;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.config.SslConfigs;
import org.apache.kafka.common.security.auth.SecurityProtocol;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.chtijbug.drools.ChtijbugObjectRequest;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.JmsTemplate;
import org.springframework.kafka.annotation.EnableKafka; import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.support.serializer.JsonDeserializer;
import java.util.HashMap;
import java.util.Map;
// CHECKSTYLE:OFF // CHECKSTYLE:OFF
@SpringBootApplication @SpringBootApplication
@Configuration @Configuration
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository") @EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@ComponentScan({"org.chtijbug"})
@EntityScan("org.chtijbug.drools.proxy.persistence.model")
@PropertySource("classpath:application.properties")
@EnableTransactionManagement
@EnableJms
public class DroolsBusinessIndexerServer { public class DroolsBusinessIndexerServer {
public final static String LOGING_TOPIC ="logging"; public final static String LOGING_TOPIC ="logging";
@ -52,6 +48,18 @@ public class DroolsBusinessIndexerServer {
private JmsTemplate jmsTemplate; private JmsTemplate jmsTemplate;
private ActiveMQXAConnectionFactory connectionFactory; private ActiveMQXAConnectionFactory connectionFactory;
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
DefaultJmsListenerContainerFactory factory
= new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
@Bean(name = "jmsTemplate") @Bean(name = "jmsTemplate")
JmsTemplate createJmsTemplate() { JmsTemplate createJmsTemplate() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl); connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
@ -65,7 +73,6 @@ public class DroolsBusinessIndexerServer {
* Main method to start the application. * Main method to start the application.
*/ */
public static void main(String[] args) { public static void main(String[] args) {
System.setProperty(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, "41943040");
SpringApplication.run(DroolsBusinessIndexerServer.class, args); SpringApplication.run(DroolsBusinessIndexerServer.class, args);
} }

View file

@ -13,7 +13,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.annotation.JmsListener;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -30,7 +29,7 @@ public class StoreLoggingService {
private BusinessTransactionActionRepository actionRepository; private BusinessTransactionActionRepository actionRepository;
@JmsListener(destination = KafkaTopicConstants.LOGING_TOPIC) @JmsListener(destination = KafkaTopicConstants.LOGING_TOPIC,containerFactory = "jmsListenerContainerFactory")
public void store(ChtijbugObjectRequest result) { public void store(ChtijbugObjectRequest result) {
if (result != null) { if (result != null) {

View file

@ -1,20 +1,14 @@
kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094} server.port=${port:5547}
kieserver.login=${PYMMA_KIE_SERVEUR_LOGIN:kieserver} kieserver.login=${PYMMA_KIE_SERVEUR_LOGIN:kieserver}
kieserver.password=${PYMMA_KIE_SERVEUR_PASSWORD:kieserver1} kieserver.password=${PYMMA_KIE_SERVEUR_PASSWORD:kieserver1}
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev}
almady.jms.url=tcp://localhost:1617 almady.jms.url=tcp://localhost:1617
spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev}
spring.datasource.username=${PYMMA_DATABASE_USER:kiedev} spring.datasource.username=${PYMMA_DATABASE_USER:kiedev}
spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev} spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev}
spring.jpa.properties.hibernate.dialect= org.chtijbug.drools.proxy.persistence.dialect.JSONBPostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
server.port=${port:5547}
pymma.kafka.activateSsl=${PYMMA_KAFKA_ACTIVATE_SSL:false}
pymma.kafka.sslTruststoreLocation=${PYMMA_KAFKA_SSL_TRUSTSTORE_LOCATION:}
pymma.kafka.sslTruststorePassword=${PYMMA_KAFKA_SSL_TRUSTSTORE_PASSWORD:}
pymma.kafka.sslKeyPassword=${PYMMA_KAFKA_KEY_PASSWORD:}
pymma.kafka.sslKeystorePassword=${PYMMA_KAFKA_SSL_KEYSTORE_PASSWORD:}
pymma.kafka.sslKeystoreLocation=${PYMMA_KAFKA_SSL_KEYSTORE_LOCATION:}
pymma.kafka.sslKeystoreType=${PYMMA_KAFKA_SSL_KEYSTORE_TYPE:}

View file

@ -115,12 +115,21 @@
<artifactId>camel-test</artifactId> <artifactId>camel-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.kafka</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-kafka</artifactId> <artifactId>spring-jms</artifactId>
<version>${kafka.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>${activemq.version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>${activemq.version}</version>
</dependency>
<!-- kie-server --> <!-- kie-server -->
<dependency> <dependency>
<groupId>com.pymmasoftware.jbpm</groupId> <groupId>com.pymmasoftware.jbpm</groupId>

View file

@ -16,164 +16,52 @@
*/ */
package org.chtijbug.drools.proxy; package org.chtijbug.drools.proxy;
import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.activemq.ActiveMQXAConnectionFactory;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.NewTopic;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.config.SslConfigs;
import org.apache.kafka.common.security.auth.SecurityProtocol;
import org.apache.kafka.common.serialization.StringSerializer;
import org.chtijbug.drools.ChtijbugObjectRequest;
import org.chtijbug.drools.KieContainerResponse;
import org.chtijbug.drools.common.KafkaTopicConstants;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka; import org.springframework.context.annotation.PropertySource;
import org.springframework.kafka.core.DefaultKafkaProducerFactory; import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.kafka.core.KafkaAdmin; import org.springframework.jms.annotation.EnableJms;
import org.springframework.kafka.core.KafkaTemplate; import org.springframework.jms.core.JmsTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.support.serializer.JsonSerializer;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
// CHECKSTYLE:OFF // CHECKSTYLE:OFF
@SpringBootApplication @SpringBootApplication
@Configuration @Configuration
@EnableKafka
@EnableScheduling @EnableScheduling
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@ComponentScan({"org.chtijbug"})
@EntityScan("org.chtijbug.drools.proxy.persistence.model")
@PropertySource("classpath:application.properties")
@EnableTransactionManagement
@EnableJms
public class DroolsBusinessProxyServer { public class DroolsBusinessProxyServer {
@Value(value = "${org.kie.server.id}")
private String groupID;
@Value(value = "${kafka.bootstrapAddress}")
private String bootstrapAddress;
@Value("${pymma.kafka.activateSsl:false}")
private boolean activateSsl;
@Value("${pymma.kafka.sslTruststoreLocation:}")
private String sslTruststoreLocation;
@Value("${pymma.kafka.sslTruststorePassword:}")
private String sslTruststorePassword;
@Value("${pymma.kafka.sslKeyPassword:}")
private String sslKeyPassword;
@Value("${pymma.kafka.sslKeystorePassword:}")
private String sslKeystorePassword;
@Value("${pymma.kafka.sslKeystoreLocation:}")
private String sslKeystoreLocation;
@Value("${pymma.kafka.sslKeystoreType:}")
private String sslKeystoreType;
@Bean
public KafkaAdmin kafkaAdmin() {
Map<String, Object> configs = new HashMap<>();
configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
if (activateSsl) {
configs.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, SecurityProtocol.SSL.name);
configs.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, this.sslTruststoreLocation);
configs.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.sslTruststorePassword);
configs.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.sslKeyPassword);
configs.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.sslKeystorePassword);
configs.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, this.sslKeystoreLocation);
configs.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, this.sslKeystoreType);
}
return new KafkaAdmin(configs);
}
@Bean
public NewTopic loggingTopic() {
return new NewTopic(KafkaTopicConstants.LOGING_TOPIC, 1, (short) 1);
}
@Value("${almady.jms.url}")
@Bean private String jmsUrl;
public ProducerFactory<String, ChtijbugObjectRequest> producerFactory() { private JmsTemplate jmsTemplate;
Map<String, Object> configProps = new HashMap<>(); private ActiveMQXAConnectionFactory connectionFactory;
configProps.put(
ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
bootstrapAddress);
configProps.put(
ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
StringSerializer.class);
configProps.put(
ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
JsonSerializer.class);
configProps.put(
ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 41943040);
if (activateSsl) {
configProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, SecurityProtocol.SSL.name);
configProps.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, this.sslTruststoreLocation);
configProps.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.sslTruststorePassword);
configProps.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.sslKeyPassword);
configProps.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.sslKeystorePassword);
configProps.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, this.sslKeystoreLocation);
configProps.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, this.sslKeystoreType);
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
new DefaultKafkaProducerFactory<>(configProps, new StringSerializer(), new JsonSerializer<>(objectMapper));
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean
public ProducerFactory<String, KieContainerResponse> producerKieContainerResponseactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(
ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
bootstrapAddress);
configProps.put(
ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
StringSerializer.class);
configProps.put(
ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
JsonSerializer.class);
configProps.put(
ProducerConfig.MAX_REQUEST_SIZE_CONFIG,"41943040");
if (activateSsl) {
configProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, SecurityProtocol.SSL.name);
configProps.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, this.sslTruststoreLocation);
configProps.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.sslTruststorePassword);
configProps.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.sslKeyPassword);
configProps.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.sslKeystorePassword);
configProps.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, this.sslKeystoreLocation);
configProps.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, this.sslKeystoreType);
}
DefaultKafkaProducerFactory<String, KieContainerResponse> producer = new DefaultKafkaProducerFactory<>(configProps);
producer.transactionCapable();
producer.setTransactionIdPrefix("trans");
return producer;
}
@Bean(name="deployFinish")
public NewTopic actionDeployResponseTopic() {
return new NewTopic(KafkaTopicConstants.RESPONSE_DEPLOY_TOPIC, 1, (short) 1);
}
@Bean(name = "jmsTemplate")
@Bean JmsTemplate createJmsTemplate() {
public KafkaTemplate<String, ChtijbugObjectRequest> kafkaTemplate() { connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
return new KafkaTemplate<>(producerFactory()); connectionFactory.setTrustAllPackages(true);
connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
jmsTemplate = new JmsTemplate(connectionFactory);
return jmsTemplate;
} }
/** /**
@ -190,7 +78,7 @@ public class DroolsBusinessProxyServer {
e.printStackTrace(); e.printStackTrace();
} }
} }
System.setProperty(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, "41943040");
SpringApplication.run(DroolsBusinessProxyServer.class, args); SpringApplication.run(DroolsBusinessProxyServer.class, args);
} }

View file

@ -17,7 +17,6 @@ package org.chtijbug.drools.proxy.service;
import org.apache.camel.CamelContext; import org.apache.camel.CamelContext;
import org.apache.camel.Route; import org.apache.camel.Route;
import org.apache.kafka.clients.admin.NewTopic;
import org.chtijbug.drools.proxy.PlatfomKieServerStateRepository; import org.chtijbug.drools.proxy.PlatfomKieServerStateRepository;
import org.chtijbug.drools.proxy.camel.DroolsRouter; import org.chtijbug.drools.proxy.camel.DroolsRouter;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist; import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
@ -94,9 +93,7 @@ public class KieServiceCommon {
@Qualifier("deployFinish")
@Autowired
NewTopic responseTopic;
public KieServiceCommon() { public KieServiceCommon() {
//Needed //Needed

View file

@ -2,12 +2,14 @@ package org.chtijbug.drools.proxy.service;
import org.chtijbug.drools.ChtijbugObjectRequest; import org.chtijbug.drools.ChtijbugObjectRequest;
import org.chtijbug.drools.common.KafkaTopicConstants; import org.chtijbug.drools.common.KafkaTopicConstants;
import org.chtijbug.drools.jms.ChtijbugObjectRequestMessageCreator;
import org.chtijbug.drools.jms.ReverseProxyMessageCreator;
import org.chtijbug.drools.kieserver.extension.KieServerAddOnElement; import org.chtijbug.drools.kieserver.extension.KieServerAddOnElement;
import org.chtijbug.drools.kieserver.extension.KieServerLoggingDefinition; import org.chtijbug.drools.kieserver.extension.KieServerLoggingDefinition;
import org.kie.server.services.api.KieContainerInstance; import org.kie.server.services.api.KieContainerInstance;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.kafka.core.KafkaTemplate; import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.inject.Inject; import javax.inject.Inject;
@ -21,7 +23,7 @@ public class RuleService {
private KieServiceCommon kieServiceCommon; private KieServiceCommon kieServiceCommon;
@Inject @Inject
private KafkaTemplate<String, ChtijbugObjectRequest> kafkaTemplateLogging; private JmsTemplate jmsTemplate;
public RuleService() { public RuleService() {
logger.info("Rule Service created"); logger.info("Rule Service created");
@ -58,7 +60,7 @@ public class RuleService {
} }
chtijbugObjectRequest.setTransactionEndTimeStamp(LocalDateTime.now()); chtijbugObjectRequest.setTransactionEndTimeStamp(LocalDateTime.now());
try { try {
kafkaTemplateLogging.send(KafkaTopicConstants.LOGING_TOPIC,chtijbugObjectRequest); jmsTemplate.send(KafkaTopicConstants.LOGING_TOPIC, new ChtijbugObjectRequestMessageCreator(chtijbugObjectRequest));
}catch (Exception e){ }catch (Exception e){
logger.error(" kafkaTemplateLogging.send",e); logger.error(" kafkaTemplateLogging.send",e);
}finally { }finally {

View file

@ -19,18 +19,13 @@ server.port=8090
camel.springboot.name=MyCamel camel.springboot.name=MyCamel
# to reconfigure the camel servlet context-path mapping to use /api/* instead of /camel/* # to reconfigure the camel servlet context-path mapping to use /api/* instead of /camel/*
camel.component.servlet.mapping.context-path=/api/* camel.component.servlet.mapping.context-path=/api/*
spring.data.mongodb.database=${PYMMA_MONGO_DATABASE:businessProxyDB}
spring.data.mongodb.host=${PYMMA_MONGO_HOST:localhost:28017} spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev}
almady.jms.url=tcp://localhost:1617
spring.datasource.username=${PYMMA_DATABASE_USER:kiedev}
spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev}
eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/
spring.application.name=proxy-app-${org.kie.server.id} spring.application.name=proxy-app-${org.kie.server.id}
kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094}
pymma.kafka.activateSsl=${PYMMA_KAFKA_ACTIVATE_SSL:false}
pymma.kafka.sslTruststoreLocation=${PYMMA_KAFKA_SSL_TRUSTSTORE_LOCATION:}
pymma.kafka.sslTruststorePassword=${PYMMA_KAFKA_SSL_TRUSTSTORE_PASSWORD:}
pymma.kafka.sslKeyPassword=${PYMMA_KAFKA_KEY_PASSWORD:}
pymma.kafka.sslKeystorePassword=${PYMMA_KAFKA_SSL_KEYSTORE_PASSWORD:}
pymma.kafka.sslKeystoreLocation=${PYMMA_KAFKA_SSL_KEYSTORE_LOCATION:}
pymma.kafka.sslKeystoreType=${PYMMA_KAFKA_SSL_KEYSTORE_TYPE:}

View file

@ -35,17 +35,9 @@
<version>${spring.boot.version}</version> <version>${spring.boot.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.17.1</version>
</dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.datatype</groupId> <groupId>com.fasterxml.jackson.datatype</groupId>
@ -55,7 +47,6 @@
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.pymmasoftware.jbpm</groupId> <groupId>com.pymmasoftware.jbpm</groupId>

View file

@ -16,11 +16,12 @@ package org.chtijbug.drools.proxy.persistence.dialect;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType; import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.dialect.PostgreSQL10Dialect;
import org.hibernate.dialect.PostgreSQL9Dialect; import org.hibernate.dialect.PostgreSQL9Dialect;
import java.sql.Types; import java.sql.Types;
public class JSONBPostgreSQLDialect extends PostgreSQL9Dialect { public class JSONBPostgreSQLDialect extends PostgreSQL10Dialect {
public JSONBPostgreSQLDialect() { public JSONBPostgreSQLDialect() {
super(); super();

View file

@ -20,7 +20,6 @@ import javax.persistence.*;
@TypeDef(name = "RuleExecution", typeClass = JSONBUserType.class, parameters = { @TypeDef(name = "RuleExecution", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.logging.RuleExecution")}) @org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.logging.RuleExecution")})
}) })
public class BusinessTransactionAction { public class BusinessTransactionAction {
@javax.persistence.Id @javax.persistence.Id
@GeneratedValue @GeneratedValue

View file

@ -17,7 +17,7 @@ public class Customer {
private String name; private String name;
@ManyToMany @ManyToOne
private KieWorkbench kieWorkbench; private KieWorkbench kieWorkbench;
public Long getUniqueId() { public Long getUniqueId() {

View file

@ -2,16 +2,24 @@ package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.console.dto.VariableData; import org.chtijbug.drools.console.dto.VariableData;
import org.chtijbug.drools.console.dto.VariableDataList;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity @Entity
@Table(uniqueConstraints ={ @Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"lineID"}) @UniqueConstraint(columnNames={"lineID"})
}) })
@TypeDefs({
@TypeDef(name = "variableDefinitions", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.console.dto.VariableDataList")})
})
public class GuidedRulesTemplateData { public class GuidedRulesTemplateData {
@javax.persistence.Id @javax.persistence.Id
@ -19,13 +27,13 @@ public class GuidedRulesTemplateData {
private Long uniqueId; private Long uniqueId;
@ManyToMany @ManyToOne
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition; GuidedRulesTemplateDefinition guidedRulesTemplateDefinition;
private String lineID; private String lineID;
@ElementCollection @Type(type = "variableDefinitions")
private List<VariableData> rows = new ArrayList<>(); private VariableDataList dataRows = new VariableDataList();
public Long getUniqueId() { public Long getUniqueId() {
return uniqueId; return uniqueId;
@ -51,11 +59,19 @@ public class GuidedRulesTemplateData {
this.lineID = lineID; this.lineID = lineID;
} }
public VariableDataList getDataRows() {
return dataRows;
}
public void setDataRows(VariableDataList dataRows) {
this.dataRows = dataRows;
}
public List<VariableData> getRows() { public List<VariableData> getRows() {
return rows; return dataRows.getRows();
} }
public void setRows(List<VariableData> rows) { public void setRows(List<VariableData> rows) {
this.rows = rows; this.dataRows.setRows( rows);
} }
} }

View file

@ -2,6 +2,11 @@ package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.console.dto.VariableDefinition; import org.chtijbug.drools.console.dto.VariableDefinition;
import org.chtijbug.drools.console.dto.VariableDefinitionList;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import javax.persistence.*; import javax.persistence.*;
@ -12,6 +17,10 @@ import java.util.List;
@Table(uniqueConstraints ={ @Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"templateName"}) @UniqueConstraint(columnNames={"templateName"})
}) })
@TypeDefs({
@TypeDef(name = "variables", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.console.dto.VariableDefinitionList")})
})
public class GuidedRulesTemplateDefinition { public class GuidedRulesTemplateDefinition {
@javax.persistence.Id @javax.persistence.Id
@ -21,11 +30,11 @@ public class GuidedRulesTemplateDefinition {
private String templateName; private String templateName;
@ManyToMany @ManyToOne
private UserGroups projectGroup; private UserGroups projectGroup;
@ElementCollection @Type(type = "variables")
private List<VariableDefinition> variables = new ArrayList<>(); private VariableDefinitionList variableDefinitions = new VariableDefinitionList();
public Long getUniqueId() { public Long getUniqueId() {
return uniqueId; return uniqueId;
@ -53,11 +62,19 @@ public class GuidedRulesTemplateDefinition {
this.projectGroup = projectGroup; this.projectGroup = projectGroup;
} }
public VariableDefinitionList getVariableDefinitions() {
return variableDefinitions;
}
public void setVariableDefinitions(VariableDefinitionList variableDefinitions) {
this.variableDefinitions = variableDefinitions;
}
public List<VariableDefinition> getVariables() { public List<VariableDefinition> getVariables() {
return variables; return variableDefinitions.getVariables();
} }
public void setVariables(List<VariableDefinition> variables) { public void setVariables(List<VariableDefinition> variables) {
this.variables = variables; this.variableDefinitions.setVariables(variables);
} }
} }

View file

@ -29,7 +29,7 @@ public class ProjectPersist implements Serializable {
private String deploymentName; private String deploymentName;
private String uuid; private String uuid;
@ManyToMany @ManyToOne
private KieWorkbench kieWorkbench; private KieWorkbench kieWorkbench;
@ -48,11 +48,11 @@ public class ProjectPersist implements Serializable {
private String containerID; private String containerID;
private String branch; private String branch;
@ElementCollection
private List<String> serverNames = new ArrayList<>(); private List<String> serverNames = new ArrayList<>();
private String status; private String status;
@ElementCollection
private List<String> classNameList; private List<String> classNameList;
private boolean disableRuleLogging; private boolean disableRuleLogging;

View file

@ -38,7 +38,7 @@ public class User {
@OneToMany @OneToMany
private List<UserGroups> userGroups = new ArrayList<>(); private List<UserGroups> userGroups = new ArrayList<>();
@ManyToMany @ManyToOne
private Customer customer; private Customer customer;
public Long getUniqueId() { public Long getUniqueId() {

View file

@ -22,13 +22,13 @@ public class UserGroups {
private String projectName; private String projectName;
@ManyToMany @ManyToOne
private KieWorkbench kieWorkbench; private KieWorkbench kieWorkbench;
@ManyToMany @ManyToOne
private ProjectPersist projectPersist; private ProjectPersist projectPersist;
@ManyToMany @ManyToOne
private UserGroups workspaceUserGroup; private UserGroups workspaceUserGroup;
public UserGroups() { public UserGroups() {

View file

@ -1,9 +1,5 @@
package org.chtijbug.drools.proxy.persistence.model; package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.annotations.TypeDef;
import javax.persistence.*; import javax.persistence.*;
import java.util.Objects; import java.util.Objects;

View file

@ -9,7 +9,7 @@ import java.util.List;
public interface BusinessTransactionPersistenceRepository extends JpaRepository<BusinessTransactionPersistence,Long> { public interface BusinessTransactionPersistenceRepository extends JpaRepository<BusinessTransactionPersistence,Long> {
public BusinessTransactionPersistence findAllById(String id, PageRequest pageRequest); public BusinessTransactionPersistence findAllByUniqueId(String id, PageRequest pageRequest);
public List<BusinessTransactionPersistence> findAllByTransactionId(String transactionId, PageRequest pageRequest); public List<BusinessTransactionPersistence> findAllByTransactionId(String transactionId, PageRequest pageRequest);

View file

@ -8,5 +8,5 @@ import org.springframework.stereotype.Repository;
public interface CustomerRepository extends JpaRepository<Customer, String> { public interface CustomerRepository extends JpaRepository<Customer, String> {
Customer findByName(String name); Customer findByName(String name);
Customer findByID(String ID); Customer findByUniqueId(String ID);
} }

View file

@ -8,5 +8,5 @@ import org.springframework.stereotype.Repository;
public interface KieWorkbenchRepository extends JpaRepository<KieWorkbench, Long> { public interface KieWorkbenchRepository extends JpaRepository<KieWorkbench, Long> {
KieWorkbench findByName(String name); KieWorkbench findByName(String name);
KieWorkbench findByID(String ID); KieWorkbench findByUniqueId(String ID);
} }

View file

@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository;
public interface UserGroupsRepository extends JpaRepository<UserGroups, Long> { public interface UserGroupsRepository extends JpaRepository<UserGroups, Long> {
UserGroups findByName(String login); UserGroups findByName(String login);
UserGroups findByID(String login); UserGroups findByUniqueId(String login);
UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist); UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist);
UserGroups findBySpaceName(String spaceName); UserGroups findBySpaceName(String spaceName);

View file

@ -8,5 +8,5 @@ import org.springframework.stereotype.Repository;
public interface UserRolesRepository extends JpaRepository<UserRoles, Long> { public interface UserRolesRepository extends JpaRepository<UserRoles, Long> {
UserRoles findByName(String login); UserRoles findByName(String login);
UserRoles findByID(String login); UserRoles findByUniqueId(String login);
} }

View file

@ -18,9 +18,18 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.kafka</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-kafka</artifactId> <artifactId>spring-jms</artifactId>
<version>${kafka.version}</version> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>${activemq.version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>${activemq.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.mkopylec</groupId> <groupId>com.github.mkopylec</groupId>
@ -82,6 +91,10 @@
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
<version>0.9.1</version> <version>0.9.1</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
</dependency>
</dependencies> </dependencies>
<!-- Spring-Boot and Camel BOM --> <!-- Spring-Boot and Camel BOM -->

View file

@ -1,77 +1,33 @@
package org.chtijbug.drools.reverseproxy; package org.chtijbug.drools.reverseproxy;
import org.apache.activemq.ActiveMQXAConnectionFactory;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.config.SslConfigs;
import org.apache.kafka.common.security.auth.SecurityProtocol;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.chtijbug.drools.ReverseProxyUpdate;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; import org.springframework.jms.core.JmsTemplate;
import org.springframework.kafka.core.ConsumerFactory; import org.apache.activemq.ActiveMQXAConnectionFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.support.serializer.JsonDeserializer;
import java.util.HashMap;
import java.util.Map;
@SpringBootApplication @SpringBootApplication
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository") @EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
public class DroolsBusinessReverseProxyServer { public class DroolsBusinessReverseProxyServer {
@Value(value = "${kafka.bootstrapAddress}")
private String bootstrapAddress;
@Value("${pymma.kafka.activateSsl:false}")
private boolean activateSsl;
@Value("${pymma.kafka.sslTruststoreLocation:}") @Value("${almady.jms.url}")
private String sslTruststoreLocation; private String jmsUrl;
private JmsTemplate jmsTemplate;
@Value("${pymma.kafka.sslTruststorePassword:}") private ActiveMQXAConnectionFactory connectionFactory;
private String sslTruststorePassword;
@Value("${pymma.kafka.sslKeyPassword:}") @Bean(name = "jmsTemplate")
private String sslKeyPassword; JmsTemplate createJmsTemplate() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
@Value("${pymma.kafka.sslKeystorePassword:}") connectionFactory.setTrustAllPackages(true);
private String sslKeystorePassword; connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
@Value("${pymma.kafka.sslKeystoreLocation:}") jmsTemplate = new JmsTemplate(connectionFactory);
private String sslKeystoreLocation; return jmsTemplate;
@Value("${pymma.kafka.sslKeystoreType:}")
private String sslKeystoreType;
public ConsumerFactory<String, ReverseProxyUpdate> mappingConsumerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
props.put(ConsumerConfig.GROUP_ID_CONFIG, "greeting");
if (activateSsl) {
props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, SecurityProtocol.SSL.name);
props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, this.sslTruststoreLocation);
props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, this.sslTruststorePassword);
props.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, this.sslKeyPassword);
props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, this.sslKeystorePassword);
props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, this.sslKeystoreLocation);
props.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, this.sslKeystoreType);
}
return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(), new JsonDeserializer<>(ReverseProxyUpdate.class));
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, ReverseProxyUpdate>
mappingKafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, ReverseProxyUpdate> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(mappingConsumerFactory());
return factory;
} }
public static void main(String[] args) { public static void main(String[] args) {

View file

@ -11,7 +11,7 @@ import org.chtijbug.drools.reverseproxy.mappings.CustomMappingsProvider;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
@ -43,9 +43,8 @@ public class UpdateService {
} }
@KafkaListener( @JmsListener(
topics = KafkaTopicConstants.REVERSE_PROXY, destination = KafkaTopicConstants.REVERSE_PROXY)
containerFactory = "mappingKafkaListenerContainerFactory")
public void store(ReverseProxyUpdate update) { public void store(ReverseProxyUpdate update) {
boolean found = false; boolean found = false;
MappingProperties mappingProperties = null; MappingProperties mappingProperties = null;

View file

@ -1,15 +1,13 @@
server.port=${port:9500} server.port=${port:9500}
spring.data.mongodb.database=${PYMMA_MONGO_DATABASE:businessProxyDB}
spring.data.mongodb.host=${PYMMA_MONGO_HOST:localhost:28017} spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev}
almady.jms.url=tcp://localhost:1617
spring.datasource.username=${PYMMA_DATABASE_USER:kiedev}
spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev}
charon.tracing.enabled=true charon.tracing.enabled=true
kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094} kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094}
pymma.kafka.activateSsl=${PYMMA_KAFKA_ACTIVATE_SSL:false}
pymma.kafka.sslTruststoreLocation=${PYMMA_KAFKA_SSL_TRUSTSTORE_LOCATION:}
pymma.kafka.sslTruststorePassword=${PYMMA_KAFKA_SSL_TRUSTSTORE_PASSWORD:}
pymma.kafka.sslKeyPassword=${PYMMA_KAFKA_KEY_PASSWORD:}
pymma.kafka.sslKeystorePassword=${PYMMA_KAFKA_SSL_KEYSTORE_PASSWORD:}
pymma.kafka.sslKeystoreLocation=${PYMMA_KAFKA_SSL_KEYSTORE_LOCATION:}
pymma.kafka.sslKeystoreType=${PYMMA_KAFKA_SSL_KEYSTORE_TYPE:}
secretkey=eRaYY7Wo24sDqKSX3IM9ASGmdGPmkTd9jo1QTy4b7P9Ze5_9hKolVX8xNrQDcNRfVEdTZNOuOyqEGhXEbdJI-ZQ19k_o9MI0y3eZN2lp9jow55FfXMiINEdt1XR85VipRLSOkT6kSpzs2x-jbLDiz9iFVzkd81YKxMgPA7VfZeQUm4n-mOmnWMaVX30zGFU4L3oPBctYKkl4dYfqYWqRNfrgPJVi5DGFjywgxx0ASEiJHtV72paI3fDR2XwlSkyhhmY-ICjCRmsJN4fX1pdoL8a18-aQrvyu4j0Os6dVPYIoPvvY0SAZtWYKHfM15g7A3HD4cVREf9cUsprCRK93w secretkey=eRaYY7Wo24sDqKSX3IM9ASGmdGPmkTd9jo1QTy4b7P9Ze5_9hKolVX8xNrQDcNRfVEdTZNOuOyqEGhXEbdJI-ZQ19k_o9MI0y3eZN2lp9jow55FfXMiINEdt1XR85VipRLSOkT6kSpzs2x-jbLDiz9iFVzkd81YKxMgPA7VfZeQUm4n-mOmnWMaVX30zGFU4L3oPBctYKkl4dYfqYWqRNfrgPJVi5DGFjywgxx0ASEiJHtV72paI3fDR2XwlSkyhhmY-ICjCRmsJN4fX1pdoL8a18-aQrvyu4j0Os6dVPYIoPvvY0SAZtWYKHfM15g7A3HD4cVREf9cUsprCRK93w

View file

@ -18,13 +18,13 @@
<properties> <properties>
<fabri8.plugin.version>0.34.1</fabri8.plugin.version> <fabri8.plugin.version>0.34.1</fabri8.plugin.version>
<jbpm.version>7.73.0.Final</jbpm.version> <jbpm.version>7.74.1.Final</jbpm.version>
<node.version>v10.16.3</node.version> <node.version>v10.16.3</node.version>
<npm.version>6.11.3</npm.version> <npm.version>6.11.3</npm.version>
<frontend-maven-plugin.version>1.11.3</frontend-maven-plugin.version> <frontend-maven-plugin.version>1.11.3</frontend-maven-plugin.version>
<spring.boot.version>2.7.8</spring.boot.version> <spring.boot.version>2.7.16</spring.boot.version>
<spring.version>5.3.23</spring.version> <spring.version>5.3.30</spring.version>
<version.thorntail>2.2.1.Final</version.thorntail> <version.thorntail>2.2.1.Final</version.thorntail>
<!--registry.host>registry.hub.docker.com/pymmasoftware</registry.host--> <!--registry.host>registry.hub.docker.com/pymmasoftware</registry.host-->
<registry.host>192.168.1.122:18083</registry.host> <registry.host>192.168.1.122:18083</registry.host>