Compare commits

...
Sign in to create a new pull request.

5 commits

Author SHA1 Message Date
c1808d7e9b work in progress 2023-12-25 00:38:07 +01:00
nheron
e460b26abb remove Kafka 2023-04-12 09:20:09 +02:00
nheron
353e7d783e Java 11, Spirng boot 3, remove mongodb First commit 2023-02-12 18:42:51 +01:00
nheron
cd1c7dbf9e Java 11, Spirng boot 3, remove mongodb First commit 2023-02-12 18:06:28 +01:00
nheron
89c8e6aeea Java 17, Spirng boot 3, remove mongodb First commit 2023-02-12 12:13:14 +01:00
88 changed files with 3030 additions and 1013 deletions

View file

@ -4,8 +4,11 @@
name: Maven Package
on:
release:
types: [created]
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
@ -21,6 +24,17 @@ jobs:
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
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
run: mvn -B package --file pom.xml

401
docker-compose-legacy.yaml Normal file
View file

@ -0,0 +1,401 @@
version: "3"
networks:
drools-network-dev:
ipam:
config:
- subnet: 172.27.1.0/24
services:
kie-wb:
image: kie-wb
container_name: "businessCentral"
volumes:
- gitdata:/home/niodir
- lucenedata:/home/lucene
hostname: kie-wb.pymma
environment:
PYMMA_OPTS: " -DconnectionString=mongodb://mongodb:27017 -Dname=businessProxyDB "
links:
- businessProxyDB:mongodb
depends_on:
- businessProxyDB
networks:
drools-network-dev:
ipv4_address: 172.27.1.5
ports:
- 8080:8080
- 8001:8001
restart: always
admin-console:
image: runtime-admin-console
container_name: "admin-console"
environment:
PYMMA_OPTS: " -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
hostname: admin.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.6
ports:
- 8200:8200
links:
- kie-wb:kie-wb
- businessProxyDB:mongodb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
restart: always
swimmingpool-wb:
image: swimmingpool-web-ui
container_name: "swimmingpool-web-ui"
environment:
PYMMA_OPTS: " "
hostname: swimmingpool-wb.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.15
ports:
- 12099:12099
links:
- runtime-reverse-proxy:reverse-proxy
depends_on:
- runtime-reverse-proxy
restart: always
#-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=y
runtime-proxy-1:
image: runtime-proxy
container_name: "runtime-proxy-1"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server1 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.22
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-2:
image: runtime-proxy
container_name: "runtime-proxy-2"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server2 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.32
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-3:
image: runtime-proxy
container_name: "runtime-proxy-3"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server3 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.42
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-4:
image: runtime-proxy
container_name: "runtime-proxy-4"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server4 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.52
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-5:
image: runtime-proxy
container_name: "runtime-proxy-5"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server5 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.62
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-indexer:
image: runtime-indexer
container_name: "runtime-indexer"
hostname: indexer.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.23
links:
- businessProxyDB:mongodb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
restart: always
runtime-reverse-proxy:
image: runtime-reverse-proxy
container_name: "runtime-reverse-proxy"
environment:
PYMMA_OPTS: " -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
hostname: reverse-proxy.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.25
links:
- businessProxyDB:mongodb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
ports:
- 9500:9500
restart: always
postgreskie:
deploy:
resources:
limits:
memory: 1024M
image: postgres:13.4-alpine
environment:
- POSTGRES_DB=chti-data
- POSTGRES_USER=database_admin
- POSTGRES_PASSWORD=
- POSTGRES_HOST_AUTH_METHOD=trust
- MAX_CONNECTIONS=500
- MAX_WAL_SENDERS=100
volumes:
- pgsql-data:/var/lib/postgresql/data
- ./backend/docker/pgsql_scripts:/docker-entrypoint-initdb.d
ports:
- 12432:5432
zoo1:
image: zookeeper:3.4.9
hostname: zoo1
networks:
drools-network-dev:
ipv4_address: 172.27.1.100
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_PORT: 2181
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- zoo1_data:/data
- zoo1_data_datalog:/datalog
zoo2:
image: zookeeper:3.4.9
hostname: zoo2
networks:
drools-network-dev:
ipv4_address: 172.27.1.101
ports:
- "2182:2182"
environment:
ZOO_MY_ID: 2
ZOO_PORT: 2182
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- zoo2_data:/data
- zoo2_data_datalog:/datalog
zoo3:
image: zookeeper:3.4.9
hostname: zoo3
networks:
drools-network-dev:
ipv4_address: 172.27.1.102
ports:
- "2183:2183"
environment:
ZOO_MY_ID: 3
ZOO_PORT: 2183
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- zoo3_data:/data
- zoo3_data_datalog:/datalog
kafka1:
image: confluentinc/cp-kafka:5.5.0
hostname: kafka1.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.103
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_FETCH_MAX_BYTES: 5048576
KAFKA_REPLICA_FETCH_MAX_BYTES: 5048576
KAFKA_MESSAGE_MAX_BYTES: 5048576
KAFKA_PRODUCER_MAX_REQUEST_SIZE: 5048576
CONNECT_PRODUCER_MAX_REQUEST_SIZE: 5048576
volumes:
- kafka1_data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
kafka2:
image: confluentinc/cp-kafka:5.5.0
hostname: kafka2.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.104
ports:
- "9093:9093"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka2:19093,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 2
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_FETCH_MAX_BYTES: 5048576
KAFKA_REPLICA_FETCH_MAX_BYTES: 5048576
KAFKA_MESSAGE_MAX_BYTES: 5048576
KAFKA_PRODUCER_MAX_REQUEST_SIZE: 5048576
CONNECT_PRODUCER_MAX_REQUEST_SIZE: 5048576
volumes:
- kafka2_data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
kafka3:
image: confluentinc/cp-kafka:5.5.0
hostname: kafka3.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.105
ports:
- "9094:9094"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka3:19094,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 3
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_FETCH_MAX_BYTES: 5048576
KAFKA_REPLICA_FETCH_MAX_BYTES: 5048576
KAFKA_MESSAGE_MAX_BYTES: 5048576
KAFKA_PRODUCER_MAX_REQUEST_SIZE: 5048576
CONNECT_PRODUCER_MAX_REQUEST_SIZE: 5048576
volumes:
- kafka3_data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
volumes:
pgsql-data:
gitdata:
lucenedata:
kieserverdir:
zoo1_data:
zoo2_data:
zoo3_data:
zoo1_data_datalog:
zoo2_data_datalog:
zoo3_data_datalog:
kafka1_data:
kafka2_data:
kafka3_data:

View file

@ -1,414 +1,42 @@
version: "3"
networks:
drools-network-dev:
ipam:
config:
- subnet: 172.27.1.0/24
services:
kie-wb:
image: kie-wb
container_name: "businessCentral"
volumes:
- gitdata:/home/niodir
- lucenedata:/home/lucene
hostname: kie-wb.pymma
postgres-kie:
deploy:
resources:
limits:
memory: 1024M
image: postgres:13.4-alpine
environment:
PYMMA_OPTS: " -DconnectionString=mongodb://mongodb:27017 -Dname=businessProxyDB "
links:
- businessProxyDB:mongodb
depends_on:
- businessProxyDB
networks:
drools-network-dev:
ipv4_address: 172.27.1.5
- POSTGRES_DB=chti-data
- POSTGRES_USER=database_admin
- POSTGRES_PASSWORD=
- POSTGRES_HOST_AUTH_METHOD=trust
- MAX_CONNECTIONS=500
- MAX_WAL_SENDERS=100
volumes:
- pgsql-data:/var/lib/postgresql/data
- ./docker/database/:/docker-entrypoint-initdb.d
ports:
- 8080:8080
- 8001:8001
- 12432:5432
activemq-server:
image: webcenter/activemq:5.14.3
volumes:
- activemqdata:/data
ports:
- 10162:8161
- 1617:61616
restart: always
admin-console:
image: runtime-admin-console
container_name: "admin-console"
environment:
PYMMA_OPTS: " -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
hostname: admin.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.6
ports:
- 8200:8200
links:
- kie-wb:kie-wb
- businessProxyDB:mongodb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
restart: always
swimmingpool-wb:
image: swimmingpool-web-ui
container_name: "swimmingpool-web-ui"
environment:
PYMMA_OPTS: " "
hostname: swimmingpool-wb.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.15
ports:
- 12099:12099
links:
- runtime-reverse-proxy:reverse-proxy
depends_on:
- runtime-reverse-proxy
restart: always
#-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=y
runtime-proxy-1:
image: runtime-proxy
container_name: "runtime-proxy-1"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server1 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.22
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-2:
image: runtime-proxy
container_name: "runtime-proxy-2"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server2 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.32
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-3:
image: runtime-proxy
container_name: "runtime-proxy-3"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server3 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.42
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-4:
image: runtime-proxy
container_name: "runtime-proxy-4"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server4 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.52
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-proxy-5:
image: runtime-proxy
container_name: "runtime-proxy-5"
volumes:
- kieserverdir:/niodir-kieserver
environment:
PYMMA_OPTS: "-Dorg.kie.server.id=server5 -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
networks:
drools-network-dev:
ipv4_address: 172.27.1.62
ports:
- 8090
- 9080
links:
- businessProxyDB:mongodb
- kie-wb:kie-wb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
- kie-wb
restart: always
runtime-indexer:
image: runtime-indexer
container_name: "runtime-indexer"
hostname: indexer.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.23
links:
- businessProxyDB:mongodb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
restart: always
runtime-reverse-proxy:
image: runtime-reverse-proxy
container_name: "runtime-reverse-proxy"
environment:
PYMMA_OPTS: " -Dkafka.bootstrapAddress=kafka1:19092,kafka2:19093,kafka3:19094 "
hostname: reverse-proxy.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.25
links:
- businessProxyDB:mongodb
- kafka1:kafka1
- kafka2:kafka2
- kafka3:kafka3
depends_on:
- businessProxyDB
ports:
- 9500:9500
restart: always
businessProxyDB:
image: mongo
container_name: "businessProxyDB"
volumes:
- mongodb:/data/db
- mongodb_config:/data/configdb
hostname: mongo.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.3
ports:
- 28017:27017
command: mongod
restart: always
kafka_manager:
image: hlebalbau/kafka-manager:stable
ports:
- "9000:9000"
hostname: kafka_manager.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.89
links:
- zoo1:zoo1
- zoo2:zoo2
- zoo3:zoo3
environment:
ZK_HOSTS: "zoo1:2181, zoo2:2182, zoo3:2183"
KAFKA_MANAGER_AUTH_ENABLED: "true"
KAFKA_MANAGER_USERNAME: admin
KAFKA_MANAGER_PASSWORD: adminpymma
command: -Dpidfile.path=/dev/null
zoo1:
image: zookeeper:3.4.9
hostname: zoo1
networks:
drools-network-dev:
ipv4_address: 172.27.1.100
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_PORT: 2181
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- zoo1_data:/data
- zoo1_data_datalog:/datalog
zoo2:
image: zookeeper:3.4.9
hostname: zoo2
networks:
drools-network-dev:
ipv4_address: 172.27.1.101
ports:
- "2182:2182"
environment:
ZOO_MY_ID: 2
ZOO_PORT: 2182
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- zoo2_data:/data
- zoo2_data_datalog:/datalog
zoo3:
image: zookeeper:3.4.9
hostname: zoo3
networks:
drools-network-dev:
ipv4_address: 172.27.1.102
ports:
- "2183:2183"
environment:
ZOO_MY_ID: 3
ZOO_PORT: 2183
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- zoo3_data:/data
- zoo3_data_datalog:/datalog
kafka1:
image: confluentinc/cp-kafka:5.5.0
hostname: kafka1.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.103
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_FETCH_MAX_BYTES: 5048576
KAFKA_REPLICA_FETCH_MAX_BYTES: 5048576
KAFKA_MESSAGE_MAX_BYTES: 5048576
KAFKA_PRODUCER_MAX_REQUEST_SIZE: 5048576
CONNECT_PRODUCER_MAX_REQUEST_SIZE: 5048576
volumes:
- kafka1_data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
kafka2:
image: confluentinc/cp-kafka:5.5.0
hostname: kafka2.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.104
ports:
- "9093:9093"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka2:19093,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 2
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_FETCH_MAX_BYTES: 5048576
KAFKA_REPLICA_FETCH_MAX_BYTES: 5048576
KAFKA_MESSAGE_MAX_BYTES: 5048576
KAFKA_PRODUCER_MAX_REQUEST_SIZE: 5048576
CONNECT_PRODUCER_MAX_REQUEST_SIZE: 5048576
volumes:
- kafka2_data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
kafka3:
image: confluentinc/cp-kafka:5.5.0
hostname: kafka3.pymma
networks:
drools-network-dev:
ipv4_address: 172.27.1.105
ports:
- "9094:9094"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka3:19094,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2182,zoo3:2183"
KAFKA_BROKER_ID: 3
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_FETCH_MAX_BYTES: 5048576
KAFKA_REPLICA_FETCH_MAX_BYTES: 5048576
KAFKA_MESSAGE_MAX_BYTES: 5048576
KAFKA_PRODUCER_MAX_REQUEST_SIZE: 5048576
CONNECT_PRODUCER_MAX_REQUEST_SIZE: 5048576
volumes:
- kafka3_data:/var/lib/kafka/data
depends_on:
- zoo1
- zoo2
- zoo3
volumes:
mongodb:
mongodb_config:
gitdata:
lucenedata:
kieserverdir:
zoo1_data:
zoo2_data:
zoo3_data:
zoo1_data_datalog:
zoo2_data_datalog:
zoo3_data_datalog:
kafka1_data:
kafka2_data:
kafka3_data:
pgsql-data:
activemqdata:

View file

@ -0,0 +1,3 @@
CREATE USER kiedev WITH PASSWORD 'kiedev';
create database kiedev ;
GRANT ALL PRIVILEGES ON DATABASE kiedev to kiedev;

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-admin-console-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
@ -22,7 +22,7 @@
<repositories>
<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
<url>https://maven.vaadin.com/vaadin-addons</url>
</repository>
</repositories>
@ -65,11 +65,7 @@
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>${kafka.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
@ -94,6 +90,20 @@
<artifactId>drools-framework-kie-wb-rest-pojo</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</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>
<groupId>org.drools</groupId>
<artifactId>drools-workbench-models-guided-template</artifactId>
@ -135,6 +145,12 @@
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.vaadin.olli</groupId>
@ -211,17 +227,11 @@
</exclusion>
</exclusions>
</dependency>
<!--dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.6.Release</version>
</dependency-->
<!--dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency-->
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
@ -235,7 +245,7 @@
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
@ -295,7 +305,7 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<jvmArguments>-Dvaadin.productionMode</jvmArguments>
<executable>true</executable>

View file

@ -2,18 +2,7 @@ package org.chtijbug.drools.console;
import com.vaadin.flow.spring.SpringServlet;
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.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
import org.chtijbug.drools.KieContainerResponse;
import org.chtijbug.drools.ReverseProxyUpdate;
import org.chtijbug.drools.common.KafkaTopicConstants;
import org.apache.activemq.ActiveMQXAConnectionFactory;
import org.chtijbug.drools.console.middle.DababaseContentUpdate;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.ApplicationContextProvider;
@ -24,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
@ -31,16 +21,15 @@ import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.event.EventListener;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.*;
import org.springframework.kafka.support.serializer.JsonDeserializer;
import org.springframework.kafka.support.serializer.JsonSerializer;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.util.unit.DataSize;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ -51,51 +40,30 @@ import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.servlet.MultipartConfigElement;
import java.util.HashMap;
import java.util.Map;
@Configuration
//@Configuration
@SpringBootApplication
@EnableMongoRepositories("org.chtijbug.drools.proxy.persistence.repository")
@EnableKafka
@Configuration
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@ComponentScan({"org.chtijbug"})
@EntityScan("org.chtijbug.drools.proxy.persistence.model")
@PropertySource("classpath:application.properties")
@EnableSwagger2
@EnableScheduling
@EnableTransactionManagement
@EnableJms
public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer {
@Value("${kie-wb.baseurl}")
private String kiewbUrl;
@Value(value = "${kafka.bootstrapAddress}")
private String bootstrapAddress;
@Value("${almady.jms.url}")
private String jmsUrl;
private JmsTemplate jmsTemplate;
private ActiveMQXAConnectionFactory connectionFactory;
@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;
@Autowired
private DababaseContentUpdate dababaseContentUpdate;
//@Autowired
//private DababaseContentUpdate dababaseContentUpdate;
@Autowired
private KieBusinessCentralConnector kieBusinessCentralConnector;
@Autowired
@ -120,7 +88,6 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
}
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
@ -148,75 +115,6 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
}
@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.REVERSE_PROXY, 1, (short) 1);
}
@Bean
public ProducerFactory<String, ReverseProxyUpdate> producerFactory() {
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);
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);
}
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean
public KafkaTemplate<String, ReverseProxyUpdate> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
public ConsumerFactory<String, KieContainerResponse> greetingConsumerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
props.put(ConsumerConfig.GROUP_ID_CONFIG,"Console");
return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(), new JsonDeserializer<>(KieContainerResponse.class));
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, KieContainerResponse>
ruleKafkaListenerKieContainerUpdateFactory() {
ConcurrentKafkaListenerContainerFactory<String, KieContainerResponse> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(greetingConsumerFactory());
return factory;
}
@Bean
public ServletRegistrationBean<SpringServlet> springServlet(ApplicationContext context) {
@ -228,60 +126,18 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
SpringApplication.run(DroolsSpringBootConsoleApplication.class, args);
}
@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(name = "jmsTemplate")
JmsTemplate createJmsTemplate() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
jmsTemplate = new JmsTemplate(connectionFactory);
return jmsTemplate;
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)

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.springframework.beans.factory.annotation.Autowired;
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.stereotype.Service;
@ -84,35 +86,35 @@ public class DababaseContentUpdate {
}
private void initDatabase() {
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "process-admin"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "manager"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "admin"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "analyst"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-all"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "developer"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-project"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "user"));
userRolesRepository.save(new UserRoles( "process-admin"));
userRolesRepository.save(new UserRoles( "manager"));
userRolesRepository.save(new UserRoles( "admin"));
userRolesRepository.save(new UserRoles( "analyst"));
userRolesRepository.save(new UserRoles( "rest-all"));
userRolesRepository.save(new UserRoles( "developer"));
userRolesRepository.save(new UserRoles( "rest-project"));
userRolesRepository.save(new UserRoles( "user"));
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "kiemgmt"));
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "admingroup"));
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "demogroup"));
userGroupsRepository.save(new UserGroups( "kiemgmt"));
userGroupsRepository.save(new UserGroups( "admingroup"));
userGroupsRepository.save(new UserGroups( "demogroup"));
User adminUser = new User(UUID.randomUUID().toString(), "admin", "adminadmin99#");
User adminUser = new User( "admin", "adminadmin99#");
// adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
// adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
adminUser.getUserRoles().add(userRolesRepository.findByName("admin"));
adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
userRepository.save(adminUser);
User nheronUser = new User(UUID.randomUUID().toString(), "nheron", "adminnheron00@");
User nheronUser = new User( "nheron", "adminnheron00@");
// nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
// nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
nheronUser.getUserRoles().add(userRolesRepository.findByName("admin"));
nheronUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
userRepository.save(nheronUser);
User apiUser = new User(UUID.randomUUID().toString(), "api-user", "api-user");
User apiUser = new User( "api-user", "api-user");
// nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
// nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
@ -120,7 +122,6 @@ public class DababaseContentUpdate {
userRepository.save(apiUser);
KieWorkbench mainWorkbench = new KieWorkbench();
mainWorkbench.setID(UUID.randomUUID().toString());
mainWorkbench.setName("demo");
mainWorkbench.setExternalUrl(mainwbExtern);
mainWorkbench.setInternalUrl(mainwbUrlIntern);
@ -144,9 +145,8 @@ public class DababaseContentUpdate {
Customer demCustomer = new Customer();
demCustomer.setKieWorkbench(mainWorkbench);
demCustomer.setName("demoCustomer");
demCustomer.setID(UUID.randomUUID().toString());
customerRepository.save(demCustomer);
User demoUser = new User(UUID.randomUUID().toString(), "demo", "demo");
User demoUser = new User( "demo", "demo");
demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup"));
demoUser.getUserRoles().add(userRolesRepository.findByName("user"));
demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
@ -250,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.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.event.EventListener;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;

View file

@ -8,6 +8,7 @@ import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.JobStatus;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.jms.ReverseProxyMessageCreator;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import org.chtijbug.drools.proxy.persistence.model.*;
import org.chtijbug.drools.proxy.persistence.repository.*;
@ -16,7 +17,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.DependsOn;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import java.util.*;
@ -63,7 +64,7 @@ public class ProjectPersistService {
private KieWorkbenchRepository workbenchRepository;
@Autowired
private KafkaTemplate<String, ReverseProxyUpdate> kafkaTemplateProxyUpdate;
private JmsTemplate jmsTemplate;
@Autowired
private UserGroupsRepository userGroupsRepository;
@ -109,13 +110,13 @@ public class ProjectPersistService {
public UserGroups createProjectGroupIfNeeded(String projectName, KieWorkbench kieWorkbench, ProjectPersist projectPersist, UserGroups workspaceUserGroup) {
UserGroups userGroups = userGroupsRepository.findByName("prj_" + projectName);
if (userGroups == null) {
UserGroups projectGroup = new UserGroups(UUID.randomUUID().toString(), "prj_" + projectName);
UserGroups projectGroup = new UserGroups( "prj_" + projectName);
projectGroup.setKieWorkbench(kieWorkbench);
projectGroup.setProjectName(projectName);
projectGroup.setProjectPersist(projectPersist);
projectGroup.setWorkspaceUserGroup(workspaceUserGroup);
projectGroup = userGroupsRepository.save(projectGroup);
User groupUser = new User(UUID.randomUUID().toString(), "prj_user_" + projectName, "adminadmin99#");
User groupUser = new User( "prj_user_" + projectName, "adminadmin99#");
groupUser.getUserGroups().add(projectGroup);
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
groupUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
@ -130,11 +131,11 @@ public class ProjectPersistService {
public UserGroups createWorkSpaceGroupIfNeeded(String workSpaceName, KieWorkbench kieWorkbench) {
UserGroups userGroupsWorkSpace = userGroupsRepository.findByName("wrk_" + workSpaceName);
if (userGroupsWorkSpace == null) {
userGroupsWorkSpace = new UserGroups(UUID.randomUUID().toString(), "wrk_" + workSpaceName);
userGroupsWorkSpace = new UserGroups( "wrk_" + workSpaceName);
userGroupsWorkSpace.setKieWorkbench(kieWorkbench);
userGroupsWorkSpace.setSpaceName(workSpaceName);
userGroupsRepository.save(userGroupsWorkSpace);
User groupUser = new User(UUID.randomUUID().toString(), "wrk_user_" + workSpaceName, "pymma#");
User groupUser = new User( "wrk_user_" + workSpaceName, "pymma#");
groupUser.getUserGroups().add(userGroupsWorkSpace);
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
groupUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
@ -238,7 +239,8 @@ public class ProjectPersistService {
reverseProxyUpdate.getServerNames().add(hostName);
}
projectRepository.save(projectPersist);
kafkaTemplateProxyUpdate.send(KafkaTopicConstants.REVERSE_PROXY, reverseProxyUpdate);
jmsTemplate.send(KafkaTopicConstants.REVERSE_PROXY, new ReverseProxyMessageCreator(reverseProxyUpdate));
return true;
}

View file

@ -49,17 +49,17 @@ public class ActionLoggingView extends VerticalLayout {
indexerService = AppContext.getApplicationContext().getBean(IndexerService.class);
dialogPerso.getClose().setVisible(false);
this.uniqueID = businessTransactionPersistence.getTransactionId();
this.dbID = businessTransactionPersistence.getId();
this.dbID = businessTransactionPersistence.getUniqueId().toString();
if (this.uniqueID==null){
this.uniqueID=this.dbID;
}
title = new Label("TransactionID : " + businessTransactionPersistence.getTransactionId() + "--" + businessTransactionPersistence.getId());
title = new Label("TransactionID : " + businessTransactionPersistence.getTransactionId() + "--" + businessTransactionPersistence.getUniqueId());
title.setClassName("creation-runtime-title");
add(title);
gridActionLogging = new GridActionLogging(businessTransactionPersistence.getId());
gridActionLogging = new GridActionLogging(businessTransactionPersistence.getUniqueId().toString());
Anchor anchor = new Anchor(new StreamResource(uniqueID.trim().toLowerCase()+".csv", this::getInputStream), "Export as CSV");
anchor.getElement().setAttribute("download", true);
add(gridActionLogging, anchor);

View file

@ -10,10 +10,14 @@ adminConsole.tmpdir=/tmp
org.kie.server.controller=${PYMMA_KIE_CONTROLLER:http://localhost:18080/kie-wb/rest}
org.kie.server.location=${PYMMA_KIE_LOCATION:http://localhost:8200/api/server}
org.kie.server.id=${PYMMA_KIE_SERVER_ID:pymmaConsole2}
spring.data.mongodb.database=${PYMMA_MONGO_DATABASE:businessProxyDB}
spring.data.mongodb.host=${PYMMA_MONGO_HOST:localhost:28017}
almady.jms.url=tcp://localhost:1617
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=${PYMMA_DATABASE_URL:jdbc:postgresql://localhost:12432/kiedev}
spring.jpa.properties.hibernate.dialect= org.chtijbug.drools.proxy.persistence.dialect.JSONBPostgreSQLDialect
spring.datasource.username=${PYMMA_DATABASE_USER:kiedev}
spring.datasource.password=${PYMMA_DATABASE_PASSWORD:kiedev}
spring.jpa.hibernate.ddl-auto=update
spring.servlet.multipart.enabled=false
kafka.bootstrapAddress=${PYMMA_KAFKA_BOOTSTRAP:localhost:9092,localhost:9093,localhost:9094}
@ -32,6 +36,6 @@ spring.servlet.multipart.max-request-size=100MB
# Server properties
server.tomcat.max-http-post-size=100000000
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

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-admin-console-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

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

@ -5,7 +5,7 @@
<parent>
<artifactId>pymma-jbpm-platform-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -80,6 +80,7 @@
<target>${pymma.java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

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

View file

@ -4,7 +4,7 @@
<parent>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-examples</artifactId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -4,7 +4,7 @@
<parent>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-examples</artifactId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<artifactId>drools-framework-swimmingpool-web-ui</artifactId>
@ -83,7 +83,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.8</version>
<version>${jackson.version}</version>
</dependency>
</dependencies>

View file

@ -4,7 +4,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -4,7 +4,7 @@
<parent>
<artifactId>drools-framework-kie-server-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-kie-server-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -4,7 +4,7 @@
<parent>
<artifactId>drools-framework-kie-server-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -4,7 +4,7 @@
<parent>
<artifactId>drools-framework-kie-server-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -3,7 +3,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-kie-wb-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<artifactId>drools-framework-kie-wb-rest-pojo</artifactId>
<packaging>jar</packaging>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-kie-wb-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-kie-wb-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-kie-wb-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<artifactId>kie-drools-framework-rest-backend</artifactId>

View file

@ -2,12 +2,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>drools-framework-kie-wb-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>kie-wb</artifactId>
@ -151,6 +151,7 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>

View file

@ -7,6 +7,9 @@ public class DummyFact {
private DummyFact property;
private List<DummyFact> listOfFacts;
public DummyFact() {
}
DummyFact(String name) {
this.name = name;
}

View file

@ -3,7 +3,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<artifactId>drools-framework-runtime-entity</artifactId>
@ -100,5 +100,15 @@
<version>1.3.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
</project>

View file

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

View file

@ -3,7 +3,7 @@ package org.chtijbug.drools;
import java.util.ArrayList;
import java.util.List;
public class ReverseProxyUpdate {
public class ReverseProxyUpdate implements java.io.Serializable{
private String path;
private String tokenUUID;

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

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

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-spring-boot-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -145,6 +145,11 @@
<target>${pymma.java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
</project>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-base-tools-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-framework-spring-boot-parent</artifactId>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>pymma-jbpm-platform-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
@ -90,17 +90,17 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.9</version>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.9</version>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.10.4</version>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -27,28 +27,26 @@
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>${kafka.version}</version>
<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 -->
<!--dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

View file

@ -16,95 +16,63 @@
*/
package org.chtijbug.drools.indexer;
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.apache.activemq.ActiveMQXAConnectionFactory;;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.kafka.annotation.EnableKafka;
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;
import org.springframework.context.annotation.PropertySource;
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.transaction.annotation.EnableTransactionManagement;
// CHECKSTYLE:OFF
@SpringBootApplication
@Configuration
@EnableMongoRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@EnableKafka
@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 final static String LOGING_TOPIC ="logging";
@Value(value = "${kafka.bootstrapAddress}")
private String bootstrapAddress;
@Value("${pymma.kafka.activateSsl:false}")
private boolean activateSsl;
@Value("${almady.jms.url}")
private String jmsUrl;
private JmsTemplate jmsTemplate;
private ActiveMQXAConnectionFactory connectionFactory;
@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;
@Value(value = "${kafka.index.groupid})")
private String groupID;
public ConsumerFactory<String, ChtijbugObjectRequest> greetingConsumerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
props.put(ConsumerConfig.GROUP_ID_CONFIG, groupID);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
props.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, 4655826);
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<>(ChtijbugObjectRequest.class));
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, ChtijbugObjectRequest>
ruleKafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, ChtijbugObjectRequest> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(greetingConsumerFactory());
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")
JmsTemplate createJmsTemplate() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
jmsTemplate = new JmsTemplate(connectionFactory);
return jmsTemplate;
}
/**
* Main method to start the application.
*/
public static void main(String[] args) {
System.setProperty(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, "41943040");
SpringApplication.run(DroolsBusinessIndexerServer.class, args);
}

View file

@ -12,7 +12,7 @@ import org.chtijbug.drools.proxy.persistence.repository.BusinessTransactionPersi
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 java.util.*;
@ -29,9 +29,7 @@ public class StoreLoggingService {
private BusinessTransactionActionRepository actionRepository;
@KafkaListener(
topics = KafkaTopicConstants.LOGING_TOPIC, groupId = "${kafka.index.groupid}",
containerFactory = "ruleKafkaListenerContainerFactory")
@JmsListener(destination = KafkaTopicConstants.LOGING_TOPIC,containerFactory = "jmsListenerContainerFactory")
public void store(ChtijbugObjectRequest result) {
if (result != null) {
@ -52,7 +50,7 @@ public class StoreLoggingService {
item.setSecond(second);
item.setMillis(millis);
item.setTransactionId(id);
item.setId(UUID.randomUUID().toString());
long ii = 1;
SessionContext sessionContext = result.getSessionLogging();
@ -68,8 +66,8 @@ public class StoreLoggingService {
BusinessTransactionAction businessTransactionoutput = null;
for (Fact fact : sessionExecution.getFacts()) {
BusinessTransactionAction businessTransactionAction = new BusinessTransactionAction();
businessTransactionAction.setId(UUID.randomUUID().toString());
businessTransactionAction.setBusinessTransactionId(item.getId());
businessTransactionAction.setBusinessTransactionId(item.getTransactionId());
if (fact.getFactType().equals(FactType.INPUTDATA)) {
businessTransactionAction.setEventType(EventType.INPUT);
businessTransactionAction.setInputData(fact);
@ -108,18 +106,18 @@ public class StoreLoggingService {
businessTransactionActionStart.setEventType(EventType.STARTPROCESS);
businessTransactionActionStart.setProcessID(processExecution.getProcessId());
businessTransactionActionStart.setBusinessTransactionId(item.getId());
businessTransactionActionStart.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionStart.setEventNumber(ii++);
businessTransactionActionStart.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionStart.getEventNumber(), businessTransactionActionStart);
for (RuleflowGroup rfg : processExecution.getRuleflowGroups()) {
BusinessTransactionAction businessTransactionActionStartRFG = new BusinessTransactionAction();
businessTransactionActionStartRFG.setBusinessTransactionId(item.getId());
businessTransactionActionStartRFG.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionStartRFG.setEventType(EventType.STARTRULEFLOWGROUP);
businessTransactionActionStartRFG.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionStartRFG.setEventNumber(ii++);
businessTransactionActionStartRFG.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionStartRFG.getEventNumber(), businessTransactionActionStartRFG);
for (RuleExecution ruleExecution : rfg.getRuleExecutionList()) {
BusinessTransactionAction businessTransactionActionRule = new BusinessTransactionAction();
@ -127,27 +125,27 @@ public class StoreLoggingService {
businessTransactionActionRule.setEventType(EventType.RULE);
businessTransactionActionRule.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionRule.setRuleExecution(ruleExecution);
businessTransactionActionRule.setBusinessTransactionId(item.getId());
businessTransactionActionRule.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionRule.setProcessID(processExecution.getProcessId());
businessTransactionActionRule.setEventNumber(ii++);
businessTransactionActionRule.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionRule.getEventNumber(), businessTransactionActionRule);
}
BusinessTransactionAction businessTransactionActionSTOPRFG = new BusinessTransactionAction();
businessTransactionActionSTOPRFG.setEventType(EventType.STOPTRULEFLOWGROUP);
businessTransactionActionSTOPRFG.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionSTOPRFG.setBusinessTransactionId(item.getId());
businessTransactionActionSTOPRFG.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionSTOPRFG.setEventNumber(ii++);
businessTransactionActionSTOPRFG.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionSTOPRFG.getEventNumber(), businessTransactionActionSTOPRFG);
}
BusinessTransactionAction businessTransactionActionEnd = new BusinessTransactionAction();
businessTransactionActionEnd.setEventType(EventType.STOPPROCESS);
businessTransactionActionEnd.setProcessID(processExecution.getProcessId());
businessTransactionActionEnd.setBusinessTransactionId(item.getId());
businessTransactionActionEnd.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionEnd.setEventNumber(ii++);
businessTransactionActionEnd.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionEnd.getEventNumber(), businessTransactionActionEnd);
}

View file

@ -1,17 +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.password=${PYMMA_KIE_SERVEUR_PASSWORD:kieserver1}
kafka.index.groupid=${PYMMA_KIE_SERVEUR_GROUPID:index1}
spring.data.mongodb.database=${PYMMA_MONGO_DATABASE:businessProxyDB}
spring.data.mongodb.host=${PYMMA_MONGO_HOST:localhost:28017}
server.port=${port:5547}
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.password=${PYMMA_DATABASE_PASSWORD:kiedev}
spring.jpa.properties.hibernate.dialect= org.chtijbug.drools.proxy.persistence.dialect.JSONBPostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
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

@ -19,12 +19,13 @@
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<artifactId>drools-framework-business-proxy-app</artifactId>
@ -54,7 +55,7 @@
<dependencies>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Spring Boot -->
@ -114,12 +115,21 @@
<artifactId>camel-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>${kafka.version}</version>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</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 -->
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>

View file

@ -16,164 +16,52 @@
*/
package org.chtijbug.drools.proxy;
import com.fasterxml.jackson.databind.ObjectMapper;
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.apache.activemq.ActiveMQXAConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaAdmin;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.support.serializer.JsonSerializer;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
// CHECKSTYLE:OFF
@SpringBootApplication
@Configuration
@EnableKafka
@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 {
@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);
}
@Bean
public ProducerFactory<String, ChtijbugObjectRequest> producerFactory() {
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);
}
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);
}
@Value("${almady.jms.url}")
private String jmsUrl;
private JmsTemplate jmsTemplate;
private ActiveMQXAConnectionFactory connectionFactory;
@Bean
public KafkaTemplate<String, ChtijbugObjectRequest> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
@Bean(name = "jmsTemplate")
JmsTemplate createJmsTemplate() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
jmsTemplate = new JmsTemplate(connectionFactory);
return jmsTemplate;
}
/**
@ -190,7 +78,7 @@ public class DroolsBusinessProxyServer {
e.printStackTrace();
}
}
System.setProperty(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, "41943040");
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.Route;
import org.apache.kafka.clients.admin.NewTopic;
import org.chtijbug.drools.proxy.PlatfomKieServerStateRepository;
import org.chtijbug.drools.proxy.camel.DroolsRouter;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
@ -94,9 +93,7 @@ public class KieServiceCommon {
@Qualifier("deployFinish")
@Autowired
NewTopic responseTopic;
public KieServiceCommon() {
//Needed

View file

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

View file

@ -19,18 +19,13 @@ server.port=8090
camel.springboot.name=MyCamel
# to reconfigure the camel servlet context-path mapping to use /api/* instead of /camel/*
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/
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

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-runtime-entity</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-admin-dto</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,31 @@
/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.chtijbug.drools.proxy.persistence.dialect;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.dialect.PostgreSQL10Dialect;
import org.hibernate.dialect.PostgreSQL9Dialect;
import java.sql.Types;
public class JSONBPostgreSQLDialect extends PostgreSQL10Dialect {
public JSONBPostgreSQLDialect() {
super();
System.out.println("Nico-JSONBPostgreSQLDialect");
registerColumnType(Types.JAVA_OBJECT, JSONBUserType.JSONB_TYPE);
}
}

View file

@ -0,0 +1,38 @@
package org.chtijbug.drools.proxy.persistence.json;
import java.io.Serializable;
public class KieProject implements Serializable {
private String spaceName;
private String name;
public KieProject(){}
public KieProject(String spaceName, String name) {
this.spaceName = spaceName;
this.name = name;
}
public String getSpaceName() {
return spaceName;
}
public void setSpaceName(String spaceName) {
this.spaceName = spaceName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return spaceName+"-"+name;
}
}

View file

@ -0,0 +1,149 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.logging.Fact;
import org.chtijbug.drools.logging.RuleExecution;
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.*;
@Entity
@TypeDefs({
@TypeDef(name = "Fact", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.logging.Fact")}),
@TypeDef(name = "RuleExecution", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.logging.RuleExecution")})
})
public class BusinessTransactionAction {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
@Enumerated(EnumType.STRING)
@Column(length = 50)
private EventType eventType;
private long eventNumber;
private String businessTransactionId;
@Type(type = "Fact")
private Fact inputData;
@Type(type = "Fact")
private Fact outputData;
@Type(type = "RuleExecution")
private RuleExecution ruleExecution;
@Type(type = "Fact")
private Fact fact;
private String processID;
private String ruleflowGroupName;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
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(uniqueId).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

@ -0,0 +1,162 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"transactionId"})
})
public class BusinessTransactionPersistence {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String transactionId;
private Integer year;
private Integer month;
private Integer day;
private Integer hour;
private Integer minute;
private Integer second;
private Integer millis;
private String groupID;
private String artefactID;
private String version;
private String containerId;
private String serverName;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
public Integer getMonth() {
return month;
}
public void setMonth(Integer month) {
this.month = month;
}
public Integer getDay() {
return day;
}
public void setDay(Integer day) {
this.day = day;
}
public Integer getHour() {
return hour;
}
public void setHour(Integer hour) {
this.hour = hour;
}
public Integer getMinute() {
return minute;
}
public void setMinute(Integer minute) {
this.minute = minute;
}
public Integer getSecond() {
return second;
}
public void setSecond(Integer second) {
this.second = second;
}
public Integer getMillis() {
return millis;
}
public void setMillis(Integer millis) {
this.millis = millis;
}
public String getGroupID() {
return groupID;
}
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,148 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"className"}),
@UniqueConstraint(columnNames={"containerId"}),
@UniqueConstraint(columnNames={"serverName"})
})
public class ContainerPojoPersist {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private boolean disableRuleLogging;
private String className;
private String containerId;
private String serverName;
private String processID;
private String projectName;
private String groupId;
private String artifactId;
private String version;
private String projectUUID;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
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;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getProcessID() {
return processID;
}
public void setProcessID(String processID) {
this.processID = processID;
}
public String getProjectUUID() {
return projectUUID;
}
public void setProjectUUID(String projectUUID) {
this.projectUUID = projectUUID;
}
public boolean isDisableRuleLogging() {
return disableRuleLogging;
}
public void setDisableRuleLogging(boolean disableRuleLogging) {
this.disableRuleLogging = disableRuleLogging;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("ContainerPojoPersist{");
sb.append("id='").append(uniqueId).append('\'');
sb.append(", className='").append(className).append('\'');
sb.append(", containerId='").append(containerId).append('\'');
sb.append(", serverName='").append(serverName).append('\'');
sb.append(", processID='").append(processID).append('\'');
sb.append(", projectName='").append(projectName).append('\'');
sb.append(", groupId='").append(groupId).append('\'');
sb.append(", artifactId='").append(artifactId).append('\'');
sb.append(", version='").append(version).append('\'');
sb.append('}');
return sb.toString();
}
}

View file

@ -0,0 +1,107 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"containerId"}),
@UniqueConstraint(columnNames={"serverName"}),
@UniqueConstraint(columnNames={"hostname"})
})
public class ContainerRuntimePojoPersist {
public enum STATUS {
UP,
DOWN,
TODEPLOY,
TODELETE
}
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String containerId;
private String serverName;
private String hostname;
private String status;
private String projectUUID;
private boolean disableRuleLogging;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getProjectUUID() {
return projectUUID;
}
public void setProjectUUID(String projectUUID) {
this.projectUUID = projectUUID;
}
public boolean isDisableRuleLogging() {
return disableRuleLogging;
}
public void setDisableRuleLogging(boolean disableRuleLogging) {
this.disableRuleLogging = disableRuleLogging;
}
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;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("ContainerRuntimePojoPersist{");
sb.append("id='").append(uniqueId).append('\'');
sb.append(", containerId='").append(containerId).append('\'');
sb.append(", serverName='").append(serverName).append('\'');
sb.append(", hostname='").append(hostname).append('\'');
sb.append(", status='").append(status).append('\'');
sb.append('}');
return sb.toString();
}
}

View file

@ -0,0 +1,46 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"name"})
})
public class Customer {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String name;
@ManyToOne
private KieWorkbench kieWorkbench;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
}

View file

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

View file

@ -0,0 +1,77 @@
package org.chtijbug.drools.proxy.persistence.model;
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 java.util.List;
@Entity
@Table(uniqueConstraints ={
@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 {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
@ManyToOne
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition;
private String lineID;
@Type(type = "variableDefinitions")
private VariableDataList dataRows = new VariableDataList();
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public GuidedRulesTemplateDefinition getGuidedRulesTemplateDefinition() {
return guidedRulesTemplateDefinition;
}
public void setGuidedRulesTemplateDefinition(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition) {
this.guidedRulesTemplateDefinition = guidedRulesTemplateDefinition;
}
public String getLineID() {
return lineID;
}
public void setLineID(String lineID) {
this.lineID = lineID;
}
public VariableDataList getDataRows() {
return dataRows;
}
public void setDataRows(VariableDataList dataRows) {
this.dataRows = dataRows;
}
public List<VariableData> getRows() {
return dataRows.getRows();
}
public void setRows(List<VariableData> rows) {
this.dataRows.setRows( rows);
}
}

View file

@ -0,0 +1,80 @@
package org.chtijbug.drools.proxy.persistence.model;
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 java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints ={
@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 {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String templateName;
@ManyToOne
private UserGroups projectGroup;
@Type(type = "variables")
private VariableDefinitionList variableDefinitions = new VariableDefinitionList();
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getTemplateName() {
return templateName;
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
public UserGroups getProjectGroup() {
return projectGroup;
}
public void setProjectGroup(UserGroups projectGroup) {
this.projectGroup = projectGroup;
}
public VariableDefinitionList getVariableDefinitions() {
return variableDefinitions;
}
public void setVariableDefinitions(VariableDefinitionList variableDefinitions) {
this.variableDefinitions = variableDefinitions;
}
public List<VariableDefinition> getVariables() {
return variableDefinitions.getVariables();
}
public void setVariables(List<VariableDefinition> variables) {
this.variableDefinitions.setVariables(variables);
}
}

View file

@ -0,0 +1,75 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"name"})
})
public class KieWorkbench {
@Id
@GeneratedValue
private Long uniqueId;
private String name;
private String internalUrl;
private String externalUrl;
private byte[] logo;
private String gitURL;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getLogo() {
return logo;
}
public void setLogo(byte[] logo) {
this.logo = logo;
}
public String getInternalUrl() {
return internalUrl;
}
public void setInternalUrl(String internalUrl) {
this.internalUrl = internalUrl;
}
public String getExternalUrl() {
return externalUrl;
}
public void setExternalUrl(String externalUrl) {
this.externalUrl = externalUrl;
}
public String getGitURL() {
return gitURL;
}
public void setGitURL(String gitURL) {
this.gitURL = gitURL;
}
}

View file

@ -0,0 +1,250 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"deploymentName"}),
@UniqueConstraint(columnNames={"uuid"})
})
public class ProjectPersist implements Serializable {
public static final String ADEFINIR = "A définir";
public static final String DEFINI = "Défini";
public static final String Deployable = "Déployable";
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String deploymentName;
private String uuid;
@ManyToOne
private KieWorkbench kieWorkbench;
private KieProject projectName;
private String mainClass;
private String groupID;
private String artifactID;
private String processID;
private String projectVersion;
private String containerID;
private String branch;
@ElementCollection
private List<String> serverNames = new ArrayList<>();
private String status;
@ElementCollection
private List<String> classNameList;
private boolean disableRuleLogging;
private boolean enableHotDeploy;
private boolean useJWTToConnect;
private String jwtAPIToken;
public ProjectPersist() {
}
public ProjectPersist(String deploymentName, KieProject projectName, String mainClass, String groupID, String artifactID, String processID, String projectVersion, String containerID, List<String> serverNames, String status) {
this.deploymentName = deploymentName;
this.projectName = projectName;
this.mainClass = mainClass;
this.groupID = groupID;
this.artifactID = artifactID;
this.processID = processID;
this.projectVersion = projectVersion;
this.containerID = containerID;
this.serverNames = serverNames;
this.status = status;
}
public String getUuid() {
return uuid;
}
public String getDeploymentName() {
return deploymentName;
}
public void setDeploymentName(String deploymentName) {
this.deploymentName = deploymentName;
}
public KieProject getProjectName() {
return projectName;
}
public void setProjectName(KieProject projectName) {
this.projectName = projectName;
}
public String getMainClass() {
return mainClass;
}
public void setMainClass(String mainClass) {
this.mainClass = mainClass;
}
public String getGroupID() {
return groupID;
}
public void setGroupID(String groupID) {
this.groupID = groupID;
}
public String getArtifactID() {
return artifactID;
}
public void setArtifactID(String artifactID) {
this.artifactID = artifactID;
}
public String getProcessID() {
return processID;
}
public String getContainerID() {
return containerID;
}
public void setContainerID(String containerID) {
this.containerID = containerID;
}
public void setProcessID(String processID) {
this.processID = processID;
}
public String getProjectVersion() {
return projectVersion;
}
public void setProjectVersion(String projectVersion) {
this.projectVersion = projectVersion;
}
public List<String> getServerNames() {
return serverNames;
}
public void setServerName(List<String> serverNames) {
this.serverNames = serverNames;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<String> getClassNameList() {
return classNameList;
}
public void setClassNameList(List<String> classNameList) {
this.classNameList = classNameList;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
public void setServerNames(List<String> serverNames) {
this.serverNames = serverNames;
}
public String getWorkspaceName() {
if (this.projectName != null) {
return projectName.getSpaceName();
}
return null;
}
public boolean isUseJWTToConnect() {
return useJWTToConnect;
}
public void setUseJWTToConnect(boolean useJWTToConnect) {
this.useJWTToConnect = useJWTToConnect;
}
public String getKieProjectName() {
if (this.projectName != null) {
return projectName.getName() + "-" + this.branch;
}
return null;
}
public boolean isDisableRuleLogging() {
return disableRuleLogging;
}
public void setDisableRuleLogging(boolean disableRuleLogging) {
this.disableRuleLogging = disableRuleLogging;
}
public boolean isEnableHotDeploy() {
return enableHotDeploy;
}
public void setEnableHotDeploy(boolean enableHotDeploy) {
this.enableHotDeploy = enableHotDeploy;
}
public String getJwtAPIToken() {
return jwtAPIToken;
}
public void setJwtAPIToken(String jwtAPIToken) {
this.jwtAPIToken = jwtAPIToken;
}
public ProjectPersist duplicate() {
ArrayList<String> listServerNames = new ArrayList<String>();
listServerNames.addAll(serverNames);
ProjectPersist duplicate = new ProjectPersist(deploymentName, projectName, mainClass, groupID, artifactID, processID, projectVersion, containerID, listServerNames, status);
duplicate.setEnableHotDeploy(enableHotDeploy);
duplicate.setJwtAPIToken(jwtAPIToken);
duplicate.setDisableRuleLogging(disableRuleLogging);
duplicate.setUseJWTToConnect(useJWTToConnect);
return duplicate;
}
}

View file

@ -0,0 +1,164 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import java.util.Date;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"serverName"}),
@UniqueConstraint(columnNames={"hostname"})
})
public class RuntimePersist {
public enum STATUS {
UP,
DOWN
}
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String serverName;
private String version;
private String branch;
private String hostname;
private String serverUrl;
private String serverPort;
private String sftpHost;
private String sftpPort;
private String status;
private Date creationDate;
private Date timeStamp;
public RuntimePersist(String serverName, String version, String hostname,String serverPort,String sftpPort,String sftpHost,String status) {
this.serverName = serverName;
this.version = version;
this.hostname = hostname;
this.serverPort = serverPort;
this.sftpPort = sftpPort;
this.sftpHost = sftpHost;
this.status=status;
this.creationDate = new Date();
}
public RuntimePersist(String serverName) {
this.serverName = serverName;
}
public RuntimePersist() {
}
public RuntimePersist duplicate(){
RuntimePersist duplicate = new RuntimePersist(serverName,version,hostname,serverPort,sftpPort,sftpHost,status);
duplicate.setServerUrl(this.serverUrl);
return duplicate;
}
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public String getSftpPort() {
return sftpPort;
}
public void setSftpPort(String sftpPort) {
this.sftpPort = sftpPort;
}
public String getServerPort() {
return serverPort;
}
public void setServerPort(String serverPort) {
this.serverPort = serverPort;
}
public String getSftpHost() {
return sftpHost;
}
public void setSftpHost(String sftpHost) {
this.sftpHost = sftpHost;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getServerUrl() {
return serverUrl;
}
public void setServerUrl(String serverUrl) {
this.serverUrl = serverUrl;
}
public Date getCreationDate() {
return creationDate;
}
public Date getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(Date timeStamp) {
this.timeStamp = timeStamp;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
}

View file

@ -0,0 +1,99 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = {"login"})
})
public class User {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String login;
private String wbName;
private String password;
public User() {
}
public User( String login, String password) {
this.uniqueId = uniqueId;
this.login = login;
this.password = password;
}
@OneToMany
private List<UserRoles> userRoles = new ArrayList<>();
@OneToMany
private List<UserGroups> userGroups = new ArrayList<>();
@ManyToOne
private Customer customer;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<UserRoles> getUserRoles() {
return userRoles;
}
public void setUserRoles(List<UserRoles> userRoles) {
this.userRoles = userRoles;
}
public List<UserGroups> getUserGroups() {
return userGroups;
}
public void setUserGroups(List<UserGroups> userGroups) {
this.userGroups = userGroups;
}
public String getWbName() {
return wbName;
}
public void setWbName(String wbName) {
this.wbName = wbName;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}

View file

@ -0,0 +1,111 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"name"}),
@UniqueConstraint(columnNames={"spaceName"}),
@UniqueConstraint(columnNames={"projectName"})
})
public class UserGroups {
@Id
@GeneratedValue
private Long uniqueId;
private String name;
private String spaceName;
private String projectName;
@ManyToOne
private KieWorkbench kieWorkbench;
@ManyToOne
private ProjectPersist projectPersist;
@ManyToOne
private UserGroups workspaceUserGroup;
public UserGroups() {
}
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public UserGroups( String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSpaceName() {
return spaceName;
}
public void setSpaceName(String spaceName) {
this.spaceName = spaceName;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
public ProjectPersist getProjectPersist() {
return projectPersist;
}
public void setProjectPersist(ProjectPersist projectPersist) {
this.projectPersist = projectPersist;
}
public UserGroups getWorkspaceUserGroup() {
return workspaceUserGroup;
}
public void setWorkspaceUserGroup(UserGroups workspaceUserGroup) {
this.workspaceUserGroup = workspaceUserGroup;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserGroups that = (UserGroups) o;
return Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}

View file

@ -0,0 +1,52 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"name"})
)
public class UserRoles {
@Id
@GeneratedValue
private Long uniqueId;
private String name;
public UserRoles() {
}
public UserRoles( String name) {
this.name = name;
}
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserRoles userRoles = (UserRoles) o;
return Objects.equals(name, userRoles.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}

View file

@ -0,0 +1,15 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionAction;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface BusinessTransactionActionRepository extends JpaRepository<BusinessTransactionAction,Long> {
public List<BusinessTransactionAction> findAllByBusinessTransactionId(String businessTransactionId, Sort sort, PageRequest pageRequest);
}

View file

@ -0,0 +1,17 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionPersistence;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface BusinessTransactionPersistenceRepository extends JpaRepository<BusinessTransactionPersistence,Long> {
public BusinessTransactionPersistence findAllByUniqueId(String id, PageRequest pageRequest);
public List<BusinessTransactionPersistence> findAllByTransactionId(String transactionId, PageRequest pageRequest);
}

View file

@ -0,0 +1,22 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ContainerRepository extends JpaRepository<ContainerPojoPersist, Long> {
ContainerPojoPersist findByServerNameAndContainerId(String serverName,String containerId);
List<ContainerPojoPersist> findByContainerId(String containerId);
List<ContainerPojoPersist> findByServerName(String serverName);
List<ContainerPojoPersist> findByProjectUUID(String projectUUID);
}

View file

@ -0,0 +1,24 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ContainerRuntimePojoPersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ContainerRuntimeRepository extends JpaRepository<ContainerRuntimePojoPersist, String> {
List<ContainerRuntimePojoPersist> findByServerNameAndContainerId(String serverName, String containerId);
List<ContainerRuntimePojoPersist> findByServerNameAndStatus(String serverName, String status);
List<ContainerRuntimePojoPersist> findByServerNameAndStatusAndHostname(String serverName, String status,String hostname);
List<ContainerRuntimePojoPersist> findByServerNameAndHostname(String serverName, String hostname);
List<ContainerRuntimePojoPersist> findByProjectUUID(String projectUUID);
List<ContainerRuntimePojoPersist> findByContainerId(String continuerID);
ContainerRuntimePojoPersist findByServerNameAndContainerIdAndHostname(String serverName, String containerId,String hostname);
}

View file

@ -0,0 +1,12 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CustomerRepository extends JpaRepository<Customer, String> {
Customer findByName(String name);
Customer findByUniqueId(String ID);
}

View file

@ -0,0 +1,17 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateData;
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateDefinition;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface GuidedRulestemplateDataRepository extends JpaRepository<GuidedRulesTemplateData, String> {
GuidedRulesTemplateData findByGuidedRulesTemplateDefinitionAndLineID(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition,String lineID);
List<GuidedRulesTemplateData> findByGuidedRulesTemplateDefinition(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition);
}

View file

@ -0,0 +1,16 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateDefinition;
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface GuidedRulestemplateDefinitionRepository extends JpaRepository<GuidedRulesTemplateDefinition, String> {
List<GuidedRulesTemplateDefinition> findByTemplateName(String assetName);
GuidedRulesTemplateDefinition findByTemplateNameAndProjectGroup(String assetName, UserGroups projectGroup);
}

View file

@ -0,0 +1,12 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface KieWorkbenchRepository extends JpaRepository<KieWorkbench, Long> {
KieWorkbench findByName(String name);
KieWorkbench findByUniqueId(String ID);
}

View file

@ -0,0 +1,22 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ProjectRepository extends JpaRepository<ProjectPersist, Long> {
public List<ProjectPersist> findByProjectName(KieProject projectName);
public ProjectPersist findByProjectNameAndBranch(KieProject projectName,String branch);
public ProjectPersist findByDeploymentName(String deploymentName);
public ProjectPersist findByUuid(String UUID);
public List<ProjectPersist> findByServerNamesIn(List<String> serverNames);
public List<ProjectPersist> findByServerNamesInAndDeploymentName(List<String> serverNames,String deploymentName);
public List<ProjectPersist> findByKieWorkbench(KieWorkbench kieWorkbench);
}

View file

@ -0,0 +1,14 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface RuntimeRepository extends JpaRepository<RuntimePersist, Long> {
public List<RuntimePersist> findByServerName(String serverName);
public List<RuntimePersist> findByServerNameAndHostname(String serverName,String hostname);
}

View file

@ -0,0 +1,18 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserGroupsRepository extends JpaRepository<UserGroups, Long> {
UserGroups findByName(String login);
UserGroups findByUniqueId(String login);
UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist);
UserGroups findBySpaceName(String spaceName);
UserGroups findByWorkspaceUserGroupAndProjectName(UserGroups workspaceUserGroups,String projectName);
}

View file

@ -0,0 +1,11 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByLogin(String login);
}

View file

@ -0,0 +1,12 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.UserRoles;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRolesRepository extends JpaRepository<UserRoles, Long> {
UserRoles findByName(String login);
UserRoles findByUniqueId(String login);
}

View file

@ -0,0 +1,162 @@
/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.chtijbug.drools.proxy.persistence.types;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.hibernate.HibernateException;
import org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl;
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.SerializationException;
import org.hibernate.usertype.ParameterizedType;
import org.hibernate.usertype.UserType;
import org.postgresql.util.PGobject;
import java.io.IOException;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.*;
import java.util.stream.Collectors;
public class JSONBUserType implements ParameterizedType, UserType {
public static final String JSONB_TYPE = "jsonb";;
public static final String CLASS = "CLASS";
private static final ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).registerModule(new JavaTimeModule())
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
private static final ClassLoaderService classLoaderService = new ClassLoaderServiceImpl();
private Class jsonClassType;
public JSONBUserType() {
}
@Override
public Class<Object> returnedClass() {
return Object.class;
}
@Override
public int[] sqlTypes() {
return new int[]{Types.JAVA_OBJECT};
}
@Override
public void setParameterValues(Properties parameters) {
final String clazz = (String) parameters.get(CLASS);
jsonClassType = classLoaderService.classForName(clazz);
}
@SuppressWarnings("unchecked")
@Override
public Object deepCopy(Object value) throws HibernateException {
if (!(value instanceof Collection)) {
return value;
}
Collection<?> collection = (Collection) value;
Collection collectionClone = CollectionFactory.newInstance(collection.getClass());
collectionClone.addAll(collection.stream().map(this::deepCopy).collect(Collectors.toList()));
return collectionClone;
}
@Override
public boolean isMutable() {
return true;
}
@Override
public boolean equals(Object x, Object y) throws HibernateException {
if (x == y) {
return true;
}
if ((x == null) || (y == null)) {
return false;
}
return x.equals(y);
}
@Override
public int hashCode(Object x) throws HibernateException {
assert (x != null);
return x.hashCode();
}
@Override
public Object nullSafeGet(ResultSet resultSet, String[] names, SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws HibernateException, SQLException {
try {
final String json = resultSet.getString(names[0]);
return json == null ? null : objectMapper.readValue(json, jsonClassType);
} catch (IOException e) {
throw new HibernateException(e);
}
}
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor sharedSessionContractImplementor) throws HibernateException, SQLException {
try {
final String json = value == null ? null : objectMapper.writeValueAsString(value);
PGobject pgo = new PGobject();
pgo.setType(JSONB_TYPE);
pgo.setValue(json);
st.setObject(index, pgo);
} catch (JsonProcessingException e) {
throw new HibernateException(e);
}
}
@Override
public Object assemble(Serializable cached, Object owner) throws HibernateException {
return deepCopy(cached);
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
Object deepCopy = deepCopy(value);
if (deepCopy != null && !(deepCopy instanceof Serializable)) {
throw new SerializationException(String.format("%s is not serializable class", value), null);
}
return (Serializable) deepCopy;
}
@Override
public Object replace(Object original, Object target, Object owner) throws HibernateException {
return deepCopy(original);
}
static final class CollectionFactory {
@SuppressWarnings("unchecked")
static <E, T extends Collection<E>> T newInstance(Class<T> collectionClass) {
if (List.class.isAssignableFrom(collectionClass)) {
return (T) new ArrayList<E>();
} else if (Set.class.isAssignableFrom(collectionClass)) {
return (T) new HashSet<E>();
} else {
throw new IllegalArgumentException("Unsupported collection type : " + collectionClass);
}
}
}
}

View file

@ -26,13 +26,13 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -14,18 +14,27 @@
<dependencies>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>${kafka.version}</version>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</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>
<groupId>com.github.mkopylec</groupId>
<artifactId>charon-spring-boot-starter</artifactId>
<version>3.1.0</version>
<version>3.2.0</version>
</dependency>
<!-- Spring Boot -->
<dependency>
@ -82,6 +91,10 @@
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
</dependency>
</dependencies>
<!-- Spring-Boot and Camel BOM -->

View file

@ -1,76 +1,33 @@
package org.chtijbug.drools.reverseproxy;
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.apache.activemq.ActiveMQXAConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
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;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jms.core.JmsTemplate;
import org.apache.activemq.ActiveMQXAConnectionFactory;
@SpringBootApplication
@EnableMongoRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
public class DroolsBusinessReverseProxyServer {
@Value(value = "${kafka.bootstrapAddress}")
private String bootstrapAddress;
@Value("${pymma.kafka.activateSsl:false}")
private boolean activateSsl;
@Value("${pymma.kafka.sslTruststoreLocation:}")
private String sslTruststoreLocation;
@Value("${almady.jms.url}")
private String jmsUrl;
private JmsTemplate jmsTemplate;
@Value("${pymma.kafka.sslTruststorePassword:}")
private String sslTruststorePassword;
private ActiveMQXAConnectionFactory connectionFactory;
@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;
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;
@Bean(name = "jmsTemplate")
JmsTemplate createJmsTemplate() {
connectionFactory = new ActiveMQXAConnectionFactory(jmsUrl);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setAlwaysSyncSend(true);
connectionFactory.setProducerWindowSize(1024000);
jmsTemplate = new JmsTemplate(connectionFactory);
return jmsTemplate;
}
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.LoggerFactory;
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 javax.annotation.PostConstruct;
@ -43,9 +43,8 @@ public class UpdateService {
}
@KafkaListener(
topics = KafkaTopicConstants.REVERSE_PROXY,
containerFactory = "mappingKafkaListenerContainerFactory")
@JmsListener(
destination = KafkaTopicConstants.REVERSE_PROXY)
public void store(ReverseProxyUpdate update) {
boolean found = false;
MappingProperties mappingProperties = null;

View file

@ -1,15 +1,13 @@
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
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

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>pymma-jbpm-platform-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -19,8 +19,9 @@
</properties>
<modules>
<module>drools-framework-business-proxy-app</module>
<module>drools-framework-business-proxy-persistence</module>
<!--module>drools-framework-business-proxy-persistence</module-->
<module>drools-framework-business-indexer-app</module>
<module>drools-framework-business-reverse-proxy</module>
<module>drools-framework-business-proxy-jpa</module>
</modules>
</project>

93
pom.xml
View file

@ -7,7 +7,7 @@
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>pymma-jbpm-platform-parent</artifactId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<modules>
<!--module>kie-wb-webapp</module-->
<module>drools-framework-admin-console-parent</module>
@ -18,13 +18,13 @@
<properties>
<fabri8.plugin.version>0.34.1</fabri8.plugin.version>
<jbpm.version>7.61.0.Final</jbpm.version>
<jbpm.version>7.74.1.Final</jbpm.version>
<node.version>v10.16.3</node.version>
<npm.version>6.11.3</npm.version>
<frontend-maven-plugin.version>1.11.3</frontend-maven-plugin.version>
<spring.boot.version>2.2.6.RELEASE</spring.boot.version>
<spring.boot.version>2.7.16</spring.boot.version>
<spring.version>5.2.6.RELEASE</spring.version>
<spring.version>5.3.30</spring.version>
<version.thorntail>2.2.1.Final</version.thorntail>
<!--registry.host>registry.hub.docker.com/pymmasoftware</registry.host-->
<registry.host>192.168.1.122:18083</registry.host>
@ -37,6 +37,11 @@
<jaxb.api.version>2.3.0</jaxb.api.version>
<maven.plugin.version>3.8.1</maven.plugin.version>
<pymma.java.version>11</pymma.java.version>
<jackson.version>2.13.4</jackson.version>
<jackson.bind.version>2.13.4.2</jackson.bind.version>
<postgres.version>42.2.8</postgres.version>
<postgresql.version>42.2.8</postgresql.version>
<activemq.version>5.15.10</activemq.version>
</properties>
<profiles>
<profile>
@ -58,6 +63,67 @@
</plugins>
</build>
</profile>
<profile>
<id>dttrack</id>
<properties>
<dependency-track-maven-plugin.version>1.2.0</dependency-track-maven-plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-maven-plugin</artifactId>
<version>2.7.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>makeAggregateBom</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.github.pmckeown</groupId>
<artifactId>dependency-track-maven-plugin</artifactId>
<version>${dependency-track-maven-plugin.version}</version>
<dependencies>
<dependency>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-core-java</artifactId>
<version>7.3.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.5.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>upload-bom</goal>
</goals>
</execution>
</executions>
<configuration>
<dependencyTrackBaseUrl>https://dependency-api.infra.pymma-software.net
</dependencyTrackBaseUrl>
<apiKey>IpCoR5ax8NPM0AioGz7zDvlgkua0N5oe</apiKey>
<pollingConfig>
<enabled>true</enabled>
<pause>500</pause>
<attempts>40</attempts>
<timeUnit>MILLIS</timeUnit>
</pollingConfig>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dev</id>
<activation>
@ -113,6 +179,25 @@
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Implementation-Version>
${project.artifactId}-${project.version}
</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>