From 13437bfce619b5ba5b59800fed155de6e77c5b05 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Wed, 25 Oct 2023 15:52:32 +0200 Subject: [PATCH 01/47] [incubator-kie-issues-576] Data Audit app for kogito --- data-audit/.gitignore | 167 +++++++ data-audit/README.md | 5 + .../.gitignore | 1 + .../kogito-addons-data-audit-common/pom.xml | 44 ++ .../app/audit/api/DataAuditContext.java | 38 ++ .../audit/api/DataAuditEventPublisher.java | 29 ++ .../app/audit/api/DataAuditQueryService.java | 68 +++ .../audit/api/DataAuditStoreProxyService.java | 82 ++++ .../app/audit/api/SubsystemConstants.java | 32 ++ .../kie/kogito/app/audit/api/TypeCheck.java | 40 ++ .../audit/graphql/GraphQLSchemaManager.java | 83 ++++ .../audit/graphql/type/JobExecutionTO.java | 115 +++++ .../graphql/type/ProcessInstanceErrorTO.java | 174 +++++++ .../graphql/type/ProcessInstanceNodeTO.java | 265 +++++++++++ .../graphql/type/ProcessInstanceStateTO.java | 188 ++++++++ .../type/ProcessInstanceVariableTO.java | 174 +++++++ .../type/UserTaskInstanceAssignmentTO.java | 142 ++++++ .../type/UserTaskInstanceAttachmentTO.java | 154 +++++++ .../type/UserTaskInstanceCommentTO.java | 131 ++++++ .../type/UserTaskInstanceDeadlineTO.java | 135 ++++++ .../graphql/type/UserTaskInstanceStateTO.java | 186 ++++++++ .../type/UserTaskInstanceVariableTO.java | 131 ++++++ .../json/JsonJobDataEventDeserializer.java | 69 +++ ...nProcessInstanceDataEventDeserializer.java | 76 ++++ ...UserTaskInstanceDataEventDeserializer.java | 79 ++++ .../kie/kogito/app/audit/json/JsonUtils.java | 55 +++ .../audit/kafka/JobDataEventDeserializer.java | 43 ++ .../ProcessInstanceDataEventDeserializer.java | 43 ++ ...UserTaskInstanceDataEventDeserializer.java | 43 ++ .../kogito/app/audit/spi/DataAuditStore.java | 62 +++ .../app/audit/spi/GraphQLSchemaQuery.java | 29 ++ .../audit/spi/GraphQLSchemaQueryProvider.java | 27 ++ .../resources/META-INF/data-audit.graphqls | 205 +++++++++ .../.gitignore | 1 + .../pom.xml | 117 +++++ .../app/audit/jpa/JPADataAuditStore.java | 328 ++++++++++++++ .../jpa/model/AbstractProcessInstanceLog.java | 158 +++++++ .../model/AbstractUserTaskInstanceLog.java | 98 ++++ .../app/audit/jpa/model/JobExecutionLog.java | 141 ++++++ .../app/audit/jpa/model/ModelConstants.java | 28 ++ .../jpa/model/ProcessInstanceErrorLog.java | 92 ++++ .../jpa/model/ProcessInstanceNodeLog.java | 185 ++++++++ .../jpa/model/ProcessInstanceStateLog.java | 124 +++++ .../jpa/model/ProcessInstanceVariableLog.java | 87 ++++ .../model/UserTaskInstanceAssignmentLog.java | 110 +++++ .../model/UserTaskInstanceAttachmentLog.java | 93 ++++ .../jpa/model/UserTaskInstanceCommentLog.java | 81 ++++ .../model/UserTaskInstanceDeadlineLog.java | 79 ++++ .../jpa/model/UserTaskInstanceStateLog.java | 146 ++++++ .../model/UserTaskInstanceVariableLog.java | 99 ++++ .../audit/jpa/queries/JPAAbstractQuery.java | 48 ++ .../JPAGraphQLSchemaJobsQueryProvider.java | 48 ++ ...QLSchemaProcessInstancesQueryProvider.java | 42 ++ ...LSchemaUserTaskInstancesQueryProvider.java | 46 ++ .../jpa/queries/JPASimpleNamedQuery.java | 60 +++ .../main/resources/META-INF/entity-orm.xml | 20 + .../src/main/resources/META-INF/job-orm.xml | 161 +++++++ .../main/resources/META-INF/process-orm.xml | 205 +++++++++ ...o.app.audit.spi.GraphQLSchemaQueryProvider | 3 + .../main/resources/META-INF/usertask-orm.xml | 223 +++++++++ .../pom.xml | 136 ++++++ .../quarkus/GraphQLJPADataAuditRouter.java | 73 +++ ...uarkusDataAuditMessagingEventConsumer.java | 83 ++++ .../QuarkusJPADataAuditEventPublisher.java | 85 ++++ .../src/main/resources/META-INF/beans.xml | 0 .../QuarkusEmbeddedJPADataAuditTest.java | 101 +++++ .../src/test/resources/application.properties | 24 + .../pom.xml | 90 ++++ .../GraphQLJPAAuditDataRouteMapping.java | 61 +++ .../SpringBootAuditDataConfiguration.java | 39 ++ ...ngBootDataAuditMessagingEventConsumer.java | 78 ++++ .../SpringBootJPADataAuditEventPublisher.java | 81 ++++ .../SpringbootJPADataAuditTest.java | 106 +++++ .../src/test/resources/application.properties | 17 + .../kogito-addons-data-audit-tck/.gitignore | 1 + .../kogito-addons-data-audit-tck/pom.xml | 60 +++ .../kogito/audit/tck/AuditJobServiceTest.java | 265 +++++++++++ .../tck/AuditProcessInstanceServiceTest.java | 183 ++++++++ .../tck/AuditUserTaskInstanceServiceTest.java | 191 ++++++++ .../kogito/audit/tck/DataAuditTestUtils.java | 425 ++++++++++++++++++ data-audit/pom.xml | 25 ++ 81 files changed, 8062 insertions(+) create mode 100644 data-audit/.gitignore create mode 100644 data-audit/README.md create mode 100644 data-audit/kogito-addons-data-audit-common/.gitignore create mode 100644 data-audit/kogito-addons-data-audit-common/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/.gitignore create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties create mode 100644 data-audit/kogito-addons-data-audit-tck/.gitignore create mode 100644 data-audit/kogito-addons-data-audit-tck/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java create mode 100644 data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java create mode 100644 data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java create mode 100644 data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java create mode 100644 data-audit/pom.xml diff --git a/data-audit/.gitignore b/data-audit/.gitignore new file mode 100644 index 0000000000..a3191deafb --- /dev/null +++ b/data-audit/.gitignore @@ -0,0 +1,167 @@ +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + + +ObjectStore/ +PutObjectStoreDirHere/ + +# Created by https://www.gitignore.io/api/git,java,maven,eclipse,windows + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + + +# End of https://www.gitignore.io/api/git,java,maven,eclipse,windows diff --git a/data-audit/README.md b/data-audit/README.md new file mode 100644 index 0000000000..3db7b0b6a8 --- /dev/null +++ b/data-audit/README.md @@ -0,0 +1,5 @@ +This is the implementation of the Kogito Audit subystem. + +Service represent the API of the service +JPA is the jpa implementation of the service +TCK is the test kit implementation of the service for every service implementation. Needs to add as a verification step to pass the tests. \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-common/.gitignore b/data-audit/kogito-addons-data-audit-common/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/data-audit/kogito-addons-data-audit-common/pom.xml b/data-audit/kogito-addons-data-audit-common/pom.xml new file mode 100644 index 0000000000..38ce64472a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + kogito-addons-data-audit-common + Kogito Apps :: Data Audit :: Data Audit Service Common + + 1.18 + + + + com.graphql-java + graphql-java-extended-scalars + + + com.graphql-java + graphql-java + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + + + org.apache.kafka + kafka-clients + + + diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java new file mode 100644 index 0000000000..0c54524828 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.api; + +public class DataAuditContext { + + private Object context; + + public DataAuditContext(Object context) { + this.context = context; + } + + public static DataAuditContext of(Object context) { + return new DataAuditContext(context); + } + + @SuppressWarnings("unchecked") + public T getContext() { + return (T) context; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java new file mode 100644 index 0000000000..78c6a76384 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.api; + +import org.kie.kogito.event.EventPublisher; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; + +public interface DataAuditEventPublisher extends EventPublisher { + + void publish(JobCloudEvent event); + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java new file mode 100644 index 0000000000..ce9f7d228c --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.api; + +import java.util.Map; + +import org.kie.kogito.app.audit.graphql.GraphQLSchemaManager; + +import static java.util.Collections.emptyMap; +import static org.kie.kogito.app.audit.graphql.GraphQLSchemaManager.graphQLSchemaManagerInstance; + +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.GraphQLSchema; + +public class DataAuditQueryService { + + private GraphQLSchemaManager graphQLManager; + private GraphQL graphQL; + + private DataAuditQueryService(GraphQLSchemaManager graphQLManager) { + this.graphQLManager = graphQLManager; + this.graphQL = GraphQL.newGraphQL(graphQLManager.getGraphQLSchema()).build(); + } + + public GraphQLSchema getGraphQLSchema() { + return this.graphQLManager.getGraphQLSchema(); + } + + public ExecutionResult executeQuery(Object context, String query) { + return executeQuery(context, query, emptyMap()); + } + + public ExecutionResult executeQuery(String query) { + return executeQuery(null, query, emptyMap()); + } + + public ExecutionResult executeQuery(Object context, String query, Map variables) { + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .localContext(context) + .query(query) + .variables(variables) + .build(); + + return graphQL.execute(executionInput); + } + + public static DataAuditQueryService newAuditQuerySerice() { + return new DataAuditQueryService(graphQLSchemaManagerInstance()); + } +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java new file mode 100644 index 0000000000..eb14b32376 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.api; + +import org.kie.kogito.app.audit.spi.DataAuditStore; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; +import org.kie.kogito.event.process.ProcessInstanceSLADataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.kie.kogito.app.audit.api.TypeCheck.typeCheckOf; + +public class DataAuditStoreProxyService { + + private static final Logger LOGGER = LoggerFactory.getLogger(DataAuditStoreProxyService.class); + + private DataAuditStore auditStoreService; + + private DataAuditStoreProxyService(DataAuditStore auditStoreService) { + this.auditStoreService = auditStoreService; + } + + public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceDataEvent event) { + + typeCheckOf(ProcessInstanceErrorDataEvent.class).ifType(context, event, auditStoreService::storeProcessInstanceDataEvent); + typeCheckOf(ProcessInstanceNodeDataEvent.class).ifType(context, event, auditStoreService::storeProcessInstanceDataEvent); + typeCheckOf(ProcessInstanceSLADataEvent.class).ifType(context, event, auditStoreService::storeProcessInstanceDataEvent); + typeCheckOf(ProcessInstanceStateDataEvent.class).ifType(context, event, auditStoreService::storeProcessInstanceDataEvent); + typeCheckOf(ProcessInstanceVariableDataEvent.class).ifType(context, event, auditStoreService::storeProcessInstanceDataEvent); + + } + + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceDataEvent event) { + + typeCheckOf(UserTaskInstanceAssignmentDataEvent.class).ifType(context, event, auditStoreService::storeUserTaskInstanceDataEvent); + typeCheckOf(UserTaskInstanceAttachmentDataEvent.class).ifType(context, event, auditStoreService::storeUserTaskInstanceDataEvent); + typeCheckOf(UserTaskInstanceCommentDataEvent.class).ifType(context, event, auditStoreService::storeUserTaskInstanceDataEvent); + typeCheckOf(UserTaskInstanceDeadlineDataEvent.class).ifType(context, event, auditStoreService::storeUserTaskInstanceDataEvent); + typeCheckOf(UserTaskInstanceStateDataEvent.class).ifType(context, event, auditStoreService::storeUserTaskInstanceDataEvent); + typeCheckOf(UserTaskInstanceVariableDataEvent.class).ifType(context, event, auditStoreService::storeUserTaskInstanceDataEvent); + + } + + public void storeJobDataEvent(DataAuditContext context, JobCloudEvent event) { + auditStoreService.storeJobDataEvent(context, event); + + } + + public static DataAuditStoreProxyService newAuditStoreSerice(DataAuditStore service) { + LOGGER.debug("Creating new Data Audit Store proxy service with {}", service); + return new DataAuditStoreProxyService(service); + } +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java new file mode 100644 index 0000000000..d60eb726f2 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.api; + +public final class SubsystemConstants { + + + private SubsystemConstants() { + // do nothing + } + public static final String DATA_AUDIT_PATH = "/data-audit"; + + public static final String KOGITO_PROCESSINSTANCES_EVENTS = "kogito-processinstances-events"; + public static final String KOGITO_USERTASKINSTANCES_EVENTS = "kogito-usertaskinstances-events"; + public static final String KOGITO_JOBS_EVENTS = "kogito-jobs-events"; +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java new file mode 100644 index 0000000000..6b85880ac9 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.api; + +import java.util.function.BiConsumer; + +class TypeCheck { + + private Class clazz; + + public TypeCheck(Class clazz) { + this.clazz = clazz; + } + + public static TypeCheck typeCheckOf(Class clazz) { + return new TypeCheck(clazz); + } + + public void ifType(DataAuditContext context, Object event, BiConsumer executor) { + if (event != null && clazz.isInstance(event)) { + executor.accept(context, clazz.cast(event)); + } + } +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java new file mode 100644 index 0000000000..92f084fa98 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ServiceLoader; + +import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import graphql.scalars.ExtendedScalars; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; + +public class GraphQLSchemaManager { + + private static final GraphQLSchemaManager INSTANCE = new GraphQLSchemaManager(); + + private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLSchemaManager.class); + + private GraphQLSchema graphQLSchema; + + public static GraphQLSchemaManager graphQLSchemaManagerInstance() { + return INSTANCE; + } + + private GraphQLSchemaManager() { + try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/data-audit.graphqls")) { + SchemaParser schemaParser = new SchemaParser(); + TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(is); + + RuntimeWiring.Builder runtimeWiringBuilder = newRuntimeWiring(); + + runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLBigInteger); + runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLLong); + runtimeWiringBuilder.scalar(ExtendedScalars.Date); + runtimeWiringBuilder.scalar(ExtendedScalars.DateTime); + runtimeWiringBuilder.scalar(ExtendedScalars.Json); + + ServiceLoader.load(GraphQLSchemaQueryProvider.class).forEach(queryProvider -> { + for (GraphQLSchemaQuery query : queryProvider.queries()) { + runtimeWiringBuilder.type("Query", builder -> builder.dataFetcher(query.name(), query::fetch)); + } + }); + + RuntimeWiring runtimeWiring = runtimeWiringBuilder.build(); + + SchemaGenerator schemaGenerator = new SchemaGenerator(); + graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + } catch (IOException e) { + LOGGER.error("could not find data-audit.graphqls", e); + } + } + + public GraphQLSchema getGraphQLSchema() { + return graphQLSchema; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java new file mode 100644 index 0000000000..b6a72b5334 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class JobExecutionTO { + + private String jobId; + private String correlationId; + private String state; + private String schedule; + private String retry; + private Long executionTimeout; + private String executionTimeoutUnit; + private OffsetDateTime timestamp; + + public JobExecutionTO() { + + } + + public JobExecutionTO(String jobId, String correlationId, String state, String schedule, String retry, Long executionTimeout, String executionTimeoutUnit, Date timestamp) { + this.jobId = jobId; + this.correlationId = correlationId; + this.state = state; + this.schedule = schedule; + this.retry = retry; + this.executionTimeout = executionTimeout; + this.executionTimeoutUnit = executionTimeoutUnit; + this.timestamp = OffsetDateTime.ofInstant(timestamp.toInstant(), ZoneId.of("UTC")); + } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public String getCorrelationId() { + return correlationId; + } + + public void setCorrelationId(String correlationId) { + this.correlationId = correlationId; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getSchedule() { + return schedule; + } + + public void setSchedule(String schedule) { + this.schedule = schedule; + } + + public String getRetry() { + return retry; + } + + public void setRetry(String retry) { + this.retry = retry; + } + + public Long getExecutionTimeout() { + return executionTimeout; + } + + public void setExecutionTimeout(Long executionTimeout) { + this.executionTimeout = executionTimeout; + } + + public String getExecutionTimeoutUnit() { + return executionTimeoutUnit; + } + + public void setExecutionTimeoutUnit(String executionTimeoutUnit) { + this.executionTimeoutUnit = executionTimeoutUnit; + } + + public OffsetDateTime getTimestamp() { + return timestamp; + } + + public void setTimestamp(OffsetDateTime timestamp) { + this.timestamp = timestamp; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java new file mode 100644 index 0000000000..2f5fbe9110 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class ProcessInstanceErrorTO { + private String eventId; + + private OffsetDateTime eventDate; + + private String processType; + + private String processId; + + private String processVersion; + + private String parentProcessInstanceId; + + private String rootProcessId; + + private String rootProcessInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String errorMessage; + + private String nodeDefinitionId; + + private String nodeInstanceId; + + public ProcessInstanceErrorTO(String eventId, Date eventDate, String processType, String processId, + String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, + String businessKey, String errorMessage, String nodeDefinitionId, String nodeInstanceId) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.processType = processType; + this.processId = processId; + this.processVersion = processVersion; + this.parentProcessInstanceId = parentProcessInstanceId; + this.rootProcessId = rootProcessId; + this.rootProcessInstanceId = rootProcessInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.errorMessage = errorMessage; + this.nodeDefinitionId = nodeDefinitionId; + this.nodeInstanceId = nodeInstanceId; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getProcessType() { + return processType; + } + + public void setProcessType(String processType) { + this.processType = processType; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getProcessVersion() { + return processVersion; + } + + public void setProcessVersion(String processVersion) { + this.processVersion = processVersion; + } + + public String getParentProcessInstanceId() { + return parentProcessInstanceId; + } + + public void setParentProcessInstanceId(String parentProcessInstanceId) { + this.parentProcessInstanceId = parentProcessInstanceId; + } + + public String getRootProcessId() { + return rootProcessId; + } + + public void setRootProcessId(String rootProcessId) { + this.rootProcessId = rootProcessId; + } + + public String getRootProcessInstanceId() { + return rootProcessInstanceId; + } + + public void setRootProcessInstanceId(String rootProcessInstanceId) { + this.rootProcessInstanceId = rootProcessInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public String getNodeDefinitionId() { + return nodeDefinitionId; + } + + public void setNodeDefinitionId(String nodeDefinitionId) { + this.nodeDefinitionId = nodeDefinitionId; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java new file mode 100644 index 0000000000..9f6bb70aef --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java @@ -0,0 +1,265 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class ProcessInstanceNodeTO { + private String eventId; + + private OffsetDateTime eventDate; + + private String processType; + + private String processId; + + private String processVersion; + + private String parentProcessInstanceId; + + private String rootProcessId; + + private String rootProcessInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String eventType; + + private String nodeContainerId; + + private String nodeDefinitionId; + + private String nodeType; + + private String nodeContainerInstanceId; + + private String nodeName; + + private String nodeInstanceId; + + private String connection; + + private String workItemId; + + private OffsetDateTime slaDueDate; + + private String eventData; + + public ProcessInstanceNodeTO(String eventId, Date eventDate, String processType, String processId, + String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, + String businessKey, String eventType, String nodeContainerId, String nodeDefinitionId, String nodeType, String nodeContainerInstanceId, + String nodeName, String nodeInstanceId, String connection, String workItemId, Date slaDueDate, String eventData) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.processType = processType; + this.processId = processId; + this.processVersion = processVersion; + this.parentProcessInstanceId = parentProcessInstanceId; + this.rootProcessId = rootProcessId; + this.rootProcessInstanceId = rootProcessInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.eventType = eventType; + this.nodeContainerId = nodeContainerId; + this.nodeDefinitionId = nodeDefinitionId; + this.nodeType = nodeType; + this.nodeContainerInstanceId = nodeContainerInstanceId; + this.nodeName = nodeName; + this.nodeInstanceId = nodeInstanceId; + this.connection = connection; + this.workItemId = workItemId; + if (slaDueDate != null) { + this.slaDueDate = OffsetDateTime.ofInstant(slaDueDate.toInstant(), ZoneId.of("UTC")); + } + this.eventData = eventData; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getProcessType() { + return processType; + } + + public void setProcessType(String processType) { + this.processType = processType; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getProcessVersion() { + return processVersion; + } + + public void setProcessVersion(String processVersion) { + this.processVersion = processVersion; + } + + public String getParentProcessInstanceId() { + return parentProcessInstanceId; + } + + public void setParentProcessInstanceId(String parentProcessInstanceId) { + this.parentProcessInstanceId = parentProcessInstanceId; + } + + public String getRootProcessId() { + return rootProcessId; + } + + public void setRootProcessId(String rootProcessId) { + this.rootProcessId = rootProcessId; + } + + public String getRootProcessInstanceId() { + return rootProcessInstanceId; + } + + public void setRootProcessInstanceId(String rootProcessInstanceId) { + this.rootProcessInstanceId = rootProcessInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + public String getNodeContainerId() { + return nodeContainerId; + } + + public void setNodeContainerId(String nodeContainerId) { + this.nodeContainerId = nodeContainerId; + } + + public String getNodeDefinitionId() { + return nodeDefinitionId; + } + + public void setNodeDefinitionId(String nodeDefinitionId) { + this.nodeDefinitionId = nodeDefinitionId; + } + + public String getNodeType() { + return nodeType; + } + + public void setNodeType(String nodeType) { + this.nodeType = nodeType; + } + + public String getNodeContainerInstanceId() { + return nodeContainerInstanceId; + } + + public void setNodeContainerInstanceId(String nodeContainerInstanceId) { + this.nodeContainerInstanceId = nodeContainerInstanceId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + + public String getConnection() { + return connection; + } + + public void setConnection(String connection) { + this.connection = connection; + } + + public String getWorkItemId() { + return workItemId; + } + + public void setWorkItemId(String workItemId) { + this.workItemId = workItemId; + } + + public OffsetDateTime getSlaDueDate() { + return slaDueDate; + } + + public void setSlaDueDate(OffsetDateTime slaDueDate) { + this.slaDueDate = slaDueDate; + } + + public String getEventData() { + return eventData; + } + + public void setEventData(String eventData) { + this.eventData = eventData; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java new file mode 100644 index 0000000000..b9e1d61a6d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java @@ -0,0 +1,188 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class ProcessInstanceStateTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String processType; + + private String processId; + + private String processVersion; + + private String parentProcessInstanceId; + + private String rootProcessId; + + private String rootProcessInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String eventType; + + private String outcome; + + private String state; + + private OffsetDateTime slaDueDate; + + public ProcessInstanceStateTO(String eventId, Date eventDate, String processType, String processId, + String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, + String businessKey, String eventType, String outcome, String state, Date slaDueDate) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.processType = processType; + this.processId = processId; + this.processVersion = processVersion; + this.parentProcessInstanceId = parentProcessInstanceId; + this.rootProcessId = rootProcessId; + this.rootProcessInstanceId = rootProcessInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.eventType = eventType; + this.outcome = outcome; + this.state = state; + if (slaDueDate != null) { + this.slaDueDate = OffsetDateTime.ofInstant(slaDueDate.toInstant(), ZoneId.of("UTC")); + } + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getProcessType() { + return processType; + } + + public void setProcessType(String processType) { + this.processType = processType; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getProcessVersion() { + return processVersion; + } + + public void setProcessVersion(String processVersion) { + this.processVersion = processVersion; + } + + public String getParentProcessInstanceId() { + return parentProcessInstanceId; + } + + public void setParentProcessInstanceId(String parentProcessInstanceId) { + this.parentProcessInstanceId = parentProcessInstanceId; + } + + public String getRootProcessId() { + return rootProcessId; + } + + public void setRootProcessId(String rootProcessId) { + this.rootProcessId = rootProcessId; + } + + public String getRootProcessInstanceId() { + return rootProcessInstanceId; + } + + public void setRootProcessInstanceId(String rootProcessInstanceId) { + this.rootProcessInstanceId = rootProcessInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + public String getOutcome() { + return outcome; + } + + public void setOutcome(String outcome) { + this.outcome = outcome; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public OffsetDateTime getSlaDueDate() { + return slaDueDate; + } + + public void setSlaDueDate(OffsetDateTime slaDueDate) { + this.slaDueDate = slaDueDate; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java new file mode 100644 index 0000000000..29414f1b15 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class ProcessInstanceVariableTO { + private String eventId; + + private OffsetDateTime eventDate; + + private String processType; + + private String processId; + + private String processVersion; + + private String parentProcessInstanceId; + + private String rootProcessId; + + private String rootProcessInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String variableId; + + private String variableName; + + private String variableValue; + + public ProcessInstanceVariableTO(String eventId, Date eventDate, String processType, String processId, + String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, + String businessKey, String variableId, String variableName, String variableValue) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.processType = processType; + this.processId = processId; + this.processVersion = processVersion; + this.parentProcessInstanceId = parentProcessInstanceId; + this.rootProcessId = rootProcessId; + this.rootProcessInstanceId = rootProcessInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.variableId = variableId; + this.variableName = variableName; + this.variableValue = variableValue; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getProcessType() { + return processType; + } + + public void setProcessType(String processType) { + this.processType = processType; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getProcessVersion() { + return processVersion; + } + + public void setProcessVersion(String processVersion) { + this.processVersion = processVersion; + } + + public String getParentProcessInstanceId() { + return parentProcessInstanceId; + } + + public void setParentProcessInstanceId(String parentProcessInstanceId) { + this.parentProcessInstanceId = parentProcessInstanceId; + } + + public String getRootProcessId() { + return rootProcessId; + } + + public void setRootProcessId(String rootProcessId) { + this.rootProcessId = rootProcessId; + } + + public String getRootProcessInstanceId() { + return rootProcessInstanceId; + } + + public void setRootProcessInstanceId(String rootProcessInstanceId) { + this.rootProcessInstanceId = rootProcessInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getVariableId() { + return variableId; + } + + public void setVariableId(String variableId) { + this.variableId = variableId; + } + + public String getVariableName() { + return variableName; + } + + public void setVariableName(String variableName) { + this.variableName = variableName; + } + + public String getVariableValue() { + return variableValue; + } + + public void setVariableValue(String variableValue) { + this.variableValue = variableValue; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java new file mode 100644 index 0000000000..4cdb28ea19 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.Set; + +public class UserTaskInstanceAssignmentTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String eventUser; + + private String userTaskDefinitionId; + + private String userTaskInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String userTaskName; + + private String assignmentType; + + private Set users; + + public UserTaskInstanceAssignmentTO(String eventId, Date eventDate, String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, + String userTaskName, String assignmentType) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.eventUser = eventUser; + this.userTaskDefinitionId = userTaskDefinitionId; + this.userTaskInstanceId = userTaskInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.userTaskName = userTaskName; + this.assignmentType = assignmentType; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getEventUser() { + return eventUser; + } + + public void setEventUser(String eventUser) { + this.eventUser = eventUser; + } + + public String getUserTaskName() { + return userTaskName; + } + + public void setUserTaskName(String userTaskName) { + this.userTaskName = userTaskName; + } + + public String getAssignmentType() { + return assignmentType; + } + + public void setAssignmentType(String assignmentType) { + this.assignmentType = assignmentType; + } + + public Set getUsers() { + return users; + } + + public void setUsers(Set users) { + this.users = users; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java new file mode 100644 index 0000000000..21dfd66ab9 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java @@ -0,0 +1,154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.net.URI; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class UserTaskInstanceAttachmentTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String eventUser; + + private String userTaskDefinitionId; + + private String userTaskInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String attachmentId; + + private String attachmentName; + + private URI attachmentURI; + + private int eventType; + + public UserTaskInstanceAttachmentTO(String eventId, Date eventDate, String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, + String attachmentId, String attachmentName, String attachmentURI, Integer eventType) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.eventUser = eventUser; + this.userTaskDefinitionId = userTaskDefinitionId; + this.userTaskInstanceId = userTaskInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.attachmentId = attachmentId; + this.attachmentName = attachmentName; + this.attachmentURI = URI.create(new String(attachmentURI)); + this.eventType = eventType; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getAttachmentId() { + return attachmentId; + } + + public void setAttachmentId(String attachmentId) { + this.attachmentId = attachmentId; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public URI getAttachmentURI() { + return attachmentURI; + } + + public void setAttachmentURI(URI attachmentURI) { + this.attachmentURI = attachmentURI; + } + + public int getEventType() { + return eventType; + } + + public void setEventType(int eventType) { + this.eventType = eventType; + } + + + public String getEventUser() { + return eventUser; + } + + public void setEventUser(String eventUser) { + this.eventUser = eventUser; + } +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java new file mode 100644 index 0000000000..062880c506 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class UserTaskInstanceCommentTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String userTaskDefinitionId; + + private String userTaskInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String commentId; + + private String commentContent; + + private int eventType; + + public UserTaskInstanceCommentTO(String eventId, Date eventDate, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, + String commentId, String commentContent, Integer eventType) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.userTaskDefinitionId = userTaskDefinitionId; + this.userTaskInstanceId = userTaskInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.commentId = commentId; + this.commentContent = commentContent; + this.eventType = eventType; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getCommentId() { + return commentId; + } + + public void setCommentId(String commentId) { + this.commentId = commentId; + } + + public String getCommentContent() { + return commentContent; + } + + public void setCommentContent(String commentContent) { + this.commentContent = commentContent; + } + + public int getEventType() { + return eventType; + } + + public void setEventType(int eventType) { + this.eventType = eventType; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java new file mode 100644 index 0000000000..776c5c0ee8 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.Map; + +public class UserTaskInstanceDeadlineTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String userTaskDefinitionId; + + private String userTaskInstanceId; + + private String processInstanceId; + + private String businessKey; + + private Map notification; + + private String eventType; + + public UserTaskInstanceDeadlineTO(String eventId, Date eventDate, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, String eventType) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.userTaskDefinitionId = userTaskDefinitionId; + this.userTaskInstanceId = userTaskInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.eventType = eventType; + } + + + public String getEventId() { + return eventId; + } + + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + + public OffsetDateTime getEventDate() { + return eventDate; + } + + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + + public String getProcessInstanceId() { + return processInstanceId; + } + + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + + public String getBusinessKey() { + return businessKey; + } + + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + + public Map getNotification() { + return notification; + } + + + public void setNotification(Map notification) { + this.notification = notification; + } + + + public String getEventType() { + return eventType; + } + + + public void setEventType(String eventType) { + this.eventType = eventType; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java new file mode 100644 index 0000000000..dd5ed99913 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java @@ -0,0 +1,186 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class UserTaskInstanceStateTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String userTaskDefinitionId; + + private String userTaskInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String taskId; + + private String name; + + private String description; + + private String actualUser; + + private String state; + + private String nodeDefitionId; + + private String nodeInstanceId; + + private String eventType; + + public UserTaskInstanceStateTO(String eventId, Date eventDate, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, + String taskId, String name, String description, String actualUser, String state, String nodeDefitionId, String nodeInstanceId, String eventType) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.userTaskDefinitionId = userTaskDefinitionId; + this.userTaskInstanceId = userTaskInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.taskId = taskId; + this.name = name; + this.description = description; + this.actualUser = actualUser; + this.state = state; + this.nodeDefitionId = nodeDefitionId; + this.nodeInstanceId = nodeInstanceId; + this.eventType = eventType; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getActualUser() { + return actualUser; + } + + public void setActualUser(String actualUser) { + this.actualUser = actualUser; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + public String getNodeDefitionId() { + return nodeDefitionId; + } + + public void setNodeDefitionId(String nodeDefitionId) { + this.nodeDefitionId = nodeDefitionId; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java new file mode 100644 index 0000000000..b2f691619c --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.Date; + +public class UserTaskInstanceVariableTO { + + private String eventId; + + private OffsetDateTime eventDate; + + private String userTaskDefinitionId; + + private String userTaskInstanceId; + + private String processInstanceId; + + private String businessKey; + + private String variableId; + + private String variableName; + + private String variableValue; + + public UserTaskInstanceVariableTO(String eventId, Date eventDate, String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, + String variableId, String variableName, String variableValue) { + this.eventId = eventId; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); + this.userTaskDefinitionId = userTaskDefinitionId; + this.userTaskInstanceId = userTaskInstanceId; + this.processInstanceId = processInstanceId; + this.businessKey = businessKey; + this.variableId = variableId; + this.variableName = variableName; + this.variableValue = variableValue; + } + + public String getEventId() { + return eventId; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public OffsetDateTime getEventDate() { + return eventDate; + } + + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getVariableId() { + return variableId; + } + + public void setVariableId(String variableId) { + this.variableId = variableId; + } + + public String getVariableName() { + return variableName; + } + + public void setVariableName(String variableName) { + this.variableName = variableName; + } + + public String getVariableValue() { + return variableValue; + } + + public void setVariableValue(String variableValue) { + this.variableValue = variableValue; + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java new file mode 100644 index 0000000000..c78a02a2ce --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.json; + +import java.io.IOException; + +import org.kie.kogito.jobs.service.api.event.CreateJobEvent; +import org.kie.kogito.jobs.service.api.event.DeleteJobEvent; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class JsonJobDataEventDeserializer extends StdDeserializer> { + + + private static final Logger LOGGER = LoggerFactory.getLogger(JsonJobDataEventDeserializer.class); + + private static final long serialVersionUID = 6152014726577574241L; + + public JsonJobDataEventDeserializer() { + this(null); + } + + public JsonJobDataEventDeserializer(Class vc) { + super(vc); + } + + @Override + public JobCloudEvent deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode node = jp.getCodec().readTree(jp); + LOGGER.debug("Deserialize process instance data event: {}", node); + + + + String type = node.get("type").asText(); + + switch (type) { + case CreateJobEvent.TYPE: + return jp.getCodec().treeToValue(node, CreateJobEvent.class); + case DeleteJobEvent.TYPE: + return jp.getCodec().treeToValue(node, DeleteJobEvent.class); + default: + return null; + } + } +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java new file mode 100644 index 0000000000..a5801a763c --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.json; + +import java.io.IOException; + +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; +import org.kie.kogito.event.process.ProcessInstanceSLADataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class JsonProcessInstanceDataEventDeserializer extends StdDeserializer> { + + private static final Logger LOGGER = LoggerFactory.getLogger(JsonProcessInstanceDataEventDeserializer.class); + + private static final long serialVersionUID = 6152014726577574241L; + + public JsonProcessInstanceDataEventDeserializer() { + this(null); + } + + public JsonProcessInstanceDataEventDeserializer(Class vc) { + super(vc); + } + + @Override + public ProcessInstanceDataEvent deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode node = jp.getCodec().readTree(jp); + LOGGER.debug("Deserialize process instance data event: {}", node); + String type = node.get("type").asText(); + + switch (type) { + case "ProcessInstanceErrorDataEvent": + return (ProcessInstanceDataEvent) jp.getCodec().treeToValue(node, ProcessInstanceErrorDataEvent.class); + case "ProcessInstanceNodeDataEvent": + return (ProcessInstanceDataEvent) jp.getCodec().treeToValue(node, ProcessInstanceNodeDataEvent.class); + case "ProcessInstanceSLADataEvent": + return (ProcessInstanceDataEvent) jp.getCodec().treeToValue(node, ProcessInstanceSLADataEvent.class); + case "ProcessInstanceStateDataEvent": + return (ProcessInstanceDataEvent) jp.getCodec().treeToValue(node, ProcessInstanceStateDataEvent.class); + case "ProcessInstanceVariableDataEvent": + return (ProcessInstanceDataEvent) jp.getCodec().treeToValue(node, ProcessInstanceVariableDataEvent.class); + default: + LOGGER.warn("Unknown type {} in json data {}", type, node); + return (ProcessInstanceDataEvent) jp.getCodec().treeToValue(node, ProcessInstanceDataEvent.class); + + } + } +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java new file mode 100644 index 0000000000..e9d57f86c0 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.json; + +import java.io.IOException; + +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class JsonUserTaskInstanceDataEventDeserializer extends StdDeserializer> { + + private static final Logger LOGGER = LoggerFactory.getLogger(JsonUserTaskInstanceDataEventDeserializer.class); + + private static final long serialVersionUID = -6626663191296012306L; + + public JsonUserTaskInstanceDataEventDeserializer() { + this(null); + } + + public JsonUserTaskInstanceDataEventDeserializer(Class vc) { + super(vc); + } + + @Override + public UserTaskInstanceDataEvent deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode node = jp.getCodec().readTree(jp); + LOGGER.debug("Deserialize user task instance data event: {}", node); + String type = node.get("type").asText(); + + switch (type) { + case "UserTaskInstanceAssignmentDataEvent": + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceAssignmentDataEvent.class); + case "UserTaskInstanceAttachmentDataEvent": + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceAttachmentDataEvent.class); + case "UserTaskInstanceCommentDataEvent": + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceCommentDataEvent.class); + case "UserTaskInstanceDeadlineDataEvent": + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceDeadlineDataEvent.class); + case "UserTaskInstanceStateDataEvent": + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceStateDataEvent.class); + case "UserTaskInstanceVariableDataEvent": + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceVariableDataEvent.class); + default: + LOGGER.warn("Unknown type {} in json data {}", type, node); + return (UserTaskInstanceDataEvent) jp.getCodec().treeToValue(node, UserTaskInstanceDataEvent.class); + + } + } +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java new file mode 100644 index 0000000000..770bc13f7d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.json; + +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import io.cloudevents.jackson.JsonFormat; + +public final class JsonUtils { + + private static final ObjectMapper MAPPER = configure(new ObjectMapper()); + + private JsonUtils() { + } + + public static ObjectMapper getObjectMapper() { + return MAPPER; + } + + public static ObjectMapper configure(ObjectMapper objectMapper) { + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + objectMapper.registerModule(JsonFormat.getCloudEventJacksonModule()); + objectMapper.registerModule(new JavaTimeModule()); + + SimpleModule module = new SimpleModule("Kogito Cloud Events"); + module.addDeserializer(ProcessInstanceDataEvent.class, new JsonProcessInstanceDataEventDeserializer()); + module.addDeserializer(UserTaskInstanceDataEvent.class, new JsonUserTaskInstanceDataEventDeserializer()); + module.addDeserializer(JobCloudEvent.class, new JsonJobDataEventDeserializer()); + objectMapper.registerModule(module); + return objectMapper; + } +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java new file mode 100644 index 0000000000..297ae0b24d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.kafka; + +import org.apache.kafka.common.serialization.Deserializer; +import org.kie.kogito.app.audit.json.JsonUtils; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; + +public class JobDataEventDeserializer implements Deserializer> { + private static final Logger LOGGER = LoggerFactory.getLogger(JobDataEventDeserializer.class); + + @Override + public UserTaskInstanceDataEvent deserialize(String topic, byte[] data) { + try { + return JsonUtils.getObjectMapper().readValue(new String(data), UserTaskInstanceDataEvent.class); + } catch (JsonProcessingException e) { + LOGGER.error("not possible to deserialize UserTaskInstanceDataEvent data {}", new String(data), e); + throw new IllegalArgumentException("not possible to deserialize data"); + } + + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java new file mode 100644 index 0000000000..01116805cf --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.kafka; + +import org.apache.kafka.common.serialization.Deserializer; +import org.kie.kogito.app.audit.json.JsonUtils; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; + +public class ProcessInstanceDataEventDeserializer implements Deserializer> { + private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceDataEventDeserializer.class); + + @Override + public ProcessInstanceDataEvent deserialize(String topic, byte[] data) { + try { + return JsonUtils.getObjectMapper().readValue(new String(data), ProcessInstanceDataEvent.class); + } catch (JsonProcessingException e) { + LOGGER.error("not possible to deserialize ProcessInstanceDataEvent data {}", new String(data), e); + throw new IllegalArgumentException("not possible to deserialize data"); + } + + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java new file mode 100644 index 0000000000..394316ca83 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.kafka; + +import org.apache.kafka.common.serialization.Deserializer; +import org.kie.kogito.app.audit.json.JsonUtils; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; + +public class UserTaskInstanceDataEventDeserializer implements Deserializer> { + private static final Logger LOGGER = LoggerFactory.getLogger(UserTaskInstanceDataEventDeserializer.class); + + @Override + public UserTaskInstanceDataEvent deserialize(String topic, byte[] data) { + try { + return JsonUtils.getObjectMapper().readValue(new String(data), UserTaskInstanceDataEvent.class); + } catch (JsonProcessingException e) { + LOGGER.error("not possible to deserialize UserTaskInstanceDataEvent data {}", new String(data), e); + throw new IllegalArgumentException("not possible to deserialize data"); + } + + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java new file mode 100644 index 0000000000..30fa925131 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.spi; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; +import org.kie.kogito.event.process.ProcessInstanceSLADataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; + +public interface DataAuditStore { + + void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceErrorDataEvent event); + + void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceNodeDataEvent event); + + void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceSLADataEvent event); + + void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceStateDataEvent event); + + void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceVariableDataEvent event); + + void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceAssignmentDataEvent event); + + void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceAttachmentDataEvent event); + + void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceCommentDataEvent event); + + void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceDeadlineDataEvent event); + + void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceStateDataEvent event); + + void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceVariableDataEvent event); + + void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDataEvent); + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java new file mode 100644 index 0000000000..c004a250af --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.spi; + +import graphql.schema.DataFetchingEnvironment; + +public interface GraphQLSchemaQuery { + + String name(); + + Object fetch(DataFetchingEnvironment datafetchingenvironment); + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java new file mode 100644 index 0000000000..b86bbc0f21 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.spi; + +import java.util.List; + +public interface GraphQLSchemaQueryProvider { + + List> queries(); + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls new file mode 100644 index 0000000000..69d2f33fc1 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls @@ -0,0 +1,205 @@ +scalar Long +scalar Int +scalar JSON +scalar DateTime +scalar Date + +type JobExecutionLog { + jobId : String! + correlationId : String + state : String + schedule : JSON + retry : JSON + executionTimeout : Long + executionTimeoutUnit : String + timestamp: DateTime +} + +type ProcessInstanceStateLog { + eventId : String! + eventDate : DateTime + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + eventType : String + outcome : String + state : String + slaDueDate : DateTime +} + +type ProcessInstanceNodeLog { + eventId : String! + eventDate : DateTime + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + eventType : String + nodeContainerId : String + nodeDefinitionId : String + nodeType : String + nodeName : String + nodeInstanceId : String + connection : String + slaDueDate : DateTime + eventData : String +} + +type ProcessInstanceErrorLog { + eventId : String! + eventDate : DateTime + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + errorMessage : String + nodeDefinitionId : String + nodeInstanceId : String +} + +type ProcessInstanceVariableLog { + eventId : String + eventDate : DateTime + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + variableId : String + variableName : String + variableValue : String +} + +type UserTaskInstanceStateLog { + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + taskId : String + name : String + description : String + actualUser : String + state : String + nodeDefitionId : String + nodeInstanceId : String + eventType : String +} + +type UserTaskInstanceAssignmentLog { + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + userTaskName : String + assignmentType : String + users : [String] +} + +type UserTaskInstanceAttachmentLog { + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + attachmentId : String + attachmentName : String + attachmentURI : String + eventType : Int +} + +type UserTaskInstanceCommentLog { + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + commentId : String + commentContent : String + eventType : Int +} + + +type AttributeKeyValuePair { + key : String + value : String +} + +type UserTaskInstanceDeadlineLog { + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + eventType : String + notification : [AttributeKeyValuePair] +} + +type UserTaskInstanceVariableLog { + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + variableId : String + variableName : String + variableValue : String + variableType : String +} + +type Query { + GetAllScheduledJobs : [JobExecutionLog] + GetJobById (jobId : String!) : [JobExecutionLog] + GetJobHistoryById (jobId : String!) : [JobExecutionLog] + GetJobHistoryByCorrelationId (correlationId : String!) : [JobExecutionLog] + GetAllPendingJobs : [JobExecutionLog] + GetAllEligibleJobsForExecution : [JobExecutionLog] + GetAllEligibleJobsForRetry : [JobExecutionLog] + GetAllJobs : [JobExecutionLog] + GetAllCompletedJobs : [JobExecutionLog] + GetAllInErrorJobs : [JobExecutionLog] + GetAllCancelledJobs : [JobExecutionLog] + GetAllJobsByState (state : [String]!) : [JobExecutionLog] + GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] + + + GetAllProcessInstancesState : [ProcessInstanceStateLog] + GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceNodeLog] + GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceErrorLog] + GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!) : [ProcessInstanceVariableLog] + + + + GetAllUserTaskInstanceState : [UserTaskInstanceStateLog] + GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!) : [UserTaskInstanceAssignmentLog] + GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!) : [UserTaskInstanceAttachmentLog] + GetAllUserTaskInstanceComment (userTaskInstanceId : String!) : [UserTaskInstanceCommentLog] + GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!) : [UserTaskInstanceDeadlineLog] + GetAllUserTaskInstanceVariable (userTaskInstanceId : String!) : [UserTaskInstanceVariableLog] +} + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-common/.gitignore b/data-audit/kogito-addons-data-audit-jpa-common/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/data-audit/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/kogito-addons-data-audit-jpa-common/pom.xml new file mode 100644 index 0000000000..0d642d7fe6 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/pom.xml @@ -0,0 +1,117 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + kogito-addons-data-audit-jpa-common + Kogito Apps :: Data Audit :: JPA Data Audit Persistence Common + + + + org.kie.kogito + kogito-addons-data-audit-common + + + com.fasterxml.jackson.core + jackson-core + + + javax.persistence + javax.persistence-api + 2.2 + + + org.slf4j + slf4j-api + + + io.smallrye + jandex + + + + org.assertj + assertj-core + test + + + org.jboss.logmanager + jboss-logmanager + 3.0.2.Final + test + + + org.slf4j + slf4j-simple + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-params + test + + + org.junit.platform + junit-platform-suite + test + + + org.hibernate + hibernate-entitymanager + 5.6.12.Final + test + + + + com.github.h-thurow + simple-jndi + 0.23.0 + test + + + org.apache.commons + commons-dbcp2 + 2.10.0 + test + + + org.jboss.narayana.jta + narayana-jta + test + + + com.h2database + h2 + test + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + ${project.build.directory}/ObjectStore + + + org.kie.kogito.app.audit:data-audit-service-tck + + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java new file mode 100644 index 0000000000..8a1e69f898 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -0,0 +1,328 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa; + +import java.net.MalformedURLException; +import java.sql.Timestamp; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.jpa.model.AbstractProcessInstanceLog; +import org.kie.kogito.app.audit.jpa.model.AbstractUserTaskInstanceLog; +import org.kie.kogito.app.audit.jpa.model.JobExecutionLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceErrorLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceNodeLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceStateLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceVariableLog; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceAssignmentLog; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceAttachmentLog; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceCommentLog; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceDeadlineLog; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceStateLog; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceVariableLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceNodeLog.NodeLogType; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceStateLog.ProcessStateLogType; +import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceVariableLog.VariableType; +import org.kie.kogito.app.audit.spi.DataAuditStore; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeEventBody; +import org.kie.kogito.event.process.ProcessInstanceSLADataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateEventBody; +import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JPADataAuditStore implements DataAuditStore { + + private static final Logger LOGGER = LoggerFactory.getLogger(JPADataAuditStore.class); + + private ObjectMapper mapper; + + public JPADataAuditStore() { + mapper = new ObjectMapper(); + } + + + @Override + public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceStateDataEvent event) { + ProcessInstanceStateLog log = new ProcessInstanceStateLog(); + + setProcessCommonAttributes(log, event); + log.setState(event.getKogitoProcessInstanceState()); + log.setRoles(event.getData().getRoles()); + + switch (event.getData().getEventType()) { + case ProcessInstanceStateEventBody.EVENT_TYPE_STARTED: + log.setEventType(ProcessStateLogType.STARTED); + break; + case ProcessInstanceStateEventBody.EVENT_TYPE_ENDED: + log.setEventType(ProcessStateLogType.COMPLETED); + break; + } + + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + + } + + @Override + public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceErrorDataEvent event) { + ProcessInstanceErrorLog log = new ProcessInstanceErrorLog(); + + setProcessCommonAttributes(log, event); + + log.setErrorMessage(event.getData().getErrorMessage()); + log.setNodeDefinitionId(event.getData().getNodeDefinitionId()); + log.setNodeInstanceId(event.getData().getNodeInstanceId()); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + @Override + public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceNodeDataEvent event) { + ProcessInstanceNodeLog log = new ProcessInstanceNodeLog(); + + setProcessCommonAttributes(log, event); + + log.setConnection(event.getData().getConnectionNodeInstanceId()); + log.setNodeContainerId(null); + log.setNodeDefinitionId(event.getData().getNodeDefinitionId()); + log.setNodeType(event.getData().getNodeType()); + + log.setNodeContainerInstanceId(null); + log.setNodeInstanceId(event.getData().getNodeInstanceId()); + log.setNodeName(event.getData().getNodeName()); + + switch (event.getData().getEventType()) { + case ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER: + log.setEventType(NodeLogType.ENTER); + break; + case ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT: + log.setEventType(NodeLogType.EXIT); + break; + } + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + @Override + public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceSLADataEvent event) { + ProcessInstanceStateLog log = new ProcessInstanceStateLog(); + + setProcessCommonAttributes(log, event); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + + + @Override + public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceVariableDataEvent event) { + + ProcessInstanceVariableLog log = new ProcessInstanceVariableLog(); + + setProcessCommonAttributes(log, event); + + log.setVariableId(event.getData().getVariableId()); + log.setVariableName(event.getData().getVariableName()); + log.setVariableValue(toJsonString(event.getData().getVariableValue())); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + + } + + private void setProcessCommonAttributes(AbstractProcessInstanceLog log, ProcessInstanceDataEvent event) { + log.setEventId(event.getId()); + log.setEventDate(new Date(event.getTime().toInstant().toEpochMilli())); + log.setProcessType(event.getKogitoProcessType()); + log.setProcessId(event.getKogitoProcessId()); + log.setProcessVersion(event.getKogitoProcessInstanceVersion()); + log.setParentProcessInstanceId(event.getKogitoParentProcessInstanceId()); + log.setProcessInstanceId(event.getKogitoProcessInstanceId()); + log.setRootProcessId(event.getKogitoRootProcessId()); + log.setRootProcessInstanceId(event.getKogitoRootProcessInstanceId()); + log.setBusinessKey(event.getKogitoBusinessKey()); + } + + @Override + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceAssignmentDataEvent event) { + UserTaskInstanceAssignmentLog log = new UserTaskInstanceAssignmentLog(); + + setUserTaskCommonAttributes(log, event); + log.setUserTaskDefinitionId(event.getData().getUserTaskDefinitionId()); + log.setEventUser(event.getData().getEventUser()); + log.setUsers(event.getData().getUsers()); + log.setAssignmentType(event.getData().getAssignmentType()); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + + } + + @Override + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceAttachmentDataEvent event) { + UserTaskInstanceAttachmentLog log = new UserTaskInstanceAttachmentLog(); + + setUserTaskCommonAttributes(log, event); + log.setUserTaskDefinitionId(event.getData().getUserTaskDefinitionId()); + log.setEventUser(event.getData().getEventUser()); + log.setAttachmentId(event.getData().getAttachmentId()); + log.setAttachmentName(event.getData().getAttachmentName()); + try { + log.setAttachmentURI(event.getData().getAttachmentURI().toURL()); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + log.setEventType(event.getData().getEventType()); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + + } + + @Override + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceCommentDataEvent event) { + UserTaskInstanceCommentLog log = new UserTaskInstanceCommentLog(); + + setUserTaskCommonAttributes(log, event); + log.setUserTaskDefinitionId(event.getData().getUserTaskDefinitionId()); + log.setEventUser(event.getData().getEventUser()); + log.setCommentId(event.getData().getCommentId()); + log.setCommentContent(event.getData().getCommentContent()); + log.setEventType(event.getData().getEventType()); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + + } + + @Override + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceDeadlineDataEvent event) { + UserTaskInstanceDeadlineLog log = new UserTaskInstanceDeadlineLog(); + + setUserTaskCommonAttributes(log, event); + log.setUserTaskDefinitionId(event.getData().getUserTaskDefinitionId()); + log.setEventUser(event.getData().getEventUser()); + if (event.getData().getNotification() != null) { + Map data = new HashMap<>(); + for(Map.Entry entry : event.getData().getNotification().entrySet()) { + data.put(entry.getKey(), entry.getValue().toString()); + } + log.setNotification(data); + } + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + @Override + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceStateDataEvent event) { + UserTaskInstanceStateLog log = new UserTaskInstanceStateLog(); + + setUserTaskCommonAttributes(log, event); + log.setUserTaskDefinitionId(event.getData().getUserTaskDefinitionId()); + log.setActualUser(event.getData().getActualOwner()); + log.setName(event.getData().getUserTaskName()); + log.setDescription(event.getData().getUserTaskDescription()); + log.setState(event.getData().getState()); +// log.setEventType(event.getData().getEventType()); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + + } + + @Override + public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceVariableDataEvent event) { + UserTaskInstanceVariableLog log = new UserTaskInstanceVariableLog(); + + setUserTaskCommonAttributes(log, event); + + log.setEventUser(event.getData().getEventUser()); + log.setUserTaskDefinitionId(event.getData().getUserTaskDefinitionId()); + log.setVariableId(event.getData().getVariableId()); + log.setVariableName(event.getData().getVariableName()); + log.setVariableValue(toJsonString(event.getData().getVariableValue())); + + switch (event.getData().getVariableType()) { + case "INPUT": + log.setVariableType(VariableType.INPUT); + break; + case "OUTPUT": + log.setVariableType(VariableType.OUTPUT); + break; + } + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + private void setUserTaskCommonAttributes(AbstractUserTaskInstanceLog log, UserTaskInstanceDataEvent event) { + log.setEventId(event.getId()); + log.setEventDate(new Date(event.getTime().toInstant().toEpochMilli())); + log.setProcessInstanceId(event.getKogitoProcessInstanceId()); + log.setBusinessKey(event.getKogitoBusinessKey()); + log.setUserTaskInstanceId(event.getKogitoUserTaskInstanceId()); + } + + @Override + public void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDataEvent) { + Job job = jobDataEvent.getData(); + + JobExecutionLog log = new JobExecutionLog(); + log.setCorrelationId(job.getCorrelationId()); + log.setJobId(job.getId()); + log.setState(job.getState().name()); + log.setExecutionTimeout(job.getExecutionTimeout()); + log.setSchedule(toJsonString(job.getSchedule())); + log.setRetry(toJsonString(job.getRetry())); + log.setExecutionTimeoutUnit(job.getExecutionTimeoutUnit().name()); + log.setTimestamp(Timestamp.from(jobDataEvent.getTime().toInstant())); + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + private String toJsonString(Object data) { + try { + if (data == null) { + return null; + } + + return mapper.writeValueAsString(data); + } catch (JsonProcessingException e) { + LOGGER.error("could not convert to json string {}", data); + return null; + } + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java new file mode 100644 index 0000000000..2f362fec93 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.kie.kogito.app.audit.jpa.model.ModelConstants.BUSINESS_KEY_LOG_LENGTH; + +@MappedSuperclass +public abstract class AbstractProcessInstanceLog { + + @Transient + private static final Logger logger = LoggerFactory.getLogger(AbstractProcessInstanceLog.class); + + @Column(name = "event_id") + private String eventId; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "event_date") + private Date eventDate; + + @Column(name = "process_type") + private String processType; + + @Column(name = "process_id") + private String processId; + + @Column(name = "process_version") + private String processVersion; + + @Column(name = "parent_process_instance_id") + private String parentProcessInstanceId; + + @Column(name = "root_process_id") + private String rootProcessId; + + @Column(name = "root_process_instance_id") + private String rootProcessInstanceId; + + @Column(name = "process_instance_id") + private String processInstanceId; + + @Column(name = "business_key") + private String businessKey; + + public String getRootProcessId() { + return rootProcessId; + } + + public void setRootProcessId(String rootProcessId) { + this.rootProcessId = rootProcessId; + } + + public String getRootProcessInstanceId() { + return rootProcessInstanceId; + } + + public void setRootProcessInstanceId(String rootProcessInstanceId) { + this.rootProcessInstanceId = rootProcessInstanceId; + } + + public String getEventId() { + return eventId; + } + + public String getProcessType() { + return processType; + } + + public void setProcessType(String processType) { + this.processType = processType; + } + + public String getProcessVersion() { + return processVersion; + } + + public void setProcessVersion(String processVersion) { + this.processVersion = processVersion; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getParentProcessInstanceId() { + return parentProcessInstanceId; + } + + public void setParentProcessInstanceId(String parentProcessInstanceId) { + this.parentProcessInstanceId = parentProcessInstanceId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + String trimmedBusinesskey = null; + if (businessKey != null && businessKey.length() > BUSINESS_KEY_LOG_LENGTH) { + trimmedBusinesskey = businessKey.substring(0, BUSINESS_KEY_LOG_LENGTH); + logger.warn("Business Key content was trimmed as it was too long (more than {} characters)", BUSINESS_KEY_LOG_LENGTH); + } else { + trimmedBusinesskey = businessKey; + } + this.businessKey = trimmedBusinesskey; + } + + public Date getEventDate() { + return eventDate; + } + + public void setEventDate(Date eventDate) { + this.eventDate = eventDate; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java new file mode 100644 index 0000000000..9cd9a436cc --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java @@ -0,0 +1,98 @@ +package org.kie.kogito.app.audit.jpa.model; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@MappedSuperclass +public abstract class AbstractUserTaskInstanceLog { + + @Transient + private static final Logger logger = LoggerFactory.getLogger(ProcessInstanceStateLog.class); + + @Column(name = "event_id") + private String eventId; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "event_date") + private Date eventDate; + + @Column(name = "event_user") + private String eventUser; + + @Column(name = "user_task_definition_id") + private String userTaskDefinitionId; + + @Column(name = "user_task_instance_id") + private String userTaskInstanceId; + + @Column(name = "process_instance_id") + private String processInstanceId; + + @Column(name = "business_key") + private String businessKey; + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getBusinessKey() { + return businessKey; + } + + public Date getEventDate() { + return eventDate; + } + + public void setEventDate(Date eventDate) { + this.eventDate = eventDate; + } + + public void setEventId(String eventId) { + this.eventId = eventId; + } + + public String getEventId() { + return eventId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public String getEventUser() { + return eventUser; + } + + public void setEventUser(String eventUser) { + this.eventUser = eventUser; + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java new file mode 100644 index 0000000000..a20864987d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java @@ -0,0 +1,141 @@ +/* + * Copyright 2023 Red Hat, Inc. and/or its affiliates. + * + * 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.sql.Timestamp; +import java.time.Instant; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@Table(name = "JobExecutionHistory") +@SequenceGenerator(name = "jobExecutionHistoryIdSeq", sequenceName = "JOB_EXECUTION_HISTORY_ID_SEQ") +public class JobExecutionLog { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "jobExecutionHistoryIdSeq") + private Long id; + + @Column(name = "job_id") + private String jobId; + @Column(name = "correlation_id") + private String correlationId; + private String state; + private String schedule; + private String retry; + @Column(name = "execution_timeout") + private Long executionTimeout; + + @Column(name = "execution_timeout_unit") + private String executionTimeoutUnit; + + @Temporal(TemporalType.TIMESTAMP) + @Column(columnDefinition = "TIMESTAMP") + private Date timestamp; + + public JobExecutionLog() { + this.timestamp = Timestamp.from(Instant.now()); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public String getCorrelationId() { + return correlationId; + } + + public void setCorrelationId(String correlationId) { + this.correlationId = correlationId; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getSchedule() { + return schedule; + } + + public void setSchedule(String schedule) { + this.schedule = schedule; + } + + public String getRetry() { + return retry; + } + + public void setRetry(String retry) { + this.retry = retry; + } + + public Long getExecutionTimeout() { + return executionTimeout; + } + + public void setExecutionTimeout(Long executionTimeout) { + this.executionTimeout = executionTimeout; + } + + public String getExecutionTimeoutUnit() { + return executionTimeoutUnit; + } + + public void setExecutionTimeoutUnit(String executionTimeoutUnit) { + this.executionTimeoutUnit = executionTimeoutUnit; + } + + public Date getTimestamp() { + return this.timestamp; + } + + public void setTimestamp(Date timestamp) { + this.timestamp = timestamp; + } + + @Override + public String toString() { + return "JobExecutionLog [id=" + id + ", jobId=" + jobId + ", correlationId=" + correlationId + ", state=" + state + ", schedule=" + schedule + ", retry=" + retry + ", executionTimeout=" + + executionTimeout + ", executionTimeoutUnit=" + executionTimeoutUnit + ", timestamp=" + timestamp + "]"; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java new file mode 100644 index 0000000000..bf74c833ab --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +public final class ModelConstants { + + public static final int VARIABLE_LOG_LENGTH = Integer.getInteger("org.jbpm.var.log.length", 255); + + public static final int BUSINESS_KEY_LOG_LENGTH = Integer.getInteger("org.jbpm.correlationkey.length", 255); + + public static final int ERROR_LOG_LENGTH = Integer.getInteger("org.kie.jbpm.error.log.length", 255); +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java new file mode 100644 index 0000000000..998ffdd471 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java @@ -0,0 +1,92 @@ +/* + * Copyright 2023 Red Hat, Inc. and/or its affiliates. + * + * 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.kie.kogito.app.audit.jpa.model.ModelConstants.ERROR_LOG_LENGTH; + +@Entity +@Table(name = "ProcessInstanceErrorLog") +@SequenceGenerator(name = "processInstanceErrorHistorySeq", sequenceName = "PROCESS_INSTANCE_ERROR_LOG_SEQ_ID") +public class ProcessInstanceErrorLog extends AbstractProcessInstanceLog { + + @Transient + private static final Logger logger = LoggerFactory.getLogger(ProcessInstanceErrorLog.class); + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "processInstanceErrorHistorySeq") + private Long id; + + @Column(name = "error_message") + private String errorMessage; + + @Column(name = "node_definition_id") + private String nodeDefinitionId; + + @Column(name = "node_instance_id") + private String nodeInstanceId; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + String trimmedErrorMessage = errorMessage; + if (trimmedErrorMessage != null && trimmedErrorMessage.length() > ERROR_LOG_LENGTH) { + trimmedErrorMessage = trimmedErrorMessage.substring(0, ERROR_LOG_LENGTH); + logger.warn("Error message content was trimmed as it was too long (more than {} characters)", ERROR_LOG_LENGTH); + } + this.errorMessage = trimmedErrorMessage; + } + + public String getNodeDefinitionId() { + return nodeDefinitionId; + } + + public void setNodeDefinitionId(String nodeDefinitionId) { + this.nodeDefinitionId = nodeDefinitionId; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java new file mode 100644 index 0000000000..e212c320f6 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@Table(name = "ProcessInstanceNodeLog") +@SequenceGenerator(name = "processInstanceNodeLogIdSeq", sequenceName = "PROCESS_INSTANCE_NODE_LOG_ID_SEQ") +public class ProcessInstanceNodeLog extends AbstractProcessInstanceLog { + + public enum NodeLogType { + ENTER, + EXIT, + ABORTED, + ASYNC_ENTER, + OBSOLETE, + SKIPPED + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "processInstanceNodeLogIdSeq") + private long id; + + @Column(name = "event_type") + @Enumerated(EnumType.STRING) + private NodeLogType eventType; + + @Column(name = "node_container_id") + private String nodeContainerId; + + @Column(name = "node_definition_id") + private String nodeDefinitionId; + + @Column(name = "node_type") + private String nodeType; + + @Column(name = "node_container_instance_id") + private String nodeContainerInstanceId; + + @Column(name = "node_name") + private String nodeName; + + @Column(name = "node_instance_id") + private String nodeInstanceId; + + @Column(name = "connection") + private String connection; + + @Column(name = "work_item_id") + private String workItemId; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "sla_due_date") + private Date slaDueDate; + + @Column(name = "event_data") + private String eventData; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public NodeLogType getEventType() { + return eventType; + } + + public void setEventType(NodeLogType eventType) { + this.eventType = eventType; + } + + public String getNodeContainerId() { + return nodeContainerId; + } + + public void setNodeContainerId(String nodeContainerId) { + this.nodeContainerId = nodeContainerId; + } + + public String getNodeDefinitionId() { + return nodeDefinitionId; + } + + public void setNodeDefinitionId(String nodeDefinitionId) { + this.nodeDefinitionId = nodeDefinitionId; + } + + public String getNodeType() { + return nodeType; + } + + public void setNodeType(String nodeType) { + this.nodeType = nodeType; + } + + public String getNodeContainerInstanceId() { + return nodeContainerInstanceId; + } + + public void setNodeContainerInstanceId(String nodeContainerInstanceId) { + this.nodeContainerInstanceId = nodeContainerInstanceId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + + public String getConnection() { + return connection; + } + + public void setConnection(String connection) { + this.connection = connection; + } + + public String getWorkItemId() { + return workItemId; + } + + public void setWorkItemId(String workItemId) { + this.workItemId = workItemId; + } + + public Date getSlaDueDate() { + return slaDueDate; + } + + public void setSlaDueDate(Date slaDueDate) { + this.slaDueDate = slaDueDate; + } + + public String getEventData() { + return eventData; + } + + public void setEventData(String eventData) { + this.eventData = eventData; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java new file mode 100644 index 0000000000..5f93c6b288 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.util.Date; +import java.util.Set; + +import javax.persistence.CollectionTable; +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.ForeignKey; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@Table(name = "ProcessInstanceStateLog") +@SequenceGenerator(name = "processInstanceStateLogIdSeq", sequenceName = "PROCESS_INSTANCE_STATE_LOG_ID_SEQ") +public class ProcessInstanceStateLog extends AbstractProcessInstanceLog { + + public enum ProcessStateLogType { + STARTED, + COMPLETED, + ABORTED, + SLA_VIOLATION + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "processInstanceStateLogIdSeq") + private long id; + + @Column(name = "event_type", nullable = false) + @Enumerated(EnumType.STRING) + private ProcessStateLogType eventType; + + @Column + private String outcome; + + @Column + private String state; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "sla_due_date") + private Date slaDueDate; + + @ElementCollection + @CollectionTable(name = "ProcessInstanceStateRolesLog", joinColumns = @JoinColumn(name = "process_instance_id", foreignKey = @ForeignKey(name="fk_process_instance_state_pid"))) + @Column(name = "role") + private Set roles; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public ProcessStateLogType getEventType() { + return eventType; + } + + public void setEventType(ProcessStateLogType eventType) { + this.eventType = eventType; + } + + public String getOutcome() { + return outcome; + } + + public void setOutcome(String outcome) { + this.outcome = outcome; + } + + public Date getSlaDueDate() { + return slaDueDate; + } + + public void setSlaDueDate(Date slaDueDate) { + this.slaDueDate = slaDueDate; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public void setRoles(Set roles) { + this.roles = roles; + } + + public Set getRoles() { + return roles; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java new file mode 100644 index 0000000000..2f01a06a1d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Entity +@Table(name = "ProcessInstanceVariableLog") +@SequenceGenerator(name = "processInstanceVariableLogIdSeq", sequenceName = "PROCESS_INSTANCE_VARIABLE_LOG_ID_SEQ") +public class ProcessInstanceVariableLog extends AbstractProcessInstanceLog { + + @Transient + private static final Logger logger = LoggerFactory.getLogger(ProcessInstanceVariableLog.class); + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "processInstanceVariableLogIdSeq") + private long id; + + @Column(name = "variable_id") + private String variableId; + + @Column(name = "variable_name") + private String variableName; + + @Column(name = "variable_value") + private String variableValue; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getVariableId() { + return variableId; + } + + public void setVariableId(String variableId) { + this.variableId = variableId; + } + + public String getVariableName() { + return variableName; + } + + public void setVariableName(String variableName) { + this.variableName = variableName; + } + + public String getVariableValue() { + return variableValue; + } + + public void setVariableValue(String variableValue) { + this.variableValue = variableValue; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java new file mode 100644 index 0000000000..47c02c8b1a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -0,0 +1,110 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.util.List; + +import javax.persistence.CollectionTable; +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.ForeignKey; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = "TaskInstanceAssignmentLog") +@SequenceGenerator(name = "taskInstanceAssignmentLogIdSeq", sequenceName = "TASK_INSTANCE_ASSIGNMENT_LOG_ID_SEQ") +public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceAssignmentLogIdSeq") + private Long id; + + @Column(name = "task_definition_id") + private String userTaskDefinitionId; + + @Column(name = "task_instance_id") + private String userTaskInstanceId; + + @Column(name = "task_name") + private String userTaskName; + + @Column(name = "assignment_type") + private String assignmentType; // POT OWNERS, ADMIN... + + @ElementCollection + @CollectionTable(name = "TaskInstanceAssignmentRolesLog", joinColumns = @JoinColumn(name = "task_instance_assignment_id"), foreignKey = @ForeignKey(name="fk_task_instance_assignment_tid")) + @Column(name = "user_id") + private List users; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserTaskDefinitionId() { + return userTaskDefinitionId; + } + + public void setUserTaskDefinitionId(String userTaskDefinitionId) { + this.userTaskDefinitionId = userTaskDefinitionId; + } + + public String getUserTaskInstanceId() { + return userTaskInstanceId; + } + + public void setUserTaskInstanceId(String userTaskInstanceId) { + this.userTaskInstanceId = userTaskInstanceId; + } + + public String getUserTaskName() { + return userTaskName; + } + + public void setUserTaskName(String userTaskName) { + this.userTaskName = userTaskName; + } + + public String getAssignmentType() { + return assignmentType; + } + + public void setAssignmentType(String assignmentType) { + this.assignmentType = assignmentType; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java new file mode 100644 index 0000000000..6bfd84057f --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.net.URL; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = "TaskInstanceAttachmentLog") +@SequenceGenerator(name = "taskInstanceAttachmentLogIdSeq", sequenceName = "TASK_INSTANCE_ATTACHMENT_LOG_ID_SEQ") +public class UserTaskInstanceAttachmentLog extends AbstractUserTaskInstanceLog { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceAttachmentLogIdSeq") + private Long id; + + @Column(name="attachment_id") + private String attachmentId; + + @Column(name="attachment_name") + private String attachmentName; + + @Column(name="attachment_uri") + private URL attachmentURI; + + @Column(name="event_type") + private int eventType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAttachmentId() { + return attachmentId; + } + + public void setAttachmentId(String attachmentId) { + this.attachmentId = attachmentId; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public URL getAttachmentURI() { + return attachmentURI; + } + + public void setAttachmentURI(URL attachmentURI) { + this.attachmentURI = attachmentURI; + } + + public int getEventType() { + return eventType; + } + + public void setEventType(int eventType) { + this.eventType = eventType; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java new file mode 100644 index 0000000000..971a880317 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = "TaskInstanceCommentLog") +@SequenceGenerator(name = "taskInstanceCommentLogIdSeq", sequenceName = "TASK_INSTANCE_COMMENT_LOG_ID_SEQ") +public class UserTaskInstanceCommentLog extends AbstractUserTaskInstanceLog { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceCommentLogIdSeq") + private Long id; + + // custom data fields + @Column(name = "comment_id") + private String commentId; + + @Column(name = "comment_content") + private String commentContent; + + @Column(name="event_type") + private int eventType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCommentId() { + return commentId; + } + + public void setCommentId(String commentId) { + this.commentId = commentId; + } + + public String getCommentContent() { + return commentContent; + } + + public void setCommentContent(String commentContent) { + this.commentContent = commentContent; + } + + public int getEventType() { + return eventType; + } + + public void setEventType(int eventType) { + this.eventType = eventType; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java new file mode 100644 index 0000000000..6fe12330b1 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import java.util.Map; + +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.ForeignKey; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.MapKeyColumn; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = "TaskInstanceDeadlineLog") +@SequenceGenerator(name = "taskInstanceDeadlineLogIdSeq", sequenceName = "TASK_INSTANCE_DEADLINE_LOG_ID_SEQ") +public class UserTaskInstanceDeadlineLog extends AbstractUserTaskInstanceLog { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceDeadlineLogIdSeq") + private Long id; + + @ElementCollection + @JoinTable(name = "TaskInstanceDeadlineNotificationLog", joinColumns = @JoinColumn(name = "task_instance_deadline_id"), foreignKey = @ForeignKey(name="fk_task_instance_deadline_tid")) + @MapKeyColumn(name = "property_name") + @Column(name = "property_value") + private Map notification; + + @Column(name = "event_type") + private String eventType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Map getNotification() { + return notification; + } + + public void setNotification(Map notification) { + this.notification = notification; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java new file mode 100644 index 0000000000..4c5ad57fa2 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = "TaskInstanceStateLog") +@SequenceGenerator(name = "taskInstanceStateLogIdSeq", sequenceName = "TASK_INSTANCE_STATE_LOG_ID_SEQ") +public class UserTaskInstanceStateLog extends AbstractUserTaskInstanceLog { + + public enum LogType { + CREATED, + READY, + CLAIMED, + STARTED, + COMPLETED, + ABORTED, + NOMINATED, + FORWARDED + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceStateLogIdSeq") + private Long id; + + @Column(name="task_id") + private String taskId; + + private String name; + + private String description; + + @Column(name="actual_user") + private String actualUser; + + private String state; + + @Column(name = "node_definition_id") + private String nodeDefinitionId; + + @Column(name = "node_instance_id") + private String nodeInstanceId; + + @Column(name = "event_type") + @Enumerated(EnumType.STRING) + private LogType eventType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getActualUser() { + return actualUser; + } + + public void setActualUser(String actualUser) { + this.actualUser = actualUser; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + + public LogType getEventType() { + return eventType; + } + + public void setEventType(LogType eventType) { + this.eventType = eventType; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getNodeDefinitionId() { + return nodeDefinitionId; + } + + public void setNodeDefinitionId(String nodeDefinitionId) { + this.nodeDefinitionId = nodeDefinitionId; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java new file mode 100644 index 0000000000..08efefd586 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = "TaskInstanceVariableLog") +@SequenceGenerator(name = "taskInstanceVariableLogIdSeq", sequenceName = "TASK_INSTANCE_VARIABLE_LOG_ID_SEQ") +public class UserTaskInstanceVariableLog extends AbstractUserTaskInstanceLog { + + public enum VariableType { + INPUT, + OUTPUT; + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceVariableLogIdSeq") + private Long id; + + @Column(name = "variable_id") + private String variableId; + + @Column(name = "variable_name") + private String variableName; + + @Column(name = "variable_value") + private String variableValue; + + @Column(name = "variable_type") + @Enumerated(EnumType.STRING) + private VariableType variableType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVariableId() { + return variableId; + } + + public void setVariableId(String variableId) { + this.variableId = variableId; + } + + public String getVariableName() { + return variableName; + } + + public void setVariableName(String variableName) { + this.variableName = variableName; + } + + public String getVariableValue() { + return variableValue; + } + + public void setVariableValue(String variableValue) { + this.variableValue = variableValue; + } + + public VariableType getVariableType() { + return variableType; + } + + public void setVariableType(VariableType type) { + this.variableType = type; + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java new file mode 100644 index 0000000000..13819d1c95 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.util.List; +import java.util.Map; + +import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; + +public abstract class JPAAbstractQuery { + + protected List executeWithEntityManager(EntityManager entityManager, String query, Class clazz) { + return entityManager.createQuery(query, clazz).getResultList(); + + } + + protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query, Class clazz) { + + return entityManager.createNamedQuery(query, clazz).getResultList(); + + } + + protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Class clazz, Map arguments) { + + TypedQuery typedQuery = entityManager.createNamedQuery(query, clazz); + arguments.forEach(typedQuery::setParameter); + return typedQuery.getResultList(); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java new file mode 100644 index 0000000000..6790fe3967 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.JobExecutionTO; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; + +public class JPAGraphQLSchemaJobsQueryProvider implements GraphQLSchemaQueryProvider { + + @Override + public List> queries() { + return List.of( + new JPASimpleNamedQuery("GetAllScheduledJobs", "GetAllScheduledJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobById", "GetJobById", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobHistoryById", "GetJobHistoryById", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobHistoryByCorrelationId", "GetJobHistoryByCorrelationId", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllPendingJobs", "GetAllPendingJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllEligibleJobsForExecution", "GetAllEligibleJobsForExecution", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllEligibleJobsForRetry", "GetAllEligibleJobsForRetry", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllJobs", "GetAllJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllCompletedJobs", "GetAllCompletedJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllInErrorJobs", "GetAllInErrorJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllCancelledJobs", "GetAllCancelledJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllJobsByState", "GetAllJobsByState", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobByCorrelationId", "GetJobByCorrelationId", JobExecutionTO.class)); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java new file mode 100644 index 0000000000..2d2896e85d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceErrorTO; +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceNodeTO; +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceStateTO; +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceVariableTO; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; + +public class JPAGraphQLSchemaProcessInstancesQueryProvider implements GraphQLSchemaQueryProvider { + + @Override + public List> queries() { + return List.of( + new JPASimpleNamedQuery("GetAllProcessInstancesState", "GetAllProcessInstancesState", ProcessInstanceStateTO.class), + new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", "GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), + new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", "GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), + new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", "GetAllProcessInstancesVariablebyProcessInstanceId", ProcessInstanceVariableTO.class)); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java new file mode 100644 index 0000000000..3ad12a4136 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAssignmentTO; +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAttachmentTO; +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceCommentTO; +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceDeadlineTO; +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceStateTO; +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceVariableTO; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; + +public class JPAGraphQLSchemaUserTaskInstancesQueryProvider implements GraphQLSchemaQueryProvider { + + @Override + public List> queries() { + return List.of( + new JPASimpleNamedQuery("GetAllUserTaskInstanceState", "GetAllUserTaskInstanceState", UserTaskInstanceStateTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceAttachments", "GetAllUserTaskInstanceAttachments", UserTaskInstanceAttachmentTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", "GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceDeadline", "GetAllUserTaskInstanceDeadline", UserTaskInstanceDeadlineTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", "GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceAssignments", "GetAllUserTaskInstanceAssignments", UserTaskInstanceAssignmentTO.class)); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java new file mode 100644 index 0000000000..112273bc40 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.util.List; +import java.util.Map; + +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; + +import graphql.schema.DataFetchingEnvironment; + +public class JPASimpleNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { + + private String name; + private String namedQuery; + private Class clazz; + + public JPASimpleNamedQuery(String name, String namedQuery, Class clazz) { + this.name = name; + this.namedQuery = namedQuery; + this.clazz = clazz; + } + + @Override + public String name() { + return name; + } + + @Override + public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { + + Map arguments = dataFetchingEnvironment.getArguments(); + + EntityManager entityManager = dataFetchingEnvironment.getLocalContext(); + if (arguments.isEmpty()) { + return executeWithNamedQueryEntityManager(entityManager, namedQuery, clazz); + } else { + return executeWithNamedQueryEntityManagerAndArguments(entityManager, namedQuery, clazz, arguments); + } + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml new file mode 100644 index 0000000000..e384c33f24 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml new file mode 100644 index 0000000000..45dd1b3175 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state = 'SCHEDULED' + + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.job_id = :jobId + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + FROM JobExecutionHistory o1 + WHERE o1.job_id = :jobId + ORDER BY o1.timestamp DESC + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + FROM JobExecutionHistory o1 + WHERE o1.correlation_id = :correlationId + ORDER BY o1.timestamp DESC + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state IN ('SCHEDULED', 'RETRY') + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state IN ('SCHEDULED') + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state IN ('RETRY', 'ERROR') + + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL + ORDER BY o1.timestamp DESC + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state = 'EXECUTED' + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state = 'ERROR' + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state = 'CANCELED' + + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.state IN (:state) + ORDER BY o1.timestamp DESC + + + + + + SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + FROM JobExecutionHistory o1 + LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + WHERE o2.job_id IS NULL AND o1.correlation_id = :correlationId + ORDER BY o1.timestamp DESC + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml new file mode 100644 index 0000000000..cd83d5aca9 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml @@ -0,0 +1,205 @@ + + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate + FROM ProcessInstanceStateLog log + LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + WHERE log_newer.event_id IS NULL + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.node_container_id as nodeContainerId, + log.node_definition_id as nodeDefinitionId, + log.node_type as nodeType, + log.node_container_instance_id as nodeContainerInstanceId, + log.node_name as nodeName, + log.node_instance_id as nodeInstanceId, + log.connection as connection, + log.work_item_id as workItemId, + log.sla_due_date as slaDueDate, + log.event_data as eventData + FROM ProcessInstanceNodeLog log + LEFT JOIN ProcessInstanceNodeLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id + WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.error_message as errorMessage, + log.node_definition_id as nodeDefinitionId, + log.node_instance_id as nodeInstanceId + FROM ProcessInstanceErrorLog log + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.variable_id as variableId, + log.variable_name as variableName, + log.variable_value as variableValue + FROM ProcessInstanceVariableLog log + LEFT JOIN ProcessInstanceVariableLog log_newer ON log.event_date < log_newer.event_date + AND log.process_instance_id = log_newer.process_instance_id + AND log.variable_id = log_newer.variable_id + WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider new file mode 100644 index 0000000000..ac66f469b8 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider @@ -0,0 +1,3 @@ +org.kie.kogito.app.audit.jpa.queries.JPAGraphQLSchemaJobsQueryProvider +org.kie.kogito.app.audit.jpa.queries.JPAGraphQLSchemaProcessInstancesQueryProvider +org.kie.kogito.app.audit.jpa.queries.JPAGraphQLSchemaUserTaskInstancesQueryProvider \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml new file mode 100644 index 0000000000..5ab39a971c --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml @@ -0,0 +1,223 @@ + + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.task_id as taskId, + log.name as name, + log.description as description, + log.actual_user as actualUser, + log.state as state, + log.node_definition_id as nodeDefinitionId, + log.node_instance_id as nodeInstanceId, + log.event_type as eventType + FROM TaskInstanceStateLog log + LEFT JOIN TaskInstanceStateLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.task_name as userTaskName, + log.assignment_type as assignmentType + FROM TaskInstanceAssignmentLog log + WHERE log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.attachment_id as attachmentId, + log.attachment_name as attachmentName, + log.attachment_uri as attachmentURI, + log.event_type as eventType + FROM TaskInstanceAttachmentLog log + LEFT JOIN TaskInstanceAttachmentLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.attachment_id = log_newer.attachment_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.comment_id as commentId, + log.comment_content as commentContent, + log.event_type as eventType + FROM TaskInstanceCommentLog log + LEFT JOIN TaskInstanceCommentLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.comment_id = log_newer.comment_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType + FROM TaskInstanceDeadlineLog log + WHERE log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.variable_id as variableId, + log.variable_name as variableName, + log.variable_value as variableValue, + log.variable_type as variableType + FROM TaskInstanceVariableLog log + LEFT JOIN TaskInstanceVariableLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.variable_id = log_newer.variable_id + AND log.variable_type = log_newer.variable_type + AND log.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml new file mode 100644 index 0000000000..c61ed09ba9 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -0,0 +1,136 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + + kogito-addons-data-audit-jpa-quarkus + + + Kogito Apps :: Data Audit :: Quarkus + + + UTF-8 + + + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + + + + + + io.quarkus + quarkus-core + + + io.quarkus + quarkus-arc + + + + io.smallrye.reactive + smallrye-reactive-messaging-api + + + io.smallrye.reactive + smallrye-reactive-messaging-kafka + + + io.quarkus + quarkus-smallrye-metrics + + + org.apache.kafka + kafka-clients + + + + io.quarkus + quarkus-reactive-routes + + + io.quarkiverse.reactivemessaging.http + quarkus-reactive-messaging-http + + + io.quarkus + quarkus-vertx-graphql + + + + io.quarkus + quarkus-hibernate-orm + + + + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + + + maven-surefire-plugin + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + h2 + + true + + + + + io.quarkus + quarkus-jdbc-h2 + test + + + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java new file mode 100644 index 0000000000..21d9004787 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import javax.annotation.PostConstruct; +import javax.enterprise.context.ApplicationScoped; +import javax.inject.Inject; +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditQueryService; + +import io.quarkus.vertx.web.Route; +import io.vertx.ext.web.RoutingContext; +import io.vertx.ext.web.handler.graphql.ExecutionInputBuilderWithContext; +import io.vertx.ext.web.handler.graphql.GraphQLHandler; +import io.vertx.ext.web.handler.graphql.GraphQLHandlerOptions; + +import static io.quarkus.vertx.web.Route.HttpMethod.GET; +import static io.quarkus.vertx.web.Route.HttpMethod.POST; +import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; + +import graphql.GraphQL; + +@ApplicationScoped +public class GraphQLJPADataAuditRouter { + + + + GraphQL graphQL; + + GraphQLHandler graphQLHandler; + + @Inject + EntityManager entityManager; + + @PostConstruct + public void init() { + graphQL = GraphQL.newGraphQL(DataAuditQueryService.newAuditQuerySerice().getGraphQLSchema()).build(); + + graphQLHandler = GraphQLHandler.create(graphQL, new GraphQLHandlerOptions()); + } + + @Route(path = DATA_AUDIT_PATH, type = Route.HandlerType.BLOCKING, order = 2, methods = { GET }) + public void blockingGraphQLHandlerGet(RoutingContext rc) { + graphQLHandler.beforeExecute(this::beforeExecuteHTTP).handle(rc); + } + + @Route(path = DATA_AUDIT_PATH, type = Route.HandlerType.BLOCKING, order = 2, methods = { POST }) + public void blockingGraphQLHandlerPost(RoutingContext rc) { + graphQLHandler.beforeExecute(this::beforeExecuteHTTP).handle(rc); + } + + private void beforeExecuteHTTP(ExecutionInputBuilderWithContext config) { + config.builder().localContext(entityManager); + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java new file mode 100644 index 0000000000..d2839077df --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import javax.enterprise.context.ApplicationScoped; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.Transactional; + +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.jpa.JPADataAuditStore; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.smallrye.common.annotation.Blocking; + +import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; +import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; +import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; + +@ApplicationScoped +public class QuarkusDataAuditMessagingEventConsumer { + + private static final Logger LOGGER = LoggerFactory.getLogger(QuarkusDataAuditMessagingEventConsumer.class); + + private DataAuditStoreProxyService proxy; + + @PersistenceContext + EntityManager entityManager; + + public QuarkusDataAuditMessagingEventConsumer() { + proxy = DataAuditStoreProxyService.newAuditStoreSerice(new JPADataAuditStore()); + } + + @Incoming(KOGITO_PROCESSINSTANCES_EVENTS) + @Blocking + @Transactional + public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { + LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); + proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), event); + + } + + @Incoming(KOGITO_USERTASKINSTANCES_EVENTS) + @Blocking + @Transactional + public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { + LOGGER.debug("Task instance received UserTaskInstanceDataEvent \n{}", event); + proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), event); + + } + + @Incoming(KOGITO_JOBS_EVENTS) + @Blocking + @Transactional + public void onJobEvent(JobCloudEvent event) { + LOGGER.debug("Job received KogitoJobCloudEvent \n{}", event); + proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java new file mode 100644 index 0000000000..d88c727432 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import java.util.Collection; + +import javax.enterprise.context.ApplicationScoped; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.Transactional; +import javax.transaction.Transactional.TxType; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.api.DataAuditEventPublisher; +import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.jpa.JPADataAuditStore; +import org.kie.kogito.event.DataEvent; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@ApplicationScoped +public class QuarkusJPADataAuditEventPublisher implements DataAuditEventPublisher { + + private static final Logger LOGGER = LoggerFactory.getLogger(QuarkusJPADataAuditEventPublisher.class); + + private DataAuditStoreProxyService proxy; + + @PersistenceContext + EntityManager entityManager; + + public QuarkusJPADataAuditEventPublisher() { + proxy = DataAuditStoreProxyService.newAuditStoreSerice(new JPADataAuditStore()); + } + + @Override + @Transactional(value = TxType.REQUIRED) + public void publish(Collection> events) { + events.forEach(this::publish); + } + + @Override + @Transactional(value = TxType.REQUIRED) + public void publish(DataEvent event) { + + if (event instanceof ProcessInstanceDataEvent) { + LOGGER.debug("Processing process instance event {}", event); + proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), (ProcessInstanceDataEvent) event); + return; + } else if (event instanceof UserTaskInstanceDataEvent) { + LOGGER.debug("Processing user task instacne event {}", event); + proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), (UserTaskInstanceDataEvent) event); + return; + } + + LOGGER.debug("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); + } + + @Override + @Transactional(value = TxType.REQUIRED) + public void publish(JobCloudEvent event) { + LOGGER.debug("Processing job event {}", event); + proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java new file mode 100644 index 0000000000..d53f110f8e --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import javax.inject.Inject; + +import org.junit.jupiter.api.Test; +import org.kie.kogito.app.audit.api.SubsystemConstants; +import org.kie.kogito.event.EventPublisher; +import org.kie.kogito.event.process.ProcessInstanceEventMetadata; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateEventBody; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.http.ContentType; +import io.restassured.response.Response; + +import static io.restassured.RestAssured.given; + +@QuarkusTest +public class QuarkusEmbeddedJPADataAuditTest { + private static final Logger LOGGER = LoggerFactory.getLogger(QuarkusEmbeddedJPADataAuditTest.class); + + @Inject + EventPublisher eventPublisher; + + @Test + public void testQuarkusEventPublisher() { + + String processId = "processId"; + String processVersion = "1.0"; + String processType = "BPMN2"; + ProcessInstanceStateEventBody body = ProcessInstanceStateEventBody.create() + .processId(processId) + .processInstanceId("1") + .parentInstanceId(null) + .processType(processType) + .processVersion(processVersion) + .processName(UUID.randomUUID().toString()) + .eventDate(new Date()) + .state(1) + .businessKey(UUID.randomUUID().toString()) + .roles("admin") + .eventUser("myUser") + .eventType(ProcessInstanceStateEventBody.EVENT_TYPE_STARTED) + .build(); + + Map metadata = new HashMap<>(); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, "1"); + metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, processId); + metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, processVersion); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, String.valueOf(1)); + metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, processType); + + ProcessInstanceStateDataEvent event = + new ProcessInstanceStateDataEvent("http://localhost:8080/" + processId, "", "myUser", metadata, body); + + event.setKogitoBusinessKey(body.getBusinessKey()); + + eventPublisher.publish(event); + + Response response = given() + .contentType(ContentType.JSON) + .body("{\"query\": \"{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate } }\"}") + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract() + .response(); + + LOGGER.info("Data response is {}", response.asPrettyString()); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties new file mode 100644 index 0000000000..c5459df9b5 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties @@ -0,0 +1,24 @@ +quarkus.datasource.db-kind=h2 +quarkus.datasource.username=hibernate +quarkus.datasource.password=hibernate +quarkus.datasource.jdbc.url=jdbc:h2:mem:test + +quarkus.hibernate-orm.enabled=true +quarkus.hibernate-orm.database.generation=create-drop +quarkus.hibernate-orm.packages=org.kie.kogito.app.audit.jpa.model +quarkus.hibernate-orm.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml + + +mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer +mp.messaging.incoming.kogito-processinstances-events.group.id=data-audit + +mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer +mp.messaging.incoming.kogito-usertaskinstances-events.group.id=data-audit + +mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer +mp.messaging.incoming.kogito-jobs-events.group.id=data-audit + +quarkus.kafka.bootstrap-servers=localhost:9092 diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml new file mode 100644 index 0000000000..80337e34ac --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + + kogito-addons-data-audit-jpa-springboot + + Kogito Apps :: Data Audit :: Springboot + + + UTF-8 + + + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.slf4j + slf4j-api + + + + org.springframework.boot + spring-boot-starter + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-web + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-data-jpa + ${version.org.springframework.boot} + + + org.springframework.kafka + spring-kafka + 2.8.4 + + + + org.springframework.boot + spring-boot-starter-test + ${version.org.springframework.boot} + test + + + io.rest-assured + rest-assured + test + + + + + + + h2 + + true + + + + + com.h2database + h2 + test + + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java new file mode 100644 index 0000000000..dd81658137 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditQueryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.JsonNode; + +import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; + +import graphql.ExecutionResult; + + +@RestController +public class GraphQLJPAAuditDataRouteMapping { + + + private DataAuditQueryService dataAuditQueryService; + + @Autowired + private EntityManager entityManager; + + @PostConstruct + public void init() { + dataAuditQueryService = DataAuditQueryService.newAuditQuerySerice(); + + } + + @PostMapping(value = DATA_AUDIT_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + public Map executeQuery(@RequestBody JsonNode query) { + ExecutionResult executionResult = dataAuditQueryService.executeQuery(entityManager, query.get("query").asText()); + return executionResult.toSpecification(); + } + +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java new file mode 100644 index 0000000000..5532a9a801 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + +import org.kie.kogito.app.audit.json.JsonUtils; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@SpringBootConfiguration +@EnableAutoConfiguration +@ComponentScan +public class SpringBootAuditDataConfiguration { + + @Bean + ObjectMapper producerObjectMapper() { + return JsonUtils.getObjectMapper(); + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java new file mode 100644 index 0000000000..06f89b98f7 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.jpa.JPADataAuditStore; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.annotation.KafkaHandler; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Service; + +import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; +import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; +import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; + +@Service +@KafkaListener(topics = { KOGITO_PROCESSINSTANCES_EVENTS, KOGITO_USERTASKINSTANCES_EVENTS, KOGITO_JOBS_EVENTS}, groupId = "data-audit", clientIdPrefix = "data-audit-events") +public class SpringBootDataAuditMessagingEventConsumer { + + private final Logger LOGGER = LoggerFactory.getLogger(SpringBootDataAuditMessagingEventConsumer.class); + + private DataAuditStoreProxyService proxy; + + private JPADataAuditStore jpaAuditStore; + + @Autowired + EntityManager entityManager; + + + public SpringBootDataAuditMessagingEventConsumer() { + jpaAuditStore = new JPADataAuditStore(); + proxy = DataAuditStoreProxyService.newAuditStoreSerice(jpaAuditStore); + } + + @KafkaHandler + public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { + LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); + proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), event); + } + + @KafkaHandler + public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { + LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); + proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), event); + + } + + @KafkaHandler + public void onJobInstanceEvent(JobCloudEvent event) { + LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); + proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + } +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java new file mode 100644 index 0000000000..2ef4845bbf --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + +import java.util.Collection; + +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.api.DataAuditEventPublisher; +import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.jpa.JPADataAuditStore; +import org.kie.kogito.event.DataEvent; +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component +public class SpringBootJPADataAuditEventPublisher implements DataAuditEventPublisher { + + private static final Logger LOGGER = LoggerFactory.getLogger(SpringBootJPADataAuditEventPublisher.class); + + private DataAuditStoreProxyService proxy; + + @Autowired + EntityManager entityManager; + + public SpringBootJPADataAuditEventPublisher() { + proxy = DataAuditStoreProxyService.newAuditStoreSerice(new JPADataAuditStore()); + } + + @Override + public void publish(Collection> events) { + events.forEach(this::publish); + } + + @Override + @Transactional + public void publish(DataEvent event) { + if (event instanceof ProcessInstanceDataEvent) { + LOGGER.debug("Processing process instance event {}", event); + proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), (ProcessInstanceDataEvent) event); + return; + } else if (event instanceof UserTaskInstanceDataEvent) { + LOGGER.debug("Processing user task instacne event {}", event); + proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), (UserTaskInstanceDataEvent) event); + return; + } + + LOGGER.debug("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); + } + + @Override + public void publish(JobCloudEvent event) { + LOGGER.debug("Processing job event {}", event); + proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java new file mode 100644 index 0000000000..26ea449176 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.junit.jupiter.api.Test; +import org.kie.kogito.app.audit.api.SubsystemConstants; +import org.kie.kogito.event.EventPublisher; +import org.kie.kogito.event.process.ProcessInstanceEventMetadata; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateEventBody; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.server.LocalServerPort; + +import io.restassured.http.ContentType; +import io.restassured.response.Response; + +import static io.restassured.RestAssured.given; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0") +public class SpringbootJPADataAuditTest { + private static final Logger LOGGER = LoggerFactory.getLogger(SpringbootJPADataAuditTest.class); + + @LocalServerPort + int randomServerPort; + + @Autowired + EventPublisher eventPublisher; + + @Test + public void testSpringbootEventPublisher() { + + String processId = "processId"; + String processVersion = "1.0"; + String processType = "BPMN2"; + ProcessInstanceStateEventBody body = ProcessInstanceStateEventBody.create() + .processId(processId) + .processInstanceId("1") + .parentInstanceId(null) + .processType(processType) + .processVersion(processVersion) + .processName(UUID.randomUUID().toString()) + .eventDate(new Date()) + .state(1) + .businessKey(UUID.randomUUID().toString()) + .roles("admin") + .eventUser("myUser") + .eventType(ProcessInstanceStateEventBody.EVENT_TYPE_STARTED) + .build(); + + Map metadata = new HashMap<>(); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, "1"); + metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, processId); + metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, processVersion); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, String.valueOf(1)); + metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, processType); + + ProcessInstanceStateDataEvent event = + new ProcessInstanceStateDataEvent("http://localhost:8080/" + processId, "", "myUser", metadata, body); + + event.setKogitoBusinessKey(body.getBusinessKey()); + + eventPublisher.publish(event); + + + Response response = given() + .port(randomServerPort) + .contentType(ContentType.JSON) + .body("{\"query\": \"{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate } }\"}") + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract() + .response(); + + LOGGER.info("Data response is {}", response.asPrettyString()); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties new file mode 100644 index 0000000000..5241b09eb9 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties @@ -0,0 +1,17 @@ +# configure data source + +spring.datasource.jdbc-url=jdbc:h2:mem:test +spring.datasource.driver-class-name=org.h2.Driver + +# configure jpa +spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl +spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect +spring.jpa.show-sql=false + + +spring.kafka.consumer.bootstrap-servers: localhost:9092 +spring.kafka.consumer.auto-offset-reset: earliest + + diff --git a/data-audit/kogito-addons-data-audit-tck/.gitignore b/data-audit/kogito-addons-data-audit-tck/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-tck/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/data-audit/kogito-addons-data-audit-tck/pom.xml b/data-audit/kogito-addons-data-audit-tck/pom.xml new file mode 100644 index 0000000000..7e29f1173a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-tck/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + data-audit-service-tck + Kogito Apps :: Data Audit :: Test Comptability Kit + + + org.kie.kogito + kogito-addons-data-audit-common + + + + org.assertj + assertj-core + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-params + test + + + org.junit.platform + junit-platform-suite + test + + + org.jboss.logmanager + jboss-logmanager + 3.0.2.Final + test + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java new file mode 100644 index 0000000000..7595a8e428 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java @@ -0,0 +1,265 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.audit.tck; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.service.api.DataAuditStoreProxyService; +import org.kie.kogito.audit.support.DataAuditTestCompatibilityKit; +import org.kie.kogito.audit.support.EventPublisherDriver; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.Job.State; +import org.kie.kogito.jobs.service.api.TemporalUnit; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.deriveNewState; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.newJobEvent; + +import graphql.ExecutionResult; + + +public class AuditJobServiceTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(AuditJobServiceTest.class); + + + @BeforeAll + public static void init() { + + // we populate the database with simple dataset + DataAuditStoreProxyService proxy = DataAuditStoreProxyService.newAuditStoreSerice(); + + JobCloudEvent jobEvent; + jobEvent = newJobEvent("job1", "correlation1", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.EXECUTED); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = newJobEvent("job2", "correlation2", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = newJobEvent("job3", "correlation3", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.CANCELED); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = newJobEvent("job4", "correlation4", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.RETRY); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.EXECUTED); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = newJobEvent("job5", "correlation5", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + proxy.storeJobDataEvent(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.ERROR); + proxy.storeJobDataEvent(jobEvent); + } + + + @Test + public void testGetAllScheduledJobs() { + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery("{ GetAllScheduledJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp } }"); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllScheduledJobs")); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(1); + assertThat(data).first() + .hasFieldOrPropertyWithValue("state", "SCHEDULED"); + + } + + @Test + public void testGetJobById() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery("{ GetJobById ( jobId : \"job1\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List data = ((List) ((Map) executionResult.getData()).get("GetJobById")); + assertThat(data).hasSize(1); + + } + + @Test + public void testGetJobHistoryById() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + + ExecutionResult executionResult = + executionResult = service.executeQuery("{ GetJobHistoryById ( jobId : \"job4\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetJobHistoryById")); + assertThat(data) + .hasSize(3) + .allMatch(e -> "job4".equals(e.get("jobId"))) + .extracting(e -> e.get("state")) + .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); + + } + + @Test + public void testGetJobHistoryByCorrelationId() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + + ExecutionResult executionResult = + service.executeQuery( + "{ GetJobHistoryByCorrelationId ( correlationId : \"correlation4\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetJobHistoryByCorrelationId")); + assertThat(data) + .hasSize(3) + .allMatch(e -> "job4".equals(e.get("jobId"))) + .allMatch(e -> "correlation4".equals(e.get("correlationId"))) + .extracting(e -> e.get("state")) + .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); + } + + @Test + public void testGetAllPendingJobs() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery("{ GetAllPendingJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List data = ((List) ((Map) executionResult.getData()).get("GetAllPendingJobs")); + assertThat(data).hasSize(1); + } + + @Test + public void testGetAllEligibleJobsForExecution() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery("{ GetAllEligibleJobsForExecution { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List data = ((List) ((Map) executionResult.getData()).get("GetAllEligibleJobsForExecution")); + assertThat(data).hasSize(1); + + } + + @Test + public void testGetAllEligibleJobsForRetry() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + ExecutionResult executionResult = service.executeQuery("{ GetAllEligibleJobsForRetry { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List data = ((List) ((Map) executionResult.getData()).get("GetAllEligibleJobsForRetry")); + assertThat(data).hasSize(1); + } + + @Test + public void testGetAllJobs() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + ExecutionResult executionResult = service.executeQuery("{ GetAllJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllJobs")); + assertThat(data) + .hasSize(5) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job1", "job2", "job3", "job4", "job5"); + } + + @Test + public void testGetAllCompletedJobs() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + ExecutionResult executionResult = service.executeQuery("{ GetAllCompletedJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllCompletedJobs")); + assertThat(data) + .hasSize(2) + .allMatch(e -> "EXECUTED".equals(e.get("state"))) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job1", "job4"); + } + + @Test + public void testGetAllInErrorJobs() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + ExecutionResult executionResult = service.executeQuery("{ GetAllInErrorJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllInErrorJobs")); + assertThat(data) + .hasSize(1) + .allMatch(e -> "ERROR".equals(e.get("state"))) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job5"); + } + + @Test + public void testGetAllJobsByState() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + ExecutionResult executionResult = + service.executeQuery("{ GetAllJobsByState (state : \"EXECUTED\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllJobsByState")); + assertThat(data).hasSize(2); + + assertThat(data) + .allMatch(e -> "EXECUTED".equals(e.get("state"))) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job1", "job4"); + } + + @Test + public void testGetJobByCorrelationId() { + + DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); + ExecutionResult executionResult = + service.executeQuery("{ GetJobByCorrelationId (correlationId : \"correlation1\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetJobByCorrelationId")); + assertThat(data).hasSize(1); + + assertThat(data).first() + .hasFieldOrPropertyWithValue("correlationId", "correlation1"); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java new file mode 100644 index 0000000000..0d2f5e8fdc --- /dev/null +++ b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.audit.tck; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.kie.kogito.app.audit.service.api.AuditQueryService; +import org.kie.kogito.app.audit.service.api.AuditStoreService; +import org.kie.kogito.app.audit.service.spi.AuditStoreContainerBeanLocator; +import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeEventBody; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateEventBody; +import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; +import org.kie.kogito.process.ProcessInstance; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.tuple; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.deriveProcessInstanceStateEvent; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceErrorEvent; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceNodeEvent; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceStateEvent; +import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceVariableEvent; + +import graphql.ExecutionResult; + +public class AuditProcessInstanceServiceTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(AuditProcessInstanceServiceTest.class); + + @BeforeAll + public static void init() { + // we populate the database with simple dataset + AuditStoreService proxy = AuditStoreService.newAuditStoreSerice(); + + ProcessInstanceStateDataEvent processInstanceEvent; + + // the first process started + processInstanceEvent = newProcessInstanceStateEvent("processId1", "1", ProcessInstance.STATE_ACTIVE, "rootI1", "rootP1", "parent1", "identity", + ProcessInstanceStateEventBody.EVENT_TYPE_STARTED); + proxy.storeProcessInstanceDataEvent(processInstanceEvent); + + ProcessInstanceVariableDataEvent processInstanceVariableEvent = newProcessInstanceVariableEvent(processInstanceEvent, "var_id1", "varName", "errorMessage", "identity"); + proxy.storeProcessInstanceDataEvent(processInstanceVariableEvent); + + processInstanceVariableEvent = newProcessInstanceVariableEvent(processInstanceEvent, "var_id1", "varName", "variableValue", "identity"); + proxy.storeProcessInstanceDataEvent(processInstanceVariableEvent); + + ProcessInstanceNodeDataEvent processInstanceNodeEvent; + processInstanceNodeEvent = newProcessInstanceNodeEvent(processInstanceEvent, "StartNode", "nd1", "ni1", "name1", null, "myuser", ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER); + proxy.storeProcessInstanceDataEvent(processInstanceNodeEvent); + + processInstanceNodeEvent = newProcessInstanceNodeEvent(processInstanceEvent, "StartNode", "nd1", "ni1", "name1", null, "myuser", ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT); + proxy.storeProcessInstanceDataEvent(processInstanceNodeEvent); + + processInstanceNodeEvent = newProcessInstanceNodeEvent(processInstanceEvent, "EndNode", "nd2", "ni2", "name2", null, "myuser", ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER); + proxy.storeProcessInstanceDataEvent(processInstanceNodeEvent); + + // the second completed + processInstanceEvent = newProcessInstanceStateEvent("processId1", "2", ProcessInstance.STATE_ACTIVE, "rootI1", "rootP1", "parent1", "identity", + ProcessInstanceStateEventBody.EVENT_TYPE_STARTED); + proxy.storeProcessInstanceDataEvent(processInstanceEvent); + + processInstanceEvent = deriveProcessInstanceStateEvent(processInstanceEvent, "identity2", ProcessInstance.STATE_COMPLETED, ProcessInstanceStateEventBody.EVENT_TYPE_ENDED); + proxy.storeProcessInstanceDataEvent(processInstanceEvent); + + // the third in error + processInstanceEvent = newProcessInstanceStateEvent("processId2", "3", ProcessInstance.STATE_ACTIVE, "rootI1", "rootP1", "parent1", "identity", + ProcessInstanceStateEventBody.EVENT_TYPE_STARTED); + proxy.storeProcessInstanceDataEvent(processInstanceEvent); + + ProcessInstanceErrorDataEvent processInstanceErrorEvent = newProcessInstanceErrorEvent(processInstanceEvent, "nd1", "ni1", "errorMessage1", "identity"); + proxy.storeProcessInstanceDataEvent(processInstanceErrorEvent); + + processInstanceErrorEvent = newProcessInstanceErrorEvent(processInstanceEvent, "nd2", "ni2", "errorMessage2", "identity"); + proxy.storeProcessInstanceDataEvent(processInstanceErrorEvent); + + processInstanceEvent = deriveProcessInstanceStateEvent(processInstanceEvent, "identity3", ProcessInstance.STATE_ERROR, ProcessInstanceStateEventBody.EVENT_TYPE_ENDED); + proxy.storeProcessInstanceDataEvent(processInstanceEvent); + + } + + @Test + public void testGetAllProcessInstancesState() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate } }"); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesState")); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data) + .hasSize(3) + .extracting(e -> e.get("processInstanceId"), e -> e.get("state")) + .containsExactlyInAnyOrder(tuple("1", String.valueOf(ProcessInstance.STATE_ACTIVE)), tuple("2", String.valueOf(ProcessInstance.STATE_COMPLETED)), + tuple("3", String.valueOf(ProcessInstance.STATE_ERROR))); + + } + + @Test + public void testGetAllProcessInstancesNodeByProcessInstanceId() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllProcessInstancesNodeByProcessInstanceId ( processInstanceId : \"1\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, nodeContainerId, nodeDefinitionId, nodeType , nodeName, nodeInstanceId, connection, slaDueDate , eventData } }"); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesNodeByProcessInstanceId")); + assertThat(data) + .hasSize(2) + .extracting(e -> e.get("processInstanceId"), e -> e.get("nodeInstanceId"), e -> e.get("eventType")) + .containsExactlyInAnyOrder( + tuple("1", "ni1", "EXIT"), + tuple("1", "ni2", "ENTER")); + + } + + + + + @Test + public void testGetAllProcessInstancesErrorByProcessInstanceId() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllProcessInstancesErrorByProcessInstanceId ( processInstanceId : \"3\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, errorMessage, nodeDefinitionId, nodeInstanceId } }"); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesErrorByProcessInstanceId")); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data) + .hasSize(2) + .extracting(e -> e.get("errorMessage"), e -> e.get("nodeDefinitionId"), e -> e.get("nodeInstanceId")) + .containsExactlyInAnyOrder( + tuple("errorMessage1", "nd1", "ni1"), + tuple("errorMessage2", "nd2", "ni2")); + + } + + + + + @Test + public void testGetAllProcessInstancesVariablebyProcessInstanceId() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllProcessInstancesVariablebyProcessInstanceId ( processInstanceId : \"1\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue } }"); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesVariablebyProcessInstanceId")); + LOGGER.info("Outcome {}", executionResult); + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data) + .hasSize(1) + .extracting(e -> e.get("variableId"), e -> e.get("variableName"),e -> e.get("variableValue")) + .containsExactlyInAnyOrder( + tuple("var_id1", "varName", "\"variableValue\"")); + + } +} diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java new file mode 100644 index 0000000000..f915dce27e --- /dev/null +++ b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java @@ -0,0 +1,191 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.audit.tck; + +import java.net.URI; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.kie.kogito.app.audit.service.api.AuditQueryService; +import org.kie.kogito.app.audit.service.api.AuditStoreService; +import org.kie.kogito.app.audit.service.spi.AuditStoreContainerBeanLocator; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.assertj.core.api.Assertions.assertThat; + +import graphql.ExecutionResult; + +public class AuditUserTaskInstanceServiceTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(AuditUserTaskInstanceServiceTest.class); + + @BeforeAll + public static void init() { + + // we populate the database with simple dataset + AuditStoreService proxy = AuditStoreService.newAuditStoreSerice(); + + UserTaskInstanceStateDataEvent uEvent; + uEvent = DataAuditTestUtils.newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Ready", "owner", "1"); + proxy.storeUserTaskInstanceDataEvent(uEvent); + + uEvent = DataAuditTestUtils.newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Claimed", "owner", "1"); + proxy.storeUserTaskInstanceDataEvent(uEvent); + + UserTaskInstanceVariableDataEvent vEvent; + vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 1); + proxy.storeUserTaskInstanceDataEvent(vEvent); + + vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 2); + proxy.storeUserTaskInstanceDataEvent(vEvent); + + vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId2", "varName2", "OUTPUT", 1); + proxy.storeUserTaskInstanceDataEvent(vEvent); + + vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId3", "varName3", "OUTPUT", 1); + proxy.storeUserTaskInstanceDataEvent(vEvent); + + UserTaskInstanceAssignmentDataEvent aEvent; + aEvent = DataAuditTestUtils.newUserTaskInstanceAssignmentEvent(uEvent, "eventUser", "POT_OWNERS", "user1", "user2", "user3"); + proxy.storeUserTaskInstanceDataEvent(aEvent); + + aEvent = DataAuditTestUtils.newUserTaskInstanceAssignmentEvent(uEvent, "eventUser", "ADMINISTRATORS", "user1", "user2", "user3"); + proxy.storeUserTaskInstanceDataEvent(aEvent); + + UserTaskInstanceAttachmentDataEvent attEvent; + attEvent = + DataAuditTestUtils.newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att1", "attName1", URI.create("http://localhost:8080/att1"), + UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); + proxy.storeUserTaskInstanceDataEvent(attEvent); + + attEvent = + DataAuditTestUtils.newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att2", "attName2", URI.create("http://localhost:8080/att2"), + UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); + proxy.storeUserTaskInstanceDataEvent(attEvent); + + UserTaskInstanceCommentDataEvent commentEvent; + commentEvent = DataAuditTestUtils.newUserTaskInstanceCommentEvent(uEvent, "eventUser", "att1", "attName1", UserTaskInstanceCommentEventBody.EVENT_TYPE_ADDED); + proxy.storeUserTaskInstanceDataEvent(commentEvent); + + UserTaskInstanceDeadlineDataEvent deadlineEvent; + deadlineEvent = + DataAuditTestUtils.newUserTaskInstanceDeadlineEvent(uEvent, "eventUser", Collections.singletonMap("input1", "value1"), Collections.singletonMap("notification1", "notificationValue")); + proxy.storeUserTaskInstanceDataEvent(deadlineEvent); + + uEvent = DataAuditTestUtils.newUserTaskInstanceStateEvent("eventUser", "utd2", "2", "utn2", 1, "utd2", "utp2", "utrn2", "Claimed", "owner", "1"); + proxy.storeUserTaskInstanceDataEvent(uEvent); + + } + + + @Test + public void testGetAllUserTaskInstanceState() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllUserTaskInstanceState { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, taskId, name, description, actualUser, state, nodeDefitionId, nodeInstanceId, eventType } }"); + LOGGER.info("Outcome {}", executionResult); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceState")); + + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(3); + + } + + @Test + public void testGetAllUserTaskInstanceAssignments() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllUserTaskInstanceAssignments (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, userTaskName, assignmentType, users } }"); + LOGGER.info("Outcome {}", executionResult); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceAssignments")); + + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(2); + + } + + @Test + public void testGetAllUserTaskInstanceAttachments() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllUserTaskInstanceAttachments (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, attachmentId, attachmentName, attachmentURI, eventType } }"); + LOGGER.info("Outcome {}", executionResult); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceAttachments")); + + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(2); + + } + + @Test + public void testGetAllUserTaskInstanceComment() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllUserTaskInstanceComment (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, commentId, commentContent, eventType } }"); + LOGGER.info("Outcome {}", executionResult); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceComment")); + + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(1); + + } + + @Test + public void testGetAllUserTaskInstanceDeadline() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllUserTaskInstanceDeadline (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification {key, value} } }"); + LOGGER.info("Outcome {}", executionResult); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceDeadline")); + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(1); + + } + + @Test + public void testGetAllUserTaskInstanceVariable() { + AuditQueryService service = AuditQueryService.newAuditQuerySerice(); + + ExecutionResult executionResult = service.executeQuery( + "{ GetAllUserTaskInstanceVariable (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue, variableType } }"); + LOGGER.info("Outcome {}", executionResult); + List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceVariable")); + assertThat(executionResult.getErrors()).hasSize(0); + assertThat(data).hasSize(3); + + } +} diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java new file mode 100644 index 0000000000..8d702037d1 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java @@ -0,0 +1,425 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.audit.tck; + +import java.net.URI; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.kie.kogito.event.process.ProcessInstanceDataEvent; +import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; +import org.kie.kogito.event.process.ProcessInstanceErrorEventBody; +import org.kie.kogito.event.process.ProcessInstanceEventMetadata; +import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; +import org.kie.kogito.event.process.ProcessInstanceNodeEventBody; +import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; +import org.kie.kogito.event.process.ProcessInstanceStateEventBody; +import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; +import org.kie.kogito.event.process.ProcessInstanceVariableEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceEventMetadata; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableEventBody; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.Retry; +import org.kie.kogito.jobs.service.api.Schedule; +import org.kie.kogito.jobs.service.api.TemporalUnit; +import org.kie.kogito.jobs.service.api.event.CreateJobEvent; +import org.kie.kogito.jobs.service.api.event.CreateJobEvent.Builder; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.kie.kogito.process.ProcessInstance; + +public class DataAuditTestUtils { + + public static final String ADDONS = "jobs-management,prometheus-monitoring,process-management"; + + private static String toURIEndpoint(String processId) { + return URI.create("http://localhost:8080/" + processId).toString(); + } + + public static JobCloudEvent newJobEvent(String jobId, String correlationId, Job.State state, Long executionTimeout, TemporalUnit unit, Retry retry, Schedule schedule) { + Job job = new Job(); + job.setCorrelationId(correlationId); + job.setId(jobId); + job.setState(state); + job.setExecutionTimeout(executionTimeout); + job.setExecutionTimeoutUnit(unit); + job.setRetry(retry); + job.setSchedule(schedule); + Builder builder = CreateJobEvent.builder() + .id(UUID.randomUUID().toString()) + .data(job); + return builder.build(); + } + + public static JobCloudEvent deriveNewState(JobCloudEvent jobEvent, Job.State state) { + Job job = new Job(); + job.setCorrelationId(jobEvent.getData().getCorrelationId()); + job.setId(jobEvent.getData().getId()); + job.setState(state); + job.setExecutionTimeout(jobEvent.getData().getExecutionTimeout()); + job.setExecutionTimeoutUnit(jobEvent.getData().getExecutionTimeoutUnit()); + job.setRetry(jobEvent.getData().getRetry()); + job.setSchedule(jobEvent.getData().getSchedule()); + + Builder builder = CreateJobEvent.builder() + .id(UUID.randomUUID().toString()) + .data(job); + + return builder.build(); + } + + public static ProcessInstanceStateDataEvent newProcessInstanceStateEvent( + String processId, String processInstanceId, Integer status, String rootProcessInstanceId, String rootProcessId, + String parentProcessInstanceId, String identity, int eventType) { + + String processVersion = "1.0"; + String processType = "BPMN2"; + ProcessInstanceStateEventBody body = ProcessInstanceStateEventBody.create() + .processInstanceId(processInstanceId) + .parentInstanceId(parentProcessInstanceId) + .rootProcessInstanceId(rootProcessInstanceId) + .rootProcessId(rootProcessId) + .processId(processId) + .processType(processType) + .processVersion(processVersion) + .processName(UUID.randomUUID().toString()) + .eventDate(new Date()) + .state(status) + .businessKey(UUID.randomUUID().toString()) + .roles("admin") + .eventUser(identity) + .eventType(eventType) + .build(); + + Map metadata = new HashMap<>(); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, processInstanceId); + metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, processVersion); + metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, processId); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, String.valueOf(status)); + metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, processType); + metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA, parentProcessInstanceId); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA, rootProcessId); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA, rootProcessInstanceId); + + ProcessInstanceStateDataEvent event = + new ProcessInstanceStateDataEvent(toURIEndpoint(processId), ADDONS, (String) identity, metadata, body); + + event.setKogitoBusinessKey(body.getBusinessKey()); + return event; + } + + public static ProcessInstanceStateDataEvent deriveProcessInstanceStateEvent(ProcessInstanceStateDataEvent event, String identity, int status, int eventType) { + + ProcessInstanceStateEventBody body = ProcessInstanceStateEventBody.create() + .processInstanceId(event.getData().getProcessInstanceId()) + .parentInstanceId(event.getData().getParentInstanceId()) + .rootProcessInstanceId(event.getData().getRootProcessInstanceId()) + .rootProcessId(event.getData().getRootProcessId()) + .processId(event.getData().getProcessId()) + .processType(event.getData().getProcessType()) + .processVersion(event.getData().getProcessVersion()) + .processName(event.getData().getProcessName()) + .eventDate(new Date()) + .state(status) + .businessKey(event.getData().getBusinessKey()) + .roles("admin") + .eventUser(identity) + .eventType(eventType) + .build(); + + ProcessInstanceStateDataEvent newEvent = + new ProcessInstanceStateDataEvent(toURIEndpoint(body.getProcessId()), ADDONS, (String) identity, + extractProcessInstnaceEventMetadata(event), body); + newEvent.setKogitoBusinessKey(body.getBusinessKey()); + return newEvent; + } + + public static ProcessInstanceNodeDataEvent newProcessInstanceNodeEvent( + ProcessInstanceStateDataEvent pEvent, + String nodeType, String nodeDefintionId, String nodeInstanceId, String nodeName, String connection, String identity, int eventType) { + + ProcessInstanceNodeEventBody body = ProcessInstanceNodeEventBody.create() + .processInstanceId(pEvent.getData().getProcessInstanceId()) + .processId(pEvent.getData().getProcessId()) + .processVersion(pEvent.getData().getProcessVersion()) + .eventDate(new Date()) + .eventUser(identity) + .eventType(eventType) + .nodeName(nodeName) + .nodeType(nodeType) + .nodeDefinitionId(nodeDefintionId) + .nodeInstanceId(nodeInstanceId) + .connectionNodeInstanceId(connection) + .build(); + + ProcessInstanceNodeDataEvent event = new ProcessInstanceNodeDataEvent(toURIEndpoint(body.getProcessId()), + ADDONS, (String) identity, + extractProcessInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + public static ProcessInstanceVariableDataEvent newProcessInstanceVariableEvent( + ProcessInstanceStateDataEvent pEvent, + String variableId, String variableName, Object variableValue, String identity) { + + ProcessInstanceVariableEventBody body = ProcessInstanceVariableEventBody.create() + .eventDate(new Date()) + .eventUser(identity) + .processId(pEvent.getData().getProcessId()) + .processVersion(pEvent.getData().getProcessVersion()) + .processInstanceId(pEvent.getData().getProcessInstanceId()) + .variableId(variableId) + .variableName(variableName) + .variableValue(variableValue) + .build(); + + ProcessInstanceVariableDataEvent event = new ProcessInstanceVariableDataEvent(toURIEndpoint(body.getProcessId()), + ADDONS, (String) identity, + extractProcessInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + public static ProcessInstanceErrorDataEvent newProcessInstanceErrorEvent( + ProcessInstanceStateDataEvent pEvent, + String nodeDefintionId, String nodeInstanceId, String errorMessage, String identity) { + + ProcessInstanceErrorEventBody body = ProcessInstanceErrorEventBody.create() + .eventDate(new Date()) + .eventUser(identity) + .processId(pEvent.getData().getProcessId()) + .processVersion(pEvent.getData().getProcessVersion()) + .processInstanceId(pEvent.getData().getProcessInstanceId()) + .nodeDefinitionId(nodeDefintionId) + .nodeInstanceId(nodeInstanceId) + .errorMessage(errorMessage) + .build(); + + ProcessInstanceErrorDataEvent event = new ProcessInstanceErrorDataEvent(toURIEndpoint(body.getProcessId()), + ADDONS, (String) identity, + extractProcessInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + private static Map extractProcessInstnaceEventMetadata(ProcessInstanceDataEvent pEvent) { + Map metadata = new HashMap<>(); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, pEvent.getKogitoProcessInstanceId()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, pEvent.getKogitoProcessInstanceVersion()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, pEvent.getKogitoProcessId()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, pEvent.getKogitoProcessInstanceState()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, pEvent.getKogitoProcessType()); + metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA, pEvent.getKogitoParentProcessInstanceId()); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA, pEvent.getKogitoRootProcessId()); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA, pEvent.getKogitoRootProcessInstanceId()); + return metadata; + } + + // user task instance stuff + public static UserTaskInstanceStateDataEvent newUserTaskInstanceStateEvent( + String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String userTaskName, Integer eventType, + String userTaskDescription, String userTaskPriority, String userTaskReferenceName, String state, String actualOwner, String processInstanceId) { + + String processId = UUID.randomUUID().toString(); + String processVersion = "1.0"; + String processType = "BPMN2"; + + UserTaskInstanceStateEventBody body = UserTaskInstanceStateEventBody.create() + .eventUser(eventUser) + .eventDate(new Date()) + .userTaskDefinitionId(userTaskDefinitionId) + .userTaskInstanceId(userTaskInstanceId) + .userTaskName(userTaskName) + .eventType(eventType) + .userTaskDescription(userTaskDescription) + .userTaskDescription(userTaskPriority) + .userTaskReferenceName(userTaskReferenceName) + .state(state) + .actualOwner(actualOwner) + .processInstanceId(processInstanceId) + .build(); + + Map metadata = new HashMap<>(); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, processInstanceId); + metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, processVersion); + metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, processId); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, String.valueOf(ProcessInstance.STATE_ACTIVE)); + metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, processType); + metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA, null); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA, null); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA, null); + metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA, userTaskInstanceId); + metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA, state); + + + UserTaskInstanceStateDataEvent event = + new UserTaskInstanceStateDataEvent(toURIEndpoint(processId), ADDONS, (String) eventUser, + metadata, body); + + event.setKogitoBusinessKey(UUID.randomUUID().toString()); + return event; + } + + public static UserTaskInstanceVariableDataEvent newUserTaskInstanceVariableEvent(UserTaskInstanceStateDataEvent pEvent, + String eventUser, String variableId, String variableName, String variableType, Object variableValue) { + + UserTaskInstanceVariableEventBody body = UserTaskInstanceVariableEventBody.create() + .eventUser(eventUser) + .eventDate(new Date()) + .userTaskDefinitionId(pEvent.getData().getUserTaskDefinitionId()) + .userTaskInstanceId(pEvent.getData().getUserTaskInstanceId()) + .userTaskName(pEvent.getData().getUserTaskName()) + .variableId(variableId) + .variableName(variableName) + .variableType(variableType) + .variableValue(variableValue) + .build(); + + UserTaskInstanceVariableDataEvent event = + new UserTaskInstanceVariableDataEvent(toURIEndpoint(pEvent.getKogitoProcessId()), ADDONS, + (String) eventUser, + extractUserTaskInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + public static UserTaskInstanceAssignmentDataEvent newUserTaskInstanceAssignmentEvent(UserTaskInstanceStateDataEvent pEvent, + String eventUser, String assigmentType, String... users) { + + UserTaskInstanceAssignmentEventBody body = UserTaskInstanceAssignmentEventBody.create() + .eventUser(eventUser) + .eventDate(new Date()) + .userTaskDefinitionId(pEvent.getData().getUserTaskDefinitionId()) + .userTaskInstanceId(pEvent.getData().getUserTaskInstanceId()) + .userTaskName(pEvent.getData().getUserTaskName()) + .assignmentType(assigmentType) + .users(users) + .build(); + + UserTaskInstanceAssignmentDataEvent event = + new UserTaskInstanceAssignmentDataEvent(toURIEndpoint(pEvent.getKogitoProcessId()), ADDONS, + (String) eventUser, + extractUserTaskInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + public static UserTaskInstanceAttachmentDataEvent newUserTaskInstanceAttachmentEvent(UserTaskInstanceStateDataEvent pEvent, + String eventUser, String attachmentId, String attachmentName, URI attachmentURI, Integer eventType) { + + UserTaskInstanceAttachmentEventBody body = UserTaskInstanceAttachmentEventBody.create() + .eventUser(eventUser) + .eventDate(new Date()) + .userTaskDefinitionId(pEvent.getData().getUserTaskDefinitionId()) + .userTaskInstanceId(pEvent.getData().getUserTaskInstanceId()) + .userTaskName(pEvent.getData().getUserTaskName()) + .attachmentId(attachmentId) + .attachmentName(attachmentName) + .attachmentURI(attachmentURI) + .eventType(eventType) + .build(); + + UserTaskInstanceAttachmentDataEvent event = + new UserTaskInstanceAttachmentDataEvent(toURIEndpoint(pEvent.getKogitoProcessId()), ADDONS, + (String) eventUser, + extractUserTaskInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + public static UserTaskInstanceDeadlineDataEvent newUserTaskInstanceDeadlineEvent(UserTaskInstanceStateDataEvent pEvent, + String eventUser, Map inputs, Map notifications) { + + UserTaskInstanceDeadlineEventBody body = UserTaskInstanceDeadlineEventBody.create() + .eventUser(eventUser) + .eventDate(new Date()) + .userTaskDefinitionId(pEvent.getData().getUserTaskDefinitionId()) + .userTaskInstanceId(pEvent.getData().getUserTaskInstanceId()) + .userTaskName(pEvent.getData().getUserTaskName()) + .inputs(inputs) + .notification(notifications) + .build(); + + UserTaskInstanceDeadlineDataEvent event = + new UserTaskInstanceDeadlineDataEvent(toURIEndpoint(pEvent.getKogitoProcessId()), ADDONS, + (String) eventUser, + extractUserTaskInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + public static UserTaskInstanceCommentDataEvent newUserTaskInstanceCommentEvent(UserTaskInstanceStateDataEvent pEvent, + String eventUser, String commentId, String commentContent, Integer eventType) { + + UserTaskInstanceCommentEventBody body = UserTaskInstanceCommentEventBody.create() + .eventUser(eventUser) + .eventDate(new Date()) + .userTaskDefinitionId(pEvent.getData().getUserTaskDefinitionId()) + .userTaskInstanceId(pEvent.getData().getUserTaskInstanceId()) + .userTaskName(pEvent.getData().getUserTaskName()) + .commentId(commentId) + .commentContent(commentContent) + .eventType(eventType) + .build(); + + UserTaskInstanceCommentDataEvent event = + new UserTaskInstanceCommentDataEvent(toURIEndpoint(pEvent.getKogitoProcessId()), ADDONS, + (String) eventUser, + extractUserTaskInstnaceEventMetadata(pEvent), body); + + event.setKogitoBusinessKey(pEvent.getKogitoBusinessKey()); + return event; + } + + private static Map extractUserTaskInstnaceEventMetadata(UserTaskInstanceDataEvent pEvent) { + Map metadata = new HashMap<>(); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, pEvent.getKogitoProcessInstanceId()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, pEvent.getKogitoProcessInstanceVersion()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, pEvent.getKogitoProcessId()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, pEvent.getKogitoProcessInstanceState()); + metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, pEvent.getKogitoProcessType()); + metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA, pEvent.getKogitoParentProcessInstanceId()); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA, pEvent.getKogitoRootProcessId()); + metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA, pEvent.getKogitoRootProcessInstanceId()); + metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA, pEvent.getKogitoUserTaskInstanceId()); + metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA, pEvent.getKogitoUserTaskInstanceState()); + return metadata; + } +} diff --git a/data-audit/pom.xml b/data-audit/pom.xml new file mode 100644 index 0000000000..52d589b077 --- /dev/null +++ b/data-audit/pom.xml @@ -0,0 +1,25 @@ + + + + + org.kie.kogito + kogito-apps-build-parent + 2.0.0-SNAPSHOT + ../kogito-apps-build-parent/pom.xml + + 4.0.0 + data-audit + pom + Kogito Apps :: Data Audit + + + kogito-addons-data-audit-tck + kogito-addons-data-audit-common + kogito-addons-data-audit-jpa-common + kogito-addons-data-audit-jpa-quarkus + kogito-addons-data-audit-jpa-springboot + + + From 6045e3a57c01aeaf8dc97f7c6258f8885f1faa3b Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 27 Oct 2023 11:32:11 +0200 Subject: [PATCH 02/47] [incubator-kie-issues-576] add tests for data audit --- .../graphql/type/ProcessInstanceStateTO.java | 4 + .../pom.xml | 24 -- .../pom.xml | 15 +- .../audit/quarkus}/DataAuditTestUtils.java | 6 +- .../quarkus/QuarkusAuditJobServiceTest.java | 350 ++++++++++++++++++ ...arkusAuditProcessInstanceServiceTest.java} | 179 +++++---- ...arkusAuditUserTaskInstanceServiceTest.java | 236 ++++++++++++ .../kogito-addons-data-audit-tck/pom.xml | 60 --- .../kogito/audit/tck/AuditJobServiceTest.java | 265 ------------- .../tck/AuditUserTaskInstanceServiceTest.java | 191 ---------- data-audit/pom.xml | 1 - .../data-index-service-common}/.gitignore | 0 .../data-index-service-infinispan/.gitignore | 1 + kogito-apps-bom/pom.xml | 46 ++- 14 files changed, 747 insertions(+), 631 deletions(-) rename data-audit/{kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck => kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus}/DataAuditTestUtils.java (99%) create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java rename data-audit/{kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java => kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java} (53%) create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java delete mode 100644 data-audit/kogito-addons-data-audit-tck/pom.xml delete mode 100644 data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java delete mode 100644 data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java rename {data-audit/kogito-addons-data-audit-tck => data-index/data-index-service/data-index-service-common}/.gitignore (100%) create mode 100644 data-index/data-index-service/data-index-service-infinispan/.gitignore diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java index b9e1d61a6d..c6f5ec910f 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java @@ -52,6 +52,10 @@ public class ProcessInstanceStateTO { private OffsetDateTime slaDueDate; + public ProcessInstanceStateTO() { + + } + public ProcessInstanceStateTO(String eventId, Date eventDate, String processType, String processId, String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, String businessKey, String eventType, String outcome, String state, Date slaDueDate) { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/kogito-addons-data-audit-jpa-common/pom.xml index 0d642d7fe6..b46818db21 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/pom.xml @@ -9,7 +9,6 @@ kogito-addons-data-audit-jpa-common Kogito Apps :: Data Audit :: JPA Data Audit Persistence Common - org.kie.kogito kogito-addons-data-audit-common @@ -74,29 +73,6 @@ 5.6.12.Final test - - - com.github.h-thurow - simple-jndi - 0.23.0 - test - - - org.apache.commons - commons-dbcp2 - 2.10.0 - test - - - org.jboss.narayana.jta - narayana-jta - test - - - com.h2database - h2 - test - diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml index c61ed09ba9..0dc450804c 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -87,7 +87,17 @@ - + + org.hamcrest + hamcrest-all + 1.3 + test + + + org.assertj + assertj-core + test + io.quarkus quarkus-junit5 @@ -107,7 +117,8 @@ maven-surefire-plugin - org.jboss.logmanager.LogManager + + org.jboss.logmanager.LogManager ${maven.home} diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java similarity index 99% rename from data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java rename to data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index 8d702037d1..71356877a8 100644 --- a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.kogito.audit.tck; +package org.kie.kogito.app.audit.quarkus; import java.net.URI; import java.util.Date; @@ -65,6 +65,10 @@ private static String toURIEndpoint(String processId) { return URI.create("http://localhost:8080/" + processId).toString(); } + public static String wrapQuery(String query) { + return "{ \"query\" : \"" + query + " \"}"; + } + public static JobCloudEvent newJobEvent(String jobId, String correlationId, Job.State state, Long executionTimeout, TemporalUnit unit, Retry retry, Schedule schedule) { Job job = new Job(); job.setCorrelationId(correlationId); diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java new file mode 100644 index 0000000000..7a0b63aa5d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java @@ -0,0 +1,350 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import java.util.List; +import java.util.Map; + +import javax.inject.Inject; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.kie.kogito.app.audit.api.DataAuditEventPublisher; +import org.kie.kogito.app.audit.api.SubsystemConstants; +import org.kie.kogito.jobs.service.api.Job; +import org.kie.kogito.jobs.service.api.Job.State; +import org.kie.kogito.jobs.service.api.TemporalUnit; +import org.kie.kogito.jobs.service.api.event.JobCloudEvent; + +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.http.ContentType; + +import static io.restassured.RestAssured.given; +import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.deriveNewState; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newJobEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.wrapQuery; + +@QuarkusTest +@TestInstance(Lifecycle.PER_CLASS) +public class QuarkusAuditJobServiceTest { + + @Inject + private DataAuditEventPublisher publisher; + + @BeforeAll + public void init() { + + JobCloudEvent jobEvent; + jobEvent = newJobEvent("job1", "correlation1", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + publisher.publish(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.EXECUTED); + publisher.publish(jobEvent); + + jobEvent = newJobEvent("job2", "correlation2", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + publisher.publish(jobEvent); + + jobEvent = newJobEvent("job3", "correlation3", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + publisher.publish(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.CANCELED); + publisher.publish(jobEvent); + + jobEvent = newJobEvent("job4", "correlation4", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + publisher.publish(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.RETRY); + publisher.publish(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.EXECUTED); + publisher.publish(jobEvent); + + jobEvent = newJobEvent("job5", "correlation5", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + publisher.publish(jobEvent); + + jobEvent = deriveNewState(jobEvent, State.ERROR); + publisher.publish(jobEvent); + } + + @Test + public void testGetAllScheduledJobs() { + String query = "{ GetAllScheduledJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp } }"; + query = wrapQuery(query); + + List> response = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .log() + .body() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllScheduledJobs"); + + assertThat(response) + .hasSize(1).first() + .hasFieldOrPropertyWithValue("jobId", equalTo("job2")) + .hasFieldOrPropertyWithValue("correlationId", equalTo("correlation2")) + .hasFieldOrPropertyWithValue("state", equalTo("SCHEDULED")) + .hasFieldOrPropertyWithValue("executionTimeout", equalTo(10)) + .hasFieldOrPropertyWithValue("executionTimeoutUnit", equalTo("MILLIS")); + + } + + @Test + public void testGetJobById() { + String query = "{ GetJobById ( jobId : \\\"job1\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> response = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .log() + .body() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetJobById"); + + assertThat(response) + .hasSize(1); + } + + @Test + public void testGetJobHistoryById() { + String query = "{ GetJobHistoryById ( jobId : \\\"job4\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> response = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .log() + .body() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetJobHistoryById"); + + assertThat(response) + .hasSize(3) + .allMatch(e -> "job4".equals(e.get("jobId"))) + .extracting(e -> e.get("state")) + .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); + + } + + @Test + public void testGetJobHistoryByCorrelationId() { + String query = "{ GetJobHistoryByCorrelationId ( correlationId : \\\"correlation4\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetJobHistoryByCorrelationId"); + + assertThat(data) + .hasSize(3) + .allMatch(e -> "job4".equals(e.get("jobId"))) + .allMatch(e -> "correlation4".equals(e.get("correlationId"))) + .extracting(e -> e.get("state")) + .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); + } + + @Test + public void testGetAllPendingJobs() { + String query = "{ GetAllPendingJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllPendingJobs"); + + assertThat(data).hasSize(1); + } + + @Test + public void testGetAllEligibleJobsForExecution() { + String query = "{ GetAllEligibleJobsForExecution { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllEligibleJobsForExecution"); + + assertThat(data).hasSize(1); + + } + + @Test + public void testGetAllEligibleJobsForRetry() { + String query = "{ GetAllEligibleJobsForRetry { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllEligibleJobsForRetry"); + + assertThat(data).hasSize(1); + } + + @Test + public void testGetAllJobs() { + String query = "{ GetAllJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllJobs"); + + assertThat(data) + .hasSize(5) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job1", "job2", "job3", "job4", "job5"); + } + + @Test + public void testGetAllCompletedJobs() { + String query = "{ GetAllCompletedJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllCompletedJobs"); + + assertThat(data) + .hasSize(2) + .allMatch(e -> "EXECUTED".equals(e.get("state"))) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job1", "job4"); + } + + @Test + public void testGetAllInErrorJobs() { + + String query = "{ GetAllInErrorJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllInErrorJobs"); + + assertThat(data) + .hasSize(1) + .allMatch(e -> "ERROR".equals(e.get("state"))) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job5"); + } + + @Test + public void testGetAllJobsByState() { + + String query = "{ GetAllJobsByState (state : \\\"EXECUTED\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllJobsByState"); + + assertThat(data) + .allMatch(e -> "EXECUTED".equals(e.get("state"))) + .extracting(e -> e.get("jobId")) + .containsExactlyInAnyOrder("job1", "job4"); + } + + @Test + public void testGetJobByCorrelationId() { + + String query = "{ GetJobByCorrelationId (correlationId : \\\"correlation1\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetJobByCorrelationId"); + + assertThat(data).first() + .hasFieldOrPropertyWithValue("correlationId", "correlation1"); + + } + +} diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java similarity index 53% rename from data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java rename to data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index 0d2f5e8fdc..e3596ac99d 100644 --- a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -16,17 +16,19 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.kogito.audit.tck; +package org.kie.kogito.app.audit.quarkus; import java.util.List; import java.util.Map; -import org.junit.jupiter.api.AfterAll; +import javax.inject.Inject; + import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.kie.kogito.app.audit.service.api.AuditQueryService; -import org.kie.kogito.app.audit.service.api.AuditStoreService; -import org.kie.kogito.app.audit.service.spi.AuditStoreContainerBeanLocator; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.kie.kogito.app.audit.api.DataAuditEventPublisher; +import org.kie.kogito.app.audit.api.SubsystemConstants; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeEventBody; @@ -34,148 +36,177 @@ import org.kie.kogito.event.process.ProcessInstanceStateEventBody; import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; import org.kie.kogito.process.ProcessInstance; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.http.ContentType; + +import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.deriveProcessInstanceStateEvent; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceErrorEvent; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceNodeEvent; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceStateEvent; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.newProcessInstanceVariableEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.deriveProcessInstanceStateEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newProcessInstanceErrorEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newProcessInstanceNodeEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newProcessInstanceStateEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newProcessInstanceVariableEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.wrapQuery; -import graphql.ExecutionResult; +@QuarkusTest +@TestInstance(Lifecycle.PER_CLASS) +public class QuarkusAuditProcessInstanceServiceTest { -public class AuditProcessInstanceServiceTest { - - private static final Logger LOGGER = LoggerFactory.getLogger(AuditProcessInstanceServiceTest.class); + @Inject + private DataAuditEventPublisher publisher; @BeforeAll - public static void init() { - // we populate the database with simple dataset - AuditStoreService proxy = AuditStoreService.newAuditStoreSerice(); + public void init() { ProcessInstanceStateDataEvent processInstanceEvent; // the first process started processInstanceEvent = newProcessInstanceStateEvent("processId1", "1", ProcessInstance.STATE_ACTIVE, "rootI1", "rootP1", "parent1", "identity", ProcessInstanceStateEventBody.EVENT_TYPE_STARTED); - proxy.storeProcessInstanceDataEvent(processInstanceEvent); + publisher.publish(processInstanceEvent); ProcessInstanceVariableDataEvent processInstanceVariableEvent = newProcessInstanceVariableEvent(processInstanceEvent, "var_id1", "varName", "errorMessage", "identity"); - proxy.storeProcessInstanceDataEvent(processInstanceVariableEvent); - + publisher.publish(processInstanceVariableEvent); + processInstanceVariableEvent = newProcessInstanceVariableEvent(processInstanceEvent, "var_id1", "varName", "variableValue", "identity"); - proxy.storeProcessInstanceDataEvent(processInstanceVariableEvent); - + publisher.publish(processInstanceVariableEvent); + ProcessInstanceNodeDataEvent processInstanceNodeEvent; processInstanceNodeEvent = newProcessInstanceNodeEvent(processInstanceEvent, "StartNode", "nd1", "ni1", "name1", null, "myuser", ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER); - proxy.storeProcessInstanceDataEvent(processInstanceNodeEvent); + publisher.publish(processInstanceNodeEvent); processInstanceNodeEvent = newProcessInstanceNodeEvent(processInstanceEvent, "StartNode", "nd1", "ni1", "name1", null, "myuser", ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT); - proxy.storeProcessInstanceDataEvent(processInstanceNodeEvent); - + publisher.publish(processInstanceNodeEvent); + processInstanceNodeEvent = newProcessInstanceNodeEvent(processInstanceEvent, "EndNode", "nd2", "ni2", "name2", null, "myuser", ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER); - proxy.storeProcessInstanceDataEvent(processInstanceNodeEvent); + publisher.publish(processInstanceNodeEvent); // the second completed processInstanceEvent = newProcessInstanceStateEvent("processId1", "2", ProcessInstance.STATE_ACTIVE, "rootI1", "rootP1", "parent1", "identity", ProcessInstanceStateEventBody.EVENT_TYPE_STARTED); - proxy.storeProcessInstanceDataEvent(processInstanceEvent); + publisher.publish(processInstanceEvent); processInstanceEvent = deriveProcessInstanceStateEvent(processInstanceEvent, "identity2", ProcessInstance.STATE_COMPLETED, ProcessInstanceStateEventBody.EVENT_TYPE_ENDED); - proxy.storeProcessInstanceDataEvent(processInstanceEvent); + publisher.publish(processInstanceEvent); // the third in error processInstanceEvent = newProcessInstanceStateEvent("processId2", "3", ProcessInstance.STATE_ACTIVE, "rootI1", "rootP1", "parent1", "identity", ProcessInstanceStateEventBody.EVENT_TYPE_STARTED); - proxy.storeProcessInstanceDataEvent(processInstanceEvent); - + publisher.publish(processInstanceEvent); + ProcessInstanceErrorDataEvent processInstanceErrorEvent = newProcessInstanceErrorEvent(processInstanceEvent, "nd1", "ni1", "errorMessage1", "identity"); - proxy.storeProcessInstanceDataEvent(processInstanceErrorEvent); + publisher.publish(processInstanceErrorEvent); processInstanceErrorEvent = newProcessInstanceErrorEvent(processInstanceEvent, "nd2", "ni2", "errorMessage2", "identity"); - proxy.storeProcessInstanceDataEvent(processInstanceErrorEvent); - + publisher.publish(processInstanceErrorEvent); + processInstanceEvent = deriveProcessInstanceStateEvent(processInstanceEvent, "identity3", ProcessInstance.STATE_ERROR, ProcessInstanceStateEventBody.EVENT_TYPE_ENDED); - proxy.storeProcessInstanceDataEvent(processInstanceEvent); + publisher.publish(processInstanceEvent); } @Test public void testGetAllProcessInstancesState() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery( - "{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate } }"); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesState")); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); + String query = + "{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate } }"; + + query = wrapQuery(query); + + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesState"); + assertThat(data) .hasSize(3) .extracting(e -> e.get("processInstanceId"), e -> e.get("state")) - .containsExactlyInAnyOrder(tuple("1", String.valueOf(ProcessInstance.STATE_ACTIVE)), tuple("2", String.valueOf(ProcessInstance.STATE_COMPLETED)), + .containsExactlyInAnyOrder( + tuple("1", String.valueOf(ProcessInstance.STATE_ACTIVE)), + tuple("2", String.valueOf(ProcessInstance.STATE_COMPLETED)), tuple("3", String.valueOf(ProcessInstance.STATE_ERROR))); } @Test public void testGetAllProcessInstancesNodeByProcessInstanceId() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllProcessInstancesNodeByProcessInstanceId ( processInstanceId : \"1\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, nodeContainerId, nodeDefinitionId, nodeType , nodeName, nodeInstanceId, connection, slaDueDate , eventData } }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesNodeByProcessInstanceId")); + String query = + "{ GetAllProcessInstancesNodeByProcessInstanceId ( processInstanceId : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, nodeContainerId, nodeDefinitionId, nodeType , nodeName, nodeInstanceId, connection, slaDueDate , eventData } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesNodeByProcessInstanceId"); + assertThat(data) .hasSize(2) .extracting(e -> e.get("processInstanceId"), e -> e.get("nodeInstanceId"), e -> e.get("eventType")) .containsExactlyInAnyOrder( - tuple("1", "ni1", "EXIT"), + tuple("1", "ni1", "EXIT"), tuple("1", "ni2", "ENTER")); } - - - - + @Test public void testGetAllProcessInstancesErrorByProcessInstanceId() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery( - "{ GetAllProcessInstancesErrorByProcessInstanceId ( processInstanceId : \"3\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, errorMessage, nodeDefinitionId, nodeInstanceId } }"); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesErrorByProcessInstanceId")); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); + String query = + "{ GetAllProcessInstancesErrorByProcessInstanceId ( processInstanceId : \\\"3\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, errorMessage, nodeDefinitionId, nodeInstanceId } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesErrorByProcessInstanceId"); + assertThat(data) .hasSize(2) .extracting(e -> e.get("errorMessage"), e -> e.get("nodeDefinitionId"), e -> e.get("nodeInstanceId")) .containsExactlyInAnyOrder( - tuple("errorMessage1", "nd1", "ni1"), + tuple("errorMessage1", "nd1", "ni1"), tuple("errorMessage2", "nd2", "ni2")); } - - - @Test public void testGetAllProcessInstancesVariablebyProcessInstanceId() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery( - "{ GetAllProcessInstancesVariablebyProcessInstanceId ( processInstanceId : \"1\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue } }"); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllProcessInstancesVariablebyProcessInstanceId")); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); + String query = + "{ GetAllProcessInstancesVariablebyProcessInstanceId ( processInstanceId : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesVariablebyProcessInstanceId"); + assertThat(data) .hasSize(1) - .extracting(e -> e.get("variableId"), e -> e.get("variableName"),e -> e.get("variableValue")) + .extracting(e -> e.get("variableId"), e -> e.get("variableName"), e -> e.get("variableValue")) .containsExactlyInAnyOrder( tuple("var_id1", "varName", "\"variableValue\"")); diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java new file mode 100644 index 0000000000..48df98fcb7 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -0,0 +1,236 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import java.net.URI; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import javax.inject.Inject; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.kie.kogito.app.audit.api.DataAuditEventPublisher; +import org.kie.kogito.app.audit.api.SubsystemConstants; +import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceCommentEventBody; +import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; +import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; + +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.http.ContentType; + +import static io.restassured.RestAssured.given; +import static org.assertj.core.api.Assertions.assertThat; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceAssignmentEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceAttachmentEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceCommentEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceDeadlineEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceStateEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceVariableEvent; +import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.wrapQuery; + +@QuarkusTest +@TestInstance(Lifecycle.PER_CLASS) +public class QuarkusAuditUserTaskInstanceServiceTest { + + @Inject + private DataAuditEventPublisher publisher; + + @BeforeAll + public void init() { + + UserTaskInstanceStateDataEvent uEvent; + uEvent = newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Ready", "owner", "1"); + publisher.publish(uEvent); + + uEvent = newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Claimed", "owner", "1"); + publisher.publish(uEvent); + + UserTaskInstanceVariableDataEvent vEvent; + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 1); + publisher.publish(vEvent); + + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 2); + publisher.publish(vEvent); + + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId2", "varName2", "OUTPUT", 1); + publisher.publish(vEvent); + + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId3", "varName3", "OUTPUT", 1); + publisher.publish(vEvent); + + UserTaskInstanceAssignmentDataEvent aEvent; + aEvent = newUserTaskInstanceAssignmentEvent(uEvent, "eventUser", "POT_OWNERS", "user1", "user2", "user3"); + publisher.publish(aEvent); + + aEvent = newUserTaskInstanceAssignmentEvent(uEvent, "eventUser", "ADMINISTRATORS", "user1", "user2", "user3"); + publisher.publish(aEvent); + + UserTaskInstanceAttachmentDataEvent attEvent; + attEvent = newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att1", "attName1", URI.create("http://localhost:8080/att1"), + UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); + publisher.publish(attEvent); + + attEvent = newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att2", "attName2", URI.create("http://localhost:8080/att2"), + UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); + publisher.publish(attEvent); + + UserTaskInstanceCommentDataEvent commentEvent; + commentEvent = newUserTaskInstanceCommentEvent(uEvent, "eventUser", "att1", "attName1", UserTaskInstanceCommentEventBody.EVENT_TYPE_ADDED); + publisher.publish(commentEvent); + + UserTaskInstanceDeadlineDataEvent deadlineEvent; + deadlineEvent = newUserTaskInstanceDeadlineEvent(uEvent, "eventUser", Collections.singletonMap("input1", "value1"), Collections.singletonMap("notification1", "notificationValue")); + publisher.publish(deadlineEvent); + + uEvent = newUserTaskInstanceStateEvent("eventUser", "utd2", "2", "utn2", 1, "utd2", "utp2", "utrn2", "Claimed", "owner", "1"); + publisher.publish(uEvent); + + } + + @Test + public void testGetAllUserTaskInstanceState() { + + String query = + "{ GetAllUserTaskInstanceState { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, taskId, name, description, actualUser, state, nodeDefitionId, nodeInstanceId, eventType } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllUserTaskInstanceState"); + + assertThat(data).hasSize(3); + + } + + @Test + public void testGetAllUserTaskInstanceAssignments() { + String query = + "{ GetAllUserTaskInstanceAssignments (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, userTaskName, assignmentType, users } }"; + + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllUserTaskInstanceAssignments"); + + assertThat(data).hasSize(2); + + } + + @Test + public void testGetAllUserTaskInstanceAttachments() { + String query = + "{ GetAllUserTaskInstanceAttachments (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, attachmentId, attachmentName, attachmentURI, eventType } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllUserTaskInstanceAttachments"); + + assertThat(data).hasSize(2); + + } + + @Test + public void testGetAllUserTaskInstanceComment() { + String query = + "{ GetAllUserTaskInstanceComment (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, commentId, commentContent, eventType } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllUserTaskInstanceComment"); + + assertThat(data).hasSize(1); + + } + + @Test + public void testGetAllUserTaskInstanceDeadline() { + String query = + "{ GetAllUserTaskInstanceDeadline (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification {key, value} } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllUserTaskInstanceDeadline"); + + assertThat(data).hasSize(1); + + } + + @Test + public void testGetAllUserTaskInstanceVariable() { + String query = + "{ GetAllUserTaskInstanceVariable (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue, variableType } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllUserTaskInstanceVariable"); + + assertThat(data).hasSize(3); + + } +} diff --git a/data-audit/kogito-addons-data-audit-tck/pom.xml b/data-audit/kogito-addons-data-audit-tck/pom.xml deleted file mode 100644 index 7e29f1173a..0000000000 --- a/data-audit/kogito-addons-data-audit-tck/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - 4.0.0 - - org.kie.kogito - data-audit - 2.0.0-SNAPSHOT - - data-audit-service-tck - Kogito Apps :: Data Audit :: Test Comptability Kit - - - org.kie.kogito - kogito-addons-data-audit-common - - - - org.assertj - assertj-core - test - - - org.junit.jupiter - junit-jupiter-engine - test - - - org.junit.jupiter - junit-jupiter-api - test - - - org.junit.jupiter - junit-jupiter-params - test - - - org.junit.platform - junit-platform-suite - test - - - org.jboss.logmanager - jboss-logmanager - 3.0.2.Final - test - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - - diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java deleted file mode 100644 index 7595a8e428..0000000000 --- a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditJobServiceTest.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * 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.kie.kogito.audit.tck; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.app.audit.service.api.DataAuditStoreProxyService; -import org.kie.kogito.audit.support.DataAuditTestCompatibilityKit; -import org.kie.kogito.audit.support.EventPublisherDriver; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.Job.State; -import org.kie.kogito.jobs.service.api.TemporalUnit; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.deriveNewState; -import static org.kie.kogito.audit.tck.DataAuditTestUtils.newJobEvent; - -import graphql.ExecutionResult; - - -public class AuditJobServiceTest { - - private static final Logger LOGGER = LoggerFactory.getLogger(AuditJobServiceTest.class); - - - @BeforeAll - public static void init() { - - // we populate the database with simple dataset - DataAuditStoreProxyService proxy = DataAuditStoreProxyService.newAuditStoreSerice(); - - JobCloudEvent jobEvent; - jobEvent = newJobEvent("job1", "correlation1", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = deriveNewState(jobEvent, State.EXECUTED); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = newJobEvent("job2", "correlation2", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = newJobEvent("job3", "correlation3", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = deriveNewState(jobEvent, State.CANCELED); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = newJobEvent("job4", "correlation4", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = deriveNewState(jobEvent, State.RETRY); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = deriveNewState(jobEvent, State.EXECUTED); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = newJobEvent("job5", "correlation5", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); - proxy.storeJobDataEvent(jobEvent); - - jobEvent = deriveNewState(jobEvent, State.ERROR); - proxy.storeJobDataEvent(jobEvent); - } - - - @Test - public void testGetAllScheduledJobs() { - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery("{ GetAllScheduledJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp } }"); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllScheduledJobs")); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(1); - assertThat(data).first() - .hasFieldOrPropertyWithValue("state", "SCHEDULED"); - - } - - @Test - public void testGetJobById() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery("{ GetJobById ( jobId : \"job1\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List data = ((List) ((Map) executionResult.getData()).get("GetJobById")); - assertThat(data).hasSize(1); - - } - - @Test - public void testGetJobHistoryById() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - - ExecutionResult executionResult = - executionResult = service.executeQuery("{ GetJobHistoryById ( jobId : \"job4\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetJobHistoryById")); - assertThat(data) - .hasSize(3) - .allMatch(e -> "job4".equals(e.get("jobId"))) - .extracting(e -> e.get("state")) - .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); - - } - - @Test - public void testGetJobHistoryByCorrelationId() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - - ExecutionResult executionResult = - service.executeQuery( - "{ GetJobHistoryByCorrelationId ( correlationId : \"correlation4\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetJobHistoryByCorrelationId")); - assertThat(data) - .hasSize(3) - .allMatch(e -> "job4".equals(e.get("jobId"))) - .allMatch(e -> "correlation4".equals(e.get("correlationId"))) - .extracting(e -> e.get("state")) - .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); - } - - @Test - public void testGetAllPendingJobs() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery("{ GetAllPendingJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List data = ((List) ((Map) executionResult.getData()).get("GetAllPendingJobs")); - assertThat(data).hasSize(1); - } - - @Test - public void testGetAllEligibleJobsForExecution() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery("{ GetAllEligibleJobsForExecution { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List data = ((List) ((Map) executionResult.getData()).get("GetAllEligibleJobsForExecution")); - assertThat(data).hasSize(1); - - } - - @Test - public void testGetAllEligibleJobsForRetry() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery("{ GetAllEligibleJobsForRetry { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List data = ((List) ((Map) executionResult.getData()).get("GetAllEligibleJobsForRetry")); - assertThat(data).hasSize(1); - } - - @Test - public void testGetAllJobs() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery("{ GetAllJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllJobs")); - assertThat(data) - .hasSize(5) - .extracting(e -> e.get("jobId")) - .containsExactlyInAnyOrder("job1", "job2", "job3", "job4", "job5"); - } - - @Test - public void testGetAllCompletedJobs() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery("{ GetAllCompletedJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllCompletedJobs")); - assertThat(data) - .hasSize(2) - .allMatch(e -> "EXECUTED".equals(e.get("state"))) - .extracting(e -> e.get("jobId")) - .containsExactlyInAnyOrder("job1", "job4"); - } - - @Test - public void testGetAllInErrorJobs() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - ExecutionResult executionResult = service.executeQuery("{ GetAllInErrorJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllInErrorJobs")); - assertThat(data) - .hasSize(1) - .allMatch(e -> "ERROR".equals(e.get("state"))) - .extracting(e -> e.get("jobId")) - .containsExactlyInAnyOrder("job5"); - } - - @Test - public void testGetAllJobsByState() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - ExecutionResult executionResult = - service.executeQuery("{ GetAllJobsByState (state : \"EXECUTED\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllJobsByState")); - assertThat(data).hasSize(2); - - assertThat(data) - .allMatch(e -> "EXECUTED".equals(e.get("state"))) - .extracting(e -> e.get("jobId")) - .containsExactlyInAnyOrder("job1", "job4"); - } - - @Test - public void testGetJobByCorrelationId() { - - DataAuditStoreProxyService service = DataAuditStoreProxyService.newAuditQuerySerice(); - ExecutionResult executionResult = - service.executeQuery("{ GetJobByCorrelationId (correlationId : \"correlation1\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"); - LOGGER.info("Outcome {}", executionResult); - assertThat(executionResult.getErrors()).hasSize(0); - List> data = ((List) ((Map) executionResult.getData()).get("GetJobByCorrelationId")); - assertThat(data).hasSize(1); - - assertThat(data).first() - .hasFieldOrPropertyWithValue("correlationId", "correlation1"); - - } - -} diff --git a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java deleted file mode 100644 index f915dce27e..0000000000 --- a/data-audit/kogito-addons-data-audit-tck/src/test/java/org/kie/kogito/audit/tck/AuditUserTaskInstanceServiceTest.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * 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.kie.kogito.audit.tck; - -import java.net.URI; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.kie.kogito.app.audit.service.api.AuditQueryService; -import org.kie.kogito.app.audit.service.api.AuditStoreService; -import org.kie.kogito.app.audit.service.spi.AuditStoreContainerBeanLocator; -import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; -import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; -import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentEventBody; -import org.kie.kogito.event.usertask.UserTaskInstanceCommentDataEvent; -import org.kie.kogito.event.usertask.UserTaskInstanceCommentEventBody; -import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; -import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; -import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.assertj.core.api.Assertions.assertThat; - -import graphql.ExecutionResult; - -public class AuditUserTaskInstanceServiceTest { - - private static final Logger LOGGER = LoggerFactory.getLogger(AuditUserTaskInstanceServiceTest.class); - - @BeforeAll - public static void init() { - - // we populate the database with simple dataset - AuditStoreService proxy = AuditStoreService.newAuditStoreSerice(); - - UserTaskInstanceStateDataEvent uEvent; - uEvent = DataAuditTestUtils.newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Ready", "owner", "1"); - proxy.storeUserTaskInstanceDataEvent(uEvent); - - uEvent = DataAuditTestUtils.newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Claimed", "owner", "1"); - proxy.storeUserTaskInstanceDataEvent(uEvent); - - UserTaskInstanceVariableDataEvent vEvent; - vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 1); - proxy.storeUserTaskInstanceDataEvent(vEvent); - - vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 2); - proxy.storeUserTaskInstanceDataEvent(vEvent); - - vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId2", "varName2", "OUTPUT", 1); - proxy.storeUserTaskInstanceDataEvent(vEvent); - - vEvent = DataAuditTestUtils.newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId3", "varName3", "OUTPUT", 1); - proxy.storeUserTaskInstanceDataEvent(vEvent); - - UserTaskInstanceAssignmentDataEvent aEvent; - aEvent = DataAuditTestUtils.newUserTaskInstanceAssignmentEvent(uEvent, "eventUser", "POT_OWNERS", "user1", "user2", "user3"); - proxy.storeUserTaskInstanceDataEvent(aEvent); - - aEvent = DataAuditTestUtils.newUserTaskInstanceAssignmentEvent(uEvent, "eventUser", "ADMINISTRATORS", "user1", "user2", "user3"); - proxy.storeUserTaskInstanceDataEvent(aEvent); - - UserTaskInstanceAttachmentDataEvent attEvent; - attEvent = - DataAuditTestUtils.newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att1", "attName1", URI.create("http://localhost:8080/att1"), - UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); - proxy.storeUserTaskInstanceDataEvent(attEvent); - - attEvent = - DataAuditTestUtils.newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att2", "attName2", URI.create("http://localhost:8080/att2"), - UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); - proxy.storeUserTaskInstanceDataEvent(attEvent); - - UserTaskInstanceCommentDataEvent commentEvent; - commentEvent = DataAuditTestUtils.newUserTaskInstanceCommentEvent(uEvent, "eventUser", "att1", "attName1", UserTaskInstanceCommentEventBody.EVENT_TYPE_ADDED); - proxy.storeUserTaskInstanceDataEvent(commentEvent); - - UserTaskInstanceDeadlineDataEvent deadlineEvent; - deadlineEvent = - DataAuditTestUtils.newUserTaskInstanceDeadlineEvent(uEvent, "eventUser", Collections.singletonMap("input1", "value1"), Collections.singletonMap("notification1", "notificationValue")); - proxy.storeUserTaskInstanceDataEvent(deadlineEvent); - - uEvent = DataAuditTestUtils.newUserTaskInstanceStateEvent("eventUser", "utd2", "2", "utn2", 1, "utd2", "utp2", "utrn2", "Claimed", "owner", "1"); - proxy.storeUserTaskInstanceDataEvent(uEvent); - - } - - - @Test - public void testGetAllUserTaskInstanceState() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllUserTaskInstanceState { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, taskId, name, description, actualUser, state, nodeDefitionId, nodeInstanceId, eventType } }"); - LOGGER.info("Outcome {}", executionResult); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceState")); - - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(3); - - } - - @Test - public void testGetAllUserTaskInstanceAssignments() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllUserTaskInstanceAssignments (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, userTaskName, assignmentType, users } }"); - LOGGER.info("Outcome {}", executionResult); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceAssignments")); - - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(2); - - } - - @Test - public void testGetAllUserTaskInstanceAttachments() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllUserTaskInstanceAttachments (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, attachmentId, attachmentName, attachmentURI, eventType } }"); - LOGGER.info("Outcome {}", executionResult); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceAttachments")); - - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(2); - - } - - @Test - public void testGetAllUserTaskInstanceComment() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllUserTaskInstanceComment (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, commentId, commentContent, eventType } }"); - LOGGER.info("Outcome {}", executionResult); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceComment")); - - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(1); - - } - - @Test - public void testGetAllUserTaskInstanceDeadline() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllUserTaskInstanceDeadline (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification {key, value} } }"); - LOGGER.info("Outcome {}", executionResult); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceDeadline")); - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(1); - - } - - @Test - public void testGetAllUserTaskInstanceVariable() { - AuditQueryService service = AuditQueryService.newAuditQuerySerice(); - - ExecutionResult executionResult = service.executeQuery( - "{ GetAllUserTaskInstanceVariable (userTaskInstanceId : \"1\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue, variableType } }"); - LOGGER.info("Outcome {}", executionResult); - List> data = ((List) ((Map) executionResult.getData()).get("GetAllUserTaskInstanceVariable")); - assertThat(executionResult.getErrors()).hasSize(0); - assertThat(data).hasSize(3); - - } -} diff --git a/data-audit/pom.xml b/data-audit/pom.xml index 52d589b077..1354447e14 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -15,7 +15,6 @@ Kogito Apps :: Data Audit - kogito-addons-data-audit-tck kogito-addons-data-audit-common kogito-addons-data-audit-jpa-common kogito-addons-data-audit-jpa-quarkus diff --git a/data-audit/kogito-addons-data-audit-tck/.gitignore b/data-index/data-index-service/data-index-service-common/.gitignore similarity index 100% rename from data-audit/kogito-addons-data-audit-tck/.gitignore rename to data-index/data-index-service/data-index-service-common/.gitignore diff --git a/data-index/data-index-service/data-index-service-infinispan/.gitignore b/data-index/data-index-service/data-index-service-infinispan/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/data-index/data-index-service/data-index-service-infinispan/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/kogito-apps-bom/pom.xml b/kogito-apps-bom/pom.xml index 095dae2910..7cacc66f96 100644 --- a/kogito-apps-bom/pom.xml +++ b/kogito-apps-bom/pom.xml @@ -114,8 +114,28 @@ ${project.version} sources - - + + + org.kie.kogito + kogito-addons-data-audit-common + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-jpa-quarkus + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-jpa-springboot + ${project.version} + + org.kie.kogito data-index-service @@ -332,7 +352,7 @@ - + org.kie.kogito persistence-commons-api @@ -488,7 +508,7 @@ sources - + org.kie.kogito jitexecutor-runner @@ -506,7 +526,7 @@ ${project.version} javadoc - + org.kie.kogito jitexecutor-common @@ -531,7 +551,7 @@ test-jar test - + org.kie.kogito jitexecutor-bpmn @@ -556,7 +576,7 @@ test-jar test - + org.kie.kogito jitexecutor-dmn @@ -582,7 +602,7 @@ test - + org.kie.kogito trusty-service-common @@ -752,7 +772,7 @@ javadoc - + org.kie.kogito security-commons @@ -765,7 +785,7 @@ sources - + org.kie.kogito explainability-api @@ -838,14 +858,14 @@ javadoc - + org.kie.kogito management-console ${project.version} - + org.kie.kogito task-console @@ -863,7 +883,7 @@ ${project.version} - + org.kie.kogito kogito-apps-ui-packages From 8dff491949e2b0cee53f8442e778427ccf708e94 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 27 Oct 2023 18:53:13 +0200 Subject: [PATCH 03/47] added data audit context to local --- .../org/kie/kogito/app/audit/api/DataAuditContext.java | 2 +- .../kie/kogito/app/audit/api/DataAuditQueryService.java | 4 ++-- .../app/audit/jpa/queries/JPASimpleNamedQuery.java | 4 +++- .../app/audit/quarkus/GraphQLJPADataAuditRouter.java | 4 ++-- .../quarkus/QuarkusDataAuditMessagingEventConsumer.java | 8 ++++---- .../audit/quarkus/QuarkusJPADataAuditEventPublisher.java | 6 +++--- .../springboot/GraphQLJPAAuditDataRouteMapping.java | 3 ++- .../SpringBootDataAuditMessagingEventConsumer.java | 8 ++++---- .../springboot/SpringBootJPADataAuditEventPublisher.java | 9 +++++---- 9 files changed, 26 insertions(+), 22 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java index 0c54524828..1515cd920f 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java @@ -26,7 +26,7 @@ public DataAuditContext(Object context) { this.context = context; } - public static DataAuditContext of(Object context) { + public static DataAuditContext newDataAuditContext(Object context) { return new DataAuditContext(context); } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java index ce9f7d228c..ead9a37c25 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java @@ -44,7 +44,7 @@ public GraphQLSchema getGraphQLSchema() { return this.graphQLManager.getGraphQLSchema(); } - public ExecutionResult executeQuery(Object context, String query) { + public ExecutionResult executeQuery(DataAuditContext context, String query) { return executeQuery(context, query, emptyMap()); } @@ -52,7 +52,7 @@ public ExecutionResult executeQuery(String query) { return executeQuery(null, query, emptyMap()); } - public ExecutionResult executeQuery(Object context, String query, Map variables) { + public ExecutionResult executeQuery(DataAuditContext context, String query, Map variables) { ExecutionInput executionInput = ExecutionInput.newExecutionInput() .localContext(context) .query(query) diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java index 112273bc40..46ae68c484 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -23,6 +23,7 @@ import javax.persistence.EntityManager; +import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import graphql.schema.DataFetchingEnvironment; @@ -48,8 +49,9 @@ public String name() { public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { Map arguments = dataFetchingEnvironment.getArguments(); + DataAuditContext context = dataFetchingEnvironment.getLocalContext(); + EntityManager entityManager = context.getContext(); - EntityManager entityManager = dataFetchingEnvironment.getLocalContext(); if (arguments.isEmpty()) { return executeWithNamedQueryEntityManager(entityManager, namedQuery, clazz); } else { diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java index 21d9004787..9621a1d855 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -33,6 +33,7 @@ import static io.quarkus.vertx.web.Route.HttpMethod.GET; import static io.quarkus.vertx.web.Route.HttpMethod.POST; +import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; import graphql.GraphQL; @@ -52,7 +53,6 @@ public class GraphQLJPADataAuditRouter { @PostConstruct public void init() { graphQL = GraphQL.newGraphQL(DataAuditQueryService.newAuditQuerySerice().getGraphQLSchema()).build(); - graphQLHandler = GraphQLHandler.create(graphQL, new GraphQLHandlerOptions()); } @@ -67,7 +67,7 @@ public void blockingGraphQLHandlerPost(RoutingContext rc) { } private void beforeExecuteHTTP(ExecutionInputBuilderWithContext config) { - config.builder().localContext(entityManager); + config.builder().localContext(newDataAuditContext(entityManager)); } } \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java index d2839077df..90089563c6 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -24,7 +24,6 @@ import javax.transaction.Transactional; import org.eclipse.microprofile.reactive.messaging.Incoming; -import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.app.audit.jpa.JPADataAuditStore; import org.kie.kogito.event.process.ProcessInstanceDataEvent; @@ -36,6 +35,7 @@ import io.smallrye.common.annotation.Blocking; +import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; @@ -59,7 +59,7 @@ public QuarkusDataAuditMessagingEventConsumer() { @Transactional public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), event); } @@ -68,7 +68,7 @@ public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { @Transactional public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { LOGGER.debug("Task instance received UserTaskInstanceDataEvent \n{}", event); - proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), event); } @@ -77,7 +77,7 @@ public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { @Transactional public void onJobEvent(JobCloudEvent event) { LOGGER.debug("Job received KogitoJobCloudEvent \n{}", event); - proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); } } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index d88c727432..4da35b1c0b 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -64,11 +64,11 @@ public void publish(DataEvent event) { if (event instanceof ProcessInstanceDataEvent) { LOGGER.debug("Processing process instance event {}", event); - proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), (ProcessInstanceDataEvent) event); + proxy.storeProcessInstanceDataEvent(DataAuditContext.newDataAuditContext(entityManager), (ProcessInstanceDataEvent) event); return; } else if (event instanceof UserTaskInstanceDataEvent) { LOGGER.debug("Processing user task instacne event {}", event); - proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), (UserTaskInstanceDataEvent) event); + proxy.storeUserTaskInstanceDataEvent(DataAuditContext.newDataAuditContext(entityManager), (UserTaskInstanceDataEvent) event); return; } @@ -79,7 +79,7 @@ public void publish(DataEvent event) { @Transactional(value = TxType.REQUIRED) public void publish(JobCloudEvent event) { LOGGER.debug("Processing job event {}", event); - proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeJobDataEvent(DataAuditContext.newDataAuditContext(entityManager), event); } } diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java index dd81658137..a1ee55bb72 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.databind.JsonNode; +import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; import graphql.ExecutionResult; @@ -54,7 +55,7 @@ public void init() { @PostMapping(value = DATA_AUDIT_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public Map executeQuery(@RequestBody JsonNode query) { - ExecutionResult executionResult = dataAuditQueryService.executeQuery(entityManager, query.get("query").asText()); + ExecutionResult executionResult = dataAuditQueryService.executeQuery(newDataAuditContext(entityManager), query.get("query").asText()); return executionResult.toSpecification(); } diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java index 06f89b98f7..e9729dfda0 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java @@ -20,7 +20,6 @@ import javax.persistence.EntityManager; -import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.app.audit.jpa.JPADataAuditStore; import org.kie.kogito.event.process.ProcessInstanceDataEvent; @@ -34,6 +33,7 @@ import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Service; +import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; @@ -60,19 +60,19 @@ public SpringBootDataAuditMessagingEventConsumer() { @KafkaHandler public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), event); } @KafkaHandler public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), event); } @KafkaHandler public void onJobInstanceEvent(JobCloudEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); } } \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java index 2ef4845bbf..4f740302a9 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -22,7 +22,6 @@ import javax.persistence.EntityManager; -import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.app.audit.jpa.JPADataAuditStore; @@ -37,6 +36,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; + @Component public class SpringBootJPADataAuditEventPublisher implements DataAuditEventPublisher { @@ -61,11 +62,11 @@ public void publish(Collection> events) { public void publish(DataEvent event) { if (event instanceof ProcessInstanceDataEvent) { LOGGER.debug("Processing process instance event {}", event); - proxy.storeProcessInstanceDataEvent(DataAuditContext.of(entityManager), (ProcessInstanceDataEvent) event); + proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), (ProcessInstanceDataEvent) event); return; } else if (event instanceof UserTaskInstanceDataEvent) { LOGGER.debug("Processing user task instacne event {}", event); - proxy.storeUserTaskInstanceDataEvent(DataAuditContext.of(entityManager), (UserTaskInstanceDataEvent) event); + proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), (UserTaskInstanceDataEvent) event); return; } @@ -75,7 +76,7 @@ public void publish(DataEvent event) { @Override public void publish(JobCloudEvent event) { LOGGER.debug("Processing job event {}", event); - proxy.storeJobDataEvent(DataAuditContext.of(entityManager), event); + proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); } } From be247ebb4deabf08603facdc1df02f03424562c3 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 27 Oct 2023 19:01:35 +0200 Subject: [PATCH 04/47] make proxy independent of runtime --- .../kie/kogito/app/audit/api/DataAuditStoreProxyService.java | 5 ++++- .../services/org.kie.kogito.app.audit.spi.DataAuditStore | 1 + .../quarkus/QuarkusDataAuditMessagingEventConsumer.java | 3 +-- .../app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java | 3 +-- .../SpringBootDataAuditMessagingEventConsumer.java | 4 +--- .../springboot/SpringBootJPADataAuditEventPublisher.java | 3 +-- 6 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java index eb14b32376..40b90707ab 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java @@ -18,6 +18,8 @@ */ package org.kie.kogito.app.audit.api; +import java.util.ServiceLoader; + import org.kie.kogito.app.audit.spi.DataAuditStore; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; @@ -75,7 +77,8 @@ public void storeJobDataEvent(DataAuditContext context, JobCloudEvent event } - public static DataAuditStoreProxyService newAuditStoreSerice(DataAuditStore service) { + public static DataAuditStoreProxyService newAuditStoreService() { + DataAuditStore service = ServiceLoader.load(DataAuditStore.class).findFirst().orElseThrow(() -> new RuntimeException("DataAuditStore implementation not found")); LOGGER.debug("Creating new Data Audit Store proxy service with {}", service); return new DataAuditStoreProxyService(service); } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore new file mode 100644 index 0000000000..3629c4c4f5 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore @@ -0,0 +1 @@ +org.kie.kogito.app.audit.jpa.JPADataAuditStore \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java index 90089563c6..06e01e48e3 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -25,7 +25,6 @@ import org.eclipse.microprofile.reactive.messaging.Incoming; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.app.audit.jpa.JPADataAuditStore; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; import org.kie.kogito.jobs.service.api.Job; @@ -51,7 +50,7 @@ public class QuarkusDataAuditMessagingEventConsumer { EntityManager entityManager; public QuarkusDataAuditMessagingEventConsumer() { - proxy = DataAuditStoreProxyService.newAuditStoreSerice(new JPADataAuditStore()); + proxy = DataAuditStoreProxyService.newAuditStoreService(); } @Incoming(KOGITO_PROCESSINSTANCES_EVENTS) diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index 4da35b1c0b..73f5438171 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -29,7 +29,6 @@ import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.app.audit.jpa.JPADataAuditStore; import org.kie.kogito.event.DataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; @@ -49,7 +48,7 @@ public class QuarkusJPADataAuditEventPublisher implements DataAuditEventPublishe EntityManager entityManager; public QuarkusJPADataAuditEventPublisher() { - proxy = DataAuditStoreProxyService.newAuditStoreSerice(new JPADataAuditStore()); + proxy = DataAuditStoreProxyService.newAuditStoreService(); } @Override diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java index e9729dfda0..3bac949d0a 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java @@ -46,15 +46,13 @@ public class SpringBootDataAuditMessagingEventConsumer { private DataAuditStoreProxyService proxy; - private JPADataAuditStore jpaAuditStore; @Autowired EntityManager entityManager; public SpringBootDataAuditMessagingEventConsumer() { - jpaAuditStore = new JPADataAuditStore(); - proxy = DataAuditStoreProxyService.newAuditStoreSerice(jpaAuditStore); + proxy = DataAuditStoreProxyService.newAuditStoreService(); } @KafkaHandler diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java index 4f740302a9..81041810e4 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -24,7 +24,6 @@ import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.app.audit.jpa.JPADataAuditStore; import org.kie.kogito.event.DataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; @@ -49,7 +48,7 @@ public class SpringBootJPADataAuditEventPublisher implements DataAuditEventPubli EntityManager entityManager; public SpringBootJPADataAuditEventPublisher() { - proxy = DataAuditStoreProxyService.newAuditStoreSerice(new JPADataAuditStore()); + proxy = DataAuditStoreProxyService.newAuditStoreService(); } @Override From d4a0923c2a9afa8cb16bab57e3547ced1ca51d49 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 30 Oct 2023 10:57:44 +0100 Subject: [PATCH 05/47] tweak events --- .../pom.xml | 40 +++++++ .../json/JsonJobDataEventDeserializer.java | 5 +- ...nProcessInstanceDataEventDeserializer.java | 0 ...UserTaskInstanceDataEventDeserializer.java | 0 .../kie/kogito/app/audit/json/JsonUtils.java | 0 .../audit/kafka/JobDataEventDeserializer.java | 0 .../ProcessInstanceDataEventDeserializer.java | 0 ...UserTaskInstanceDataEventDeserializer.java | 0 .../addons/data/audit/common/kafka/App.java | 11 ++ .../app/audit/api/DataAuditContext.java | 6 +- .../audit/api/DataAuditEventPublisher.java | 4 +- .../app/audit/api/DataAuditQueryService.java | 10 +- .../app/audit/api/SubsystemConstants.java | 2 +- .../type/UserTaskInstanceAttachmentTO.java | 5 +- .../type/UserTaskInstanceDeadlineTO.java | 20 +--- .../app/audit/jpa/JPADataAuditStore.java | 65 ++++++---- .../jpa/model/ProcessInstanceErrorLog.java | 1 - .../jpa/model/ProcessInstanceNodeLog.java | 26 +--- .../jpa/model/ProcessInstanceStateLog.java | 2 +- .../model/UserTaskInstanceAssignmentLog.java | 2 +- .../model/UserTaskInstanceAttachmentLog.java | 12 +- .../jpa/model/UserTaskInstanceCommentLog.java | 2 +- .../model/UserTaskInstanceDeadlineLog.java | 2 +- .../jpa/model/UserTaskInstanceStateLog.java | 22 +--- ...QLSchemaProcessInstancesQueryProvider.java | 3 +- .../pom.xml | 113 ++++++++++++++++++ ...uarkusDataAuditMessagingEventConsumer.java | 0 .../main/resources/applications.properties | 13 ++ .../pom.xml | 17 --- .../quarkus/GraphQLJPADataAuditRouter.java | 8 +- .../src/main/resources/application.properties | 3 + .../app/audit/quarkus/DataAuditTestUtils.java | 5 +- .../quarkus/QuarkusAuditJobServiceTest.java | 2 +- ...uarkusAuditProcessInstanceServiceTest.java | 2 +- ...arkusAuditUserTaskInstanceServiceTest.java | 2 +- .../QuarkusEmbeddedJPADataAuditTest.java | 2 +- .../src/test/resources/application.properties | 15 --- .../pom.xml | 77 ++++++++++++ ...ngBootDataAuditMessagingEventConsumer.java | 19 ++- .../src/site/site.xml | 26 ++++ .../GraphQLJPAAuditDataRouteMapping.java | 10 +- .../SpringBootAuditDataConfiguration.java | 9 -- .../SpringBootJPADataAuditEventPublisher.java | 2 +- .../SpringbootJPADataAuditTest.java | 3 +- data-audit/pom.xml | 47 ++++---- data-index/data-index-common/.gitignore | 1 + .../ProcessInstanceNodeDataEventMerger.java | 9 +- kogito-apps-bom/pom.xml | 15 +++ 48 files changed, 432 insertions(+), 208 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-common-kafka/pom.xml rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java (98%) rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java (100%) rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-common-kafka}/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java (100%) create mode 100644 data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-jpa-quarkus-subsystem}/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java (100%) create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml rename data-audit/{kogito-addons-data-audit-jpa-springboot => kogito-addons-data-audit-jpa-springboot-subsystem}/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java (92%) create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml create mode 100644 data-index/data-index-common/.gitignore diff --git a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml b/data-audit/kogito-addons-data-audit-common-kafka/pom.xml new file mode 100644 index 0000000000..60b24eb460 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common-kafka/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + data-audit + org.kie.kogito + 2.0.0-SNAPSHOT + + + kogito-addons-data-audit-common-kafka + + Kogito Apps :: Data Audit :: Data Audit Service Common Kafka Utils + + + UTF-8 + + + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + + + org.apache.kafka + kafka-clients + + + + + diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java similarity index 98% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java index c78a02a2ce..75bad4960f 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java +++ b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java @@ -34,7 +34,6 @@ public class JsonJobDataEventDeserializer extends StdDeserializer> { - private static final Logger LOGGER = LoggerFactory.getLogger(JsonJobDataEventDeserializer.class); private static final long serialVersionUID = 6152014726577574241L; @@ -52,9 +51,7 @@ public JobCloudEvent deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonNode node = jp.getCodec().readTree(jp); LOGGER.debug("Deserialize process instance data event: {}", node); - - - + String type = node.get("type").asText(); switch (type) { diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java rename to data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java new file mode 100644 index 0000000000..f4f086316b --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java @@ -0,0 +1,11 @@ +package org.kogito.addons.data.audit.common.kafka; + +/** + * Hello world! + * + */ +public class App { + public static void main(String[] args) { + System.out.println("Hello World!"); + } +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java index 1515cd920f..e98723782c 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java @@ -21,7 +21,7 @@ public class DataAuditContext { private Object context; - + public DataAuditContext(Object context) { this.context = context; } @@ -29,10 +29,10 @@ public DataAuditContext(Object context) { public static DataAuditContext newDataAuditContext(Object context) { return new DataAuditContext(context); } - + @SuppressWarnings("unchecked") public T getContext() { return (T) context; } - + } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java index 78c6a76384..ba5959f660 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java @@ -23,7 +23,7 @@ import org.kie.kogito.jobs.service.api.event.JobCloudEvent; public interface DataAuditEventPublisher extends EventPublisher { - + void publish(JobCloudEvent event); - + } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java index ead9a37c25..fdcf3eaa66 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java @@ -22,14 +22,14 @@ import org.kie.kogito.app.audit.graphql.GraphQLSchemaManager; -import static java.util.Collections.emptyMap; -import static org.kie.kogito.app.audit.graphql.GraphQLSchemaManager.graphQLSchemaManagerInstance; - import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.GraphQL; import graphql.schema.GraphQLSchema; +import static java.util.Collections.emptyMap; +import static org.kie.kogito.app.audit.graphql.GraphQLSchemaManager.graphQLSchemaManagerInstance; + public class DataAuditQueryService { private GraphQLSchemaManager graphQLManager; @@ -51,14 +51,14 @@ public ExecutionResult executeQuery(DataAuditContext context, String query) { public ExecutionResult executeQuery(String query) { return executeQuery(null, query, emptyMap()); } - + public ExecutionResult executeQuery(DataAuditContext context, String query, Map variables) { ExecutionInput executionInput = ExecutionInput.newExecutionInput() .localContext(context) .query(query) .variables(variables) .build(); - + return graphQL.execute(executionInput); } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java index d60eb726f2..1f56dd2944 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java @@ -20,10 +20,10 @@ public final class SubsystemConstants { - private SubsystemConstants() { // do nothing } + public static final String DATA_AUDIT_PATH = "/data-audit"; public static final String KOGITO_PROCESSINSTANCES_EVENTS = "kogito-processinstances-events"; diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java index 21dfd66ab9..0eabf896f1 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java @@ -29,7 +29,7 @@ public class UserTaskInstanceAttachmentTO { private String eventId; private OffsetDateTime eventDate; - + private String eventUser; private String userTaskDefinitionId; @@ -143,11 +143,10 @@ public void setEventType(int eventType) { this.eventType = eventType; } - public String getEventUser() { return eventUser; } - + public void setEventUser(String eventUser) { this.eventUser = eventUser; } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java index 776c5c0ee8..246ff05ace 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java @@ -37,11 +37,11 @@ public class UserTaskInstanceDeadlineTO { private String processInstanceId; private String businessKey; - + private Map notification; private String eventType; - + public UserTaskInstanceDeadlineTO(String eventId, Date eventDate, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, String eventType) { this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); @@ -52,82 +52,66 @@ public UserTaskInstanceDeadlineTO(String eventId, Date eventDate, String userTas this.eventType = eventType; } - public String getEventId() { return eventId; } - public void setEventId(String eventId) { this.eventId = eventId; } - public OffsetDateTime getEventDate() { return eventDate; } - public void setEventDate(OffsetDateTime eventDate) { this.eventDate = eventDate; } - public String getUserTaskDefinitionId() { return userTaskDefinitionId; } - public void setUserTaskDefinitionId(String userTaskDefinitionId) { this.userTaskDefinitionId = userTaskDefinitionId; } - public String getUserTaskInstanceId() { return userTaskInstanceId; } - public void setUserTaskInstanceId(String userTaskInstanceId) { this.userTaskInstanceId = userTaskInstanceId; } - public String getProcessInstanceId() { return processInstanceId; } - public void setProcessInstanceId(String processInstanceId) { this.processInstanceId = processInstanceId; } - public String getBusinessKey() { return businessKey; } - public void setBusinessKey(String businessKey) { this.businessKey = businessKey; } - public Map getNotification() { return notification; } - public void setNotification(Map notification) { this.notification = notification; } - public String getEventType() { return eventType; } - public void setEventType(String eventType) { this.eventType = eventType; } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index 8a1e69f898..6134c73779 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -32,7 +32,9 @@ import org.kie.kogito.app.audit.jpa.model.JobExecutionLog; import org.kie.kogito.app.audit.jpa.model.ProcessInstanceErrorLog; import org.kie.kogito.app.audit.jpa.model.ProcessInstanceNodeLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceNodeLog.NodeLogType; import org.kie.kogito.app.audit.jpa.model.ProcessInstanceStateLog; +import org.kie.kogito.app.audit.jpa.model.ProcessInstanceStateLog.ProcessStateLogType; import org.kie.kogito.app.audit.jpa.model.ProcessInstanceVariableLog; import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceAssignmentLog; import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceAttachmentLog; @@ -40,8 +42,6 @@ import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceDeadlineLog; import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceStateLog; import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceVariableLog; -import org.kie.kogito.app.audit.jpa.model.ProcessInstanceNodeLog.NodeLogType; -import org.kie.kogito.app.audit.jpa.model.ProcessInstanceStateLog.ProcessStateLogType; import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceVariableLog.VariableType; import org.kie.kogito.app.audit.spi.DataAuditStore; import org.kie.kogito.event.process.ProcessInstanceDataEvent; @@ -77,7 +77,6 @@ public JPADataAuditStore() { mapper = new ObjectMapper(); } - @Override public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceStateDataEvent event) { ProcessInstanceStateLog log = new ProcessInstanceStateLog(); @@ -86,20 +85,19 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta log.setState(event.getKogitoProcessInstanceState()); log.setRoles(event.getData().getRoles()); + EntityManager entityManager = context.getContext(); switch (event.getData().getEventType()) { case ProcessInstanceStateEventBody.EVENT_TYPE_STARTED: log.setEventType(ProcessStateLogType.STARTED); + entityManager.persist(log); break; case ProcessInstanceStateEventBody.EVENT_TYPE_ENDED: log.setEventType(ProcessStateLogType.COMPLETED); + entityManager.persist(log); break; } - - EntityManager entityManager = context.getContext(); - entityManager.persist(log); - } - + @Override public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceErrorDataEvent event) { ProcessInstanceErrorLog log = new ProcessInstanceErrorLog(); @@ -119,12 +117,10 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta setProcessCommonAttributes(log, event); - log.setConnection(event.getData().getConnectionNodeInstanceId()); - log.setNodeContainerId(null); + log.setConnection(event.getData().getConnectionNodeDefinitionId()); log.setNodeDefinitionId(event.getData().getNodeDefinitionId()); log.setNodeType(event.getData().getNodeType()); - log.setNodeContainerInstanceId(null); log.setNodeInstanceId(event.getData().getNodeInstanceId()); log.setNodeName(event.getData().getNodeName()); @@ -135,21 +131,49 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta case ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT: log.setEventType(NodeLogType.EXIT); break; + case ProcessInstanceNodeEventBody.EVENT_TYPE_ABORTED: + log.setEventType(NodeLogType.ABORTED); + break; + case ProcessInstanceNodeEventBody.EVENT_TYPE_SKIPPED: + log.setEventType(NodeLogType.SKIPPED); + break; + case ProcessInstanceNodeEventBody.EVENT_TYPE_OBSOLETE: + log.setEventType(NodeLogType.OBSOLETE); + break; + case ProcessInstanceNodeEventBody.EVENT_TYPE_ERROR: + log.setEventType(NodeLogType.ERROR); + break; + } + + log.setWorkItemId(event.getData().getWorkItemId()); EntityManager entityManager = context.getContext(); entityManager.persist(log); } @Override public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceSLADataEvent event) { - ProcessInstanceStateLog log = new ProcessInstanceStateLog(); - - setProcessCommonAttributes(log, event); EntityManager entityManager = context.getContext(); - entityManager.persist(log); - } - + if(event.getData().getNodeDefinitionId() != null) { + + ProcessInstanceStateLog log = new ProcessInstanceStateLog(); + setProcessCommonAttributes(log, event); + + log.setEventType(ProcessStateLogType.SLA_VIOLATION); + + entityManager.persist(log); + } else { + ProcessInstanceNodeLog log = new ProcessInstanceNodeLog(); + setProcessCommonAttributes(log, event); + log.setNodeDefinitionId(event.getData().getNodeDefinitionId()); + log.setNodeInstanceId(event.getData().getNodeInstanceId()); + log.setNodeName(event.getData().getNodeName()); + log.setNodeType(event.getData().getNodeType()); + log.setEventType(NodeLogType.SLA_VIOLATION); + entityManager.persist(log); + } + } @Override public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceVariableDataEvent event) { @@ -205,8 +229,7 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns try { log.setAttachmentURI(event.getData().getAttachmentURI().toURL()); } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + LOGGER.error("Could not serialize url {}", e); } log.setEventType(event.getData().getEventType()); EntityManager entityManager = context.getContext(); @@ -238,7 +261,7 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns log.setEventUser(event.getData().getEventUser()); if (event.getData().getNotification() != null) { Map data = new HashMap<>(); - for(Map.Entry entry : event.getData().getNotification().entrySet()) { + for (Map.Entry entry : event.getData().getNotification().entrySet()) { data.put(entry.getKey(), entry.getValue().toString()); } log.setNotification(data); @@ -257,7 +280,7 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns log.setName(event.getData().getUserTaskName()); log.setDescription(event.getData().getUserTaskDescription()); log.setState(event.getData().getState()); -// log.setEventType(event.getData().getEventType()); + log.setEventType(event.getData().getEventType()); EntityManager entityManager = context.getContext(); entityManager.persist(log); diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java index 998ffdd471..d7b8e28bfa 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java @@ -51,7 +51,6 @@ public class ProcessInstanceErrorLog extends AbstractProcessInstanceLog { @Column(name = "node_instance_id") private String nodeInstanceId; - public Long getId() { return id; } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java index e212c320f6..06b2ea9d01 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java @@ -44,7 +44,9 @@ public enum NodeLogType { ABORTED, ASYNC_ENTER, OBSOLETE, - SKIPPED + SKIPPED, + ERROR, + SLA_VIOLATION } @Id @@ -55,18 +57,12 @@ public enum NodeLogType { @Enumerated(EnumType.STRING) private NodeLogType eventType; - @Column(name = "node_container_id") - private String nodeContainerId; - @Column(name = "node_definition_id") private String nodeDefinitionId; @Column(name = "node_type") private String nodeType; - @Column(name = "node_container_instance_id") - private String nodeContainerInstanceId; - @Column(name = "node_name") private String nodeName; @@ -102,14 +98,6 @@ public void setEventType(NodeLogType eventType) { this.eventType = eventType; } - public String getNodeContainerId() { - return nodeContainerId; - } - - public void setNodeContainerId(String nodeContainerId) { - this.nodeContainerId = nodeContainerId; - } - public String getNodeDefinitionId() { return nodeDefinitionId; } @@ -126,14 +114,6 @@ public void setNodeType(String nodeType) { this.nodeType = nodeType; } - public String getNodeContainerInstanceId() { - return nodeContainerInstanceId; - } - - public void setNodeContainerInstanceId(String nodeContainerInstanceId) { - this.nodeContainerInstanceId = nodeContainerInstanceId; - } - public String getNodeName() { return nodeName; } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java index 5f93c6b288..820222365e 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java @@ -69,7 +69,7 @@ public enum ProcessStateLogType { private Date slaDueDate; @ElementCollection - @CollectionTable(name = "ProcessInstanceStateRolesLog", joinColumns = @JoinColumn(name = "process_instance_id", foreignKey = @ForeignKey(name="fk_process_instance_state_pid"))) + @CollectionTable(name = "ProcessInstanceStateRolesLog", joinColumns = @JoinColumn(name = "process_instance_id", foreignKey = @ForeignKey(name = "fk_process_instance_state_pid"))) @Column(name = "role") private Set roles; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java index 47c02c8b1a..5813b480f3 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -55,7 +55,7 @@ public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { private String assignmentType; // POT OWNERS, ADMIN... @ElementCollection - @CollectionTable(name = "TaskInstanceAssignmentRolesLog", joinColumns = @JoinColumn(name = "task_instance_assignment_id"), foreignKey = @ForeignKey(name="fk_task_instance_assignment_tid")) + @CollectionTable(name = "TaskInstanceAssignmentRolesLog", joinColumns = @JoinColumn(name = "task_instance_assignment_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_tid")) @Column(name = "user_id") private List users; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java index 6bfd84057f..86b43697e3 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java @@ -38,16 +38,16 @@ public class UserTaskInstanceAttachmentLog extends AbstractUserTaskInstanceLog { @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceAttachmentLogIdSeq") private Long id; - @Column(name="attachment_id") + @Column(name = "attachment_id") private String attachmentId; - - @Column(name="attachment_name") + + @Column(name = "attachment_name") private String attachmentName; - - @Column(name="attachment_uri") + + @Column(name = "attachment_uri") private URL attachmentURI; - @Column(name="event_type") + @Column(name = "event_type") private int eventType; public Long getId() { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java index 971a880317..8a331ce143 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java @@ -43,7 +43,7 @@ public class UserTaskInstanceCommentLog extends AbstractUserTaskInstanceLog { @Column(name = "comment_content") private String commentContent; - @Column(name="event_type") + @Column(name = "event_type") private int eventType; public Long getId() { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java index 6fe12330b1..2637bcdf50 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java @@ -44,7 +44,7 @@ public class UserTaskInstanceDeadlineLog extends AbstractUserTaskInstanceLog { private Long id; @ElementCollection - @JoinTable(name = "TaskInstanceDeadlineNotificationLog", joinColumns = @JoinColumn(name = "task_instance_deadline_id"), foreignKey = @ForeignKey(name="fk_task_instance_deadline_tid")) + @JoinTable(name = "TaskInstanceDeadlineNotificationLog", joinColumns = @JoinColumn(name = "task_instance_deadline_id"), foreignKey = @ForeignKey(name = "fk_task_instance_deadline_tid")) @MapKeyColumn(name = "property_name") @Column(name = "property_value") private Map notification; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java index 4c5ad57fa2..09b2912b4a 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java @@ -34,29 +34,18 @@ @SequenceGenerator(name = "taskInstanceStateLogIdSeq", sequenceName = "TASK_INSTANCE_STATE_LOG_ID_SEQ") public class UserTaskInstanceStateLog extends AbstractUserTaskInstanceLog { - public enum LogType { - CREATED, - READY, - CLAIMED, - STARTED, - COMPLETED, - ABORTED, - NOMINATED, - FORWARDED - } - @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceStateLogIdSeq") private Long id; - @Column(name="task_id") + @Column(name = "task_id") private String taskId; private String name; private String description; - @Column(name="actual_user") + @Column(name = "actual_user") private String actualUser; private String state; @@ -68,8 +57,7 @@ public enum LogType { private String nodeInstanceId; @Column(name = "event_type") - @Enumerated(EnumType.STRING) - private LogType eventType; + private String eventType; public Long getId() { return id; @@ -119,11 +107,11 @@ public void setNodeInstanceId(String nodeInstanceId) { this.nodeInstanceId = nodeInstanceId; } - public LogType getEventType() { + public String getEventType() { return eventType; } - public void setEventType(LogType eventType) { + public void setEventType(String eventType) { this.eventType = eventType; } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java index 2d2896e85d..3d53975e26 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -35,7 +35,8 @@ public List> queries() { new JPASimpleNamedQuery("GetAllProcessInstancesState", "GetAllProcessInstancesState", ProcessInstanceStateTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", "GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", "GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), - new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", "GetAllProcessInstancesVariablebyProcessInstanceId", ProcessInstanceVariableTO.class)); + new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", "GetAllProcessInstancesVariablebyProcessInstanceId", + ProcessInstanceVariableTO.class)); } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml new file mode 100644 index 0000000000..29811e67f7 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + + data-audit + org.kie.kogito + 2.0.0-SNAPSHOT + + + + kogito-addons-data-audit-jpa-quarkus-subsystem + + kogito-addons-data-audit-jpa-quarkus-subsystem + + + + UTF-8 + + + + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + + + + + + io.quarkus + quarkus-core + + + io.quarkus + quarkus-arc + + + + io.smallrye.reactive + smallrye-reactive-messaging-api + + + io.smallrye.reactive + smallrye-reactive-messaging-kafka + + + io.quarkus + quarkus-smallrye-metrics + + + org.apache.kafka + kafka-clients + + + + io.quarkus + quarkus-reactive-routes + + + io.quarkiverse.reactivemessaging.http + quarkus-reactive-messaging-http + + + io.quarkus + quarkus-vertx-graphql + + + + io.quarkus + quarkus-hibernate-orm + + + + + org.hamcrest + hamcrest-all + 1.3 + test + + + org.assertj + assertj-core + test + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java rename to data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties new file mode 100644 index 0000000000..2000c33bf7 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties @@ -0,0 +1,13 @@ +mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer +mp.messaging.incoming.kogito-processinstances-events.group.id=data-audit + +mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer +mp.messaging.incoming.kogito-usertaskinstances-events.group.id=data-audit + +mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer +mp.messaging.incoming.kogito-jobs-events.group.id=data-audit + +quarkus.kafka.bootstrap-servers=localhost:9092 \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml index 0dc450804c..73a3afe604 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -51,23 +51,6 @@ quarkus-arc - - io.smallrye.reactive - smallrye-reactive-messaging-api - - - io.smallrye.reactive - smallrye-reactive-messaging-kafka - - - io.quarkus - quarkus-smallrye-metrics - - - org.apache.kafka - kafka-clients - - io.quarkus quarkus-reactive-routes diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java index 9621a1d855..f50dfadd86 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -31,18 +31,16 @@ import io.vertx.ext.web.handler.graphql.GraphQLHandler; import io.vertx.ext.web.handler.graphql.GraphQLHandlerOptions; +import graphql.GraphQL; + import static io.quarkus.vertx.web.Route.HttpMethod.GET; import static io.quarkus.vertx.web.Route.HttpMethod.POST; import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; -import graphql.GraphQL; - @ApplicationScoped public class GraphQLJPADataAuditRouter { - - GraphQL graphQL; GraphQLHandler graphQLHandler; @@ -70,4 +68,4 @@ private void beforeExecuteHTTP(ExecutionInputBuilderWithContext config.builder().localContext(newDataAuditContext(entityManager)); } -} \ No newline at end of file +} diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties new file mode 100644 index 0000000000..b8b3b05ce2 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties @@ -0,0 +1,3 @@ +quarkus.hibernate-orm.enabled=true +quarkus.hibernate-orm.packages=org.kie.kogito.app.audit.jpa.model +quarkus.hibernate-orm.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index 71356877a8..87be21997d 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -68,7 +68,7 @@ private static String toURIEndpoint(String processId) { public static String wrapQuery(String query) { return "{ \"query\" : \"" + query + " \"}"; } - + public static JobCloudEvent newJobEvent(String jobId, String correlationId, Job.State state, Long executionTimeout, TemporalUnit unit, Retry retry, Schedule schedule) { Job job = new Job(); job.setCorrelationId(correlationId); @@ -182,7 +182,7 @@ public static ProcessInstanceNodeDataEvent newProcessInstanceNodeEvent( .nodeType(nodeType) .nodeDefinitionId(nodeDefintionId) .nodeInstanceId(nodeInstanceId) - .connectionNodeInstanceId(connection) + .connectionNodeDefinitionId(connection) .build(); ProcessInstanceNodeDataEvent event = new ProcessInstanceNodeDataEvent(toURIEndpoint(body.getProcessId()), @@ -288,7 +288,6 @@ public static UserTaskInstanceStateDataEvent newUserTaskInstanceStateEvent( metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA, userTaskInstanceId); metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA, state); - UserTaskInstanceStateDataEvent event = new UserTaskInstanceStateDataEvent(toURIEndpoint(processId), ADDONS, (String) eventUser, metadata, body); diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java index 7a0b63aa5d..1f7dd8743b 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java @@ -49,7 +49,7 @@ public class QuarkusAuditJobServiceTest { @Inject - private DataAuditEventPublisher publisher; + DataAuditEventPublisher publisher; @BeforeAll public void init() { diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index e3596ac99d..0cd66f0584 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -55,7 +55,7 @@ public class QuarkusAuditProcessInstanceServiceTest { @Inject - private DataAuditEventPublisher publisher; + DataAuditEventPublisher publisher; @BeforeAll public void init() { diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index 48df98fcb7..88eaec0be6 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -58,7 +58,7 @@ public class QuarkusAuditUserTaskInstanceServiceTest { @Inject - private DataAuditEventPublisher publisher; + DataAuditEventPublisher publisher; @BeforeAll public void init() { diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java index d53f110f8e..fa971ca9be 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java @@ -44,7 +44,7 @@ public class QuarkusEmbeddedJPADataAuditTest { private static final Logger LOGGER = LoggerFactory.getLogger(QuarkusEmbeddedJPADataAuditTest.class); - @Inject + @Inject EventPublisher eventPublisher; @Test diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties index c5459df9b5..24a1f9d8fb 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties @@ -3,22 +3,7 @@ quarkus.datasource.username=hibernate quarkus.datasource.password=hibernate quarkus.datasource.jdbc.url=jdbc:h2:mem:test -quarkus.hibernate-orm.enabled=true quarkus.hibernate-orm.database.generation=create-drop -quarkus.hibernate-orm.packages=org.kie.kogito.app.audit.jpa.model -quarkus.hibernate-orm.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer -mp.messaging.incoming.kogito-processinstances-events.group.id=data-audit -mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer -mp.messaging.incoming.kogito-usertaskinstances-events.group.id=data-audit - -mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer -mp.messaging.incoming.kogito-jobs-events.group.id=data-audit - -quarkus.kafka.bootstrap-servers=localhost:9092 diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml new file mode 100644 index 0000000000..f5b8cb4695 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + data-audit + org.kie.kogito + 2.0.0-SNAPSHOT + + + + kogito-addons-data-audit-jpa-springboot-subsystem + + + kogito-addons-data-audit-jpa-springboot-subsystem + A simple kogito-addons-data-audit-jpa-springboot-subsystem. + + + + UTF-8 + + + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.slf4j + slf4j-api + + + + org.springframework.boot + spring-boot-starter + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-web + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-data-jpa + ${version.org.springframework.boot} + + + org.springframework.kafka + spring-kafka + 2.8.4 + + + + org.springframework.boot + spring-boot-starter-test + ${version.org.springframework.boot} + test + + + io.rest-assured + rest-assured + test + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java similarity index 92% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java rename to data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java index 3bac949d0a..c59d5385b7 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java @@ -21,7 +21,6 @@ import javax.persistence.EntityManager; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.app.audit.jpa.JPADataAuditStore; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; import org.kie.kogito.jobs.service.api.Job; @@ -39,38 +38,36 @@ import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; @Service -@KafkaListener(topics = { KOGITO_PROCESSINSTANCES_EVENTS, KOGITO_USERTASKINSTANCES_EVENTS, KOGITO_JOBS_EVENTS}, groupId = "data-audit", clientIdPrefix = "data-audit-events") +@KafkaListener(topics = { KOGITO_PROCESSINSTANCES_EVENTS, KOGITO_USERTASKINSTANCES_EVENTS, KOGITO_JOBS_EVENTS }, groupId = "data-audit", clientIdPrefix = "data-audit-events") public class SpringBootDataAuditMessagingEventConsumer { private final Logger LOGGER = LoggerFactory.getLogger(SpringBootDataAuditMessagingEventConsumer.class); private DataAuditStoreProxyService proxy; - @Autowired EntityManager entityManager; - - + public SpringBootDataAuditMessagingEventConsumer() { proxy = DataAuditStoreProxyService.newAuditStoreService(); } - + @KafkaHandler public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), event); + proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), event); } - + @KafkaHandler public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), event); + proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), event); } - + @KafkaHandler public void onJobInstanceEvent(JobCloudEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); } -} \ No newline at end of file +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml new file mode 100644 index 0000000000..e2a80a41d7 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml @@ -0,0 +1,26 @@ + + + + + kogito-addons-data-audit-jpa-springboot-subsystem + https://maven.apache.org/images/apache-maven-project.png + https://www.apache.org/ + + + + https://maven.apache.org/images/maven-logo-black-on-white.png + https://maven.apache.org/ + + + + org.apache.maven.skins + maven-fluido-skin + 1.7 + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java index a1ee55bb72..d6ed812d4f 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -32,21 +32,19 @@ import com.fasterxml.jackson.databind.JsonNode; -import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; -import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; - import graphql.ExecutionResult; +import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; +import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; @RestController public class GraphQLJPAAuditDataRouteMapping { - private DataAuditQueryService dataAuditQueryService; @Autowired private EntityManager entityManager; - + @PostConstruct public void init() { dataAuditQueryService = DataAuditQueryService.newAuditQuerySerice(); @@ -59,4 +57,4 @@ public Map executeQuery(@RequestBody JsonNode query) { return executionResult.toSpecification(); } -} \ No newline at end of file +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java index 5532a9a801..800c9726ed 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java @@ -18,22 +18,13 @@ */ package org.kie.kogito.app.audit.springboot; -import org.kie.kogito.app.audit.json.JsonUtils; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import com.fasterxml.jackson.databind.ObjectMapper; - @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan public class SpringBootAuditDataConfiguration { - @Bean - ObjectMapper producerObjectMapper() { - return JsonUtils.getObjectMapper(); - } - } diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java index 81041810e4..60115af506 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -75,7 +75,7 @@ public void publish(DataEvent event) { @Override public void publish(JobCloudEvent event) { LOGGER.debug("Processing job event {}", event); - proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); + proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); } } diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java index 26ea449176..65c0c4a0c6 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java @@ -84,8 +84,7 @@ public void testSpringbootEventPublisher() { event.setKogitoBusinessKey(body.getBusinessKey()); eventPublisher.publish(event); - - + Response response = given() .port(randomServerPort) .contentType(ContentType.JSON) diff --git a/data-audit/pom.xml b/data-audit/pom.xml index 1354447e14..ee6b72129c 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -1,24 +1,27 @@ - - - - org.kie.kogito - kogito-apps-build-parent - 2.0.0-SNAPSHOT - ../kogito-apps-build-parent/pom.xml - - 4.0.0 - data-audit - pom - Kogito Apps :: Data Audit - - - kogito-addons-data-audit-common - kogito-addons-data-audit-jpa-common - kogito-addons-data-audit-jpa-quarkus - kogito-addons-data-audit-jpa-springboot - - + + + + org.kie.kogito + kogito-apps-build-parent + 2.0.0-SNAPSHOT + ../kogito-apps-build-parent/pom.xml + + + 4.0.0 + data-audit + pom + + Kogito Apps :: Data Audit + + + kogito-addons-data-audit-common + kogito-addons-data-audit-common-kafka + kogito-addons-data-audit-jpa-common + kogito-addons-data-audit-jpa-quarkus + kogito-addons-data-audit-jpa-springboot + kogito-addons-data-audit-jpa-quarkus-subsystem + kogito-addons-data-audit-jpa-springboot-subsystem + + diff --git a/data-index/data-index-common/.gitignore b/data-index/data-index-common/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/data-index/data-index-common/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/ProcessInstanceNodeDataEventMerger.java b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/ProcessInstanceNodeDataEventMerger.java index c3ad9ede1b..da5d9e1339 100644 --- a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/ProcessInstanceNodeDataEventMerger.java +++ b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/ProcessInstanceNodeDataEventMerger.java @@ -36,8 +36,6 @@ import jakarta.enterprise.context.ApplicationScoped; -import static org.kie.kogito.event.process.ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER; -import static org.kie.kogito.event.process.ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT; import static org.kie.kogito.index.DateTimeUtils.toZonedDateTime; @ApplicationScoped @@ -68,10 +66,13 @@ public ProcessInstance merge(ProcessInstance pi, ProcessInstanceDataEvent dat nodeInstance.setName(body.getNodeName()); nodeInstance.setType(body.getNodeType()); switch (body.getEventType()) { - case EVENT_TYPE_ENTER: + case ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER: nodeInstance.setEnter(toZonedDateTime(body.getEventDate())); break; - case EVENT_TYPE_EXIT: + case ProcessInstanceNodeEventBody.EVENT_TYPE_ERROR: + // we do noothing + break; + default: nodeInstance.setExit(toZonedDateTime(body.getEventDate())); if (nodeInstance.getEnter() == null) { diff --git a/kogito-apps-bom/pom.xml b/kogito-apps-bom/pom.xml index 7cacc66f96..17cbc44208 100644 --- a/kogito-apps-bom/pom.xml +++ b/kogito-apps-bom/pom.xml @@ -120,6 +120,11 @@ kogito-addons-data-audit-common ${project.version} + + org.kie.kogito + kogito-addons-data-audit-common-kafka + ${project.version} + org.kie.kogito kogito-addons-data-audit-jpa-common @@ -130,11 +135,21 @@ kogito-addons-data-audit-jpa-quarkus ${project.version} + + org.kie.kogito + kogito-addons-data-audit-jpa-quarkus-subsystem + ${project.version} + org.kie.kogito kogito-addons-data-audit-jpa-springboot ${project.version} + + org.kie.kogito + kogito-addons-data-audit-jpa-springboot-subsystem + ${project.version} + org.kie.kogito From 352fa6aca1b4d28eb11430fab1aa604ad60fd7ae Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 30 Oct 2023 11:30:21 +0100 Subject: [PATCH 06/47] fix deletion of spring boot subsystem --- .../app/audit/jpa/JPADataAuditStore.java | 8 +- .../jpa/model/UserTaskInstanceStateLog.java | 4 +- .../pom.xml | 77 ------------------- ...ngBootDataAuditMessagingEventConsumer.java | 73 ------------------ .../src/site/site.xml | 26 ------- data-audit/pom.xml | 1 - 6 files changed, 5 insertions(+), 184 deletions(-) delete mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java delete mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index 6134c73779..ce52575d40 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -155,13 +155,13 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceSLADataEvent event) { EntityManager entityManager = context.getContext(); - if(event.getData().getNodeDefinitionId() != null) { - + if (event.getData().getNodeDefinitionId() != null) { + ProcessInstanceStateLog log = new ProcessInstanceStateLog(); setProcessCommonAttributes(log, event); - + log.setEventType(ProcessStateLogType.SLA_VIOLATION); - + entityManager.persist(log); } else { ProcessInstanceNodeLog log = new ProcessInstanceNodeLog(); diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java index 09b2912b4a..64e3ee6000 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java @@ -21,8 +21,6 @@ import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -131,4 +129,4 @@ public void setNodeDefinitionId(String nodeDefinitionId) { this.nodeDefinitionId = nodeDefinitionId; } -} \ No newline at end of file +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml deleted file mode 100644 index f5b8cb4695..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - 4.0.0 - - data-audit - org.kie.kogito - 2.0.0-SNAPSHOT - - - - kogito-addons-data-audit-jpa-springboot-subsystem - - - kogito-addons-data-audit-jpa-springboot-subsystem - A simple kogito-addons-data-audit-jpa-springboot-subsystem. - - - - UTF-8 - - - - - org.kie.kogito - kogito-addons-data-audit-jpa-common - - - org.kie.kogito - kogito-addons-data-audit-common - - - org.kie.kogito - kogito-events-core - - - org.slf4j - slf4j-api - - - - org.springframework.boot - spring-boot-starter - ${version.org.springframework.boot} - - - org.springframework.boot - spring-boot-starter-web - ${version.org.springframework.boot} - - - org.springframework.boot - spring-boot-starter-data-jpa - ${version.org.springframework.boot} - - - org.springframework.kafka - spring-kafka - 2.8.4 - - - - org.springframework.boot - spring-boot-starter-test - ${version.org.springframework.boot} - test - - - io.rest-assured - rest-assured - test - - - - - diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java deleted file mode 100644 index c59d5385b7..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootDataAuditMessagingEventConsumer.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * 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.kie.kogito.app.audit.springboot; - -import javax.persistence.EntityManager; - -import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.event.process.ProcessInstanceDataEvent; -import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.annotation.KafkaHandler; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.stereotype.Service; - -import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; -import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; -import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; -import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; - -@Service -@KafkaListener(topics = { KOGITO_PROCESSINSTANCES_EVENTS, KOGITO_USERTASKINSTANCES_EVENTS, KOGITO_JOBS_EVENTS }, groupId = "data-audit", clientIdPrefix = "data-audit-events") -public class SpringBootDataAuditMessagingEventConsumer { - - private final Logger LOGGER = LoggerFactory.getLogger(SpringBootDataAuditMessagingEventConsumer.class); - - private DataAuditStoreProxyService proxy; - - @Autowired - EntityManager entityManager; - - public SpringBootDataAuditMessagingEventConsumer() { - proxy = DataAuditStoreProxyService.newAuditStoreService(); - } - - @KafkaHandler - public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { - LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), event); - } - - @KafkaHandler - public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { - LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), event); - - } - - @KafkaHandler - public void onJobInstanceEvent(JobCloudEvent event) { - LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); - } -} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml b/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml deleted file mode 100644 index e2a80a41d7..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa-springboot-subsystem/src/site/site.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - kogito-addons-data-audit-jpa-springboot-subsystem - https://maven.apache.org/images/apache-maven-project.png - https://www.apache.org/ - - - - https://maven.apache.org/images/maven-logo-black-on-white.png - https://maven.apache.org/ - - - - org.apache.maven.skins - maven-fluido-skin - 1.7 - - - - - - - \ No newline at end of file diff --git a/data-audit/pom.xml b/data-audit/pom.xml index ee6b72129c..f8b442d7a9 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -21,7 +21,6 @@ kogito-addons-data-audit-jpa-quarkus kogito-addons-data-audit-jpa-springboot kogito-addons-data-audit-jpa-quarkus-subsystem - kogito-addons-data-audit-jpa-springboot-subsystem From 414d51adc2cff7eb695a35b25b2847a54627abfc Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Tue, 31 Oct 2023 11:58:54 +0100 Subject: [PATCH 07/47] fix logic in data audit --- .../kogito-addons-data-audit-common/pom.xml | 10 ++-- .../audit/api/DataAuditStoreProxyService.java | 5 ++ .../audit/graphql/GraphQLSchemaManager.java | 7 ++- .../kogito/app/audit/spi/DataAuditStore.java | 3 ++ .../pom.xml | 22 +++++++-- .../app/audit/jpa/JPADataAuditStore.java | 29 +++++++++++ .../app/audit/jpa/model/JobExecutionLog.java | 2 +- .../src/main/resources/META-INF/job-orm.xml | 48 +++++++++---------- .../quarkus/GraphQLJPADataAuditRouter.java | 4 +- .../QuarkusJPADataAuditEventPublisher.java | 9 +++- .../src/main/resources/application.properties | 6 +-- .../app/audit/quarkus/DataAuditTestUtils.java | 2 +- ...arkusAuditUserTaskInstanceServiceTest.java | 6 +-- .../src/test/resources/application.properties | 11 ++++- .../SpringBootJPADataAuditEventPublisher.java | 8 ++++ .../UserTaskInstanceStateEventMerger.java | 4 +- .../data-index-storage-postgresql/.gitignore | 1 + .../stream/EventPublisherJobStreams.java | 29 ++++------- .../stream/EventPublisherJobStreamsTest.java | 5 +- 19 files changed, 138 insertions(+), 73 deletions(-) create mode 100644 data-index/data-index-storage/data-index-storage-postgresql/.gitignore diff --git a/data-audit/kogito-addons-data-audit-common/pom.xml b/data-audit/kogito-addons-data-audit-common/pom.xml index 38ce64472a..c88e5b1905 100644 --- a/data-audit/kogito-addons-data-audit-common/pom.xml +++ b/data-audit/kogito-addons-data-audit-common/pom.xml @@ -1,12 +1,10 @@ 4.0.0 - org.kie.kogito + org.kie.kogito data-audit 2.0.0-SNAPSHOT @@ -32,6 +30,10 @@ org.kie.kogito jobs-service-api + + org.kie.kogito + jobs-service-internal-api + org.slf4j slf4j-api diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java index 40b90707ab..13a34d0a1e 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java @@ -21,6 +21,7 @@ import java.util.ServiceLoader; import org.kie.kogito.app.audit.spi.DataAuditStore; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; @@ -74,6 +75,10 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns public void storeJobDataEvent(DataAuditContext context, JobCloudEvent event) { auditStoreService.storeJobDataEvent(context, event); + } + + public void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent event) { + auditStoreService.storeJobDataEvent(context, event); } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java index 92f084fa98..7d8e66b21f 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java @@ -61,7 +61,10 @@ private GraphQLSchemaManager() { runtimeWiringBuilder.scalar(ExtendedScalars.DateTime); runtimeWiringBuilder.scalar(ExtendedScalars.Json); - ServiceLoader.load(GraphQLSchemaQueryProvider.class).forEach(queryProvider -> { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + classLoader = (classLoader != null) ? classLoader : this.getClass().getClassLoader(); + + ServiceLoader.load(GraphQLSchemaQueryProvider.class, classLoader).forEach(queryProvider -> { for (GraphQLSchemaQuery query : queryProvider.queries()) { runtimeWiringBuilder.type("Query", builder -> builder.dataFetcher(query.name(), query::fetch)); } @@ -72,7 +75,7 @@ private GraphQLSchemaManager() { SchemaGenerator schemaGenerator = new SchemaGenerator(); graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); } catch (IOException e) { - LOGGER.error("could not find data-audit.graphqls", e); + LOGGER.error("could not find or process data-audit.graphqls", e); } } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java index 30fa925131..adf4231d17 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java @@ -19,6 +19,7 @@ package org.kie.kogito.app.audit.spi; import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; import org.kie.kogito.event.process.ProcessInstanceSLADataEvent; @@ -59,4 +60,6 @@ public interface DataAuditStore { void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDataEvent); + void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent event); + } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/kogito-addons-data-audit-jpa-common/pom.xml index b46818db21..4d50970c13 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 org.kie.kogito @@ -9,9 +11,17 @@ kogito-addons-data-audit-jpa-common Kogito Apps :: Data Audit :: JPA Data Audit Persistence Common - + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + org.kie.kogito - kogito-addons-data-audit-common + kogito-addons-data-audit-common com.fasterxml.jackson.core @@ -81,10 +91,12 @@ maven-surefire-plugin - ${project.build.directory}/ObjectStore + + ${project.build.directory}/ObjectStore - org.kie.kogito.app.audit:data-audit-service-tck + + org.kie.kogito.app.audit:data-audit-service-tck diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index ce52575d40..7e0b7c7e20 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -18,6 +18,7 @@ */ package org.kie.kogito.app.audit.jpa; +import java.io.IOException; import java.net.MalformedURLException; import java.sql.Timestamp; import java.util.Date; @@ -44,6 +45,7 @@ import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceVariableLog; import org.kie.kogito.app.audit.jpa.model.UserTaskInstanceVariableLog.VariableType; import org.kie.kogito.app.audit.spi.DataAuditStore; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; @@ -61,11 +63,13 @@ import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; import org.kie.kogito.jobs.service.api.Job; import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.kie.kogito.jobs.service.model.ScheduledJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; public class JPADataAuditStore implements DataAuditStore { @@ -75,6 +79,7 @@ public class JPADataAuditStore implements DataAuditStore { public JPADataAuditStore() { mapper = new ObjectMapper(); + mapper.registerModule(new JavaTimeModule()); } @Override @@ -335,6 +340,30 @@ public void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDa entityManager.persist(log); } + @Override + public void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent jobDataEvent) { + + ScheduledJob job = toObject(ScheduledJob.class, jobDataEvent.getData()); + + JobExecutionLog log = new JobExecutionLog(); + log.setCorrelationId(jobDataEvent.getKogitoProcessInstanceId()); + log.setJobId(job.getId()); + log.setState(job.getStatus().name()); + log.setTimestamp(Timestamp.from(jobDataEvent.getTime().toInstant())); + + EntityManager entityManager = context.getContext(); + entityManager.persist(log); + } + + private T toObject(Class clazz, byte[] bytes) { + try { + return clazz.cast(mapper.readValue(bytes, clazz)); + } catch (IOException e) { + LOGGER.error("could not convert to json string {}", new String(bytes), e); + return null; + } + } + private String toJsonString(Object data) { try { if (data == null) { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java index a20864987d..2dfec64a21 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java @@ -31,7 +31,7 @@ import javax.persistence.TemporalType; @Entity -@Table(name = "JobExecutionHistory") +@Table(name = "JobExecutionLog") @SequenceGenerator(name = "jobExecutionHistoryIdSeq", sequenceName = "JOB_EXECUTION_HISTORY_ID_SEQ") public class JobExecutionLog { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml index 45dd1b3175..34324c2a50 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml @@ -26,8 +26,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state = 'SCHEDULED' @@ -36,8 +36,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.job_id = :jobId @@ -45,7 +45,7 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp - FROM JobExecutionHistory o1 + FROM JobExecutionLog o1 WHERE o1.job_id = :jobId ORDER BY o1.timestamp DESC @@ -54,7 +54,7 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp - FROM JobExecutionHistory o1 + FROM JobExecutionLog o1 WHERE o1.correlation_id = :correlationId ORDER BY o1.timestamp DESC @@ -63,8 +63,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state IN ('SCHEDULED', 'RETRY') @@ -72,8 +72,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state IN ('SCHEDULED') @@ -81,8 +81,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state IN ('RETRY', 'ERROR') @@ -91,8 +91,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL ORDER BY o1.timestamp DESC @@ -101,8 +101,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state = 'EXECUTED' @@ -110,8 +110,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state = 'ERROR' @@ -119,8 +119,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state = 'CANCELED' @@ -129,8 +129,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.state IN (:state) ORDER BY o1.timestamp DESC @@ -139,8 +139,8 @@ SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap - FROM JobExecutionHistory o1 - LEFT JOIN JobExecutionHistory o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + FROM JobExecutionLog o1 + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp WHERE o2.job_id IS NULL AND o1.correlation_id = :correlationId ORDER BY o1.timestamp DESC diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java index f50dfadd86..4405a80d24 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -20,8 +20,8 @@ import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; import org.kie.kogito.app.audit.api.DataAuditQueryService; @@ -45,7 +45,7 @@ public class GraphQLJPADataAuditRouter { GraphQLHandler graphQLHandler; - @Inject + @PersistenceContext(unitName = "DataAuditPU") EntityManager entityManager; @PostConstruct diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index 73f5438171..6b9cbb0cd7 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -30,6 +30,7 @@ import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.event.DataEvent; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; import org.kie.kogito.jobs.service.api.Job; @@ -44,7 +45,7 @@ public class QuarkusJPADataAuditEventPublisher implements DataAuditEventPublishe private DataAuditStoreProxyService proxy; - @PersistenceContext + @PersistenceContext(unitName = "DataAuditPU") EntityManager entityManager; public QuarkusJPADataAuditEventPublisher() { @@ -69,9 +70,13 @@ public void publish(DataEvent event) { LOGGER.debug("Processing user task instacne event {}", event); proxy.storeUserTaskInstanceDataEvent(DataAuditContext.newDataAuditContext(entityManager), (UserTaskInstanceDataEvent) event); return; + } else if (event instanceof JobInstanceDataEvent) { + LOGGER.info("Processing job instance event {}", event); + proxy.storeJobDataEvent(DataAuditContext.newDataAuditContext(entityManager), (JobInstanceDataEvent) event); + return; } - LOGGER.debug("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); + LOGGER.info("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); } @Override diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties index b8b3b05ce2..0b034e5aa0 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties @@ -1,3 +1,3 @@ -quarkus.hibernate-orm.enabled=true -quarkus.hibernate-orm.packages=org.kie.kogito.app.audit.jpa.model -quarkus.hibernate-orm.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml \ No newline at end of file +quarkus.hibernate-orm.DataAuditPU.enabled=true +quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model +quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index 87be21997d..2dd0d1a66c 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -254,7 +254,7 @@ private static Map extractProcessInstnaceEventMetadata(ProcessIn // user task instance stuff public static UserTaskInstanceStateDataEvent newUserTaskInstanceStateEvent( - String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String userTaskName, Integer eventType, + String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String userTaskName, String eventType, String userTaskDescription, String userTaskPriority, String userTaskReferenceName, String state, String actualOwner, String processInstanceId) { String processId = UUID.randomUUID().toString(); diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index 88eaec0be6..6f7c3ee1bc 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -64,10 +64,10 @@ public class QuarkusAuditUserTaskInstanceServiceTest { public void init() { UserTaskInstanceStateDataEvent uEvent; - uEvent = newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Ready", "owner", "1"); + uEvent = newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", "1", "utd1", "utp1", "utrn1", "Ready", "owner", "1"); publisher.publish(uEvent); - uEvent = newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", 1, "utd1", "utp1", "utrn1", "Claimed", "owner", "1"); + uEvent = newUserTaskInstanceStateEvent("eventUser", "utd1", "1", "utn1", "1", "utd1", "utp1", "utrn1", "Claimed", "owner", "1"); publisher.publish(uEvent); UserTaskInstanceVariableDataEvent vEvent; @@ -107,7 +107,7 @@ public void init() { deadlineEvent = newUserTaskInstanceDeadlineEvent(uEvent, "eventUser", Collections.singletonMap("input1", "value1"), Collections.singletonMap("notification1", "notificationValue")); publisher.publish(deadlineEvent); - uEvent = newUserTaskInstanceStateEvent("eventUser", "utd2", "2", "utn2", 1, "utd2", "utp2", "utrn2", "Claimed", "owner", "1"); + uEvent = newUserTaskInstanceStateEvent("eventUser", "utd2", "2", "utn2", "1", "utd2", "utp2", "utrn2", "Claimed", "owner", "1"); publisher.publish(uEvent); } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties index 24a1f9d8fb..bce897bab3 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties @@ -3,7 +3,16 @@ quarkus.datasource.username=hibernate quarkus.datasource.password=hibernate quarkus.datasource.jdbc.url=jdbc:h2:mem:test -quarkus.hibernate-orm.database.generation=create-drop +quarkus.datasource.data-audit.db-kind=h2 +quarkus.datasource.data-audit.username=hibernate +quarkus.datasource.data-audit.password=hibernate +quarkus.datasource.data-audit.jdbc.url=jdbc:h2:mem:test + +quarkus.hibernate-orm.DataAuditPU.enabled=true +quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model +quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +quarkus.hibernate-orm.DataAuditPU.database.generation=create-drop +quarkus.hibernate-orm.DataAuditPU.datasource=data-audit diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java index 60115af506..98334806ec 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -22,9 +22,11 @@ import javax.persistence.EntityManager; +import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.event.DataEvent; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; import org.kie.kogito.jobs.service.api.Job; @@ -32,6 +34,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +48,7 @@ public class SpringBootJPADataAuditEventPublisher implements DataAuditEventPubli private DataAuditStoreProxyService proxy; @Autowired + @Qualifier("DataAuditPU") EntityManager entityManager; public SpringBootJPADataAuditEventPublisher() { @@ -67,6 +71,10 @@ public void publish(DataEvent event) { LOGGER.debug("Processing user task instacne event {}", event); proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), (UserTaskInstanceDataEvent) event); return; + } else if (event instanceof JobInstanceDataEvent) { + LOGGER.info("Processing job instance event {}", event); + proxy.storeJobDataEvent(DataAuditContext.newDataAuditContext(entityManager), (JobInstanceDataEvent) event); + return; } LOGGER.debug("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); diff --git a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java index 8689b1fd85..9802bf30d5 100644 --- a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java +++ b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java @@ -55,9 +55,9 @@ public UserTaskInstance merge(UserTaskInstance task, UserTaskInstanceDataEvent eventPublisher; private final ObjectMapper objectMapper; @@ -64,10 +67,7 @@ public EventPublisherJobStreams(@ConfigProperty(name = "kogito.service.url", def Instance eventPublishers, ObjectMapper objectMapper) { this.url = url; - eventPublisher = eventPublishers.stream() - .filter(publisher -> publisher.getClass().getName().startsWith(DATA_INDEX_EVENT_PUBLISHER)) - .findFirst() - .orElse(null); + eventPublisher = eventPublishers.stream().collect(Collectors.toList()); this.objectMapper = objectMapper; } @@ -83,7 +83,7 @@ public void onJobStatusChange(JobDetails jobDetails) { } catch (Exception e) { throw new JobsServiceException("It was not possible to serialize scheduledJob to json: " + scheduledJob, e); } - EventPublisherJobDataEvent event = new EventPublisherJobDataEvent(JOB_EVENT_TYPE, + JobInstanceDataEvent event = new JobInstanceDataEvent(JOB_EVENT_TYPE, url + RestApiConstants.JOBS_PATH, jsonContent, scheduledJob.getProcessInstanceId(), @@ -92,24 +92,11 @@ public void onJobStatusChange(JobDetails jobDetails) { scheduledJob.getRootProcessId(), null); try { - eventPublisher.publish(event); + eventPublisher.forEach(e -> e.publish(event)); } catch (Exception e) { LOGGER.error("Job status change propagation has failed at eventPublisher: " + eventPublisher.getClass() + " execution.", e); } } } - public static class EventPublisherJobDataEvent extends AbstractDataEvent { - public EventPublisherJobDataEvent(String type, - String source, - byte[] data, - String kogitoProcessInstanceId, - String kogitoRootProcessInstanceId, - String kogitoProcessId, - String kogitoRootProcessId, - String kogitoIdentity) { - super(type, source, data, kogitoProcessInstanceId, kogitoRootProcessInstanceId, kogitoProcessId, - kogitoRootProcessId, null, kogitoIdentity); - } - } } diff --git a/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs-service-embedded/runtime/src/test/java/org/kie/kogito/addons/quarkus/jobs/service/embedded/stream/EventPublisherJobStreamsTest.java b/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs-service-embedded/runtime/src/test/java/org/kie/kogito/addons/quarkus/jobs/service/embedded/stream/EventPublisherJobStreamsTest.java index d66b6910b1..3fec2fee68 100644 --- a/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs-service-embedded/runtime/src/test/java/org/kie/kogito/addons/quarkus/jobs/service/embedded/stream/EventPublisherJobStreamsTest.java +++ b/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs-service-embedded/runtime/src/test/java/org/kie/kogito/addons/quarkus/jobs/service/embedded/stream/EventPublisherJobStreamsTest.java @@ -26,6 +26,7 @@ import org.junit.jupiter.api.Test; import org.kie.kogito.event.EventPublisher; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.index.addon.DataIndexEventPublisherMock; import org.kie.kogito.jobs.service.api.recipient.http.HttpRecipient; import org.kie.kogito.jobs.service.model.JobDetails; @@ -87,7 +88,7 @@ class EventPublisherJobStreamsTest { @Test void onJobStatusChange() throws Exception { - ArgumentCaptor eventCaptor = ArgumentCaptor.forClass(EventPublisherJobStreams.EventPublisherJobDataEvent.class); + ArgumentCaptor eventCaptor = ArgumentCaptor.forClass(JobInstanceDataEvent.class); DataIndexEventPublisherMock eventPublisher = spy(new DataIndexEventPublisherMock()); Instance eventPublisherInstance = mock(Instance.class); Stream eventPublishers = Arrays.stream(new EventPublisher[] { eventPublisher }); @@ -104,7 +105,7 @@ void onJobStatusChange() throws Exception { verify(eventPublisher).publish(eventCaptor.capture()); verify(eventPublisher, never()).publish(anyCollection()); - EventPublisherJobStreams.EventPublisherJobDataEvent event = eventCaptor.getValue(); + JobInstanceDataEvent event = eventCaptor.getValue(); assertThat(event).isNotNull(); assertThat(event.getSpecVersion()).hasToString("1.0"); From b9f6933bcb6f3bde4e9d976c91dc4820aee4bc3e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 09:04:52 +0100 Subject: [PATCH 08/47] fix tests --- .../graphql/type/ProcessInstanceNodeTO.java | 35 +------------ .../resources/META-INF/data-audit.graphqls | 2 - .../app/audit/jpa/JPADataAuditStore.java | 49 +++++++++++++++++-- .../jpa/model/ProcessInstanceStateLog.java | 6 ++- .../main/resources/META-INF/process-orm.xml | 6 --- ...uarkusAuditProcessInstanceServiceTest.java | 2 +- 6 files changed, 51 insertions(+), 49 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java index 9f6bb70aef..9d4bb8f3b6 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java @@ -45,14 +45,8 @@ public class ProcessInstanceNodeTO { private String eventType; - private String nodeContainerId; - - private String nodeDefinitionId; - private String nodeType; - private String nodeContainerInstanceId; - private String nodeName; private String nodeInstanceId; @@ -67,7 +61,7 @@ public class ProcessInstanceNodeTO { public ProcessInstanceNodeTO(String eventId, Date eventDate, String processType, String processId, String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, - String businessKey, String eventType, String nodeContainerId, String nodeDefinitionId, String nodeType, String nodeContainerInstanceId, + String businessKey, String eventType, String nodeType, String nodeName, String nodeInstanceId, String connection, String workItemId, Date slaDueDate, String eventData) { this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); @@ -80,10 +74,7 @@ public ProcessInstanceNodeTO(String eventId, Date eventDate, String processType, this.processInstanceId = processInstanceId; this.businessKey = businessKey; this.eventType = eventType; - this.nodeContainerId = nodeContainerId; - this.nodeDefinitionId = nodeDefinitionId; this.nodeType = nodeType; - this.nodeContainerInstanceId = nodeContainerInstanceId; this.nodeName = nodeName; this.nodeInstanceId = nodeInstanceId; this.connection = connection; @@ -182,22 +173,6 @@ public void setEventType(String eventType) { this.eventType = eventType; } - public String getNodeContainerId() { - return nodeContainerId; - } - - public void setNodeContainerId(String nodeContainerId) { - this.nodeContainerId = nodeContainerId; - } - - public String getNodeDefinitionId() { - return nodeDefinitionId; - } - - public void setNodeDefinitionId(String nodeDefinitionId) { - this.nodeDefinitionId = nodeDefinitionId; - } - public String getNodeType() { return nodeType; } @@ -206,14 +181,6 @@ public void setNodeType(String nodeType) { this.nodeType = nodeType; } - public String getNodeContainerInstanceId() { - return nodeContainerInstanceId; - } - - public void setNodeContainerInstanceId(String nodeContainerInstanceId) { - this.nodeContainerInstanceId = nodeContainerInstanceId; - } - public String getNodeName() { return nodeName; } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls index 69d2f33fc1..a4c8dfcadd 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls @@ -44,8 +44,6 @@ type ProcessInstanceNodeLog { processInstanceId : String businessKey : String eventType : String - nodeContainerId : String - nodeDefinitionId : String nodeType : String nodeName : String nodeInstanceId : String diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index 7e0b7c7e20..78e742f61d 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -27,6 +27,7 @@ import javax.persistence.EntityManager; +import org.kie.api.runtime.process.ProcessInstance; import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.jpa.model.AbstractProcessInstanceLog; import org.kie.kogito.app.audit.jpa.model.AbstractUserTaskInstanceLog; @@ -61,6 +62,7 @@ import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; +import org.kie.kogito.internal.process.runtime.KogitoProcessInstance; import org.kie.kogito.jobs.service.api.Job; import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import org.kie.kogito.jobs.service.model.ScheduledJob; @@ -87,20 +89,37 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta ProcessInstanceStateLog log = new ProcessInstanceStateLog(); setProcessCommonAttributes(log, event); - log.setState(event.getKogitoProcessInstanceState()); + log.setState(String.valueOf(event.getData().getState())); log.setRoles(event.getData().getRoles()); EntityManager entityManager = context.getContext(); - switch (event.getData().getEventType()) { - case ProcessInstanceStateEventBody.EVENT_TYPE_STARTED: - log.setEventType(ProcessStateLogType.STARTED); + switch(event.getData().getState()) { + case KogitoProcessInstance.STATE_ACTIVE: + log.setEventType(ProcessStateLogType.ACTIVE); + entityManager.persist(log); + break; + case KogitoProcessInstance.STATE_ABORTED: + log.setEventType(ProcessStateLogType.ABORTED); entityManager.persist(log); break; - case ProcessInstanceStateEventBody.EVENT_TYPE_ENDED: + case KogitoProcessInstance.STATE_COMPLETED: log.setEventType(ProcessStateLogType.COMPLETED); entityManager.persist(log); break; + case KogitoProcessInstance.STATE_PENDING: + log.setEventType(ProcessStateLogType.PENDING); + entityManager.persist(log); + break; + case KogitoProcessInstance.STATE_SUSPENDED: + log.setEventType(ProcessStateLogType.SUSPENDING); + entityManager.persist(log); + break; + case KogitoProcessInstance.STATE_ERROR: + log.setEventType(ProcessStateLogType.ERROR); + entityManager.persist(log); + break; } + } @Override @@ -343,6 +362,24 @@ public void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDa @Override public void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent jobDataEvent) { + // assertHasField(jsonNode, "id", JOB_ID); + // assertHasField(jsonNode, "expirationTime", EXPIRATION_TIME.toString()); + // assertHasField(jsonNode, "priority", Integer.toString(PRIORITY)); + // assertHasField(jsonNode, "callbackEndpoint", RECIPIENT_URL); + // assertHasField(jsonNode, "processInstanceId", PROCESS_INSTANCE_ID); + // assertHasField(jsonNode, "processId", PROCESS_ID); + // assertHasField(jsonNode, "rootProcessInstanceId", ROOT_PROCESS_INSTANCE_ID); + // assertHasField(jsonNode, "rootProcessId", ROOT_PROCESS_ID); + // assertHasField(jsonNode, "nodeInstanceId", NODE_INSTANCE_ID); + // assertHasField(jsonNode, "repeatInterval", Long.toString(PERIOD)); + // assertHasField(jsonNode, "repeatLimit", Integer.toString(REPEAT_COUNT)); + // assertHasField(jsonNode, "scheduledId", SCHEDULE_ID); + // assertHasField(jsonNode, "retries", Integer.toString(RETRIES)); + // assertHasField(jsonNode, "status", STATUS.name()); + // assertHasField(jsonNode, "lastUpdate", LAST_UPDATE.toString()); + // assertHasField(jsonNode, "executionCounter", Integer.toString(EXECUTION_COUNTER)); + // assertHasField(jsonNode, "executionResponse", null); + ScheduledJob job = toObject(ScheduledJob.class, jobDataEvent.getData()); JobExecutionLog log = new JobExecutionLog(); @@ -350,6 +387,8 @@ public void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent job log.setJobId(job.getId()); log.setState(job.getStatus().name()); log.setTimestamp(Timestamp.from(jobDataEvent.getTime().toInstant())); + log.setRetry(job.getRetries() != null ? job.getRetries().toString() : null); + log.setSchedule(job.getExpirationTime() != null ? Timestamp.from(jobDataEvent.getTime().toInstant()).toString() : null); EntityManager entityManager = context.getContext(); entityManager.persist(log); diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java index 820222365e..086d1f32af 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java @@ -44,10 +44,14 @@ public class ProcessInstanceStateLog extends AbstractProcessInstanceLog { public enum ProcessStateLogType { + ACTIVE, STARTED, COMPLETED, ABORTED, - SLA_VIOLATION + SLA_VIOLATION, + PENDING, + SUSPENDING, + ERROR } @Id diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml index cd83d5aca9..58f5c834ab 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml @@ -53,10 +53,7 @@ log.process_instance_id as processInstanceId, log.business_key as businessKey, log.event_type as eventType, - log.node_container_id as nodeContainerId, - log.node_definition_id as nodeDefinitionId, log.node_type as nodeType, - log.node_container_instance_id as nodeContainerInstanceId, log.node_name as nodeName, log.node_instance_id as nodeInstanceId, log.connection as connection, @@ -170,10 +167,7 @@ - - - diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index 0cd66f0584..c3ab8faae4 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -139,7 +139,7 @@ public void testGetAllProcessInstancesState() { @Test public void testGetAllProcessInstancesNodeByProcessInstanceId() { String query = - "{ GetAllProcessInstancesNodeByProcessInstanceId ( processInstanceId : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, nodeContainerId, nodeDefinitionId, nodeType , nodeName, nodeInstanceId, connection, slaDueDate , eventData } }"; + "{ GetAllProcessInstancesNodeByProcessInstanceId ( processInstanceId : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, nodeType , nodeName, nodeInstanceId, connection, slaDueDate , eventData } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) From 7322597c0506336af3e35089b2943887c93682a5 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 09:36:58 +0100 Subject: [PATCH 09/47] fix json objects in variable values --- .../app/audit/graphql/type/JsonUtil.java | 39 +++++++++++++++++++ .../type/ProcessInstanceVariableTO.java | 10 +++-- .../type/UserTaskInstanceVariableTO.java | 25 +++++++++--- .../resources/META-INF/data-audit.graphqls | 14 ++----- .../app/audit/jpa/JPADataAuditStore.java | 2 +- .../main/resources/META-INF/usertask-orm.xml | 1 + ...arkusAuditUserTaskInstanceServiceTest.java | 24 ++++++++++-- 7 files changed, 91 insertions(+), 24 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java new file mode 100644 index 0000000000..5b07e6c708 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.NullNode; + +public class JsonUtil { + + public static JsonNode toJsonNode(String jsonString) { + try { + ObjectMapper mapper = new ObjectMapper(); + JsonFactory factory = mapper.getFactory(); + JsonParser parser = factory.createParser(jsonString); + return mapper.readTree(parser); + } catch (Exception e) { + return NullNode.getInstance(); + } + } +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java index 29414f1b15..4df0991a42 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java @@ -22,6 +22,8 @@ import java.time.ZoneId; import java.util.Date; +import com.fasterxml.jackson.databind.JsonNode; + public class ProcessInstanceVariableTO { private String eventId; @@ -47,7 +49,7 @@ public class ProcessInstanceVariableTO { private String variableName; - private String variableValue; + private JsonNode variableValue; public ProcessInstanceVariableTO(String eventId, Date eventDate, String processType, String processId, String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, @@ -64,7 +66,7 @@ public ProcessInstanceVariableTO(String eventId, Date eventDate, String processT this.businessKey = businessKey; this.variableId = variableId; this.variableName = variableName; - this.variableValue = variableValue; + this.variableValue = JsonUtil.toJsonNode(variableValue); } public String getEventId() { @@ -163,11 +165,11 @@ public void setVariableName(String variableName) { this.variableName = variableName; } - public String getVariableValue() { + public JsonNode getVariableValue() { return variableValue; } - public void setVariableValue(String variableValue) { + public void setVariableValue(JsonNode variableValue) { this.variableValue = variableValue; } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java index b2f691619c..d110c4f27c 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java @@ -23,6 +23,10 @@ import java.time.ZoneId; import java.util.Date; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + public class UserTaskInstanceVariableTO { private String eventId; @@ -41,10 +45,12 @@ public class UserTaskInstanceVariableTO { private String variableName; - private String variableValue; + private JsonNode variableValue; + + private String variableType; public UserTaskInstanceVariableTO(String eventId, Date eventDate, String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, - String variableId, String variableName, String variableValue) { + String variableId, String variableName, String variableValue, String variableType) { this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); this.userTaskDefinitionId = userTaskDefinitionId; @@ -53,7 +59,8 @@ public UserTaskInstanceVariableTO(String eventId, Date eventDate, String eventUs this.businessKey = businessKey; this.variableId = variableId; this.variableName = variableName; - this.variableValue = variableValue; + this.variableType = variableType; + this.variableValue = JsonUtil.toJsonNode(variableValue); } public String getEventId() { @@ -120,12 +127,20 @@ public void setVariableName(String variableName) { this.variableName = variableName; } - public String getVariableValue() { + public JsonNode getVariableValue() { return variableValue; } - public void setVariableValue(String variableValue) { + public void setVariableValue(JsonNode variableValue) { this.variableValue = variableValue; } + public String getVariableType() { + return variableType; + } + + public void setVariableType(String variableType) { + this.variableType = variableType; + } + } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls index a4c8dfcadd..0f7ebde802 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls @@ -81,7 +81,7 @@ type ProcessInstanceVariableLog { businessKey : String variableId : String variableName : String - variableValue : String + variableValue : JSON } type UserTaskInstanceStateLog { @@ -164,7 +164,7 @@ type UserTaskInstanceVariableLog { businessKey : String variableId : String variableName : String - variableValue : String + variableValue : JSON variableType : String } @@ -182,15 +182,12 @@ type Query { GetAllCancelledJobs : [JobExecutionLog] GetAllJobsByState (state : [String]!) : [JobExecutionLog] GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] - GetAllProcessInstancesState : [ProcessInstanceStateLog] - GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceNodeLog] + GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceNodeLog] GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceErrorLog] GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!) : [ProcessInstanceVariableLog] - - - + GetAllUserTaskInstanceState : [UserTaskInstanceStateLog] GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!) : [UserTaskInstanceAssignmentLog] GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!) : [UserTaskInstanceAttachmentLog] @@ -198,6 +195,3 @@ type Query { GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!) : [UserTaskInstanceDeadlineLog] GetAllUserTaskInstanceVariable (userTaskInstanceId : String!) : [UserTaskInstanceVariableLog] } - - - diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index 78e742f61d..b04d584f3c 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -411,7 +411,7 @@ private String toJsonString(Object data) { return mapper.writeValueAsString(data); } catch (JsonProcessingException e) { - LOGGER.error("could not convert to json string {}", data); + LOGGER.error("could not convert to json string {}", data, e); return null; } } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml index 5ab39a971c..7b685d0b5e 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml @@ -162,6 +162,7 @@ + diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index 6f7c3ee1bc..fdffefba70 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -60,6 +60,22 @@ public class QuarkusAuditUserTaskInstanceServiceTest { @Inject DataAuditEventPublisher publisher; + class Pojo { + public Pojo(Integer value) { + this.value = value; + } + + Integer value; + + public Integer getValue() { + return value; + } + + public void setValue(Integer value) { + this.value = value; + } + } + @BeforeAll public void init() { @@ -71,16 +87,16 @@ public void init() { publisher.publish(uEvent); UserTaskInstanceVariableDataEvent vEvent; - vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 1); + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", new Pojo(1)); publisher.publish(vEvent); - vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", 2); + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId1", "varName1", "INPUT", new Pojo(2)); publisher.publish(vEvent); - vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId2", "varName2", "OUTPUT", 1); + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId2", "varName2", "OUTPUT", new Pojo(1)); publisher.publish(vEvent); - vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId3", "varName3", "OUTPUT", 1); + vEvent = newUserTaskInstanceVariableEvent(uEvent, "eventUser", "varId3", "varName3", "OUTPUT", new Pojo(1)); publisher.publish(vEvent); UserTaskInstanceAssignmentDataEvent aEvent; From 56683025c3d028027b9c97eccfd562c528fa4670 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 09:59:30 +0100 Subject: [PATCH 10/47] added pagination --- .../resources/META-INF/data-audit.graphqls | 44 +++++++++++-------- .../audit/jpa/queries/JPAAbstractQuery.java | 17 +++++-- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls index 0f7ebde802..abf108edf5 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls @@ -169,29 +169,35 @@ type UserTaskInstanceVariableLog { } type Query { - GetAllScheduledJobs : [JobExecutionLog] + GetAllScheduledJobs (pagination: Pagination): [JobExecutionLog] GetJobById (jobId : String!) : [JobExecutionLog] GetJobHistoryById (jobId : String!) : [JobExecutionLog] GetJobHistoryByCorrelationId (correlationId : String!) : [JobExecutionLog] - GetAllPendingJobs : [JobExecutionLog] - GetAllEligibleJobsForExecution : [JobExecutionLog] - GetAllEligibleJobsForRetry : [JobExecutionLog] - GetAllJobs : [JobExecutionLog] - GetAllCompletedJobs : [JobExecutionLog] - GetAllInErrorJobs : [JobExecutionLog] - GetAllCancelledJobs : [JobExecutionLog] - GetAllJobsByState (state : [String]!) : [JobExecutionLog] + GetAllPendingJobs (pagination: Pagination): [JobExecutionLog] + GetAllEligibleJobsForExecution (pagination: Pagination) : [JobExecutionLog] + GetAllEligibleJobsForRetry (pagination: Pagination) : [JobExecutionLog] + GetAllJobs (pagination: Pagination) : [JobExecutionLog] + GetAllCompletedJobs (pagination: Pagination) : [JobExecutionLog] + GetAllInErrorJobs (pagination: Pagination) : [JobExecutionLog] + GetAllCancelledJobs (pagination: Pagination) : [JobExecutionLog] + GetAllJobsByState (state : [String]!, pagination: Pagination) : [JobExecutionLog] GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] - GetAllProcessInstancesState : [ProcessInstanceStateLog] - GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceNodeLog] - GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!) : [ProcessInstanceErrorLog] - GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!) : [ProcessInstanceVariableLog] + GetAllProcessInstancesState (pagination: Pagination): [ProcessInstanceStateLog] + GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] + GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] + GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] - GetAllUserTaskInstanceState : [UserTaskInstanceStateLog] - GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!) : [UserTaskInstanceAssignmentLog] - GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!) : [UserTaskInstanceAttachmentLog] - GetAllUserTaskInstanceComment (userTaskInstanceId : String!) : [UserTaskInstanceCommentLog] - GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!) : [UserTaskInstanceDeadlineLog] - GetAllUserTaskInstanceVariable (userTaskInstanceId : String!) : [UserTaskInstanceVariableLog] + GetAllUserTaskInstanceState (pagination: Pagination) : [UserTaskInstanceStateLog] + GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAssignmentLog] + GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAttachmentLog] + GetAllUserTaskInstanceComment (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] + GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] + GetAllUserTaskInstanceVariable (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] +} + + +input Pagination { + limit: Int + offset: Int } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java index 13819d1c95..84e48e3733 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -18,6 +18,7 @@ */ package org.kie.kogito.app.audit.jpa.queries; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -32,15 +33,25 @@ protected List executeWithEntityManager(EntityManager entityManager, Stri } protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query, Class clazz) { - return entityManager.createNamedQuery(query, clazz).getResultList(); - } protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Class clazz, Map arguments) { + Map parameters = new HashMap<>(arguments); + @SuppressWarnings("unchecked") + Map pagination = (Map) parameters.remove("pagination"); TypedQuery typedQuery = entityManager.createNamedQuery(query, clazz); - arguments.forEach(typedQuery::setParameter); + parameters.forEach(typedQuery::setParameter); + if (pagination != null) { + if(pagination.get("limit") != null) { + typedQuery.setMaxResults((Integer) pagination.get("limit")); + } + if(pagination.get("offset") != null) { + typedQuery.setFirstResult((Integer) pagination.get("offset")); + } + } + return typedQuery.getResultList(); } From d264b2f9b6f08d4d5962ad00189bec5e36cf9a82 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 11:41:59 +0100 Subject: [PATCH 11/47] fix roles in process state query --- .../graphql/type/ProcessInstanceStateTO.java | 11 +- .../resources/META-INF/data-audit.graphqls | 238 +++++++++--------- .../jpa/model/ProcessInstanceStateLog.java | 2 +- .../app/audit/jpa/queries/DataMapper.java | 7 + .../audit/jpa/queries/JPAAbstractQuery.java | 25 ++ .../jpa/queries/JPAComplexNamedQuery.java | 61 +++++ ...QLSchemaProcessInstancesQueryProvider.java | 48 +++- .../jpa/queries/JPASimpleNamedQuery.java | 3 +- .../main/resources/META-INF/process-orm.xml | 135 +++++----- .../app/audit/quarkus/DataAuditTestUtils.java | 2 +- ...uarkusAuditProcessInstanceServiceTest.java | 2 +- 11 files changed, 347 insertions(+), 187 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java index c6f5ec910f..4d7d2b794b 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java @@ -21,6 +21,8 @@ import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Date; +import java.util.HashSet; +import java.util.Set; public class ProcessInstanceStateTO { @@ -52,13 +54,16 @@ public class ProcessInstanceStateTO { private OffsetDateTime slaDueDate; + private Set roles; + public ProcessInstanceStateTO() { - + roles = new HashSet<>(); } public ProcessInstanceStateTO(String eventId, Date eventDate, String processType, String processId, String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, String businessKey, String eventType, String outcome, String state, Date slaDueDate) { + this(); this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); this.processType = processType; @@ -189,4 +194,8 @@ public void setSlaDueDate(OffsetDateTime slaDueDate) { this.slaDueDate = slaDueDate; } + public void addRole(String role) { + this.roles.add(role); + } + } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls index abf108edf5..6ba2bb3aa8 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls @@ -16,56 +16,57 @@ type JobExecutionLog { } type ProcessInstanceStateLog { - eventId : String! - eventDate : DateTime - processType : String - processId : String - processVersion : String - parentProcessInstanceId : String - rootProcessId : String - rootProcessInstanceId : String - processInstanceId : String - businessKey : String - eventType : String - outcome : String - state : String - slaDueDate : DateTime + eventId : String! + eventDate : DateTime + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + eventType : String + outcome : String + state : String + slaDueDate : DateTime + roles : [String] } type ProcessInstanceNodeLog { eventId : String! eventDate : DateTime - processType : String - processId : String - processVersion : String - parentProcessInstanceId : String - rootProcessId : String - rootProcessInstanceId : String - processInstanceId : String - businessKey : String - eventType : String - nodeType : String - nodeName : String - nodeInstanceId : String - connection : String - slaDueDate : DateTime - eventData : String + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + eventType : String + nodeType : String + nodeName : String + nodeInstanceId : String + connection : String + slaDueDate : DateTime + eventData : String } type ProcessInstanceErrorLog { eventId : String! - eventDate : DateTime - processType : String - processId : String - processVersion : String - parentProcessInstanceId : String - rootProcessId : String - rootProcessInstanceId : String - processInstanceId : String - businessKey : String - errorMessage : String - nodeDefinitionId : String - nodeInstanceId : String + eventDate : DateTime + processType : String + processId : String + processVersion : String + parentProcessInstanceId : String + rootProcessId : String + rootProcessInstanceId : String + processInstanceId : String + businessKey : String + errorMessage : String + nodeDefinitionId : String + nodeInstanceId : String } type ProcessInstanceVariableLog { @@ -80,62 +81,62 @@ type ProcessInstanceVariableLog { processInstanceId : String businessKey : String variableId : String - variableName : String - variableValue : JSON + variableName : String + variableValue : JSON } type UserTaskInstanceStateLog { - eventId : String! - eventDate : DateTime - userTaskDefinitionId : String - userTaskInstanceId : String - processInstanceId : String - businessKey : String - taskId : String - name : String - description : String - actualUser : String - state : String - nodeDefitionId : String - nodeInstanceId : String - eventType : String + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + taskId : String + name : String + description : String + actualUser : String + state : String + nodeDefitionId : String + nodeInstanceId : String + eventType : String } type UserTaskInstanceAssignmentLog { - eventId : String! - eventDate : DateTime - userTaskDefinitionId : String - userTaskInstanceId : String - processInstanceId : String - businessKey : String - userTaskName : String - assignmentType : String - users : [String] + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + userTaskName : String + assignmentType : String + users : [String] } type UserTaskInstanceAttachmentLog { - eventId : String! - eventDate : DateTime - userTaskDefinitionId : String - userTaskInstanceId : String - processInstanceId : String - businessKey : String - attachmentId : String - attachmentName : String - attachmentURI : String - eventType : Int + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + attachmentId : String + attachmentName : String + attachmentURI : String + eventType : Int } type UserTaskInstanceCommentLog { - eventId : String! - eventDate : DateTime - userTaskDefinitionId : String - userTaskInstanceId : String - processInstanceId : String - businessKey : String - commentId : String - commentContent : String - eventType : Int + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + commentId : String + commentContent : String + eventType : Int } @@ -145,34 +146,38 @@ type AttributeKeyValuePair { } type UserTaskInstanceDeadlineLog { - eventId : String! - eventDate : DateTime - userTaskDefinitionId : String - userTaskInstanceId : String - processInstanceId : String - businessKey : String - eventType : String - notification : [AttributeKeyValuePair] + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + eventType : String + notification : [AttributeKeyValuePair] } type UserTaskInstanceVariableLog { - eventId : String! - eventDate : DateTime - userTaskDefinitionId : String - userTaskInstanceId : String - processInstanceId : String - businessKey : String - variableId : String - variableName : String - variableValue : JSON - variableType : String + eventId : String! + eventDate : DateTime + userTaskDefinitionId : String + userTaskInstanceId : String + processInstanceId : String + businessKey : String + variableId : String + variableName : String + variableValue : JSON + variableType : String } type Query { - GetAllScheduledJobs (pagination: Pagination): [JobExecutionLog] + GetAllScheduledJobs (pagination: Pagination): [JobExecutionLog] + GetJobById (jobId : String!) : [JobExecutionLog] + GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] + GetJobHistoryById (jobId : String!) : [JobExecutionLog] GetJobHistoryByCorrelationId (correlationId : String!) : [JobExecutionLog] + GetAllPendingJobs (pagination: Pagination): [JobExecutionLog] GetAllEligibleJobsForExecution (pagination: Pagination) : [JobExecutionLog] GetAllEligibleJobsForRetry (pagination: Pagination) : [JobExecutionLog] @@ -181,21 +186,20 @@ type Query { GetAllInErrorJobs (pagination: Pagination) : [JobExecutionLog] GetAllCancelledJobs (pagination: Pagination) : [JobExecutionLog] GetAllJobsByState (state : [String]!, pagination: Pagination) : [JobExecutionLog] - GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] - GetAllProcessInstancesState (pagination: Pagination): [ProcessInstanceStateLog] - GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] - GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] - GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] - - GetAllUserTaskInstanceState (pagination: Pagination) : [UserTaskInstanceStateLog] - GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAssignmentLog] - GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAttachmentLog] - GetAllUserTaskInstanceComment (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] - GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] - GetAllUserTaskInstanceVariable (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] -} + GetAllProcessInstancesState (pagination: Pagination): [ProcessInstanceStateLog] + GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] + GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] + GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] + + GetAllUserTaskInstanceState (pagination: Pagination) : [UserTaskInstanceStateLog] + GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAssignmentLog] + GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAttachmentLog] + GetAllUserTaskInstanceComment (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] + GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] + GetAllUserTaskInstanceVariable (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] +} input Pagination { limit: Int diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java index 086d1f32af..cba7cea5e0 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java @@ -73,7 +73,7 @@ public enum ProcessStateLogType { private Date slaDueDate; @ElementCollection - @CollectionTable(name = "ProcessInstanceStateRolesLog", joinColumns = @JoinColumn(name = "process_instance_id", foreignKey = @ForeignKey(name = "fk_process_instance_state_pid"))) + @CollectionTable(name = "ProcessInstanceStateRolesLog", joinColumns = @JoinColumn(name = "process_instance_state_log_id", foreignKey = @ForeignKey(name = "fk_process_instance_state_pid"))) @Column(name = "role") private Set roles; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java new file mode 100644 index 0000000000..facf0c66aa --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java @@ -0,0 +1,7 @@ +package org.kie.kogito.app.audit.jpa.queries; + +import java.util.List; + +public interface DataMapper { + List produce(List data); +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java index 84e48e3733..7450798f22 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -23,6 +23,7 @@ import java.util.Map; import javax.persistence.EntityManager; +import javax.persistence.Query; import javax.persistence.TypedQuery; public abstract class JPAAbstractQuery { @@ -56,4 +57,28 @@ protected List executeWithNamedQueryEntityManagerAndArguments(EntityManag } + + protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query) { + return entityManager.createNamedQuery(query).getResultList(); + } + + protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Map arguments) { + + Map parameters = new HashMap<>(arguments); + @SuppressWarnings("unchecked") + Map pagination = (Map) parameters.remove("pagination"); + Query typedQuery = entityManager.createNamedQuery(query); + parameters.forEach(typedQuery::setParameter); + if (pagination != null) { + if(pagination.get("limit") != null) { + typedQuery.setMaxResults((Integer) pagination.get("limit")); + } + if(pagination.get("offset") != null) { + typedQuery.setFirstResult((Integer) pagination.get("offset")); + } + } + + return typedQuery.getResultList(); + + } } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java new file mode 100644 index 0000000000..3a2d5f2975 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.util.List; +import java.util.Map; + +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; + +import graphql.schema.DataFetchingEnvironment; + +public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { + + private String name; + private String namedQuery; + private DataMapper dataMapper; + + public JPAComplexNamedQuery(String name, String namedQuery, DataMapper dataMapper) { + this.name = name; + this.namedQuery = namedQuery; + this.dataMapper = dataMapper; + } + + @Override + public String name() { + return name; + } + + @Override + public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { + Map arguments = dataFetchingEnvironment.getArguments(); + DataAuditContext context = dataFetchingEnvironment.getLocalContext(); + EntityManager entityManager = context.getContext(); + + if (arguments.isEmpty()) { + return dataMapper.produce(executeWithNamedQueryEntityManager(entityManager, namedQuery)); + } else { + return dataMapper.produce(executeWithNamedQueryEntityManagerAndArguments(entityManager, namedQuery, arguments)); + } + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java index 3d53975e26..171696c0e5 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -18,6 +18,10 @@ */ package org.kie.kogito.app.audit.jpa.queries; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceErrorTO; @@ -27,12 +31,49 @@ import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; +import graphql.com.google.common.base.Objects; + public class JPAGraphQLSchemaProcessInstancesQueryProvider implements GraphQLSchemaQueryProvider { @Override public List> queries() { - return List.of( - new JPASimpleNamedQuery("GetAllProcessInstancesState", "GetAllProcessInstancesState", ProcessInstanceStateTO.class), + return List.> of( + new JPAComplexNamedQuery("GetAllProcessInstancesState", "GetAllProcessInstancesState", new DataMapper() { + + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + ProcessInstanceStateTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + Object[] row = data.get(idx); + if (!Objects.equal(currentIndex, row[0])) { + current = new ProcessInstanceStateTO(); + currentIndex = row[0]; + transformedData.add(current); + } + current.setEventId((String) row[0]); + current.setEventDate(toDateTime((Date) row[1])); + current.setProcessType((String) row[2]); + current.setProcessId((String) row[3]); + current.setProcessVersion((String) row[4]); + current.setParentProcessInstanceId((String) row[5]); + current.setRootProcessId((String) row[6]); + current.setRootProcessInstanceId((String) row[7]); + current.setProcessInstanceId((String) row[8]); + current.setBusinessKey((String) row[9]); + current.setEventType((String) row[10]); + current.setOutcome((String) row[11]); + current.setState((String) row[12]); + current.setSlaDueDate(toDateTime((Date) row[13])); + current.addRole((String) data.get(idx)[14]); + + } + + return transformedData; + } + + }), new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", "GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", "GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", "GetAllProcessInstancesVariablebyProcessInstanceId", @@ -40,4 +81,7 @@ public List> queries() { } + public OffsetDateTime toDateTime(Date date) { + return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; + } } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java index 46ae68c484..8837c1b41e 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -34,6 +34,8 @@ public class JPASimpleNamedQuery extends JPAAbstractQuery implements GraphQLS private String namedQuery; private Class clazz; + + public JPASimpleNamedQuery(String name, String namedQuery, Class clazz) { this.name = name; this.namedQuery = namedQuery; @@ -47,7 +49,6 @@ public String name() { @Override public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { - Map arguments = dataFetchingEnvironment.getArguments(); DataAuditContext context = dataFetchingEnvironment.getLocalContext(); EntityManager entityManager = context.getContext(); diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml index 58f5c834ab..18be61bf90 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml @@ -4,20 +4,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"> - + - - + + SELECT log.event_id as eventId, log.event_date as eventDate, log.process_type as processType, @@ -31,17 +24,21 @@ log.event_type as eventType, log.outcome as outcome, log.state as state, - log.sla_due_date as slaDueDate + log.sla_due_date as slaDueDate, + roles.role as role FROM ProcessInstanceStateLog log LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id WHERE log_newer.event_id IS NULL ORDER BY log.event_date DESC - - - - - + + + + + SELECT log.event_id as eventId, log.event_date as eventDate, log.process_type as processType, @@ -65,11 +62,13 @@ WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId ORDER BY log.event_date DESC - - - - - + + + + + SELECT log.event_id as eventId, log.event_date as eventDate, log.process_type as processType, @@ -87,11 +86,13 @@ WHERE log.process_instance_id = :processInstanceId ORDER BY log.event_date DESC - - - - - + + + + + SELECT log.event_id as eventId, log.event_date as eventDate, log.process_type as processType, @@ -112,39 +113,43 @@ WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId ORDER BY log.event_date DESC - - - - - - + + + + + + - + - + - + - + - - - - + + + + - + - + @@ -153,39 +158,43 @@ - - - + + + - + - + - - - - - - - + + + + + + + - - - + + + - + - + @@ -194,6 +203,6 @@ - + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index 2dd0d1a66c..ff333b4e8e 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -119,7 +119,7 @@ public static ProcessInstanceStateDataEvent newProcessInstanceStateEvent( .eventDate(new Date()) .state(status) .businessKey(UUID.randomUUID().toString()) - .roles("admin") + .roles("admin", "role2") .eventUser(identity) .eventType(eventType) .build(); diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index c3ab8faae4..c80c415dad 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -111,7 +111,7 @@ public void init() { public void testGetAllProcessInstancesState() { String query = - "{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate } }"; + "{ GetAllProcessInstancesState { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate, roles} }"; query = wrapQuery(query); From 82d288e67d334c96b67e8f779b2318fac9d3da7e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 13:08:04 +0100 Subject: [PATCH 12/47] add mechanism extension --- .../audit/graphql/GraphQLSchemaManager.java | 80 ++++++++++++++----- .../audit/spi/GraphQLSchemaQueryProvider.java | 4 + .../META-INF/data-audit-job-query.graphqls | 21 +++++ .../data-audit-process-query.graphqls | 10 +++ ...dit.graphqls => data-audit-types.graphqls} | 37 ++------- .../data-audit-usertask-query.graphqls | 8 ++ .../app/audit/jpa/JPADataAuditStore.java | 2 - .../model/UserTaskInstanceAssignmentLog.java | 2 +- 8 files changed, 108 insertions(+), 56 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls rename data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/{data-audit.graphqls => data-audit-types.graphqls} (65%) create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java index 7d8e66b21f..427b4f9c59 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java @@ -20,6 +20,9 @@ import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; import java.util.ServiceLoader; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; @@ -27,6 +30,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; + +import graphql.language.FieldDefinition; +import graphql.language.ObjectTypeDefinition; import graphql.scalars.ExtendedScalars; import graphql.schema.GraphQLSchema; import graphql.schema.idl.RuntimeWiring; @@ -34,8 +41,6 @@ import graphql.schema.idl.SchemaParser; import graphql.schema.idl.TypeDefinitionRegistry; -import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; - public class GraphQLSchemaManager { private static final GraphQLSchemaManager INSTANCE = new GraphQLSchemaManager(); @@ -49,33 +54,66 @@ public static GraphQLSchemaManager graphQLSchemaManagerInstance() { } private GraphQLSchemaManager() { - try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/data-audit.graphqls")) { - SchemaParser schemaParser = new SchemaParser(); - TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(is); - RuntimeWiring.Builder runtimeWiringBuilder = newRuntimeWiring(); - runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLBigInteger); - runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLLong); - runtimeWiringBuilder.scalar(ExtendedScalars.Date); - runtimeWiringBuilder.scalar(ExtendedScalars.DateTime); - runtimeWiringBuilder.scalar(ExtendedScalars.Json); - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - classLoader = (classLoader != null) ? classLoader : this.getClass().getClassLoader(); + RuntimeWiring.Builder runtimeWiringBuilder = newRuntimeWiring(); + + runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLBigInteger); + runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLLong); + runtimeWiringBuilder.scalar(ExtendedScalars.Date); + runtimeWiringBuilder.scalar(ExtendedScalars.DateTime); + runtimeWiringBuilder.scalar(ExtendedScalars.Json); + + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + classLoader = (classLoader != null) ? classLoader : this.getClass().getClassLoader(); + + TypeDefinitionRegistry typeDefinitionRegistry = new TypeDefinitionRegistry(); - ServiceLoader.load(GraphQLSchemaQueryProvider.class, classLoader).forEach(queryProvider -> { - for (GraphQLSchemaQuery query : queryProvider.queries()) { - runtimeWiringBuilder.type("Query", builder -> builder.dataFetcher(query.name(), query::fetch)); - } - }); + List graphqlSchemas = new ArrayList<>(); + graphqlSchemas.addAll( + List.of("META-INF/data-audit-types.graphqls", + "META-INF/data-audit-job-query.graphqls", + "META-INF/data-audit-process-query.graphqls", + "META-INF/data-audit-usertask-query.graphqls")); - RuntimeWiring runtimeWiring = runtimeWiringBuilder.build(); + ServiceLoader.load(GraphQLSchemaQueryProvider.class, classLoader).forEach(queryProvider -> { + graphqlSchemas.addAll(List.of(queryProvider.graphQLQueryExtension())); + for (GraphQLSchemaQuery query : queryProvider.queries()) { + runtimeWiringBuilder.type("Query", builder -> builder.dataFetcher(query.name(), query::fetch)); + } + }); - SchemaGenerator schemaGenerator = new SchemaGenerator(); - graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + // now we have all of definitions + List queryDefinitions = new ArrayList<>(); + for (String graphQLSchema : graphqlSchemas) { + TypeDefinitionRegistry newTypes = readDefintionRegistry(graphQLSchema); + + // for allowing extension of the schema we need to merge this object manually + Optional newDefinitions = newTypes.getType("Query", ObjectTypeDefinition.class); + if (newDefinitions.isPresent()) { + queryDefinitions.addAll(newDefinitions.get().getFieldDefinitions()); + newTypes.remove(newDefinitions.get()); + } + typeDefinitionRegistry.merge(newTypes); + } + + RuntimeWiring runtimeWiring = runtimeWiringBuilder.build(); + + SchemaGenerator schemaGenerator = new SchemaGenerator(); + // we merge the query object + typeDefinitionRegistry.add(ObjectTypeDefinition.newObjectTypeDefinition().name("Query").fieldDefinitions(queryDefinitions).build()); + graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + + } + + private TypeDefinitionRegistry readDefintionRegistry(String graphQLSchema) { + try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(graphQLSchema)) { + SchemaParser schemaParser = new SchemaParser(); + return schemaParser.parse(is); } catch (IOException e) { LOGGER.error("could not find or process data-audit.graphqls", e); + return new TypeDefinitionRegistry(); } } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java index b86bbc0f21..00aac6f9ce 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java @@ -22,6 +22,10 @@ public interface GraphQLSchemaQueryProvider { + default String[] graphQLQueryExtension() { + return new String[0]; + } + List> queries(); } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls new file mode 100644 index 0000000000..cf3042b0d2 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls @@ -0,0 +1,21 @@ + +type Query { + GetAllScheduledJobs (pagination: Pagination): [JobExecutionLog] + + GetJobById (jobId : String!) : [JobExecutionLog] + GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] + + GetJobHistoryById (jobId : String!) : [JobExecutionLog] + GetJobHistoryByCorrelationId (correlationId : String!) : [JobExecutionLog] + + GetAllPendingJobs (pagination: Pagination): [JobExecutionLog] + GetAllEligibleJobsForExecution (pagination: Pagination) : [JobExecutionLog] + GetAllEligibleJobsForRetry (pagination: Pagination) : [JobExecutionLog] + GetAllJobs (pagination: Pagination) : [JobExecutionLog] + GetAllCompletedJobs (pagination: Pagination) : [JobExecutionLog] + GetAllInErrorJobs (pagination: Pagination) : [JobExecutionLog] + GetAllCancelledJobs (pagination: Pagination) : [JobExecutionLog] + GetAllJobsByState (state : [String]!, pagination: Pagination) : [JobExecutionLog] + +} + diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls new file mode 100644 index 0000000000..80dae5c7f5 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls @@ -0,0 +1,10 @@ + +type Query { + + + GetAllProcessInstancesState (pagination: Pagination): [ProcessInstanceStateLog] + GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] + GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] + GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls similarity index 65% rename from data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls rename to data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls index 6ba2bb3aa8..845c79652c 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls @@ -169,39 +169,12 @@ type UserTaskInstanceVariableLog { variableType : String } -type Query { - GetAllScheduledJobs (pagination: Pagination): [JobExecutionLog] - - GetJobById (jobId : String!) : [JobExecutionLog] - GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] - - GetJobHistoryById (jobId : String!) : [JobExecutionLog] - GetJobHistoryByCorrelationId (correlationId : String!) : [JobExecutionLog] - - GetAllPendingJobs (pagination: Pagination): [JobExecutionLog] - GetAllEligibleJobsForExecution (pagination: Pagination) : [JobExecutionLog] - GetAllEligibleJobsForRetry (pagination: Pagination) : [JobExecutionLog] - GetAllJobs (pagination: Pagination) : [JobExecutionLog] - GetAllCompletedJobs (pagination: Pagination) : [JobExecutionLog] - GetAllInErrorJobs (pagination: Pagination) : [JobExecutionLog] - GetAllCancelledJobs (pagination: Pagination) : [JobExecutionLog] - GetAllJobsByState (state : [String]!, pagination: Pagination) : [JobExecutionLog] - - - GetAllProcessInstancesState (pagination: Pagination): [ProcessInstanceStateLog] - GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] - GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] - GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] - - GetAllUserTaskInstanceState (pagination: Pagination) : [UserTaskInstanceStateLog] - GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAssignmentLog] - GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAttachmentLog] - GetAllUserTaskInstanceComment (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] - GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] - GetAllUserTaskInstanceVariable (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] -} - input Pagination { limit: Int offset: Int } + + +schema { + query: Query +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls new file mode 100644 index 0000000000..861b884187 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls @@ -0,0 +1,8 @@ +type Query { + GetAllUserTaskInstanceState (pagination: Pagination) : [UserTaskInstanceStateLog] + GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAssignmentLog] + GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAttachmentLog] + GetAllUserTaskInstanceComment (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] + GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] + GetAllUserTaskInstanceVariable (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] +} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index b04d584f3c..b646a76ad3 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -27,7 +27,6 @@ import javax.persistence.EntityManager; -import org.kie.api.runtime.process.ProcessInstance; import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.jpa.model.AbstractProcessInstanceLog; import org.kie.kogito.app.audit.jpa.model.AbstractUserTaskInstanceLog; @@ -53,7 +52,6 @@ import org.kie.kogito.event.process.ProcessInstanceNodeEventBody; import org.kie.kogito.event.process.ProcessInstanceSLADataEvent; import org.kie.kogito.event.process.ProcessInstanceStateDataEvent; -import org.kie.kogito.event.process.ProcessInstanceStateEventBody; import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java index 5813b480f3..de6b6e5545 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -55,7 +55,7 @@ public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { private String assignmentType; // POT OWNERS, ADMIN... @ElementCollection - @CollectionTable(name = "TaskInstanceAssignmentRolesLog", joinColumns = @JoinColumn(name = "task_instance_assignment_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_tid")) + @CollectionTable(name = "TaskInstanceAssignmentRolesLog", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_log_tid")) @Column(name = "user_id") private List users; From 10dfdde6b670f7833fc3e058e6cb83ecc1de4c1b Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 13:40:29 +0100 Subject: [PATCH 13/47] fix for assignments --- .../audit/graphql/GraphQLSchemaManager.java | 6 +-- .../type/UserTaskInstanceAssignmentTO.java | 10 +++++ .../model/UserTaskInstanceAssignmentLog.java | 2 +- ...LSchemaUserTaskInstancesQueryProvider.java | 42 ++++++++++++++++++- .../main/resources/META-INF/usertask-orm.xml | 6 ++- 5 files changed, 59 insertions(+), 7 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java index 427b4f9c59..fe19d2f76c 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java @@ -55,8 +55,6 @@ public static GraphQLSchemaManager graphQLSchemaManagerInstance() { private GraphQLSchemaManager() { - - RuntimeWiring.Builder runtimeWiringBuilder = newRuntimeWiring(); runtimeWiringBuilder.scalar(ExtendedScalars.GraphQLBigInteger); @@ -90,6 +88,8 @@ private GraphQLSchemaManager() { TypeDefinitionRegistry newTypes = readDefintionRegistry(graphQLSchema); // for allowing extension of the schema we need to merge this object manually + // we remove it from the new Types and aggregate in temporal list so we can add this at the end + // of extension processing Optional newDefinitions = newTypes.getType("Query", ObjectTypeDefinition.class); if (newDefinitions.isPresent()) { queryDefinitions.addAll(newDefinitions.get().getFieldDefinitions()); @@ -112,7 +112,7 @@ private TypeDefinitionRegistry readDefintionRegistry(String graphQLSchema) { SchemaParser schemaParser = new SchemaParser(); return schemaParser.parse(is); } catch (IOException e) { - LOGGER.error("could not find or process data-audit.graphqls", e); + LOGGER.error("could not find or process {}", graphQLSchema, e); return new TypeDefinitionRegistry(); } } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java index 4cdb28ea19..a9aaac5962 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java @@ -22,6 +22,7 @@ import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Date; +import java.util.HashSet; import java.util.Set; public class UserTaskInstanceAssignmentTO { @@ -46,8 +47,13 @@ public class UserTaskInstanceAssignmentTO { private Set users; + public UserTaskInstanceAssignmentTO() { + users = new HashSet<>(); + } + public UserTaskInstanceAssignmentTO(String eventId, Date eventDate, String eventUser, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, String userTaskName, String assignmentType) { + this(); this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); this.eventUser = eventUser; @@ -139,4 +145,8 @@ public void setUsers(Set users) { this.users = users; } + public void addUser(String user) { + this.users.add(user); + } + } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java index de6b6e5545..59b5cd69a8 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -55,7 +55,7 @@ public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { private String assignmentType; // POT OWNERS, ADMIN... @ElementCollection - @CollectionTable(name = "TaskInstanceAssignmentRolesLog", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_log_tid")) + @CollectionTable(name = "TaskInstanceAssignmentUsersLog", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_log_tid")) @Column(name = "user_id") private List users; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java index 3ad12a4136..08c8f3c039 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java @@ -18,6 +18,10 @@ */ package org.kie.kogito.app.audit.jpa.queries; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAssignmentTO; @@ -29,6 +33,8 @@ import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; +import graphql.com.google.common.base.Objects; + public class JPAGraphQLSchemaUserTaskInstancesQueryProvider implements GraphQLSchemaQueryProvider { @Override @@ -39,8 +45,42 @@ public List> queries() { new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", "GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceDeadline", "GetAllUserTaskInstanceDeadline", UserTaskInstanceDeadlineTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", "GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceAssignments", "GetAllUserTaskInstanceAssignments", UserTaskInstanceAssignmentTO.class)); + new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", "GetAllUserTaskInstanceAssignments", new DataMapper() { + + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + UserTaskInstanceAssignmentTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + Object[] row = data.get(idx); + if (!Objects.equal(currentIndex, row[0])) { + current = new UserTaskInstanceAssignmentTO(); + currentIndex = row[0]; + transformedData.add(current); + } + current.setEventId((String) row[0]); + current.setEventDate(toDateTime((Date) row[1])); + current.setEventUser((String) row[2]); + current.setUserTaskDefinitionId((String) row[3]); + current.setUserTaskInstanceId((String) row[4]); + current.setProcessInstanceId((String) row[5]); + current.setBusinessKey((String) row[6]); + current.setUserTaskName((String) row[7]); + current.setAssignmentType((String) row[8]); + current.addUser((String) data.get(idx)[9]); + + } + + return transformedData; + } + + })); + + } + public OffsetDateTime toDateTime(Date date) { + return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; } } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml index 7b685d0b5e..1fb5734931 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml @@ -32,7 +32,7 @@ - + SELECT log.event_id as eventId, log.event_date as eventDate, @@ -42,8 +42,10 @@ log.process_instance_id as processInstanceId, log.business_key as businessKey, log.task_name as userTaskName, - log.assignment_type as assignmentType + log.assignment_type as assignmentType, + users.user_id FROM TaskInstanceAssignmentLog log + LEFT JOIN TaskInstanceAssignmentUsersLog users ON users.task_instance_assignment_log_id = log.id WHERE log.user_task_instance_id = :userTaskInstanceId From bc04592a6737789151b37b161191cd0f92dba32a Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 2 Nov 2023 15:15:58 +0100 Subject: [PATCH 14/47] fix deadlines notifications --- .../type/UserTaskInstanceDeadlineTO.java | 10 ++++++ .../META-INF/data-audit-types.graphqls | 8 +---- .../model/UserTaskInstanceDeadlineLog.java | 2 +- ...LSchemaUserTaskInstancesQueryProvider.java | 32 ++++++++++++++++++- .../main/resources/META-INF/usertask-orm.xml | 7 ++-- ...arkusAuditUserTaskInstanceServiceTest.java | 2 +- data-index/data-index-graphql/.gitignore | 1 + 7 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 data-index/data-index-graphql/.gitignore diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java index 246ff05ace..67281d8e01 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java @@ -22,6 +22,7 @@ import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Date; +import java.util.HashMap; import java.util.Map; public class UserTaskInstanceDeadlineTO { @@ -43,6 +44,7 @@ public class UserTaskInstanceDeadlineTO { private String eventType; public UserTaskInstanceDeadlineTO(String eventId, Date eventDate, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, String eventType) { + this(); this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); this.userTaskDefinitionId = userTaskDefinitionId; @@ -52,6 +54,10 @@ public UserTaskInstanceDeadlineTO(String eventId, Date eventDate, String userTas this.eventType = eventType; } + public UserTaskInstanceDeadlineTO() { + this.notification = new HashMap<>(); + } + public String getEventId() { return eventId; } @@ -116,4 +122,8 @@ public void setEventType(String eventType) { this.eventType = eventType; } + public void addNotification(String key, String value) { + notification.put(key, value); + } + } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls index 845c79652c..8c00c3b22d 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls @@ -139,12 +139,6 @@ type UserTaskInstanceCommentLog { eventType : Int } - -type AttributeKeyValuePair { - key : String - value : String -} - type UserTaskInstanceDeadlineLog { eventId : String! eventDate : DateTime @@ -153,7 +147,7 @@ type UserTaskInstanceDeadlineLog { processInstanceId : String businessKey : String eventType : String - notification : [AttributeKeyValuePair] + notification : JSON } type UserTaskInstanceVariableLog { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java index 2637bcdf50..684ffa6ddb 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java @@ -44,7 +44,7 @@ public class UserTaskInstanceDeadlineLog extends AbstractUserTaskInstanceLog { private Long id; @ElementCollection - @JoinTable(name = "TaskInstanceDeadlineNotificationLog", joinColumns = @JoinColumn(name = "task_instance_deadline_id"), foreignKey = @ForeignKey(name = "fk_task_instance_deadline_tid")) + @JoinTable(name = "TaskInstanceDeadlineNotificationLog", joinColumns = @JoinColumn(name = "task_instance_deadline_log_id"), foreignKey = @ForeignKey(name = "fk_task_instance_deadline_tid")) @MapKeyColumn(name = "property_name") @Column(name = "property_value") private Map notification; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java index 08c8f3c039..70f85f3e07 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAssignmentTO; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAttachmentTO; @@ -43,7 +44,6 @@ public List> queries() { new JPASimpleNamedQuery("GetAllUserTaskInstanceState", "GetAllUserTaskInstanceState", UserTaskInstanceStateTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceAttachments", "GetAllUserTaskInstanceAttachments", UserTaskInstanceAttachmentTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", "GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceDeadline", "GetAllUserTaskInstanceDeadline", UserTaskInstanceDeadlineTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", "GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", "GetAllUserTaskInstanceAssignments", new DataMapper() { @@ -75,6 +75,36 @@ public List produce(List data) { return transformedData; } + }), + new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadline", "GetAllUserTaskInstanceDeadline", new DataMapper() { + + + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + UserTaskInstanceDeadlineTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + Object[] row = data.get(idx); + if (!Objects.equal(currentIndex, row[0])) { + current = new UserTaskInstanceDeadlineTO(); + currentIndex = row[0]; + transformedData.add(current); + } + current.setEventId((String) row[0]); + current.setEventDate(toDateTime((Date) row[1])); + current.setUserTaskDefinitionId((String) row[2]); + current.setUserTaskInstanceId((String) row[3]); + current.setProcessInstanceId((String) row[4]); + current.setBusinessKey((String) row[5]); + current.setEventType((String) row[6]); + current.addNotification((String) row[7], (String) row[8]); + + } + + return transformedData; + } + })); } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml index 1fb5734931..499c86f41f 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml @@ -93,7 +93,7 @@ - + SELECT log.event_id as eventId, log.event_date as eventDate, @@ -101,8 +101,11 @@ log.user_task_instance_id as userTaskInstanceId, log.process_instance_id as processInstanceId, log.business_key as businessKey, - log.event_type as eventType + log.event_type as eventType, + notification.property_name as propertyName, + notification.property_value as propertyValue FROM TaskInstanceDeadlineLog log + LEFT JOIN TaskInstanceDeadlineNotificationLog notification ON log.id = notification.task_instance_deadline_log_id WHERE log.user_task_instance_id = :userTaskInstanceId diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index fdffefba70..ae919312d5 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -213,7 +213,7 @@ public void testGetAllUserTaskInstanceComment() { @Test public void testGetAllUserTaskInstanceDeadline() { String query = - "{ GetAllUserTaskInstanceDeadline (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification {key, value} } }"; + "{ GetAllUserTaskInstanceDeadline (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) diff --git a/data-index/data-index-graphql/.gitignore b/data-index/data-index-graphql/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/data-index/data-index-graphql/.gitignore @@ -0,0 +1 @@ +/target/ From 1547279d4cf85538331140e7ab976be16537731a Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 3 Nov 2023 10:49:40 +0100 Subject: [PATCH 15/47] fix spring boot test --- .../SpringBootAuditDataConfiguration.java | 53 +++++++++++++++++++ .../SpringBootJPADataAuditEventPublisher.java | 2 +- .../src/main/resources/application.properties | 4 ++ .../src/test/resources/application.properties | 17 +++--- 4 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java index 800c9726ed..0090ec4941 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java @@ -18,13 +18,66 @@ */ package org.kie.kogito.app.audit.springboot; +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.orm.jpa.JpaVendorAdapter; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan +@Configuration(proxyBeanMethods = false) public class SpringBootAuditDataConfiguration { + @Bean + @Primary + public JpaProperties primaryJpaDataAuditProperties() { + return new JpaProperties(); + } + + @Bean(name = "JPADataAuditProperties") + @Qualifier("JPADataAuditProperties") + @ConfigurationProperties(prefix = "data-audit.spring.jpa") + public JpaProperties jpaDataAuditProperties() { + return new JpaProperties(); + } + + @Bean + public LocalContainerEntityManagerFactoryBean jpaDataAuditEntityManagerFactory( + DataSource dataSource, + @Autowired @Qualifier("JPADataAuditProperties") JpaProperties jpaProperties) { + EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(jpaProperties); + return builder + .dataSource(dataSource) + .mappingResources(jpaProperties.getMappingResources().toArray(String[]::new)) + .properties(jpaProperties.getProperties()) + .persistenceUnit("DataAuditPU") + .build(); + } + + private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(JpaProperties jpaProperties) { + JpaVendorAdapter jpaVendorAdapter = createJpaVendorAdapter(jpaProperties); + return new EntityManagerFactoryBuilder(jpaVendorAdapter, jpaProperties.getProperties(), null); + } + + private JpaVendorAdapter createJpaVendorAdapter(JpaProperties jpaProperties) { + HibernateJpaVendorAdapter hibernate = new HibernateJpaVendorAdapter(); + hibernate.setDatabase(jpaProperties.getDatabase()); + hibernate.setGenerateDdl(jpaProperties.isGenerateDdl()); + hibernate.setShowSql(jpaProperties.isShowSql()); + hibernate.setDatabasePlatform(jpaProperties.getDatabasePlatform()); + return hibernate; + } } diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java index 98334806ec..ad829bda6f 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -48,7 +48,7 @@ public class SpringBootJPADataAuditEventPublisher implements DataAuditEventPubli private DataAuditStoreProxyService proxy; @Autowired - @Qualifier("DataAuditPU") + @Qualifier("jpaDataAuditEntityManagerFactory") EntityManager entityManager; public SpringBootJPADataAuditEventPublisher() { diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties new file mode 100644 index 0000000000..eb2ef0e038 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties @@ -0,0 +1,4 @@ +# configure jpa +data-audit.spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl +data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +data-audit.spring.jpa.show-sql=false \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties index 5241b09eb9..5b2406ffe1 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties @@ -3,15 +3,12 @@ spring.datasource.jdbc-url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver -# configure jpa -spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl -spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect -spring.jpa.show-sql=false - - -spring.kafka.consumer.bootstrap-servers: localhost:9092 -spring.kafka.consumer.auto-offset-reset: earliest +spring.jpa.show-sql=false +data-audit.spring.jpa.database=H2 +data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect +data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop +data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl +data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +data-audit.spring.jpa.show-sql=true \ No newline at end of file From 9f38056d810dd313fe021ec7664c343048bff720 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 3 Nov 2023 12:20:15 +0100 Subject: [PATCH 16/47] add queries for processes --- .../data-audit-process-query.graphqls | 6 +- .../jpa/queries/JPAComplexNamedQuery.java | 4 + ...QLSchemaProcessInstancesQueryProvider.java | 59 ++-------- .../jpa/queries/JPASimpleNamedQuery.java | 4 +- .../mapper/ProcessInstanceStateTOMapper.java | 69 ++++++++++++ .../main/resources/META-INF/process-orm.xml | 103 +++++++++++++++++ .../app/audit/quarkus/DataAuditTestUtils.java | 2 +- ...uarkusAuditProcessInstanceServiceTest.java | 105 ++++++++++++++++++ .../src/test/resources/application.properties | 2 +- 9 files changed, 301 insertions(+), 53 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls index 80dae5c7f5..f1d7a549df 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls @@ -1,8 +1,12 @@ type Query { - GetAllProcessInstancesState (pagination: Pagination): [ProcessInstanceStateLog] + GetAllProcessInstancesStateByStatus (status : String!, pagination: Pagination): [ProcessInstanceStateLog] + GetAllProcessInstancesStateByProcessId (processId : String!, pagination: Pagination): [ProcessInstanceStateLog] + GetProcessInstancesStateHistory (processInstanceId : String!, pagination: Pagination): [ProcessInstanceStateLog] + GetProcessInstancesStateHistoryByBusinessKey (businessKey : String!, pagination: Pagination): [ProcessInstanceStateLog] + GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java index 3a2d5f2975..e6ac487e77 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java @@ -34,6 +34,10 @@ public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQL private String namedQuery; private DataMapper dataMapper; + public JPAComplexNamedQuery(String name, DataMapper dataMapper) { + this(name, name, dataMapper); + } + public JPAComplexNamedQuery(String name, String namedQuery, DataMapper dataMapper) { this.name = name; this.namedQuery = namedQuery; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java index 171696c0e5..e5ec408e09 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -18,70 +18,31 @@ */ package org.kie.kogito.app.audit.jpa.queries; -import java.time.OffsetDateTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Date; import java.util.List; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceErrorTO; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceNodeTO; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceStateTO; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceVariableTO; +import org.kie.kogito.app.audit.jpa.queries.mapper.ProcessInstanceStateTOMapper; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; -import graphql.com.google.common.base.Objects; - public class JPAGraphQLSchemaProcessInstancesQueryProvider implements GraphQLSchemaQueryProvider { @Override public List> queries() { return List.> of( - new JPAComplexNamedQuery("GetAllProcessInstancesState", "GetAllProcessInstancesState", new DataMapper() { - - @Override - public List produce(List data) { - List transformedData = new ArrayList<>(); - ProcessInstanceStateTO current = null; - Object currentIndex = null; - for (int idx = 0; idx < data.size(); idx++) { - Object[] row = data.get(idx); - if (!Objects.equal(currentIndex, row[0])) { - current = new ProcessInstanceStateTO(); - currentIndex = row[0]; - transformedData.add(current); - } - current.setEventId((String) row[0]); - current.setEventDate(toDateTime((Date) row[1])); - current.setProcessType((String) row[2]); - current.setProcessId((String) row[3]); - current.setProcessVersion((String) row[4]); - current.setParentProcessInstanceId((String) row[5]); - current.setRootProcessId((String) row[6]); - current.setRootProcessInstanceId((String) row[7]); - current.setProcessInstanceId((String) row[8]); - current.setBusinessKey((String) row[9]); - current.setEventType((String) row[10]); - current.setOutcome((String) row[11]); - current.setState((String) row[12]); - current.setSlaDueDate(toDateTime((Date) row[13])); - current.addRole((String) data.get(idx)[14]); - - } - - return transformedData; - } - - }), - new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", "GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), - new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", "GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), - new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", "GetAllProcessInstancesVariablebyProcessInstanceId", - ProcessInstanceVariableTO.class)); + new JPAComplexNamedQuery("GetAllProcessInstancesState", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetAllProcessInstancesStateByStatus", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetAllProcessInstancesStateByProcessId", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetProcessInstancesStateHistory", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetProcessInstancesStateHistoryByBusinessKey", new ProcessInstanceStateTOMapper()), + new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), + new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), + new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", ProcessInstanceVariableTO.class)); } - public OffsetDateTime toDateTime(Date date) { - return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; - } + } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java index 8837c1b41e..7882a15979 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -34,7 +34,9 @@ public class JPASimpleNamedQuery extends JPAAbstractQuery implements GraphQLS private String namedQuery; private Class clazz; - + public JPASimpleNamedQuery(String name, Class clazz) { + this(name, name, clazz); + } public JPASimpleNamedQuery(String name, String namedQuery, Class clazz) { this.name = name; diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java new file mode 100644 index 0000000000..e961a64f89 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries.mapper; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceStateTO; +import org.kie.kogito.app.audit.jpa.queries.DataMapper; + +import graphql.com.google.common.base.Objects; + +public class ProcessInstanceStateTOMapper implements DataMapper { + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + ProcessInstanceStateTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + Object[] row = data.get(idx); + if (!Objects.equal(currentIndex, row[0])) { + current = new ProcessInstanceStateTO(); + currentIndex = row[0]; + transformedData.add(current); + } + current.setEventId((String) row[0]); + current.setEventDate(toDateTime((Date) row[1])); + current.setProcessType((String) row[2]); + current.setProcessId((String) row[3]); + current.setProcessVersion((String) row[4]); + current.setParentProcessInstanceId((String) row[5]); + current.setRootProcessId((String) row[6]); + current.setRootProcessInstanceId((String) row[7]); + current.setProcessInstanceId((String) row[8]); + current.setBusinessKey((String) row[9]); + current.setEventType((String) row[10]); + current.setOutcome((String) row[11]); + current.setState((String) row[12]); + current.setSlaDueDate(toDateTime((Date) row[13])); + current.addRole((String) data.get(idx)[14]); + + } + + return transformedData; + } + + public OffsetDateTime toDateTime(Date date) { + return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; + } +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml index 18be61bf90..4de5acc70b 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml @@ -35,6 +35,109 @@ + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM ProcessInstanceStateLog log + LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL AND log.state = :status + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM ProcessInstanceStateLog log + LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL AND log.process_id = :processId + ORDER BY log.event_date DESC + + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM ProcessInstanceStateLog log + LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM ProcessInstanceStateLog log + LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + WHERE log.business_key = :businessKey + ORDER BY log.event_date DESC + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index ff333b4e8e..d8d005fdf1 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -118,7 +118,7 @@ public static ProcessInstanceStateDataEvent newProcessInstanceStateEvent( .processName(UUID.randomUUID().toString()) .eventDate(new Date()) .state(status) - .businessKey(UUID.randomUUID().toString()) + .businessKey("BusinessKey" + processInstanceId) .roles("admin", "role2") .eventUser(identity) .eventType(eventType) diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index c80c415dad..7e58d5da48 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -136,6 +136,111 @@ public void testGetAllProcessInstancesState() { } + @Test + public void testGetProcessInstancesStateHistory() { + String query = + "{ GetProcessInstancesStateHistory ( processInstanceId : \\\"2\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate, roles} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetProcessInstancesStateHistory"); + + assertThat(data) + .hasSize(2) + .extracting(e -> e.get("processInstanceId"), e -> e.get("state")) + .containsExactlyInAnyOrder( + tuple("2", String.valueOf(ProcessInstance.STATE_ACTIVE)), + tuple("2", String.valueOf(ProcessInstance.STATE_COMPLETED))); + + } + + @Test + public void testGetProcessInstancesStateHistoryByBusinessKey() { + String query = + "{ GetProcessInstancesStateHistoryByBusinessKey ( businessKey : \\\"BusinessKey2\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate, roles} }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetProcessInstancesStateHistoryByBusinessKey"); + + assertThat(data) + .hasSize(2) + .extracting(e -> e.get("processInstanceId"), e -> e.get("state")) + .containsExactlyInAnyOrder( + tuple("2", String.valueOf(ProcessInstance.STATE_ACTIVE)), + tuple("2", String.valueOf(ProcessInstance.STATE_COMPLETED))); + + } + + @Test + public void testGetAllProcessInstancesStateByStatus() { + + String query = + "{ GetAllProcessInstancesStateByStatus (status : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate, roles} }"; + + query = wrapQuery(query); + + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesStateByStatus"); + + assertThat(data) + .hasSize(1) + .extracting(e -> e.get("processInstanceId"), e -> e.get("state")) + .containsExactlyInAnyOrder( + tuple("1", String.valueOf(ProcessInstance.STATE_ACTIVE))); + + } + + @Test + public void testGetAllProcessInstancesStateByProcessId() { + + String query = + "{ GetAllProcessInstancesStateByProcessId (processId : \\\"processId1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, eventType, outcome, state, slaDueDate, roles} }"; + + query = wrapQuery(query); + + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesStateByProcessId"); + + assertThat(data) + .hasSize(2) + .extracting(e -> e.get("processInstanceId"), e -> e.get("state")) + .containsExactlyInAnyOrder( + tuple("1", String.valueOf(ProcessInstance.STATE_ACTIVE)), + tuple("2", String.valueOf(ProcessInstance.STATE_COMPLETED))); + + } + @Test public void testGetAllProcessInstancesNodeByProcessInstanceId() { String query = diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties index 5b2406ffe1..af3094627f 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties @@ -11,4 +11,4 @@ data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Diale data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -data-audit.spring.jpa.show-sql=true \ No newline at end of file +data-audit.spring.jpa.show-sql=false \ No newline at end of file From 6c34080af77629d322f6e2d423d6aea52314a3e0 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 3 Nov 2023 12:22:52 +0100 Subject: [PATCH 17/47] repacle anonymous classe by reusable classes --- ...LSchemaUserTaskInstancesQueryProvider.java | 78 ++----------------- .../UserTaskInstanceAssignmentTOMapper.java | 65 ++++++++++++++++ .../UserTaskInstanceDeadlineTOMapper.java | 63 +++++++++++++++ 3 files changed, 136 insertions(+), 70 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java create mode 100644 data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java index 70f85f3e07..8da652eaa7 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java @@ -20,10 +20,8 @@ import java.time.OffsetDateTime; import java.time.ZoneId; -import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAssignmentTO; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAttachmentTO; @@ -31,82 +29,22 @@ import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceDeadlineTO; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceStateTO; import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceVariableTO; +import org.kie.kogito.app.audit.jpa.queries.mapper.UserTaskInstanceAssignmentTOMapper; +import org.kie.kogito.app.audit.jpa.queries.mapper.UserTaskInstanceDeadlineTOMapper; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; -import graphql.com.google.common.base.Objects; - public class JPAGraphQLSchemaUserTaskInstancesQueryProvider implements GraphQLSchemaQueryProvider { @Override public List> queries() { return List.of( - new JPASimpleNamedQuery("GetAllUserTaskInstanceState", "GetAllUserTaskInstanceState", UserTaskInstanceStateTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceAttachments", "GetAllUserTaskInstanceAttachments", UserTaskInstanceAttachmentTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", "GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", "GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), - new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", "GetAllUserTaskInstanceAssignments", new DataMapper() { - - @Override - public List produce(List data) { - List transformedData = new ArrayList<>(); - UserTaskInstanceAssignmentTO current = null; - Object currentIndex = null; - for (int idx = 0; idx < data.size(); idx++) { - Object[] row = data.get(idx); - if (!Objects.equal(currentIndex, row[0])) { - current = new UserTaskInstanceAssignmentTO(); - currentIndex = row[0]; - transformedData.add(current); - } - current.setEventId((String) row[0]); - current.setEventDate(toDateTime((Date) row[1])); - current.setEventUser((String) row[2]); - current.setUserTaskDefinitionId((String) row[3]); - current.setUserTaskInstanceId((String) row[4]); - current.setProcessInstanceId((String) row[5]); - current.setBusinessKey((String) row[6]); - current.setUserTaskName((String) row[7]); - current.setAssignmentType((String) row[8]); - current.addUser((String) data.get(idx)[9]); - - } - - return transformedData; - } - - }), - new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadline", "GetAllUserTaskInstanceDeadline", new DataMapper() { - - - @Override - public List produce(List data) { - List transformedData = new ArrayList<>(); - UserTaskInstanceDeadlineTO current = null; - Object currentIndex = null; - for (int idx = 0; idx < data.size(); idx++) { - Object[] row = data.get(idx); - if (!Objects.equal(currentIndex, row[0])) { - current = new UserTaskInstanceDeadlineTO(); - currentIndex = row[0]; - transformedData.add(current); - } - current.setEventId((String) row[0]); - current.setEventDate(toDateTime((Date) row[1])); - current.setUserTaskDefinitionId((String) row[2]); - current.setUserTaskInstanceId((String) row[3]); - current.setProcessInstanceId((String) row[4]); - current.setBusinessKey((String) row[5]); - current.setEventType((String) row[6]); - current.addNotification((String) row[7], (String) row[8]); - - } - - return transformedData; - } - - })); - + new JPASimpleNamedQuery("GetAllUserTaskInstanceState", UserTaskInstanceStateTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceAttachments", UserTaskInstanceAttachmentTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), + new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", new UserTaskInstanceAssignmentTOMapper()), + new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadline", new UserTaskInstanceDeadlineTOMapper())); } public OffsetDateTime toDateTime(Date date) { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java new file mode 100644 index 0000000000..83d1715991 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries.mapper; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceAssignmentTO; +import org.kie.kogito.app.audit.jpa.queries.DataMapper; + +import graphql.com.google.common.base.Objects; + +public class UserTaskInstanceAssignmentTOMapper implements DataMapper { + + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + UserTaskInstanceAssignmentTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + Object[] row = data.get(idx); + if (!Objects.equal(currentIndex, row[0])) { + current = new UserTaskInstanceAssignmentTO(); + currentIndex = row[0]; + transformedData.add(current); + } + current.setEventId((String) row[0]); + current.setEventDate(toDateTime((Date) row[1])); + current.setEventUser((String) row[2]); + current.setUserTaskDefinitionId((String) row[3]); + current.setUserTaskInstanceId((String) row[4]); + current.setProcessInstanceId((String) row[5]); + current.setBusinessKey((String) row[6]); + current.setUserTaskName((String) row[7]); + current.setAssignmentType((String) row[8]); + current.addUser((String) data.get(idx)[9]); + + } + + return transformedData; + } + + public OffsetDateTime toDateTime(Date date) { + return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; + } +} diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java new file mode 100644 index 0000000000..9db735d77f --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries.mapper; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.UserTaskInstanceDeadlineTO; +import org.kie.kogito.app.audit.jpa.queries.DataMapper; + +import graphql.com.google.common.base.Objects; + +public class UserTaskInstanceDeadlineTOMapper implements DataMapper { + + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + UserTaskInstanceDeadlineTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + Object[] row = data.get(idx); + if (!Objects.equal(currentIndex, row[0])) { + current = new UserTaskInstanceDeadlineTO(); + currentIndex = row[0]; + transformedData.add(current); + } + current.setEventId((String) row[0]); + current.setEventDate(toDateTime((Date) row[1])); + current.setUserTaskDefinitionId((String) row[2]); + current.setUserTaskInstanceId((String) row[3]); + current.setProcessInstanceId((String) row[4]); + current.setBusinessKey((String) row[5]); + current.setEventType((String) row[6]); + current.addNotification((String) row[7], (String) row[8]); + + } + + return transformedData; + } + + public OffsetDateTime toDateTime(Date date) { + return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; + } +} From b505624fc453f4f772c312277b9afd299603178d Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 6 Nov 2023 10:46:37 +0100 Subject: [PATCH 18/47] job log changed to match data index --- .../audit/api/DataAuditEventPublisher.java | 29 -- .../audit/api/DataAuditStoreProxyService.java | 6 - .../audit/graphql/type/JobExecutionTO.java | 139 +++++-- .../kogito/app/audit/spi/DataAuditStore.java | 4 - .../META-INF/data-audit-job-query.graphqls | 6 +- .../META-INF/data-audit-types.graphqls | 18 +- .../app/audit/jpa/JPADataAuditStore.java | 60 +-- .../app/audit/jpa/model/JobExecutionLog.java | 134 ++++--- .../JPAGraphQLSchemaJobsQueryProvider.java | 24 +- .../src/main/resources/META-INF/job-orm.xml | 367 +++++++++++++----- ...uarkusDataAuditMessagingEventConsumer.java | 3 +- .../QuarkusJPADataAuditEventPublisher.java | 13 +- .../app/audit/quarkus/DataAuditTestUtils.java | 81 ++-- .../quarkus/QuarkusAuditJobServiceTest.java | 104 ++--- ...uarkusAuditProcessInstanceServiceTest.java | 4 +- ...arkusAuditUserTaskInstanceServiceTest.java | 4 +- .../SpringBootJPADataAuditEventPublisher.java | 12 +- .../AbstractDomainIndexingServiceIT.java | 2 +- 18 files changed, 603 insertions(+), 407 deletions(-) delete mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java deleted file mode 100644 index ba5959f660..0000000000 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditEventPublisher.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * 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.kie.kogito.app.audit.api; - -import org.kie.kogito.event.EventPublisher; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; - -public interface DataAuditEventPublisher extends EventPublisher { - - void publish(JobCloudEvent event); - -} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java index 13a34d0a1e..6ab14c52d8 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java @@ -35,8 +35,6 @@ import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,10 +71,6 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns } - public void storeJobDataEvent(DataAuditContext context, JobCloudEvent event) { - auditStoreService.storeJobDataEvent(context, event); - } - public void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent event) { auditStoreService.storeJobDataEvent(context, event); diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java index b6a72b5334..7f70656e41 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java @@ -18,6 +18,7 @@ */ package org.kie.kogito.app.audit.graphql.type; +import java.math.BigInteger; import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Date; @@ -25,27 +26,47 @@ public class JobExecutionTO { private String jobId; - private String correlationId; - private String state; - private String schedule; - private String retry; - private Long executionTimeout; - private String executionTimeoutUnit; - private OffsetDateTime timestamp; + + private OffsetDateTime expirationTime; + + private Integer priority; + + private String processInstanceId; + + private String nodeInstanceId; + + private Long repeatInterval; + + private Integer repeatLimit; + + private String scheduledId; + + private Integer retries; + + private String status; + + private Integer executionCounter; + + private OffsetDateTime eventDate; public JobExecutionTO() { } - public JobExecutionTO(String jobId, String correlationId, String state, String schedule, String retry, Long executionTimeout, String executionTimeoutUnit, Date timestamp) { + public JobExecutionTO(String jobId, Date expirationtime, Integer priority, String processInstanceId, String nodeInstanceId, + BigInteger repeatInterval, Integer repeatLimit, String scheduledId, Integer retries, String status, Integer executionCounter, Date eventDate) { this.jobId = jobId; - this.correlationId = correlationId; - this.state = state; - this.schedule = schedule; - this.retry = retry; - this.executionTimeout = executionTimeout; - this.executionTimeoutUnit = executionTimeoutUnit; - this.timestamp = OffsetDateTime.ofInstant(timestamp.toInstant(), ZoneId.of("UTC")); + this.expirationTime = OffsetDateTime.ofInstant(expirationtime.toInstant(), ZoneId.of("UTC")); + this.priority = priority; + this.processInstanceId = processInstanceId; + this.nodeInstanceId = nodeInstanceId; + this.repeatInterval = repeatInterval != null ? repeatInterval.longValue() : null; + this.repeatLimit = repeatLimit; + this.scheduledId = scheduledId; + this.retries = retries; + this.status = status; + this.executionCounter = executionCounter; + this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); } public String getJobId() { @@ -56,60 +77,92 @@ public void setJobId(String jobId) { this.jobId = jobId; } - public String getCorrelationId() { - return correlationId; + public OffsetDateTime getExpirationTime() { + return expirationTime; + } + + public void setExpirationTime(OffsetDateTime expirationTime) { + this.expirationTime = expirationTime; + } + + public Integer getPriority() { + return priority; + } + + public void setPriority(Integer priority) { + this.priority = priority; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getNodeInstanceId() { + return nodeInstanceId; + } + + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; + } + + public Long getRepeatInterval() { + return repeatInterval; } - public void setCorrelationId(String correlationId) { - this.correlationId = correlationId; + public void setRepeatInterval(Long repeatInterval) { + this.repeatInterval = repeatInterval; } - public String getState() { - return state; + public Integer getRepeatLimit() { + return repeatLimit; } - public void setState(String state) { - this.state = state; + public void setRepeatLimit(Integer repeatLimit) { + this.repeatLimit = repeatLimit; } - public String getSchedule() { - return schedule; + public String getScheduledId() { + return scheduledId; } - public void setSchedule(String schedule) { - this.schedule = schedule; + public void setScheduledId(String scheduledId) { + this.scheduledId = scheduledId; } - public String getRetry() { - return retry; + public Integer getRetries() { + return retries; } - public void setRetry(String retry) { - this.retry = retry; + public void setRetries(Integer retries) { + this.retries = retries; } - public Long getExecutionTimeout() { - return executionTimeout; + public String getStatus() { + return status; } - public void setExecutionTimeout(Long executionTimeout) { - this.executionTimeout = executionTimeout; + public void setStatus(String status) { + this.status = status; } - public String getExecutionTimeoutUnit() { - return executionTimeoutUnit; + public Integer getExecutionCounter() { + return executionCounter; } - public void setExecutionTimeoutUnit(String executionTimeoutUnit) { - this.executionTimeoutUnit = executionTimeoutUnit; + public void setExecutionCounter(Integer executionCounter) { + this.executionCounter = executionCounter; } - public OffsetDateTime getTimestamp() { - return timestamp; + public OffsetDateTime getEventDate() { + return eventDate; } - public void setTimestamp(OffsetDateTime timestamp) { - this.timestamp = timestamp; + public void setEventDate(OffsetDateTime eventDate) { + this.eventDate = eventDate; } } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java index adf4231d17..46944cad86 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java @@ -31,8 +31,6 @@ import org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; public interface DataAuditStore { @@ -58,8 +56,6 @@ public interface DataAuditStore { void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceVariableDataEvent event); - void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDataEvent); - void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent event); } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls index cf3042b0d2..7251d7a01c 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls @@ -3,10 +3,10 @@ type Query { GetAllScheduledJobs (pagination: Pagination): [JobExecutionLog] GetJobById (jobId : String!) : [JobExecutionLog] - GetJobByCorrelationId (correlationId : String!) : [JobExecutionLog] + GetJobByProcessInstanceId (processInstanceId : String!) : [JobExecutionLog] GetJobHistoryById (jobId : String!) : [JobExecutionLog] - GetJobHistoryByCorrelationId (correlationId : String!) : [JobExecutionLog] + GetJobHistoryByProcessInstanceId (processInstanceId : String!) : [JobExecutionLog] GetAllPendingJobs (pagination: Pagination): [JobExecutionLog] GetAllEligibleJobsForExecution (pagination: Pagination) : [JobExecutionLog] @@ -15,7 +15,7 @@ type Query { GetAllCompletedJobs (pagination: Pagination) : [JobExecutionLog] GetAllInErrorJobs (pagination: Pagination) : [JobExecutionLog] GetAllCancelledJobs (pagination: Pagination) : [JobExecutionLog] - GetAllJobsByState (state : [String]!, pagination: Pagination) : [JobExecutionLog] + GetAllJobsByStatus (status : [String]!, pagination: Pagination) : [JobExecutionLog] } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls index 8c00c3b22d..793317b490 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls @@ -6,13 +6,17 @@ scalar Date type JobExecutionLog { jobId : String! - correlationId : String - state : String - schedule : JSON - retry : JSON - executionTimeout : Long - executionTimeoutUnit : String - timestamp: DateTime + expirationTime : DateTime + priority: Int + processInstanceId : String + nodeInstanceId : String + repeatInterval : Long + repeatLimit : Int + scheduledId : String + retries : Int + status : String + executionCounter : Int + eventDate : DateTime } type ProcessInstanceStateLog { diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index b646a76ad3..b4f09cf574 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.net.MalformedURLException; import java.sql.Timestamp; +import java.time.Instant; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -61,8 +62,6 @@ import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; import org.kie.kogito.internal.process.runtime.KogitoProcessInstance; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import org.kie.kogito.jobs.service.model.ScheduledJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,7 +90,7 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta log.setRoles(event.getData().getRoles()); EntityManager entityManager = context.getContext(); - switch(event.getData().getState()) { + switch (event.getData().getState()) { case KogitoProcessInstance.STATE_ACTIVE: log.setEventType(ProcessStateLogType.ACTIVE); entityManager.persist(log); @@ -340,54 +339,29 @@ private void setUserTaskCommonAttributes(AbstractUserTaskInstanceLog log, UserTa log.setUserTaskInstanceId(event.getKogitoUserTaskInstanceId()); } - @Override - public void storeJobDataEvent(DataAuditContext context, JobCloudEvent jobDataEvent) { - Job job = jobDataEvent.getData(); - - JobExecutionLog log = new JobExecutionLog(); - log.setCorrelationId(job.getCorrelationId()); - log.setJobId(job.getId()); - log.setState(job.getState().name()); - log.setExecutionTimeout(job.getExecutionTimeout()); - log.setSchedule(toJsonString(job.getSchedule())); - log.setRetry(toJsonString(job.getRetry())); - log.setExecutionTimeoutUnit(job.getExecutionTimeoutUnit().name()); - log.setTimestamp(Timestamp.from(jobDataEvent.getTime().toInstant())); - EntityManager entityManager = context.getContext(); - entityManager.persist(log); - } - @Override public void storeJobDataEvent(DataAuditContext context, JobInstanceDataEvent jobDataEvent) { - // assertHasField(jsonNode, "id", JOB_ID); - // assertHasField(jsonNode, "expirationTime", EXPIRATION_TIME.toString()); - // assertHasField(jsonNode, "priority", Integer.toString(PRIORITY)); - // assertHasField(jsonNode, "callbackEndpoint", RECIPIENT_URL); - // assertHasField(jsonNode, "processInstanceId", PROCESS_INSTANCE_ID); - // assertHasField(jsonNode, "processId", PROCESS_ID); - // assertHasField(jsonNode, "rootProcessInstanceId", ROOT_PROCESS_INSTANCE_ID); - // assertHasField(jsonNode, "rootProcessId", ROOT_PROCESS_ID); - // assertHasField(jsonNode, "nodeInstanceId", NODE_INSTANCE_ID); - // assertHasField(jsonNode, "repeatInterval", Long.toString(PERIOD)); - // assertHasField(jsonNode, "repeatLimit", Integer.toString(REPEAT_COUNT)); - // assertHasField(jsonNode, "scheduledId", SCHEDULE_ID); - // assertHasField(jsonNode, "retries", Integer.toString(RETRIES)); - // assertHasField(jsonNode, "status", STATUS.name()); - // assertHasField(jsonNode, "lastUpdate", LAST_UPDATE.toString()); - // assertHasField(jsonNode, "executionCounter", Integer.toString(EXECUTION_COUNTER)); - // assertHasField(jsonNode, "executionResponse", null); - ScheduledJob job = toObject(ScheduledJob.class, jobDataEvent.getData()); JobExecutionLog log = new JobExecutionLog(); - log.setCorrelationId(jobDataEvent.getKogitoProcessInstanceId()); log.setJobId(job.getId()); - log.setState(job.getStatus().name()); - log.setTimestamp(Timestamp.from(jobDataEvent.getTime().toInstant())); - log.setRetry(job.getRetries() != null ? job.getRetries().toString() : null); - log.setSchedule(job.getExpirationTime() != null ? Timestamp.from(jobDataEvent.getTime().toInstant()).toString() : null); + if (job.getExpirationTime() != null) { + log.setExpirationTime(Timestamp.from(job.getExpirationTime().toInstant())); + } + log.setPriority(job.getPriority()); + log.setProcessInstanceId(job.getProcessInstanceId()); + log.setNodeInstanceId(job.getNodeInstanceId()); + log.setRepeatInterval(job.getRepeatInterval()); + log.setRepeatLimit(job.getRepeatLimit()); + log.setScheduledId(job.getScheduledId()); + + if (job.getStatus() != null) { + log.setStatus(job.getStatus().name()); + } + log.setExecutionCounter(job.getExecutionCounter()); + log.setEventDate(Timestamp.from(Instant.now())); EntityManager entityManager = context.getContext(); entityManager.persist(log); } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java index 2dfec64a21..0882f3bb8c 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java @@ -17,7 +17,6 @@ package org.kie.kogito.app.audit.jpa.model; import java.sql.Timestamp; -import java.time.Instant; import java.util.Date; import javax.persistence.Column; @@ -41,24 +40,38 @@ public class JobExecutionLog { @Column(name = "job_id") private String jobId; - @Column(name = "correlation_id") - private String correlationId; - private String state; - private String schedule; - private String retry; - @Column(name = "execution_timeout") - private Long executionTimeout; - - @Column(name = "execution_timeout_unit") - private String executionTimeoutUnit; + @Column(name = "expiration_time") @Temporal(TemporalType.TIMESTAMP) - @Column(columnDefinition = "TIMESTAMP") - private Date timestamp; + private Date expirationTime; - public JobExecutionLog() { - this.timestamp = Timestamp.from(Instant.now()); - } + private Integer priority; + + @Column(name = "process_instance_id") + private String processInstanceId; + + @Column(name = "node_instance_id") + private String nodeInstanceId; + + @Column(name = "repeat_interval") + private Long repeatInterval; + + @Column(name = "repeat_limit") + private Integer repeatLimit; + + @Column(name = "scheduled_id") + private String scheduledId; + + private Integer retries; + + private String status; + + @Column(name = "execution_counter") + private Integer executionCounter; + + @Column(name = "event_date") + @Temporal(TemporalType.TIMESTAMP) + private Date eventDate; public Long getId() { return id; @@ -76,66 +89,91 @@ public void setJobId(String jobId) { this.jobId = jobId; } - public String getCorrelationId() { - return correlationId; + public Date getExpirationTime() { + return expirationTime; } - public void setCorrelationId(String correlationId) { - this.correlationId = correlationId; + public void setExpirationTime(Timestamp expirationTime) { + this.expirationTime = expirationTime; } - public String getState() { - return state; + public Integer getPriority() { + return priority; } - public void setState(String state) { - this.state = state; + public void setPriority(Integer priority) { + this.priority = priority; } - public String getSchedule() { - return schedule; + public String getProcessInstanceId() { + return processInstanceId; } - public void setSchedule(String schedule) { - this.schedule = schedule; + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; } - public String getRetry() { - return retry; + public String getNodeInstanceId() { + return nodeInstanceId; } - public void setRetry(String retry) { - this.retry = retry; + public void setNodeInstanceId(String nodeInstanceId) { + this.nodeInstanceId = nodeInstanceId; } - public Long getExecutionTimeout() { - return executionTimeout; + public Long getRepeatInterval() { + return repeatInterval; } - public void setExecutionTimeout(Long executionTimeout) { - this.executionTimeout = executionTimeout; + public void setRepeatInterval(Long repeatInterval) { + this.repeatInterval = repeatInterval; } - public String getExecutionTimeoutUnit() { - return executionTimeoutUnit; + public Integer getRepeatLimit() { + return repeatLimit; } - public void setExecutionTimeoutUnit(String executionTimeoutUnit) { - this.executionTimeoutUnit = executionTimeoutUnit; + public void setRepeatLimit(Integer repeatLimit) { + this.repeatLimit = repeatLimit; } - public Date getTimestamp() { - return this.timestamp; + public String getScheduledId() { + return scheduledId; } - public void setTimestamp(Date timestamp) { - this.timestamp = timestamp; + public void setScheduledId(String scheduledId) { + this.scheduledId = scheduledId; } - @Override - public String toString() { - return "JobExecutionLog [id=" + id + ", jobId=" + jobId + ", correlationId=" + correlationId + ", state=" + state + ", schedule=" + schedule + ", retry=" + retry + ", executionTimeout=" - + executionTimeout + ", executionTimeoutUnit=" + executionTimeoutUnit + ", timestamp=" + timestamp + "]"; + public Integer getRetries() { + return retries; } + public void setRetries(Integer retries) { + this.retries = retries; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Integer getExecutionCounter() { + return executionCounter; + } + + public void setExecutionCounter(Integer executionCounter) { + this.executionCounter = executionCounter; + } + + public Date getEventDate() { + return eventDate; + } + + public void setEventDate(Timestamp eventDate) { + this.eventDate = eventDate; + } } \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java index 6790fe3967..d97d09c30e 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java @@ -29,19 +29,19 @@ public class JPAGraphQLSchemaJobsQueryProvider implements GraphQLSchemaQueryProv @Override public List> queries() { return List.of( - new JPASimpleNamedQuery("GetAllScheduledJobs", "GetAllScheduledJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetJobById", "GetJobById", JobExecutionTO.class), - new JPASimpleNamedQuery("GetJobHistoryById", "GetJobHistoryById", JobExecutionTO.class), - new JPASimpleNamedQuery("GetJobHistoryByCorrelationId", "GetJobHistoryByCorrelationId", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllPendingJobs", "GetAllPendingJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllEligibleJobsForExecution", "GetAllEligibleJobsForExecution", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllEligibleJobsForRetry", "GetAllEligibleJobsForRetry", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllScheduledJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobById", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobHistoryById", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobHistoryByProcessInstanceId", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllPendingJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllEligibleJobsForExecution", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllEligibleJobsForRetry", JobExecutionTO.class), new JPASimpleNamedQuery("GetAllJobs", "GetAllJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllCompletedJobs", "GetAllCompletedJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllInErrorJobs", "GetAllInErrorJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllCancelledJobs", "GetAllCancelledJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllJobsByState", "GetAllJobsByState", JobExecutionTO.class), - new JPASimpleNamedQuery("GetJobByCorrelationId", "GetJobByCorrelationId", JobExecutionTO.class)); + new JPASimpleNamedQuery("GetAllCompletedJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllInErrorJobs", JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllCancelledJobs",JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllJobsByStatus", JobExecutionTO.class), + new JPASimpleNamedQuery("GetJobByProcessInstanceId", JobExecutionTO.class)); } diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml index 34324c2a50..70e2c7e9d2 100644 --- a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml @@ -4,158 +4,323 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"> - - - - - - + + + + + + - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state = 'SCHEDULED' + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'SCHEDULED' - + - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.job_id = :jobId - + - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 WHERE o1.job_id = :jobId - ORDER BY o1.timestamp DESC + ORDER BY o1.event_date DESC - - + + - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - WHERE o1.correlation_id = :correlationId - ORDER BY o1.timestamp DESC + WHERE o1.process_instance_id = :processInstanceId + ORDER BY o1.event_date DESC - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state IN ('SCHEDULED', 'RETRY') + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED', 'RETRY') - + - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state IN ('SCHEDULED') + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED') - + - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestamp + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state IN ('RETRY', 'ERROR') + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('RETRY', 'ERROR') - + - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL - ORDER BY o1.timestamp DESC + ORDER BY o1.event_date DESC - - - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state = 'EXECUTED' + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'EXECUTED' - - - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state = 'ERROR' + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'ERROR' - - - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state = 'CANCELED' + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'CANCELED' - + - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.state IN (:state) - ORDER BY o1.timestamp DESC + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN (:status) + ORDER BY o1.event_date DESC - + - - - SELECT o1.job_id as jobId, o1.correlation_id as correlationId, o1.state as state, o1.schedule, o1.retry, o1.execution_timeout as executionTimeout, o1.execution_timeout_unit as executionTimeoutUnit, o1.timestamp as timestmap + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.timestamp < o2.timestamp - WHERE o2.job_id IS NULL AND o1.correlation_id = :correlationId - ORDER BY o1.timestamp DESC + LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.process_instance_id = :processInstanceId + ORDER BY o1.event_date DESC - + - + - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java index 06e01e48e3..55caafdd5d 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -25,6 +25,7 @@ import org.eclipse.microprofile.reactive.messaging.Incoming; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; import org.kie.kogito.jobs.service.api.Job; @@ -74,7 +75,7 @@ public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { @Incoming(KOGITO_JOBS_EVENTS) @Blocking @Transactional - public void onJobEvent(JobCloudEvent event) { + public void onJobEvent(JobInstanceDataEvent event) { LOGGER.debug("Job received KogitoJobCloudEvent \n{}", event); proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index 6b9cbb0cd7..4a48ffa0f5 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -27,19 +27,17 @@ import javax.transaction.Transactional.TxType; import org.kie.kogito.app.audit.api.DataAuditContext; -import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.event.DataEvent; +import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @ApplicationScoped -public class QuarkusJPADataAuditEventPublisher implements DataAuditEventPublisher { +public class QuarkusJPADataAuditEventPublisher implements EventPublisher { private static final Logger LOGGER = LoggerFactory.getLogger(QuarkusJPADataAuditEventPublisher.class); @@ -79,11 +77,4 @@ public void publish(DataEvent event) { LOGGER.info("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); } - @Override - @Transactional(value = TxType.REQUIRED) - public void publish(JobCloudEvent event) { - LOGGER.debug("Processing job event {}", event); - proxy.storeJobDataEvent(DataAuditContext.newDataAuditContext(entityManager), event); - } - } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index d8d005fdf1..69ce465b93 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -19,11 +19,13 @@ package org.kie.kogito.app.audit.quarkus; import java.net.URI; +import java.time.ZonedDateTime; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; import org.kie.kogito.event.process.ProcessInstanceErrorEventBody; @@ -48,15 +50,13 @@ import org.kie.kogito.event.usertask.UserTaskInstanceStateEventBody; import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceVariableEventBody; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.Retry; -import org.kie.kogito.jobs.service.api.Schedule; -import org.kie.kogito.jobs.service.api.TemporalUnit; -import org.kie.kogito.jobs.service.api.event.CreateJobEvent; -import org.kie.kogito.jobs.service.api.event.CreateJobEvent.Builder; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.kie.kogito.jobs.service.model.JobStatus; +import org.kie.kogito.jobs.service.model.ScheduledJob; import org.kie.kogito.process.ProcessInstance; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + public class DataAuditTestUtils { public static final String ADDONS = "jobs-management,prometheus-monitoring,process-management"; @@ -69,36 +69,49 @@ public static String wrapQuery(String query) { return "{ \"query\" : \"" + query + " \"}"; } - public static JobCloudEvent newJobEvent(String jobId, String correlationId, Job.State state, Long executionTimeout, TemporalUnit unit, Retry retry, Schedule schedule) { - Job job = new Job(); - job.setCorrelationId(correlationId); + public static JobInstanceDataEvent newJobEvent(String jobId, String nodeInstanceId, Integer priority, + String processId, String procesInstanceId, Long repeatInterval, Integer repeatLimit, String rootProcessId, String rootProcessInstanceId, + JobStatus state, Integer executionCounter) throws Exception { + + ScheduledJob job = new ScheduledJob(); job.setId(jobId); - job.setState(state); - job.setExecutionTimeout(executionTimeout); - job.setExecutionTimeoutUnit(unit); - job.setRetry(retry); - job.setSchedule(schedule); - Builder builder = CreateJobEvent.builder() - .id(UUID.randomUUID().toString()) - .data(job); - return builder.build(); + job.setNodeInstanceId(nodeInstanceId); + job.setCallbackEndpoint("https://callback"); + job.setPriority(priority); + job.setProcessId(processId); + job.setProcessInstanceId(procesInstanceId); + job.setRepeatInterval(repeatInterval); + job.setRepeatLimit(repeatLimit); + job.setRootProcessId(rootProcessId); + job.setRootProcessInstanceId(rootProcessInstanceId); + + job = ScheduledJob.builder() + .job(job) + .status(state) + .executionCounter(executionCounter) + .scheduledId("my scheduler") + .expirationTime(ZonedDateTime.now()) + .build(); + + + JobInstanceDataEvent dataEvent = new JobInstanceDataEvent("JobEvent", toURIEndpoint(processId), new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsBytes(job), procesInstanceId, + rootProcessInstanceId, processId, rootProcessId, (String) "identity"); + return dataEvent; } - public static JobCloudEvent deriveNewState(JobCloudEvent jobEvent, Job.State state) { - Job job = new Job(); - job.setCorrelationId(jobEvent.getData().getCorrelationId()); - job.setId(jobEvent.getData().getId()); - job.setState(state); - job.setExecutionTimeout(jobEvent.getData().getExecutionTimeout()); - job.setExecutionTimeoutUnit(jobEvent.getData().getExecutionTimeoutUnit()); - job.setRetry(jobEvent.getData().getRetry()); - job.setSchedule(jobEvent.getData().getSchedule()); - - Builder builder = CreateJobEvent.builder() - .id(UUID.randomUUID().toString()) - .data(job); - - return builder.build(); + public static JobInstanceDataEvent deriveNewState(JobInstanceDataEvent jobEvent, Integer executionCounter, JobStatus state) throws Exception { + ScheduledJob job = new ObjectMapper().registerModule(new JavaTimeModule()).readValue(jobEvent.getData(), ScheduledJob.class); + job = ScheduledJob.builder() + .job(job) + .status(state) + .executionCounter(executionCounter) + .scheduledId("my scheduler") + .expirationTime(ZonedDateTime.now()) + .build(); + + JobInstanceDataEvent dataEvent = new JobInstanceDataEvent("JobEvent", jobEvent.getSource().toString(), new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsBytes(job), jobEvent.getKogitoProcessInstanceId(), + jobEvent.getKogitoRootProcessInstanceId(), jobEvent.getKogitoProcessId(), jobEvent.getKogitoRootProcessId(), (String) "identity"); + return dataEvent; } public static ProcessInstanceStateDataEvent newProcessInstanceStateEvent( diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java index 1f7dd8743b..e3dbb30006 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java @@ -27,19 +27,17 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.SubsystemConstants; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.Job.State; -import org.kie.kogito.jobs.service.api.TemporalUnit; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.kie.kogito.event.EventPublisher; +import org.kie.kogito.event.job.JobInstanceDataEvent; +import org.kie.kogito.jobs.service.model.JobStatus; import io.quarkus.test.junit.QuarkusTest; import io.restassured.http.ContentType; import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.CoreMatchers.equalTo; +import static org.assertj.core.api.Assertions.tuple; import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.deriveNewState; import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newJobEvent; import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.wrapQuery; @@ -49,46 +47,46 @@ public class QuarkusAuditJobServiceTest { @Inject - DataAuditEventPublisher publisher; + EventPublisher publisher; @BeforeAll - public void init() { + public void init() throws Exception { - JobCloudEvent jobEvent; - jobEvent = newJobEvent("job1", "correlation1", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + JobInstanceDataEvent jobEvent; + jobEvent = newJobEvent("job1", "nodeInstanceId1", 1, "processId1", "processInstanceId1", 100L, 10, "rootProcessId1", "rootProcessInstanceId1", JobStatus.SCHEDULED, 0); publisher.publish(jobEvent); - jobEvent = deriveNewState(jobEvent, State.EXECUTED); + jobEvent = deriveNewState(jobEvent, 1, JobStatus.EXECUTED); publisher.publish(jobEvent); - jobEvent = newJobEvent("job2", "correlation2", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + jobEvent = newJobEvent("job2", "nodeInstanceId1", 1, "processId1", "processInstanceId2", 100L, 10, "rootProcessId1", "rootProcessInstanceId1", JobStatus.SCHEDULED, 0); publisher.publish(jobEvent); - jobEvent = newJobEvent("job3", "correlation3", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + jobEvent = newJobEvent("job3", "nodeInstanceId1", 1, "processId1", "processInstanceId3", 100L, 10, "rootProcessId1", "rootProcessInstanceId1", JobStatus.SCHEDULED, 0); publisher.publish(jobEvent); - jobEvent = deriveNewState(jobEvent, State.CANCELED); + jobEvent = deriveNewState(jobEvent, 1, JobStatus.CANCELED); publisher.publish(jobEvent); - jobEvent = newJobEvent("job4", "correlation4", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + jobEvent = newJobEvent("job4", "nodeInstanceId1", 1, "processId1", "processInstanceId4", 100L, 10, "rootProcessId1", "rootProcessInstanceId1", JobStatus.SCHEDULED, 0); publisher.publish(jobEvent); - jobEvent = deriveNewState(jobEvent, State.RETRY); + jobEvent = deriveNewState(jobEvent, 1, JobStatus.RETRY); publisher.publish(jobEvent); - jobEvent = deriveNewState(jobEvent, State.EXECUTED); + jobEvent = deriveNewState(jobEvent, 2, JobStatus.EXECUTED); publisher.publish(jobEvent); - jobEvent = newJobEvent("job5", "correlation5", State.SCHEDULED, 10L, TemporalUnit.MILLIS, null, null); + jobEvent = newJobEvent("job5", "nodeInstanceId1", 1, "processId1", "processInstanceI51", 100L, 10, "rootProcessId1", "rootProcessInstanceId1", JobStatus.SCHEDULED, 0); publisher.publish(jobEvent); - jobEvent = deriveNewState(jobEvent, State.ERROR); + jobEvent = deriveNewState(jobEvent, 1, JobStatus.ERROR); publisher.publish(jobEvent); } @Test public void testGetAllScheduledJobs() { - String query = "{ GetAllScheduledJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp } }"; + String query = "{ GetAllScheduledJobs { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> response = given() @@ -105,18 +103,16 @@ public void testGetAllScheduledJobs() { .extract().path("data.GetAllScheduledJobs"); assertThat(response) - .hasSize(1).first() - .hasFieldOrPropertyWithValue("jobId", equalTo("job2")) - .hasFieldOrPropertyWithValue("correlationId", equalTo("correlation2")) - .hasFieldOrPropertyWithValue("state", equalTo("SCHEDULED")) - .hasFieldOrPropertyWithValue("executionTimeout", equalTo(10)) - .hasFieldOrPropertyWithValue("executionTimeoutUnit", equalTo("MILLIS")); + .hasSize(1) + .extracting(e -> e.get("jobId"), e -> e.get("processInstanceId"), e -> e.get("status")) + .containsExactlyInAnyOrder(tuple("job2", "processInstanceId2", "SCHEDULED")); } @Test public void testGetJobById() { - String query = "{ GetJobById ( jobId : \\\"job1\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = + "{ GetJobById ( jobId : \\\"job1\\\") { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> response = given() .contentType(ContentType.JSON) @@ -137,7 +133,8 @@ public void testGetJobById() { @Test public void testGetJobHistoryById() { - String query = "{ GetJobHistoryById ( jobId : \\\"job4\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = + "{ GetJobHistoryById ( jobId : \\\"job4\\\") { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> response = given() .contentType(ContentType.JSON) @@ -155,14 +152,15 @@ public void testGetJobHistoryById() { assertThat(response) .hasSize(3) .allMatch(e -> "job4".equals(e.get("jobId"))) - .extracting(e -> e.get("state")) + .extracting(e -> e.get("status")) .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); } @Test - public void testGetJobHistoryByCorrelationId() { - String query = "{ GetJobHistoryByCorrelationId ( correlationId : \\\"correlation4\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + public void testGetJobHistoryByProcessInstanceId() { + String query = + "{ GetJobHistoryByProcessInstanceId ( processInstanceId : \\\"processInstanceId4\\\") { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -173,19 +171,19 @@ public void testGetJobHistoryByCorrelationId() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetJobHistoryByCorrelationId"); + .extract().path("data.GetJobHistoryByProcessInstanceId"); assertThat(data) .hasSize(3) .allMatch(e -> "job4".equals(e.get("jobId"))) - .allMatch(e -> "correlation4".equals(e.get("correlationId"))) - .extracting(e -> e.get("state")) + .allMatch(e -> "processInstanceId4".equals(e.get("processInstanceId"))) + .extracting(e -> e.get("status")) .containsExactlyInAnyOrder("SCHEDULED", "RETRY", "EXECUTED"); } @Test public void testGetAllPendingJobs() { - String query = "{ GetAllPendingJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = "{ GetAllPendingJobs { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -203,7 +201,8 @@ public void testGetAllPendingJobs() { @Test public void testGetAllEligibleJobsForExecution() { - String query = "{ GetAllEligibleJobsForExecution { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = + "{ GetAllEligibleJobsForExecution { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -211,6 +210,8 @@ public void testGetAllEligibleJobsForExecution() { .when() .post(SubsystemConstants.DATA_AUDIT_PATH) .then() + .log() + .body() .assertThat() .statusCode(200) .and() @@ -222,7 +223,8 @@ public void testGetAllEligibleJobsForExecution() { @Test public void testGetAllEligibleJobsForRetry() { - String query = "{ GetAllEligibleJobsForRetry { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = + "{ GetAllEligibleJobsForRetry { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -240,7 +242,7 @@ public void testGetAllEligibleJobsForRetry() { @Test public void testGetAllJobs() { - String query = "{ GetAllJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = "{ GetAllJobs { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -261,7 +263,7 @@ public void testGetAllJobs() { @Test public void testGetAllCompletedJobs() { - String query = "{ GetAllCompletedJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = "{ GetAllCompletedJobs { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -276,7 +278,7 @@ public void testGetAllCompletedJobs() { assertThat(data) .hasSize(2) - .allMatch(e -> "EXECUTED".equals(e.get("state"))) + .allMatch(e -> "EXECUTED".equals(e.get("status"))) .extracting(e -> e.get("jobId")) .containsExactlyInAnyOrder("job1", "job4"); } @@ -284,7 +286,7 @@ public void testGetAllCompletedJobs() { @Test public void testGetAllInErrorJobs() { - String query = "{ GetAllInErrorJobs { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = "{ GetAllInErrorJobs { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -299,15 +301,16 @@ public void testGetAllInErrorJobs() { assertThat(data) .hasSize(1) - .allMatch(e -> "ERROR".equals(e.get("state"))) + .allMatch(e -> "ERROR".equals(e.get("status"))) .extracting(e -> e.get("jobId")) .containsExactlyInAnyOrder("job5"); } @Test - public void testGetAllJobsByState() { + public void testGetAllJobsByStatus() { - String query = "{ GetAllJobsByState (state : \\\"EXECUTED\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = + "{ GetAllJobsByStatus (status : \\\"EXECUTED\\\") { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -318,18 +321,19 @@ public void testGetAllJobsByState() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetAllJobsByState"); + .extract().path("data.GetAllJobsByStatus"); assertThat(data) - .allMatch(e -> "EXECUTED".equals(e.get("state"))) + .allMatch(e -> "EXECUTED".equals(e.get("status"))) .extracting(e -> e.get("jobId")) .containsExactlyInAnyOrder("job1", "job4"); } @Test - public void testGetJobByCorrelationId() { + public void testGetJobByProcessInstanceId() { - String query = "{ GetJobByCorrelationId (correlationId : \\\"correlation1\\\") { jobId, correlationId, state, schedule, retry, executionTimeout, executionTimeoutUnit, timestamp} }"; + String query = + "{ GetJobByProcessInstanceId (processInstanceId : \\\"processInstanceId1\\\") { jobId, expirationTime, priority, processInstanceId, nodeInstanceId, repeatInterval, repeatLimit, scheduledId, retries, status, executionCounter } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -340,10 +344,10 @@ public void testGetJobByCorrelationId() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetJobByCorrelationId"); + .extract().path("data.GetJobByProcessInstanceId"); assertThat(data).first() - .hasFieldOrPropertyWithValue("correlationId", "correlation1"); + .hasFieldOrPropertyWithValue("processInstanceId", "processInstanceId1"); } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index 7e58d5da48..f1d56bf8ac 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -27,8 +27,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.SubsystemConstants; +import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeDataEvent; import org.kie.kogito.event.process.ProcessInstanceNodeEventBody; @@ -55,7 +55,7 @@ public class QuarkusAuditProcessInstanceServiceTest { @Inject - DataAuditEventPublisher publisher; + EventPublisher publisher; @BeforeAll public void init() { diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index ae919312d5..0e6549ab18 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -29,8 +29,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.SubsystemConstants; +import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentEventBody; @@ -58,7 +58,7 @@ public class QuarkusAuditUserTaskInstanceServiceTest { @Inject - DataAuditEventPublisher publisher; + EventPublisher publisher; class Pojo { public Pojo(Integer value) { diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java index ad829bda6f..ed452186df 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java @@ -23,14 +23,12 @@ import javax.persistence.EntityManager; import org.kie.kogito.app.audit.api.DataAuditContext; -import org.kie.kogito.app.audit.api.DataAuditEventPublisher; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.event.DataEvent; +import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -41,7 +39,7 @@ import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; @Component -public class SpringBootJPADataAuditEventPublisher implements DataAuditEventPublisher { +public class SpringBootJPADataAuditEventPublisher implements EventPublisher { private static final Logger LOGGER = LoggerFactory.getLogger(SpringBootJPADataAuditEventPublisher.class); @@ -80,10 +78,4 @@ public void publish(DataEvent event) { LOGGER.debug("Discard event {} as class {} is not supported by this", event, event.getClass().getName()); } - @Override - public void publish(JobCloudEvent event) { - LOGGER.debug("Processing job event {}", event); - proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); - } - } diff --git a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java index f342506046..c72659d485 100644 --- a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java +++ b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java @@ -711,7 +711,7 @@ void testUserTaskInstanceDomainIndex() throws Exception { event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "kogito", 2); UserTaskInstanceStateEventBody body = UserTaskInstanceStateEventBody.create() - .eventType(2) + .eventType("Completed") .userTaskInstanceId(taskId) .state("Completed") .userTaskName("TaskName") From 51a0e86ecc9b0e58a9eb9bdb16de9fd302ce621b Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 6 Nov 2023 10:51:33 +0100 Subject: [PATCH 19/47] add microprofile to subsystem --- .../audit/kafka/JobDataEventDeserializer.java | 10 ++-- .../src/main/resources/META-INF/beans.xml | 0 .../META-INF/microprofile-config.properties | 48 +++++++++++++++++++ .../main/resources/applications.properties | 13 ----- 4 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/beans.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties delete mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java index 297ae0b24d..a9199851fc 100644 --- a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java +++ b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java @@ -20,21 +20,21 @@ import org.apache.kafka.common.serialization.Deserializer; import org.kie.kogito.app.audit.json.JsonUtils; -import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.core.JsonProcessingException; -public class JobDataEventDeserializer implements Deserializer> { +public class JobDataEventDeserializer implements Deserializer { private static final Logger LOGGER = LoggerFactory.getLogger(JobDataEventDeserializer.class); @Override - public UserTaskInstanceDataEvent deserialize(String topic, byte[] data) { + public JobInstanceDataEvent deserialize(String topic, byte[] data) { try { - return JsonUtils.getObjectMapper().readValue(new String(data), UserTaskInstanceDataEvent.class); + return JsonUtils.getObjectMapper().readValue(new String(data), JobInstanceDataEvent.class); } catch (JsonProcessingException e) { - LOGGER.error("not possible to deserialize UserTaskInstanceDataEvent data {}", new String(data), e); + LOGGER.error("not possible to deserialize JobInstanceDataEvent data {}", new String(data), e); throw new IllegalArgumentException("not possible to deserialize data"); } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties new file mode 100644 index 0000000000..7354395593 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties @@ -0,0 +1,48 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 +# +# 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. +# + +# Quarkus + +mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.index.service.messaging.ProcessInstanceDataEventDeserializer +mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer +mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer +quarkus.kafka.bootstrap-servers=localhost:9092 +kafka.bootstrap.servers=localhost:9092 + +mp.messaging.incoming.kogito-processinstances-events.topic=kogito-processinstances-events +mp.messaging.incoming.kogito-processinstances-events.group.id=kogito-data-index-processinstances +mp.messaging.incoming.kogito-processinstances-events.enable.auto.commit=false +mp.messaging.incoming.kogito-processinstances-events.auto.offset.reset=earliest +mp.messaging.incoming.kogito-processinstances-events.isolation.level=read_committed + +mp.messaging.incoming.kogito-usertaskinstances-events.topic=kogito-usertaskinstances-events +mp.messaging.incoming.kogito-usertaskinstances-events.group.id=kogito-data-index-usertaskinstances +mp.messaging.incoming.kogito-usertaskinstances-events.enable.auto.commit=false +mp.messaging.incoming.kogito-usertaskinstances-events.auto.offset.reset=earliest +mp.messaging.incoming.kogito-usertaskinstances-events.isolation.level=read_committed + +mp.messaging.incoming.kogito-jobs-events.topic=kogito-jobs-events +mp.messaging.incoming.kogito-jobs-events.group.id=kogito-data-index-jobs +mp.messaging.incoming.kogito-jobs-events.enable.auto.commit=false +mp.messaging.incoming.kogito-jobs-events.auto.offset.reset=earliest +mp.messaging.incoming.kogito-jobs-events.isolation.level=read_committed + diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties b/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties deleted file mode 100644 index 2000c33bf7..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/applications.properties +++ /dev/null @@ -1,13 +0,0 @@ -mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer -mp.messaging.incoming.kogito-processinstances-events.group.id=data-audit - -mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer -mp.messaging.incoming.kogito-usertaskinstances-events.group.id=data-audit - -mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer -mp.messaging.incoming.kogito-jobs-events.group.id=data-audit - -quarkus.kafka.bootstrap-servers=localhost:9092 \ No newline at end of file From 5b90d92121da9f752b538912f0f08be8a46d32f7 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 6 Nov 2023 12:17:21 +0100 Subject: [PATCH 20/47] make context factory independent --- .../.gitignore | 0 .../pom.xml | 0 .../app/audit/jpa/JPADataAuditStore.java | 0 .../jpa/model/AbstractProcessInstanceLog.java | 0 .../model/AbstractUserTaskInstanceLog.java | 0 .../app/audit/jpa/model/JobExecutionLog.java | 0 .../app/audit/jpa/model/ModelConstants.java | 0 .../jpa/model/ProcessInstanceErrorLog.java | 0 .../jpa/model/ProcessInstanceNodeLog.java | 0 .../jpa/model/ProcessInstanceStateLog.java | 0 .../jpa/model/ProcessInstanceVariableLog.java | 0 .../model/UserTaskInstanceAssignmentLog.java | 0 .../model/UserTaskInstanceAttachmentLog.java | 0 .../jpa/model/UserTaskInstanceCommentLog.java | 0 .../model/UserTaskInstanceDeadlineLog.java | 0 .../jpa/model/UserTaskInstanceStateLog.java | 0 .../model/UserTaskInstanceVariableLog.java | 0 .../app/audit/jpa/queries/DataMapper.java | 0 .../audit/jpa/queries/JPAAbstractQuery.java | 0 .../jpa/queries/JPAComplexNamedQuery.java | 0 .../JPAGraphQLSchemaJobsQueryProvider.java | 0 ...QLSchemaProcessInstancesQueryProvider.java | 0 ...LSchemaUserTaskInstancesQueryProvider.java | 0 .../jpa/queries/JPASimpleNamedQuery.java | 0 .../mapper/ProcessInstanceStateTOMapper.java | 0 .../UserTaskInstanceAssignmentTOMapper.java | 0 .../UserTaskInstanceDeadlineTOMapper.java | 0 .../main/resources/META-INF/entity-orm.xml | 0 .../src/main/resources/META-INF/job-orm.xml | 0 .../main/resources/META-INF/process-orm.xml | 0 ...rg.kie.kogito.app.audit.spi.DataAuditStore | 0 ...o.app.audit.spi.GraphQLSchemaQueryProvider | 0 .../main/resources/META-INF/usertask-orm.xml | 0 .../pom.xml | 71 ++++++++++ .../QuarkusJPADataAuditContextFactory.java | 39 ++++++ .../src/main/resources/META-INF/beans.xml | 0 .../pom.xml | 60 ++++++++ .../SpringbootJPAAuditDataConfiguration.java} | 11 +- .../SpringbootJPADataAuditContextFactory.java | 41 ++++++ .../src/main/resources/application.properties | 0 data-audit/jpa/pom.xml | 26 ++++ .../audit/spi/DataAuditContextFactory.java | 28 ++++ .../pom.xml | 130 ------------------ .../pom.xml | 90 ------------ .../pom.xml | 4 +- ...uarkusDataAuditMessagingEventConsumer.java | 17 +-- .../src/main/resources/META-INF/beans.xml | 0 .../META-INF/microprofile-config.properties | 0 .../kogito-addons-data-audit-quarkus/pom.xml | 125 +++++++++++++++++ .../quarkus/GraphQLJPADataAuditRouter.java | 15 +- .../QuarkusJPADataAuditEventPublisher.java | 15 +- .../src/main/resources/META-INF/beans.xml | 0 .../src/main/resources/application.properties | 0 .../app/audit/quarkus/DataAuditTestUtils.java | 0 .../quarkus/QuarkusAuditJobServiceTest.java | 0 ...uarkusAuditProcessInstanceServiceTest.java | 0 ...arkusAuditUserTaskInstanceServiceTest.java | 0 .../QuarkusEmbeddedJPADataAuditTest.java | 0 .../src/test/resources/application.properties | 0 .../pom.xml | 81 +++++++++++ .../GraphQLJPAAuditDataRouteMapping.java | 11 +- .../SpringbootAuditDataConfiguration.java | 31 +++++ ...SpringbootJPADataAuditEventPublisher.java} | 22 ++- .../SpringbootJPADataAuditTest.java | 0 .../src/test/resources/application.properties | 0 data-audit/pom.xml | 58 ++++++-- kogito-apps-bom/pom.xml | 76 +++++----- 67 files changed, 626 insertions(+), 325 deletions(-) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/.gitignore (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/pom.xml (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider (100%) rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml (100%) create mode 100644 data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml create mode 100644 data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java rename data-audit/{kogito-addons-data-audit-jpa-quarkus-subsystem => jpa/kogito-addons-data-audit-jpa-quarkus}/src/main/resources/META-INF/beans.xml (100%) create mode 100644 data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml rename data-audit/{kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java => jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java} (91%) create mode 100644 data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java rename data-audit/{ => jpa}/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties (100%) create mode 100644 data-audit/jpa/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java delete mode 100644 data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml rename data-audit/{kogito-addons-data-audit-jpa-quarkus-subsystem => kogito-addons-data-audit-quarkus-subsystem}/pom.xml (95%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus-subsystem => kogito-addons-data-audit-quarkus-subsystem}/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java (82%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus-subsystem}/src/main/resources/META-INF/beans.xml (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus-subsystem => kogito-addons-data-audit-quarkus-subsystem}/src/main/resources/META-INF/microprofile-config.properties (100%) create mode 100644 data-audit/kogito-addons-data-audit-quarkus/pom.xml rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java (88%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java (80%) create mode 100644 data-audit/kogito-addons-data-audit-quarkus/src/main/resources/META-INF/beans.xml rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/main/resources/application.properties (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java (100%) rename data-audit/{kogito-addons-data-audit-jpa-quarkus => kogito-addons-data-audit-quarkus}/src/test/resources/application.properties (100%) create mode 100644 data-audit/kogito-addons-data-audit-springboot/pom.xml rename data-audit/{kogito-addons-data-audit-jpa-springboot => kogito-addons-data-audit-springboot}/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java (89%) create mode 100644 data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java rename data-audit/{kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java => kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java} (74%) rename data-audit/{kogito-addons-data-audit-jpa-springboot => kogito-addons-data-audit-springboot}/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java (100%) rename data-audit/{kogito-addons-data-audit-jpa-springboot => kogito-addons-data-audit-springboot}/src/test/resources/application.properties (100%) diff --git a/data-audit/kogito-addons-data-audit-jpa-common/.gitignore b/data-audit/jpa/kogito-addons-data-audit-jpa-common/.gitignore similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/.gitignore rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/.gitignore diff --git a/data-audit/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/pom.xml rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider diff --git a/data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml rename to data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml new file mode 100644 index 0000000000..32af9e0705 --- /dev/null +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + jpa + org.kie.kogito + 2.0.0-SNAPSHOT + + + kogito-addons-data-audit-jpa-quarkus + + Kogito Apps :: Data Audit :: JPA :: Quarkus + + + + UTF-8 + + + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + + + io.quarkus + quarkus-core + + + io.quarkus + quarkus-arc + + + + io.quarkus + quarkus-reactive-routes + + + io.quarkiverse.reactivemessaging.http + quarkus-reactive-messaging-http + + + io.quarkus + quarkus-vertx-graphql + + + + io.quarkus + quarkus-hibernate-orm + + + + + diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java new file mode 100644 index 0000000000..873046f053 --- /dev/null +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; + +import javax.enterprise.context.ApplicationScoped; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; + +@ApplicationScoped +public class QuarkusJPADataAuditContextFactory implements DataAuditContextFactory { + + @PersistenceContext(unitName = "DataAuditPU") + EntityManager entityManager; + + @Override + public DataAuditContext newDataAuditContext() { + return DataAuditContext.newDataAuditContext(entityManager); + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/beans.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/beans.xml rename to data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml new file mode 100644 index 0000000000..1efb80c5a8 --- /dev/null +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + jpa + org.kie.kogito + 2.0.0-SNAPSHOT + + + + kogito-addons-data-audit-jpa-springboot + Kogito Apps :: Data Audit :: JPA :: Springboot + + + + UTF-8 + + + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + + + org.kie.kogito + kogito-events-core + + + org.slf4j + slf4j-api + + + + org.springframework.boot + spring-boot-starter + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-web + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-data-jpa + ${version.org.springframework.boot} + + + org.springframework.kafka + spring-kafka + 2.8.4 + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java similarity index 91% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java rename to data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java index 0090ec4941..737d8864f3 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootAuditDataConfiguration.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java @@ -22,24 +22,18 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -@SpringBootConfiguration -@EnableAutoConfiguration -@ComponentScan @Configuration(proxyBeanMethods = false) -public class SpringBootAuditDataConfiguration { +public class SpringbootJPAAuditDataConfiguration { @Bean @Primary @@ -54,7 +48,8 @@ public JpaProperties jpaDataAuditProperties() { return new JpaProperties(); } - @Bean + @Bean(name = "jpaDataAuditEntityManagerFactory") + @Qualifier("jpaDataAuditEntityManagerFactory") public LocalContainerEntityManagerFactoryBean jpaDataAuditEntityManagerFactory( DataSource dataSource, @Autowired @Qualifier("JPADataAuditProperties") JpaProperties jpaProperties) { diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java new file mode 100644 index 0000000000..07a0f51115 --- /dev/null +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + +import javax.persistence.EntityManager; + +import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +@Component +public class SpringbootJPADataAuditContextFactory implements DataAuditContextFactory { + + @Autowired + @Qualifier("jpaDataAuditEntityManagerFactory") + EntityManager entityManager; + + @Override + public DataAuditContext newDataAuditContext() { + return DataAuditContext.newDataAuditContext(entityManager); + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties rename to data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties diff --git a/data-audit/jpa/pom.xml b/data-audit/jpa/pom.xml new file mode 100644 index 0000000000..2dbe7a2cca --- /dev/null +++ b/data-audit/jpa/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + data-audit + org.kie.kogito + 2.0.0-SNAPSHOT + + + pom + jpa + + jpa + + + UTF-8 + + + + kogito-addons-data-audit-jpa-common + kogito-addons-data-audit-jpa-quarkus + kogito-addons-data-audit-jpa-springboot + + diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java new file mode 100644 index 0000000000..256741ce38 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.spi; + +import org.kie.kogito.app.audit.api.DataAuditContext; + +public interface DataAuditContextFactory { + + DataAuditContext newDataAuditContext(); + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml deleted file mode 100644 index 73a3afe604..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - 4.0.0 - - org.kie.kogito - data-audit - 2.0.0-SNAPSHOT - - - kogito-addons-data-audit-jpa-quarkus - - - Kogito Apps :: Data Audit :: Quarkus - - - UTF-8 - - - - - org.kie.kogito - kogito-addons-data-audit-jpa-common - - - org.kie.kogito - kogito-addons-data-audit-common - - - org.kie.kogito - kogito-events-core - - - org.kie.kogito - jobs-service-api - - - org.slf4j - slf4j-api - - - - - - io.quarkus - quarkus-core - - - io.quarkus - quarkus-arc - - - - io.quarkus - quarkus-reactive-routes - - - io.quarkiverse.reactivemessaging.http - quarkus-reactive-messaging-http - - - io.quarkus - quarkus-vertx-graphql - - - - io.quarkus - quarkus-hibernate-orm - - - - - org.hamcrest - hamcrest-all - 1.3 - test - - - org.assertj - assertj-core - test - - - io.quarkus - quarkus-junit5 - test - - - io.rest-assured - rest-assured - test - - - - - - - - maven-surefire-plugin - - - - org.jboss.logmanager.LogManager - ${maven.home} - - - - - - - - - h2 - - true - - - - - io.quarkus - quarkus-jdbc-h2 - test - - - - - - - diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml deleted file mode 100644 index 80337e34ac..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - 4.0.0 - - org.kie.kogito - data-audit - 2.0.0-SNAPSHOT - - - kogito-addons-data-audit-jpa-springboot - - Kogito Apps :: Data Audit :: Springboot - - - UTF-8 - - - - - org.kie.kogito - kogito-addons-data-audit-jpa-common - - - org.kie.kogito - kogito-addons-data-audit-common - - - org.kie.kogito - kogito-events-core - - - org.slf4j - slf4j-api - - - - org.springframework.boot - spring-boot-starter - ${version.org.springframework.boot} - - - org.springframework.boot - spring-boot-starter-web - ${version.org.springframework.boot} - - - org.springframework.boot - spring-boot-starter-data-jpa - ${version.org.springframework.boot} - - - org.springframework.kafka - spring-kafka - 2.8.4 - - - - org.springframework.boot - spring-boot-starter-test - ${version.org.springframework.boot} - test - - - io.rest-assured - rest-assured - test - - - - - - - h2 - - true - - - - - com.h2database - h2 - test - - - - - - diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml b/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml similarity index 95% rename from data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml rename to data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml index 29811e67f7..ae091bcd56 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml @@ -8,9 +8,9 @@ - kogito-addons-data-audit-jpa-quarkus-subsystem + kogito-addons-data-audit-quarkus-subsystem - kogito-addons-data-audit-jpa-quarkus-subsystem + kogito-addons-data-audit-quarkus-subsystem diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java similarity index 82% rename from data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java rename to data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java index 55caafdd5d..975a1a6c91 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java +++ b/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -19,23 +19,20 @@ package org.kie.kogito.app.audit.quarkus; import javax.enterprise.context.ApplicationScoped; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import javax.inject.Inject; import javax.transaction.Transactional; import org.eclipse.microprofile.reactive.messaging.Incoming; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; -import org.kie.kogito.jobs.service.api.Job; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.smallrye.common.annotation.Blocking; -import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; @@ -47,8 +44,8 @@ public class QuarkusDataAuditMessagingEventConsumer { private DataAuditStoreProxyService proxy; - @PersistenceContext - EntityManager entityManager; + @Inject + DataAuditContextFactory dataAuditContextFactory; public QuarkusDataAuditMessagingEventConsumer() { proxy = DataAuditStoreProxyService.newAuditStoreService(); @@ -59,7 +56,7 @@ public QuarkusDataAuditMessagingEventConsumer() { @Transactional public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), event); + proxy.storeProcessInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), event); } @@ -68,7 +65,7 @@ public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { @Transactional public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { LOGGER.debug("Task instance received UserTaskInstanceDataEvent \n{}", event); - proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), event); + proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), event); } @@ -77,7 +74,7 @@ public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { @Transactional public void onJobEvent(JobInstanceDataEvent event) { LOGGER.debug("Job received KogitoJobCloudEvent \n{}", event); - proxy.storeJobDataEvent(newDataAuditContext(entityManager), event); + proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), event); } } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/beans.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml rename to data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/beans.xml diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties b/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties rename to data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml new file mode 100644 index 0000000000..2b500ceb0a --- /dev/null +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -0,0 +1,125 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + + kogito-addons-data-audit-quarkus + + + Kogito Apps :: Data Audit :: Quarkus + + + UTF-8 + + + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + + + + + + io.quarkus + quarkus-core + + + io.quarkus + quarkus-arc + + + + io.quarkus + quarkus-reactive-routes + + + io.quarkiverse.reactivemessaging.http + quarkus-reactive-messaging-http + + + io.quarkus + quarkus-vertx-graphql + + + + + org.hamcrest + hamcrest-all + 1.3 + test + + + org.assertj + assertj-core + test + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + + + maven-surefire-plugin + + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + jpa-h2 + + true + + + + org.kie.kogito + kogito-addons-data-audit-jpa-quarkus + + + + io.quarkus + quarkus-jdbc-h2 + test + + + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java similarity index 88% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java rename to data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java index 4405a80d24..83f730fbd5 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -20,10 +20,10 @@ import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import javax.inject.Inject; import org.kie.kogito.app.audit.api.DataAuditQueryService; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import io.quarkus.vertx.web.Route; import io.vertx.ext.web.RoutingContext; @@ -31,13 +31,12 @@ import io.vertx.ext.web.handler.graphql.GraphQLHandler; import io.vertx.ext.web.handler.graphql.GraphQLHandlerOptions; -import graphql.GraphQL; - import static io.quarkus.vertx.web.Route.HttpMethod.GET; import static io.quarkus.vertx.web.Route.HttpMethod.POST; -import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; +import graphql.GraphQL; + @ApplicationScoped public class GraphQLJPADataAuditRouter { @@ -45,8 +44,8 @@ public class GraphQLJPADataAuditRouter { GraphQLHandler graphQLHandler; - @PersistenceContext(unitName = "DataAuditPU") - EntityManager entityManager; + @Inject + DataAuditContextFactory dataAuditContextFactory; @PostConstruct public void init() { @@ -65,7 +64,7 @@ public void blockingGraphQLHandlerPost(RoutingContext rc) { } private void beforeExecuteHTTP(ExecutionInputBuilderWithContext config) { - config.builder().localContext(newDataAuditContext(entityManager)); + config.builder().localContext(dataAuditContextFactory.newDataAuditContext()); } } diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java similarity index 80% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java rename to data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index 4a48ffa0f5..c847447871 100644 --- a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -21,13 +21,12 @@ import java.util.Collection; import javax.enterprise.context.ApplicationScoped; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import javax.inject.Inject; import javax.transaction.Transactional; import javax.transaction.Transactional.TxType; -import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.kie.kogito.event.DataEvent; import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.job.JobInstanceDataEvent; @@ -43,8 +42,8 @@ public class QuarkusJPADataAuditEventPublisher implements EventPublisher { private DataAuditStoreProxyService proxy; - @PersistenceContext(unitName = "DataAuditPU") - EntityManager entityManager; + @Inject + DataAuditContextFactory dataAuditContextFactory; public QuarkusJPADataAuditEventPublisher() { proxy = DataAuditStoreProxyService.newAuditStoreService(); @@ -62,15 +61,15 @@ public void publish(DataEvent event) { if (event instanceof ProcessInstanceDataEvent) { LOGGER.debug("Processing process instance event {}", event); - proxy.storeProcessInstanceDataEvent(DataAuditContext.newDataAuditContext(entityManager), (ProcessInstanceDataEvent) event); + proxy.storeProcessInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (ProcessInstanceDataEvent) event); return; } else if (event instanceof UserTaskInstanceDataEvent) { LOGGER.debug("Processing user task instacne event {}", event); - proxy.storeUserTaskInstanceDataEvent(DataAuditContext.newDataAuditContext(entityManager), (UserTaskInstanceDataEvent) event); + proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { LOGGER.info("Processing job instance event {}", event); - proxy.storeJobDataEvent(DataAuditContext.newDataAuditContext(entityManager), (JobInstanceDataEvent) event); + proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; } diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-quarkus/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-quarkus/src/main/resources/application.properties similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties rename to data-audit/kogito-addons-data-audit-quarkus/src/main/resources/application.properties diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java rename to data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java rename to data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java rename to data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java rename to data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java rename to data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java diff --git a/data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-quarkus/src/test/resources/application.properties rename to data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml new file mode 100644 index 0000000000..4554ca2666 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + + kogito-addons-data-audit-springboot + + Kogito Apps :: Data Audit :: Springboot + + + UTF-8 + + + + + + org.kie.kogito + kogito-addons-data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.slf4j + slf4j-api + + + + org.springframework.boot + spring-boot-starter + ${version.org.springframework.boot} + + + org.springframework.boot + spring-boot-starter-web + ${version.org.springframework.boot} + + + + org.springframework.boot + spring-boot-starter-test + ${version.org.springframework.boot} + test + + + io.rest-assured + rest-assured + test + + + + + + + jpa-h2 + + true + + + + + org.kie.kogito + kogito-addons-data-audit-jpa-springboot + + + com.h2database + h2 + test + + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java similarity index 89% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java rename to data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java index d6ed812d4f..c96ab7ef66 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -21,9 +21,9 @@ import java.util.Map; import javax.annotation.PostConstruct; -import javax.persistence.EntityManager; import org.kie.kogito.app.audit.api.DataAuditQueryService; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; @@ -32,18 +32,17 @@ import com.fasterxml.jackson.databind.JsonNode; -import graphql.ExecutionResult; - -import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; +import graphql.ExecutionResult; + @RestController public class GraphQLJPAAuditDataRouteMapping { private DataAuditQueryService dataAuditQueryService; @Autowired - private EntityManager entityManager; + DataAuditContextFactory dataAuditContextFactory; @PostConstruct public void init() { @@ -53,7 +52,7 @@ public void init() { @PostMapping(value = DATA_AUDIT_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public Map executeQuery(@RequestBody JsonNode query) { - ExecutionResult executionResult = dataAuditQueryService.executeQuery(newDataAuditContext(entityManager), query.get("query").asText()); + ExecutionResult executionResult = dataAuditQueryService.executeQuery(dataAuditContextFactory.newDataAuditContext(), query.get("query").asText()); return executionResult.toSpecification(); } diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java new file mode 100644 index 0000000000..9e806a7b9d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.springboot; + + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootConfiguration +@EnableAutoConfiguration +@ComponentScan +public class SpringbootAuditDataConfiguration { + +} diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java similarity index 74% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java rename to data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java index ed452186df..67557ed4ac 100644 --- a/data-audit/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringBootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java @@ -20,10 +20,8 @@ import java.util.Collection; -import javax.persistence.EntityManager; - -import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; +import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.kie.kogito.event.DataEvent; import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.job.JobInstanceDataEvent; @@ -32,24 +30,20 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import static org.kie.kogito.app.audit.api.DataAuditContext.newDataAuditContext; - @Component -public class SpringBootJPADataAuditEventPublisher implements EventPublisher { +public class SpringbootJPADataAuditEventPublisher implements EventPublisher { - private static final Logger LOGGER = LoggerFactory.getLogger(SpringBootJPADataAuditEventPublisher.class); + private static final Logger LOGGER = LoggerFactory.getLogger(SpringbootJPADataAuditEventPublisher.class); private DataAuditStoreProxyService proxy; @Autowired - @Qualifier("jpaDataAuditEntityManagerFactory") - EntityManager entityManager; + DataAuditContextFactory dataAuditContextFactory; - public SpringBootJPADataAuditEventPublisher() { + public SpringbootJPADataAuditEventPublisher() { proxy = DataAuditStoreProxyService.newAuditStoreService(); } @@ -63,15 +57,15 @@ public void publish(Collection> events) { public void publish(DataEvent event) { if (event instanceof ProcessInstanceDataEvent) { LOGGER.debug("Processing process instance event {}", event); - proxy.storeProcessInstanceDataEvent(newDataAuditContext(entityManager), (ProcessInstanceDataEvent) event); + proxy.storeProcessInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (ProcessInstanceDataEvent) event); return; } else if (event instanceof UserTaskInstanceDataEvent) { LOGGER.debug("Processing user task instacne event {}", event); - proxy.storeUserTaskInstanceDataEvent(newDataAuditContext(entityManager), (UserTaskInstanceDataEvent) event); + proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { LOGGER.info("Processing job instance event {}", event); - proxy.storeJobDataEvent(DataAuditContext.newDataAuditContext(entityManager), (JobInstanceDataEvent) event); + proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; } diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java rename to data-audit/kogito-addons-data-audit-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java diff --git a/data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties similarity index 100% rename from data-audit/kogito-addons-data-audit-jpa-springboot/src/test/resources/application.properties rename to data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties diff --git a/data-audit/pom.xml b/data-audit/pom.xml index f8b442d7a9..6de95e8fa7 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -1,26 +1,54 @@ - - - org.kie.kogito - kogito-apps-build-parent - 2.0.0-SNAPSHOT - ../kogito-apps-build-parent/pom.xml + + + + + + org.kie.kogito + + + kogito-apps-build-parent + + + 2.0.0-SNAPSHOT + + + ../kogito-apps-build-parent/pom.xml + + - + + 4.0.0 + data-audit + pom - + + Kogito Apps :: Data Audit - - + + + + + kogito-addons-data-audit-common + + kogito-addons-data-audit-quarkus + + + kogito-addons-data-audit-springboot + + kogito-addons-data-audit-quarkus-subsystem + kogito-addons-data-audit-common-kafka - kogito-addons-data-audit-jpa-common - kogito-addons-data-audit-jpa-quarkus - kogito-addons-data-audit-jpa-springboot - kogito-addons-data-audit-jpa-quarkus-subsystem + + + + jpa + - + + diff --git a/kogito-apps-bom/pom.xml b/kogito-apps-bom/pom.xml index 17cbc44208..8da899b193 100644 --- a/kogito-apps-bom/pom.xml +++ b/kogito-apps-bom/pom.xml @@ -116,40 +116,48 @@ - org.kie.kogito - kogito-addons-data-audit-common - ${project.version} - - - org.kie.kogito - kogito-addons-data-audit-common-kafka - ${project.version} - - - org.kie.kogito - kogito-addons-data-audit-jpa-common - ${project.version} - - - org.kie.kogito - kogito-addons-data-audit-jpa-quarkus - ${project.version} - - - org.kie.kogito - kogito-addons-data-audit-jpa-quarkus-subsystem - ${project.version} - - - org.kie.kogito - kogito-addons-data-audit-jpa-springboot - ${project.version} - - - org.kie.kogito - kogito-addons-data-audit-jpa-springboot-subsystem - ${project.version} - + org.kie.kogito + kogito-addons-data-audit-common + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-common-kafka + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-quarkus + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-quarkus-subsystem + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-springboot + ${project.version} + + + + org.kie.kogito + kogito-addons-data-audit-jpa-common + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-jpa-quarkus + ${project.version} + + + org.kie.kogito + kogito-addons-data-audit-jpa-springboot + ${project.version} + + + org.kie.kogito From 6e4b0afe5d6bc9c166ac37a3605810e56fd13471 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 6 Nov 2023 12:21:16 +0100 Subject: [PATCH 21/47] fix names --- .../jpa/kogito-addons-data-audit-jpa-common/pom.xml | 2 +- .../jpa/model/UserTaskInstanceAssignmentLog.java | 3 ++- .../app/audit/jpa/queries/JPAAbstractQuery.java | 13 ++++++------- .../queries/JPAGraphQLSchemaJobsQueryProvider.java | 4 ++-- ...AGraphQLSchemaProcessInstancesQueryProvider.java | 1 - .../kogito-addons-data-audit-jpa-springboot/pom.xml | 2 +- data-audit/jpa/pom.xml | 2 +- .../kogito-addons-data-audit-common-kafka/pom.xml | 2 +- .../app/audit/graphql/GraphQLSchemaManager.java | 4 ++-- .../audit/graphql/type/ProcessInstanceStateTO.java | 2 +- .../graphql/type/UserTaskInstanceVariableTO.java | 2 -- .../app/audit/spi/GraphQLSchemaQueryProvider.java | 2 +- .../pom.xml | 2 +- .../audit/quarkus/GraphQLJPADataAuditRouter.java | 4 ++-- .../app/audit/quarkus/DataAuditTestUtils.java | 11 ++++++----- .../kogito-addons-data-audit-springboot/pom.xml | 2 +- .../springboot/GraphQLJPAAuditDataRouteMapping.java | 4 ++-- .../SpringbootAuditDataConfiguration.java | 1 - 18 files changed, 30 insertions(+), 33 deletions(-) diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml index 4d50970c13..7a08a6589d 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml @@ -9,7 +9,7 @@ 2.0.0-SNAPSHOT kogito-addons-data-audit-jpa-common - Kogito Apps :: Data Audit :: JPA Data Audit Persistence Common + Kogito Apps :: Data Audit :: JPA :: Common org.kie.kogito diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java index 59b5cd69a8..79500777d7 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -55,7 +55,8 @@ public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { private String assignmentType; // POT OWNERS, ADMIN... @ElementCollection - @CollectionTable(name = "TaskInstanceAssignmentUsersLog", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_log_tid")) + @CollectionTable(name = "TaskInstanceAssignmentUsersLog", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), + foreignKey = @ForeignKey(name = "fk_task_instance_assignment_log_tid")) @Column(name = "user_id") private List users; diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java index 7450798f22..c806fa16db 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -45,19 +45,18 @@ protected List executeWithNamedQueryEntityManagerAndArguments(EntityManag TypedQuery typedQuery = entityManager.createNamedQuery(query, clazz); parameters.forEach(typedQuery::setParameter); if (pagination != null) { - if(pagination.get("limit") != null) { + if (pagination.get("limit") != null) { typedQuery.setMaxResults((Integer) pagination.get("limit")); } - if(pagination.get("offset") != null) { + if (pagination.get("offset") != null) { typedQuery.setFirstResult((Integer) pagination.get("offset")); } } - + return typedQuery.getResultList(); } - protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query) { return entityManager.createNamedQuery(query).getResultList(); } @@ -70,14 +69,14 @@ protected List executeWithNamedQueryEntityManagerAndArguments(EntityMa Query typedQuery = entityManager.createNamedQuery(query); parameters.forEach(typedQuery::setParameter); if (pagination != null) { - if(pagination.get("limit") != null) { + if (pagination.get("limit") != null) { typedQuery.setMaxResults((Integer) pagination.get("limit")); } - if(pagination.get("offset") != null) { + if (pagination.get("offset") != null) { typedQuery.setFirstResult((Integer) pagination.get("offset")); } } - + return typedQuery.getResultList(); } diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java index d97d09c30e..d01ab33acd 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java @@ -39,9 +39,9 @@ public List> queries() { new JPASimpleNamedQuery("GetAllJobs", "GetAllJobs", JobExecutionTO.class), new JPASimpleNamedQuery("GetAllCompletedJobs", JobExecutionTO.class), new JPASimpleNamedQuery("GetAllInErrorJobs", JobExecutionTO.class), - new JPASimpleNamedQuery("GetAllCancelledJobs",JobExecutionTO.class), + new JPASimpleNamedQuery("GetAllCancelledJobs", JobExecutionTO.class), new JPASimpleNamedQuery("GetAllJobsByStatus", JobExecutionTO.class), - new JPASimpleNamedQuery("GetJobByProcessInstanceId", JobExecutionTO.class)); + new JPASimpleNamedQuery("GetJobByProcessInstanceId", JobExecutionTO.class)); } diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java index e5ec408e09..a7e9ca03dd 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -44,5 +44,4 @@ public List> queries() { } - } diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index 1efb80c5a8..bc070b4566 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -11,7 +11,7 @@ kogito-addons-data-audit-jpa-springboot - Kogito Apps :: Data Audit :: JPA :: Springboot + Kogito Apps :: Data Audit :: JPA :: SpringBoot diff --git a/data-audit/jpa/pom.xml b/data-audit/jpa/pom.xml index 2dbe7a2cca..c749d2609f 100644 --- a/data-audit/jpa/pom.xml +++ b/data-audit/jpa/pom.xml @@ -12,7 +12,7 @@ pom jpa - jpa + Kogito Apps :: Data Audit :: JPA UTF-8 diff --git a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml b/data-audit/kogito-addons-data-audit-common-kafka/pom.xml index 60b24eb460..0ff11316a9 100644 --- a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml +++ b/data-audit/kogito-addons-data-audit-common-kafka/pom.xml @@ -11,7 +11,7 @@ kogito-addons-data-audit-common-kafka - Kogito Apps :: Data Audit :: Data Audit Service Common Kafka Utils + Kogito Apps :: Data Audit :: Kafka Utils UTF-8 diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java index fe19d2f76c..48b31dfef6 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java @@ -30,8 +30,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; - import graphql.language.FieldDefinition; import graphql.language.ObjectTypeDefinition; import graphql.scalars.ExtendedScalars; @@ -41,6 +39,8 @@ import graphql.schema.idl.SchemaParser; import graphql.schema.idl.TypeDefinitionRegistry; +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; + public class GraphQLSchemaManager { private static final GraphQLSchemaManager INSTANCE = new GraphQLSchemaManager(); diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java index 4d7d2b794b..c4fbbda6dd 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java @@ -55,7 +55,7 @@ public class ProcessInstanceStateTO { private OffsetDateTime slaDueDate; private Set roles; - + public ProcessInstanceStateTO() { roles = new HashSet<>(); } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java index d110c4f27c..b5f3e83e74 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java @@ -23,9 +23,7 @@ import java.time.ZoneId; import java.util.Date; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; public class UserTaskInstanceVariableTO { diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java index 00aac6f9ce..7f04dcd6c4 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java @@ -25,7 +25,7 @@ public interface GraphQLSchemaQueryProvider { default String[] graphQLQueryExtension() { return new String[0]; } - + List> queries(); } diff --git a/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml b/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml index ae091bcd56..91b66ace02 100644 --- a/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml @@ -10,7 +10,7 @@ kogito-addons-data-audit-quarkus-subsystem - kogito-addons-data-audit-quarkus-subsystem + Kogito Apps :: Data Audit :: Quarkus :: subsystem diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java index 83f730fbd5..462c7fe301 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -31,12 +31,12 @@ import io.vertx.ext.web.handler.graphql.GraphQLHandler; import io.vertx.ext.web.handler.graphql.GraphQLHandlerOptions; +import graphql.GraphQL; + import static io.quarkus.vertx.web.Route.HttpMethod.GET; import static io.quarkus.vertx.web.Route.HttpMethod.POST; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; -import graphql.GraphQL; - @ApplicationScoped public class GraphQLJPADataAuditRouter { diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java index 69ce465b93..b7f63c4305 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/DataAuditTestUtils.java @@ -93,13 +93,13 @@ public static JobInstanceDataEvent newJobEvent(String jobId, String nodeInstance .expirationTime(ZonedDateTime.now()) .build(); - - JobInstanceDataEvent dataEvent = new JobInstanceDataEvent("JobEvent", toURIEndpoint(processId), new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsBytes(job), procesInstanceId, - rootProcessInstanceId, processId, rootProcessId, (String) "identity"); + JobInstanceDataEvent dataEvent = + new JobInstanceDataEvent("JobEvent", toURIEndpoint(processId), new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsBytes(job), procesInstanceId, + rootProcessInstanceId, processId, rootProcessId, (String) "identity"); return dataEvent; } - public static JobInstanceDataEvent deriveNewState(JobInstanceDataEvent jobEvent, Integer executionCounter, JobStatus state) throws Exception { + public static JobInstanceDataEvent deriveNewState(JobInstanceDataEvent jobEvent, Integer executionCounter, JobStatus state) throws Exception { ScheduledJob job = new ObjectMapper().registerModule(new JavaTimeModule()).readValue(jobEvent.getData(), ScheduledJob.class); job = ScheduledJob.builder() .job(job) @@ -109,7 +109,8 @@ public static JobInstanceDataEvent deriveNewState(JobInstanceDataEvent jobEvent, .expirationTime(ZonedDateTime.now()) .build(); - JobInstanceDataEvent dataEvent = new JobInstanceDataEvent("JobEvent", jobEvent.getSource().toString(), new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsBytes(job), jobEvent.getKogitoProcessInstanceId(), + JobInstanceDataEvent dataEvent = new JobInstanceDataEvent("JobEvent", jobEvent.getSource().toString(), new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsBytes(job), + jobEvent.getKogitoProcessInstanceId(), jobEvent.getKogitoRootProcessInstanceId(), jobEvent.getKogitoProcessId(), jobEvent.getKogitoRootProcessId(), (String) "identity"); return dataEvent; } diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml index 4554ca2666..def71662e7 100644 --- a/data-audit/kogito-addons-data-audit-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -11,7 +11,7 @@ kogito-addons-data-audit-springboot - Kogito Apps :: Data Audit :: Springboot + Kogito Apps :: Data Audit :: SpringBoot UTF-8 diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java index c96ab7ef66..e463934ee3 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -32,10 +32,10 @@ import com.fasterxml.jackson.databind.JsonNode; -import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; - import graphql.ExecutionResult; +import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; + @RestController public class GraphQLJPAAuditDataRouteMapping { diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java index 9e806a7b9d..f7cbe6c52a 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java @@ -18,7 +18,6 @@ */ package org.kie.kogito.app.audit.springboot; - import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; From e8dcb413640b2cebe881c3c595ea3381f07177c9 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 6 Nov 2023 12:57:02 +0100 Subject: [PATCH 22/47] readme.md --- data-audit/README.md | 99 ++++++++++++++++++++++++++++++++++++-- data-audit/img/design.png | Bin 0 -> 39375 bytes 2 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 data-audit/img/design.png diff --git a/data-audit/README.md b/data-audit/README.md index 3db7b0b6a8..1cad3a4ef3 100644 --- a/data-audit/README.md +++ b/data-audit/README.md @@ -1,5 +1,96 @@ -This is the implementation of the Kogito Audit subystem. +### Data Audit subsystem -Service represent the API of the service -JPA is the jpa implementation of the service -TCK is the test kit implementation of the service for every service implementation. Needs to add as a verification step to pass the tests. \ No newline at end of file +This is the implementation of the Kogito Audit subystem. The subsystem allows to store the events from issued by +- process engine +- user task +- job service + +Main features are: + +- runs as colocated services with quarkus and springboot +- module to write your own subsystem +- graphql modules to query data +- extension points to develop new storage easily +- extension points to develop new queries extending graphql definitions + +## Design of the Data Audit + +The system contains several modules and common modules to redistribute responsabilities. + +![Data Audit Architecture](img/design.png "Data Audit Architecture") + +Data Audit Common: Provides the common framework to create implementations. +Data Audit «Quarkus»: Provides the wiring to use Data Audit with Quarkus as colocated service (deployment) +Data Audit «SpringBoot»: Provides the wiring to use Data Audit with SpringBoot as colocated service (deployment) + +Now we have and implementation examples + + +Data Audit JPA Common: Provides the common exension not depending on the runtime +Data Audit JPA «Quarkus»: Provides the wiring between the specific implementation and Quarkus System +Data Audit JPA «SpringBoot»: Provides the wiring between the specific implementation and Springboot colocated system + + +## Queries + +The way to retrieve information from the data audit is to use GraphQL. This way we can abstract how the information is retrieved and allow different needs depending on the user. + +## JPA implementation + +The jpa implementation allows you to store those events to be stored in a database. + +## Extension Points + +There are two different extensions. Those who belong to the runtime to wire things and those which does not depends on the runtime + +Extension points depending on the runtime is: +org.kie.kogito.app.audit.spi.DataAuditContextFactory: this allos to create context needed by a particular implementation + +Extension points not depending on the runtime: +org.kie.kogito.app.audit.spi.DataAuditStore: This is responsible to storange in certain way the data +org.kie.kogito.app.audit.spi.GraphQLSchemaQuery: This is responsible to execute a GraphQL query +org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider: this allow the subsystem to identify additional queries provided by the end user + + +## How to use in with Quarkus/Springboot + +You need to add two different dependencies to your project + + + org.kie.kogito + kogito-addons-data-audit- + ${version} + + + org.kie.kogito + kogito-addons-data-audit-jpa- + ${version} + + +The first dependency is related how to you want to deploy it. In this case as colocated/embedded service +The second dependency is which implementation you want to use. + +Each implementation might require additional dependencies. In our case for using JPA implementation we might require driver + + + io.quarkus + quarkus-jdbc-h2 + + +for the case of use h2 database with quarkus runtime. plus additional parameters. In our case for make in work in quarkus you need to define +the data audit persistence + + +quarkus.datasource.data-audit-ds.db-kind=posgres +quarkus.datasource.data-audit-ds.username=kogito-user +quarkus.datasource.data-audit-ds.password=kogito-pass +quarkus.datasource.data-audit-ds.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://localhost:5432/kogito} + +In springboot might look like: + +data-audit.spring.jpa.database=H2 +data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect +data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop +data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl +data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +data-audit.spring.jpa.show-sql=false diff --git a/data-audit/img/design.png b/data-audit/img/design.png new file mode 100644 index 0000000000000000000000000000000000000000..f12aafeac0cbc3ef460f2d6029510526b8f6b0d4 GIT binary patch literal 39375 zcmeFZcRbhq`#${ER9)>!q(OtwK(d>9lbMx_t3>velGUO?$}F<7-Uta?g0_zd0Na=r|s+F>!Q0Zg0#uWo=_+ zEa+flZ)|MsU~1#oJH1eb!C1>+?%$(v=I;0AvpRu86O(-*@j)D{nhuR$(q<;JLKTlj z3CbyiDaF^PuL{|dl2&V1zJhhvL82y8?#?@%==cSRt?I1HcSI9!hF*+&wD;(WhMUIM zC4%RLj!m@g8m?2*(71j4tW4_lu50H^dd}{XcsCw8{CmJm!@$5m2v0~~qDgkFd4IlT za8A1*{^#4Z?Cf|y`tn@6_R91>-(K)syWr1v?EmM3|7UsrKQM|58>5AyHhyVu7m$^e ztu|&1X*E8ws>!x7%(86QQ5{E5kfqLKUhN+k&{S7n(y3l9muX(3pr7Zcrl+UJQryGW zX}l=g?f2=I#l>B1ezFUkw#XIKJv3HSy1i}BitBv;UP3`jE7(6EV4wahPF7BixS(Fn z&7!Ni@oH!B#k$V2?(6G&Q&y%OCT7Jx+mqALwywju#VtY1>iwn6HF$)mN3ZZ(SJ%h9 zuTP}^FyPpefjb%-8=L+9+5J#wt9`Csw9uT{iOzePes(w3BxwrZ>D5<@S+>4hz&if= z_3Jlp-c;V+ZX|O2*(KEw^0n%@M#VR3UR+&zHqz(j<}F*)@YZ}x{9lYf>WW0?FwtMd zYWb(T71(FbIA7Qms7BGJb@EpWPmBBS?scg%=BwdReMCRyXeH}+>Mxp&U*oI#;0(Jz z-^ndn^n&frw|nIN^XnOGd$|7mY|)JWUq2{%vgL`}`z(u)zN~Y@*4*N@YpacCZWb1< zOVUivJUj5!T)KCuid1yEQ88yrwnd$?V(`}8Jp*HX#XO-RX8w1T6YxK+RK2r%hcfZo z>nj8$qKl{D&E%}I&kgr@c9lt=`^kFzSPEDD_0gLL2E%{0;Dfoe4VLt?qXZxG=+UF* zb*asB!cUF#e+k`X6Y;e)EaCFJm7K*TZ{AFE&z@-Mt+=n7r4Z>cF*2v-{HWjBRIigJ zCY=vUgmylWaO#Z3HYcAdiwKo;?wJ$rFgn=rKG)$?R*kq*r^bA42@NKbS#$c`o7mV` zmfP>2MZ*&-U&o~DrgT=uU0)%j$D+r3@IV!Y(OHumqM)E){@{J6nyPBl{MBNY^8TVd z8Y-W^t7(z#ctg68yuNGS%e=N5l9?u@p-UxBX{I*bC>|)2O^e>=&A)SJhHlxp2dVn` z{Cs>be?7^})EHzk)^I9v{;%dykHYTvSycflGH2`0 z1`8gG$3>ECTApm0oE~kk{z~$3*wv0FbLY*gDfIC0UA;^B;_QVoJr2_2gH<)0FG@p2 z72z1!k1QMRUAS<;T(UR%zE<+$7x=A;y*QVA!Q`ix*N1A4*_ge%yIc2(Yp(i{BSGQe zf_}v@;gZgsi3t%&>ADtga_rjvB%kWrlD&_2wvIY{e0CZ4tcu!maqwrO4NqOJn03>c zw_T6g`r0Es%=oM!Jc%{C2Bz45$z4)1o$ zFO>NewPWYbp?_xcyy`x^Iy)#h*nI3)UtUjMm*dOj+MA`N^$p#If_Tl^--Ww;y>p6} zDO@=A(B9tOr?_CSQjv4V$t&wOY!G!BG({-WP7HSHsx>PK7UbN1;!FV6s-qT=7RR$b$Yi0!71!A#Yy2QVkK(7di2QJ;k74^ufT%lPABG2p3k*=5dX} zKjq@Xry||7%&g%0DZCv?$*FV2-QVqQH|?xW%s&#W-qIQ}ATb(dg z!oSocVA+|1tW#xcC|vLQa3)5=x#xcInsbMF+CgwS`Kt$8FD^_vlAx@hs92Tf)HSVVvO=C`%Z3fl zf9)na=kXX*E0Y@VIsLs}ElxMty!Gk%YuB$=-QDfrVZi6gQOo)V{NA3X zI_#hJw&EpK@sxuf&h>H>kN)gVrd=KUR^fu6GW2>=;iuo51=W6y>_CueUznd_QI}d&<`K&|{;}qt2=`I5ppXy&KE4BU=FD;Ff4zy^ zkg1zt;=6Ulb)m;U_7;rwmvD;PM%CUw8uR({Nm29aLo;X243$22`ss+6&4>FThVCP` z{e~y+`#TnKoLV(maN^}$3T^m#uFS~irOggy(r@0r)i5_t>f;*tT3Ur! zERzx~!$H3_DF}6@STc!$w>yo~b&|46{TK1^HbbiV#R zufHl*+dN)({pEV5dF}l>%Ch5*%;j}E@Y(?yi>2It{4<+8jTXo1eJ0cS!`XyKR*k3M za$;@G^myiT?08|i?MGv-Ljr=q>H6HMANP)9VL3%iZ@Q25$&<5QyK$oy55LlOvP^ce z>6@wr?i4C&5r0H^_W^j?BRfIe@b&B04zQsG#S)&-DXMeTNf$RRUZ0pVs1^HTO1}W!ya@()8cUL9& z!EU9EO-zs@j*x2!6%4AsEGkM;3=z^y?fn~f%bT3|?b{3gJcf_Gu@qY!`Dv`naB_!r zA%fEo+=rR;Yj(Tr)nXV$_s_tjz!GX0k7}&Ry2`Df|L970Ie!y?XT^`{>i@3lI5Q z=YCn?)LG5!Ef|iVV6wMxH3gHQx;v*L60w=)01W>8d5_f9)u*M7pYCZ&oU?S}A^+5z zPuCRE8eN7ucS(Ts?H#|Ja1(+bwIn;jj{S&u*#CQ?MZ>nweJ{&tK zMl&moL-gYng>v^J&(`64t?n|vyz6U)_LB`2oEuh1I#iLOmFzw~q+KxDnan1bAv^J_ zZE@N0EZr=RNq51c5BDQAsh>TY3ovu9Ip3LQC^tbloS%8HIGh&%;BZ>O&-ZpS?IeL)R* zPRVd6lj^lhrBIDACp}6ClA?DGdrSXp^%WkAR334Ck~G0jTO+bfDNIZ>RW>FjW;r)^ z3jX7D_vz&O_YWh`_HC!P9fAY#Z`veZI5C=R*TnOK`}MQS^J)stIggL`dW7)myL80m zeYG#FD%RKt+xh?c|1(v9oKw(L^x$WoNebGA8C)| z-1fJpoovAC*uJ)6?YzY4oI(eW>^lk6ebBk?iQ8`x+g7=uZx#Di!`AwDV`b(zeJkIC zt(8qpNz@k#kvRRGwbJ0sKfe%s0}vC6+umm$uS?bU=QpTcc=}%B0iMps1MjN7Rm6O8 zlo&$nu;^*Zl^Ci%;;XXiMsaR?#JLxZ_hMp#0s>-+d{=ixd#_Q4IR^y>F5A{G0ZSWH=xT6}x6d{8kyNNcCN!tVZZE#{(PzgCXv(pMSdJ z?as15jr1G3fCJUpHZ5(VaDQ5WqDYKOY#vyyD)0 zpkBk~P%$fW*DTaWe$qd0uMjr4kC>sDv}#lD%U_gx9%KYko@BWn%UuW*;nM1Ovhp@lMa+J9ZGbi9PrD z5~R(Kw`nW#twP+jbiHT4d2*BVY{}YZcPCUX$6gctYT(krhxFk#+K~WXpPljWVWwT% z!2;mPYkq!pM^A-oekta8JGoaHIh@n%77;UyLO#XdL;l#)&50*QVNF7nFf!lYhr=a? zSV|mK@k&RIACJaLaBUlLxF45C#gHlgx~^kjkb33H6;H=W*n_BbvX94jI?B(sdKKC6Sbu;2nA62y zK7amJsVH1ipKi1;zZ*DO+r=gC`{{E}=T-beuD;<=-q%oz!6t_?Gt??*+am$yP=gE1Pe;Wg;xXY$5TeM-755M;QgZHo?^N$~;rDQF-Ng8B zUkkrapFSDY+KN!xpk#UP-ukwBgxG5ASet|j>Ujh}b+c_}8;nEDUR+r`3PhnJu)u$n zQi`2&Le;NOal3nYjve=qjt*s*l2CwfaNBxu83D63Lp?Uvk<35+59{ zJ7!Z5hr4X>R8&&ZJbLs_u&`mO$9R`vXI)w(-pS(oLziulWt*}aQ}D^GO5O3u{lDsN zUWaMImtV5aPGE`1uT@>pbB^%KtK!l`6%|R4z4JA=EvXgxRlEFkcqU_-^Yhr z7S`*3EpKT+-78{Rz7}=L0k8(D*4C*T58sXgwixQDDn9eEyFNW8SV%ufMP_8b?D${+ zK{z0p=g(g4cKFJQiXu#}n`<9OxytpIEpvJFR{;2g1J_rW^?oQAo%r25^lYB+w_cCQ zb8^}r;NPOCQ@cMD976^!>PwQDc)n1!8VF=9a}=LR#zjpL9Qg$V2uO?Ae|}};eox~V zx%TMSFq_Y|;yP(W6SAL&BTKc84j?EV0gj>fRtgn)ozqgftL1)Eliu>>%RA}}J!eYPvOoV)UehjWf6iQC2<773MVJd#SJ}1ycq@h zaV+L`)^Pa^BTGf(Q^w*QIddk5GAHtvRl~yrk?y032Ypr@7g0I1yv|7dWoj}RKA~Ea z5nKP3NZtV;8wVywqhpmN9+L9Ro{O`#2nZ-r97YY`>&uta8KiBnUF@r*1~?wwEc3XL zfp(s{-D)0-U)09hVS|MBs8 z4Tu2j*FK>T#pho0s|3;>-`jE|o`tCF5R_?q#@l!%Rn^t~U50y78m;q{02DP*p7{J$2^C=; zKYn}^NG%ZwkfQ9yfGvNsmBQp!3*UI|y-@q`VIP!8r(dY3rWX9vEe)5{Ua9YRYoqdA zmSj)PK7wr5u3Zbfb?f+db$-qJ0U%-o_%?1NVt`Y^k!79Nu`#A-{P%Dd1z1Jlg4l+P zQ^~kLr*@l{H zWKVzB5j^(j@UCXZfY@u{$FV=gg1VW9fWUTym3F?*N=C{zl8Qf?Vd9-qSoiqsfP&xU zywz4^5z-PU?K2(Pm4U~0*7H}uQtmd!UCO6#V;0J1hxE^fsUhHOD zu^&APzt!ens5Gk+k8IMnf6W(E>x!t@abccNd819CATxBgLp&u`6vtYV6T^j~CT~~i zJCuqRWi_`GvN7T{wTO%D95s^B3%^A7oJg1#KRk6&aF(c0>xlY}+^P=UpYR(&a zzzKXi*Z9<_Em8gs zUp}V4?dX@n1^@Dv2&S1QUS3lTx#)5d8F;EThr53JbX|CX)9$Q;d-j~iM|=t$*7y~( zD_V(#-Me>huiiR1`6AbUxlwob3AMV9v&^qembG46E-)=PYp-d=;@KMiz~lxaC&%RB z>C)?(w!e7sVlz-5%1-R&!^Uo(WTNI6YcGhm-lp}2`3&BcY*?>qZ~riTKpl*Qo{;tx zfj=M0tpB=5+-qOmwS6_0y}e6JG7_D8KiErz+vhhw)J?f|_39iaGh9s0x6h^E@MQ*T z8Mht7yy>5|q?m)gC-j!%S3_Eeo`*LExT7dm4Vf0TV*Qori$ta#BI-&1h^vB$NTxFzTWW>O@{QRC6 zX7l9ety{OQ`TEv8G%mTIRh$s%{^my9kj9A<_xk($m#tV)ltY-j^RKkJWIX=z6)X59 zB`LT^3w6Z41!vdYn5_->acU2D?krkuqk#e^(BEHOuzeB+FbJ|qqa=4sYKfjd@cxYL$RZ zDz%<$(;ferx$=-d+?I1uE8vB)+vwo-Cx%Fe=t zOAH&v;&GLU1ee`po&7K)qpS3H^`}oKz$fWsH=jQCv=2xT>68h+>n1NTcL+rHP#h-! zgzBPp$mQ*LZ;_^%ZQabv1P>ip^2NW#ye5_z0E5_g{pAu{D=n}q*^Pq9HAzV6tHSN; z^qs@=PIsG2P4+bBi(0)G0Y#K-)%a+~ox|`kZ~fwMR3zqA@xHu?NKaJa!@LFoQ)Z7z zMY{dGgQZ>BF$`PGrjyNhI zQ2Pb)x*_xD{d{jh@QPUpU}%iG5?GkS?`XDl_y^YkrTIKEdU0`aqXeeT^< z2B0LFSg6VhP4DN&U3JqzP7$T{KI4>M>@|^aB6+Z z<_3J@E!_idrb6GjnU87Sl#`AEeT~PM9nnAjna7{cLTY)M6Wnh&T?T|0f*Oo9XxSMn zEnQuH@8>8bT@D>MaKJwnbhI4Y_x(fT>%3;DO^K-lv(Cr7zEZdrZz_y8n&ByLkGsYg z6b1=scLI9W)utRx3ee1v|>FUAD`K9PxIV`3+s9dCsWy`&oX^^ zZF!L!MM%$fZ2aht=L`8X^_FHl+I{2ljhtDQpr2g6MSBmzyqNy8=5xmO_uC_O!BUj` z9e*~Q;_2%{!Y(H|AGE&K$nL_CudB%`GftI>-5>)F*r-%VsLyq>C%@MmEK45fM!qer z6DV712qh(`@U(5$?89SsArBFYXtz~NthRn_6lhG;2kNI!KRR*ZgocJj?D6Mb9Vo-= za68>E?R$oP_$6=LxRGB}R1*}If{F^j&0&@zx@vOM+ib-_CrmqG!%R` zUi;mXuR`oOaN;^9r>J=#LHqO5XLt6O2=B^!3P|)`p$v^Cp*B7L>NG=HBE~^nY6NUt zzI~sWSt9JLRDs6>3HOk{P)_SKUv5b)f8gRn2M!)I|L4NYJQ%VF+-V$%nc9c|J-n}V z(t27wm6A-?AI&lkl0T`U_#Z7mpBu8R3u;e1R+;$M!bcApyV?A*8Z3#9drdh@ zEr#f9&g|aCY!%>zLNUwwwaGPPBjCAWR;MBp5fh3q?SzP8@#)3YqP+8R#^0`3OcA;u zBTDb?K7!2&etDvTD%qzck^Ph1HXf3lXLU18)y#_D-)gdbK0j2}!~JRcKEwUvW9yp! z0Y66d1BkdSQP)%X=~V@F9>|d;$*jvo8R}Rfn0?3}A$;hKK$>ZJ)E=XH2^G)mYbpG=He0MoYxT%8<=oV>*wmi574h#+K;CE^Jm`gX9E&pl+uPgG^GvmK`|OkHDb#iSX z-i^&~AZ_R;wx|nz$Xl_VqMZxe-+>O_1hJ!w;h#?|IMSr;=Orh~Jx|rvp z*Y&ljY!Z`W15P!X+FL+t`xBLGiUeDfXXRi0_^bnxnnnw1-^FEZLoO7Q!<}l6%0Kp- ztolnftTdizxJcLjt53%I72QDnp<4fZ+)q+HL{CTOwsp?OS;UAIi!SLJ2Hk-~sDysV zBh*`h`OT@`Jnr>5Zs4I^Kq~vH*dXx{Mb7=mbj#l7Q|K`TXz8>zaHE_rTpEG(&AWGE zMeDkfkZmnM-e9jHk$#gvduUVB`fJ-e>0v$JHPX6(OWxf}Tw;43TpS6LQm%&arxFFq z)rc-^(3(b;+6E9~;26Jw-c`l3@)Cv4Hr$9FdhE5X!yY-`4C7yywP-qL{zwNb0g13p zY~9waTdQwyOHR?tJQN%H$^GZyr z+09rgv`+QWpq6)yxVSPakbgz%;X{YY!N!|$Nk(jcj-Es(2%lOc+0~0$H6M93Mn~$5 z0TLI@JB!+ef*19pbvCH@d;P_64~3`&`jTvdP2P_THe{}vS|p_(E(Jvrl|#nb)g4s{ zT_8WJZ?4)$<|&l&~X?f^-a_9!&&THG~IUMpXNG$C2%j49=u8Wm*118 zNLcK#K^o!_HLU3aM8L$WL|QwhjmT?^AOAoU-|&ZXD*mW7gc47LKe{N{OPwAfo&0^8 z5BtTTLxSe-O{6Ix@U4j_9vS+7eHSi}_$k1bxQkXh)KJ7HrOPzIed1tU`Y?Qd{vv~t zk`mE#KP{&SC)DR4xvxI2WtZz-ymV>Ig$vWBiVoXKfDaTxsABOZod?+4+YRkceJhXd zERViu;5MWw-S=WCvQ>yi-xCS=63R0FKKD^Xk;<`=0iwsc(h6l-T`BqpZwFARK?lSq zTr*h_1r9odmU@vB*abQZ53^7tA{jn{xre zTE22+!Vwi|O|TY(GQXBZ+Bm)>tcR@#9v$wrkJiF)dWp0|5vos>I`J-O5v|H@Mwq2afeQAvdi1hX zh)^!N5cZ$yAiKrAk-Z_pW8$n)h05evU~%f*I-yORhJOc{6U8m!K6Xa>$J6O~pRNgz zO%VM;L^gyB6m_VV&nDUa_}8cFE}w77SA&0TtJl=lk3*rR>pv~xH@L}KYU0P~E^?XO z>v?j=oqByLRyDs4xuDB{ww_Kx-37@N9#t1K(xobPwYVC&PF5dLAsCJ(Yc-gZzqwFj zR*6F4;Hkf#kILe_uGD;=ZK=SzXn7~sy7cCC2^FBD2lV96dtm>5D$~&LEj>Ow)cbd* zGrG9cu>J$JHf-2uROGW=qJ_63KFoS<&bx34rzGmvB2=v|Mt)xTK&^FhqIa?r-L&ea zT!$Z$(C?{rYw0<;$1cVk@o&3}980P!DqMH1WaZ zxI67t6_+hrwpmChwRS9g;EWVF#01nQTD>x_XCP1xQDNWMjozt8R@%&!JUnS*W3HqI z6BB!+TgI(GS{3T`drS;O5`%F=q4 zfSL><7L^DUQ~Ax{39!Feo*w(WDl65&;bg=z1)X5}$@{z)W)y6 z<3WPe`ePk0?NF;y-N3a#o~6ikV~dnjQ+@sO4#ziN>|dK?Y(aLcjzcxFc7~o%$is&Z zPp0bxqIT-E?~DcNgV}E1Tqb(z9T&KMZBpRCN21AGAwDrtjabdv0=A>G04Vb1ix;nO zNlP(-?c3F~k~Kem{1`1X9}m69_J`MBaI^axT$e0pUKJfr{WER}NA^yKX`)vvG#K-} zJoGgEPZ${mg@vvDbd9h?703e=_h_4IsH)1b&t4k~fse>$T=QXrCCLO({3F4C?mM$r ze+B-)-1GTIG&4C@?_jV*>7$3XZ{Pmr^=mZ{bST&P@|)lFB;j*IGw2g3^a)e%8_9Wk zsf)B>H=Y5v!oonz@Lqp;&&TJlgKBKm{CF=;smUC36b?<+yV~floo?23X`-~i`l67n zU%p%}Wk1AllZO9A(YzufkmFX@(BOp(0W^=;Nrox}O>9rsp>?eZNfwapR5&%?4MRf2 zer=xh#w6o%9v4HLA6i=0e$dhAN~2apXF%{@vyv11G~{Buv|TDQP^-@FxDZ`PO_3yL$GI6<%3 zUO*j2r7(KOD22gf)%u~>VjVO{(}tvhf9uwh`(`nQra@bH_tL&%%?65WQ7*rBoxF16 zhL*DOf~wh!&dV+$3Q3+MsQ;Toy;xnc)*1keIzteq?$e)JzBWfs=;+p9 z)eyC=GX(|>-KUY_1R#rmSx<$6sM;jI)jLi?GWxwf9lC;ZkgiTgFH1W`C;h_LSlxJo zS$6ItBO}yj%S53K>ato9niHs8?}BSv+No|X3Kd;Kgo^@_CSb$gZcAYS7rDkh8lOIW zy5L+|CM2oUr5#1Zy;pxO=c2rA7HKZrFWBU)KH29&_6YsW6!21g>Gc;_8qoP^85aMr zJ?(@1+jDKduna&jA-_wPAX0@fELt+5R{i$vVK5S8?(B16z3gm$#Tyc;wlK+JM)0Be zMgOecp_5YUvg_JhhWtKw*SgO<+DeBH2f~ENu&XU5hGk&uSnX(`*^CRRBu4l2+PZu9 zQRt2QW9#d6h|14dkGJV;A94u_4J8g9?ET_rY^D#s;n{RQwc2Td#JYX^_LTSA_9NQB zSn6-GG02~@7Ld0`J^5kt>Sjd5J8vJx+Ji^fqH1?L>eYO)zdUtm6pJp)SFcX~6O5NW zV|zL&4_~Q1fww~f@}F86r;8a2ZsxodERV?v1!ZNE zaf}q$s*jN!XibGWE(R-ut`#vw{odU=`Fjo%CL7hbhM~L!aiZE`!mb9)+6TGm3{U)lyFHJj85Uh-)_^$^m&G z!A-148j;Z0vRoiSrNoET%JOb)!s;eRT+B!Rf?#F>(%3!La6-Vs>V33T4tq5oU}C+Yz6M9(_+Yx6AO#HZ<1&$DXEMrYucHy07^=V1 zk4|T_UIL*^0!B#m0jU17$p{{^ire}gU`4Chrk>juU4~|BZAZsUDA*_x%wPj(kZaxp z|Biak%gYO8xys_jiwT&CbCH>Nx|DPc@r#LR!4crd8?oLJZxApkJUHL$ZtM9VlhwqR$ypMxr& z+F6zZkm^aXFmSWvW~%b&nlacp2~~)1hv%a}1J>9F&u^Up5hyi=^yxH$k zKur-LArp#VOh{c}?$+61^Eu$3>#$MPbJzIEt4I$8K700zqM(QlT*xHjD2h+C-2Tmw zp5_#2S(?C{08?mTBh}_I*cc+KEMEbo@xYa$YWqf9=~i2}2EzRJ?%m5$oW_VM`sKVl zWWTmJoSxQDx1_D_RfnU3KjPg~j}cZ~BLJKGlaaKMtPyG$)!UG4zjiY*2ZO0^x79GqK`qMT~}FL||{J9jpWuV%=R;q_dMb`3ANY+S<+V1Zd}| zt7!TZ`w8%@sjHg=Y>4Od-Ip*J3gemohj$7#9%Pq+tb^ zr3`{ZFqKY~XNxgfSyKyn4sc$9$y5Wv2Kj|-D&SYVlwy}tQ}pT`i=MGD&_2MMTx|RA zep2MkU=){ru_wg^^a20k09AP!P~nUPUf|+@3+LO$KAZCmwCVKOVxFgRlj8!4Lo3qTv zQM1JVM~8SigXKMSSMf7aYoH_l?-}LpRwoF6FA~f&Wwg}7*%0Mi_D@(Bw z>+GE{3@4rc-g4cCn7~q_h-rJ_Pur0YLPi4`)vM43XJ~%*nD3n5OeVz6Nvon<`9Bhi zt;qjfT$pu%-pTwA!VJ27`_*M`Mz#8XRS|Ik9E?Sd_Yv^qMEiPE`N>}~Ek%i{mB3zL z;1oxOY7=?L^JWyi3+Gd0g6cI0XrNI4%OV%R>&R!LW&tj~`SXJ7PGmPWz${cPwuR1R z$jw(ceE1}MaW9sgqPt9_A7GEFMLFI6CSZA7e7rdZI7mK;JfXS|RW?=784Wt~@VR8N z$VDfuvyVZ;g18EZi|~Nwb}7JvAgsmGrv$dst!`qW|94uM`j{R;NW0>Y3XoeOV)lhwOg1I@LQFNLJG|l&pI{4If9~$b=7%J77&P#ni`cM zF@KK@Y~qH8MqH7)_M|Ri>=lL&DJKj(XhYh7{Xo;NM7uf!u*G1_{J+*|FnQ14^(aM_ zFW<6j*RK7V)8u|YS^!{)C7k8cpRXqb-vF^}eDdTrz<1VCGP$VWL`y0SVMmHd-|h)) z-ppDK{)<{2t9S*{3#@nV=)Gm0AKZKL{g(bq62G?LO`wu zg&}e2?ED#wYE4R(s){4UntT8s{^-|T*pSMHe090xi^SGT*kPfmeO@sz;)=8-^F61o zE5-4nJ%go!&El8tag;zFzHkgZ$wII-4hbHSexnA*tewq2R`D8S`CwAQ#fk z;|aZ|K7uC%>fsrZk)PMeh)R`Eud_kjjs&y}e)HqiZHOE3!OOR z3Thr%9UJOy)P`E=FQ+Z6*=I^+^dKk2$}g1c85r^TkpeXiwN0S=UG%-bQ_A4EY85ir zzeTQUh^z8PV|Uuk zGQxwg=)tx@+NE??{FbaX`&D51EUQK>e^j$#c_;>gr^XuP!@!`wnaRCq#>9e+MRV=e z|L0FzCkGrs0DI>w5!sKrcYE!XwygOK^GFZ}Nci-XwHPR4>g)e?eDRmZ_vUkYfli~7 zec9Li`C^ZDXFn)C!m%+zeb3JG%M`C4u8{hBu6gR|RrVIq)2$k>ap-ayrLeyF%>JPo z@ys${+2*V}JF<2hzW!prfZ~BeYEnObUu1b*6UC&)p)p)RlY1xK$=nmA$$TzxRYr<2HunFOi(+FBG5O)Fwcm=tj7e0vl zo}8`dw`ilwWN`M&@`P^EpQBqs6HhFRZWaBcIX3Xc_MDOsw~-l8x5T{etGf_`@igw! z+_@;mXNkLwW=cs*U$+8Nn~%}DaDUr44zx>oNf!TQ4G(Uo^z_f|qHtA&PNbu%^5}g| z&*$&b>)(!4KpZHX7^2T$$jLMtMyhUvaVPZQ1Tf@)nGu6K5gtFXFX}!% zlWtu&eww6{{PLK2SC!t5jDn}J#kCQ)M9=o093L*6tikvosohC!gklH%;9K6_-rL>L z#(8<;V|RB74LPoV4uv^O>k!#r^){LiTmuy*5$kvZ8Yn`uCK;@L?W%#!c4nDndi{JsEmwEQ5lI_L8H->+|A8iP)vpoKYd$!> zPZ~Cb4XWYe?t%syni_%ZdgZ&~(bT0Qr4UU|VXD<$@@KBAt1B>^Pcc|Ss(w@7dXW4nxr^zb^_=20Ek`R&vh*q!jhnyH|hO5 z(4eg%J-wS)m=b0UyJ{wg2_vN5jX~!pn65-1e&qQDv>h% zeSHnf@UmA?RU}4)FS#s3LUr4Ae3X~$1QN62_As3$|3N$Myg z%=uqSJrC}jZ?|DdxVYV37;fG4g;G%@2gXE34ca?L<8{!TPCzeBd8f(S&3(E(nEVNq zI{R?J8mVuYPy%)+*V#jeQbiNjP&{siI)O%kt9}6$i0hZ67#12J`sVQ0*<(~%OHR%c z(d)Yo~N}&R1exchn>MXd+0^928xPcUO~erdj5fEv6h#sqBlhP9g-y>Oefsh zAg|yLVp-VP*_o-1CZi?>M46QcjHEWb?B!)%8OsDCO+OieG0LZYavf6Ug{gE3DeTjFz(VR;tti$au-1ig2&-Z1r9&% zImJ;?YiG`$Er6yrR9{xPkt-RhLlvUS^h06|^ z(=ZB+Y>=px4jwQX8z1+58Ns(jT%6SE)fk6L1N)v-J&+I|---A!cg~z!8jg#_(Q89; zZqqS7p04AF_8T?3>kJJu%N?Nzs)odWNwK6sF~-F|4N4%5C6S>#!W5-c{}tfIL{g_iAR8Cq0T+>Q{q+EH`;AP>K0w${Mmq)Q zxsBbq!PZFFeY%9&)3H0NPJ!QiV}JR+g+byU`Xp}f$hvE$ej(B^Fz{rPPw=%Rc4+?I z(#ZV$8u}xGcCU+z6Pn5vGFa~qz4&;csku2QGE$g%a7Q=XOI<ZX?BFEj&Ad3WKS5Rf%^I$j5H2s+umHna1)3+0pa?8I zSjsK58Eg~gECYGldW>ytZSN>7=AuRA;fYl2d=`pE7cf*YHqn$D%GCFXhK256p#%rE<3jQHLC{%W!$j8faYO)Ut*sI) zaxvE2=N~49UbuL(YKkey8Buq*d@Mw?nxrL#Fm+QRYp|}lSs#gWyFo(Rc$^tXP}jFt z_9fE1HM5f2xoO?hd;y}N7W&PrjR=5Xay-Q4FK7e7U_l6)gxFa0^SV6q>NUx-me>x@h-a$Qewdt2=y}!H(D!L8r z3z}F3)kX;audK5zpmXd0`BUtX;dfnY1e%qPgCXmPIMVQKq|P2(a#1g&a`~|@jvqy^ zeWtUtZ1Keyv#a~YM~8&#Z+=FE()OCq0qyuuF=HiuvD0RtoCImY0_=5q3qSruiB( z5|SUz#yH8#dXN6kOqvx{E`##f2dPCP%|M!2iTvzXv5FD(@D&b>K&16~I7(-6AVL@U z7&F9MNV7vbLPsV*FVDv`bnUwwarP@mg5631C28zB?{2=2C~SpXCNL5NV(0M-i(C{# zG|z(Q6O@pUz}o>0gxDJ;KOWg0$0M5jNwx%qZ+%B;+Sv>)Exlgdeir+SSMr?Kv0^z);mpfk1? z2ma834564ROfLXlA+ZAug447FSf(PM2iO!A{x}I?hZlfH$^66P+`fh%cxi!c+f-?w z0D4Q!1Z8e+8P}W_X9)huPL3V9IBPz?-6Q~85+*%Ymqg^`=2FuiV7G8`BLBmgw)xGD zRZ2y_{<%0?0M$216@iNAbO9v*If!R-TYvXMq)qt;;-Yiu7P&}BrFVA9(qMU!5*0bC-BFIK|fyRy!PRIg;i!Y4F;fa3??wx$zfBa~cm$_S}m zCHXQ9&U~EN45=fHLr}5(v`aAAkeNkYR$WrMagyF5lKkV~ja;+wlts zZ7~QGW>{%jKj`|8J9bFak*@*ua~dye2T}`z?U)3<0(B1Y2iX{i9rgYDFWG(Ez=X`I z0B!uhu&`uoJK>j6jB*I!3@0NW#FX@R-h+kn5=hTJd*Pa`*~6<@W_a>&lht~2@|z7T zi~hlFNK{37)sW27x1IxZfeh3T>SIm{d?Z1h=J@wlZ{Ip9JOg0wyk~LhefMcfb-FpW z(U|Z`UboMSg?9s-4?@3N24gkJD{Pz=tz4-ce^gHHz|`V>Z!pp;Apx`e4Xz4O3L&tM zw@i*lZWjZHLoBP>;3sttdqX@088i(|V(dT<67(7b1(J+WxdYb(=%_|IqlRj{(rSFp z867NwPnnJ#l}k=tu=?=$C|HXMAjFg3mSjwPGgEj8H>GnNH-M|$~5>egxV$e*I8FOWdS-J%5}h3gD`=q zGgjyThwW1)S6YwBl{ZKqh_(VwZ}Iq<@CNna=?wFzXXYD4MYB}Zj{}`1?_)E+1nOa; zG+G1Cx!Dpz%a1s_V;*Fix|Wl1t|rAVUoMBf?{WRlyLazC16*H0|Fun0GQWNTZ?a-y zY@qBiomlWF4Wauo<`iB&;*mUkf17|n@-|`N-g|c8$q@NohHqa+S-J({`CY;&L`ci} z5kVLBsOZs+UhHL1yq6)<65hIb^X4I)O)3#vErD`Ag1MNB=zGj^5_;;ny*X_+P89z_ z$UFy8 z;2Fx&6%qJ@>b4cg!m!%xAHVwAR{Au2JP~;u0_-P!&X2*n?BHIC1O7G#YTOPE{@SUk zx^MTytRqK`=yT6yv`W1N0j=kRF2=;f#7h09-}ZW#lOmHuJO!2J(@kSJblwNe$1Ifk z;YqWkAqFn5>s#&}m=`X6PAlzk|24IPg*XU88d_)6SZcPm4@mZnv5Y{oTR#9yh*w6h zwh{m}6*G{_S68L#OD6PhXM!Us8i~6ndiQZbK~2Ufm6@|3$oB@y9;H~rs znm*C|UcZ2bG2WPz8D7!j*A>_zE#17CiOKN%p2A6Y{ADL`JlI7V1_$XZ{_+77ey9zm z1|Isqk`i^l}DhRrc4oV9b6V(yl?@O?=(yS>F(LHhlY&|aJ!?#97WSpL*RaR-$d>yc9 zbz5_Da~76L8uC$^;l?>L@q|_oognA0z=I8;PBKGnT68WO^An(lj$uA1xYVQy(G?A6 znw^jk{c99#(bRiG!CnqH2x0?5=^Y90t{dM94^IL6o!svX&W`b5nzW}qe&nWUA{lKi zV7Bp&QT#2GSvUo%$X+r8Q21Shw1w0Jf)DBg8>t@Th}e5hU$_b*ZIDqU0CUXigz{9J zFlJ>2p)ulgOT`b2hp|n2bZjn7d$s(0~P`H8t40yAm209XyH*W85jO zA4+rH6a=g4(E%Svuo(qoXJtv%0}52_?=5Gr*}n18NSL8et0}71 z?K^fOu+e!H_(e1ZRTTI;w|0Ny*9iqeO+<06%w&O&>4L()7D1<{dc1dUZJMEQA}g#V z7rXC#;A#%d4#RegIe+6*3jTS{y*-)D>1$okG=wW|Vk)PVq#ts@zWZ9u=M>p|dTe0n zg*rWl(wR#iVjA8oU0st&=e-Qk1l_0z;rw`d_q^5toLV>KRVhPXACNg?wA$EZez6}<2(QsWgR|fz zLF4Ia#HZhQQ8QxkdUvg#Bue93R|K}a^RJD{4;*ht4{CF|#c|{Y;rCm9suK%={v5Ut z5mC8ozQkZp^D)fHZ_akOH%f?ru$Zbnd3-HPyYUECFX_Bp>WKr7VV-|3br0n&Bogm zk8to|!ghe8z`?>hHp}Bcp^_>vy_-fCCxKFeevg1Yr=xX%TEMmh{{|1tP|dh?CHW%= z!xWS##6uek9pj$|NM$}O!w^+Dbm$7`!?ZW|U(@gs+Vw=@k*L5VOs5#0*l-E(e7C3-&VNY6JgoV5*>gYd(^QC*HQH5F zPeQcD*$6HHhbktiml*;*Gb<5D6}Xpjaowk*-=I3DvpDYlq-GXaZ(>}ixv@st1^%uC z=T~k6$?`c<`PhLDL=YlerfRmI7$`w)f23&CR(l^_jhe$RUhKz2#^OA+2(-@xfVnnjMXp|G#i6aBueo-H1e`ZNZ#oI8e>l2x;{^Lwxq zR@Bv}L*T6QyC2!h;(#rotflKb=MD7t^AGPo2x!i`oG*evH^fsjXUzBpIJdoM#>|;e zNz;f&9++a%C(>aJ92^`NG>Ji8B#sY-zBvFT5j4nOH8`{p36NMKqM0(W*V35xq~q(Z zM$SaDn-*xW%wrxPeM|;Y_Jmf3Zq?Dz@gBJhp#IGdLzXKIhoIqi5fL{5BqiEC3LtmXu|$rO^j!IRa0noY#1_1$dW9~XC4p#yag0s@qv(Ntf3#6B6TQUl zsWE@q3*WRfn{*B*szm4^ku@c(hJXI7Me&e1HDXM&9wc4IrlrxKIcLTPIuZ$<@%GFZ zWll`v5D7&ntGNZOQy z`T#67VXD4&9B>jxCFTg@ar|2Gs-=q;A8*>0i`j~kIQ0va*1XihuLz1bRszoppC0Al9;^_K<;2uO+a zxs~H;0BGsZMrwIf{Y3cMg7SpAD0H$FKs~isC{cisu3n za!u!;6vRw02^?Q1VTI^NAWH*hcj^kV)0=$H*5q|243|W z)_U8MWe*Kh?O^4lPo|N$3{lmk~PU0cmn26JaXaJ%iI*W&zL$0RKY=MFM|;f_<`thesGkCSX757@Q!D!0#6I52BF| zjU98{amtmi*EXPOuq;X1X%T7$z3uG@Li%~8*wiB5>xh@)d_VorDgtrTiBg67qcFhl zj%_C~lSOmJ82uLke_-?*rK#|H!Tg5~WAo$V+mtrqp1L^B>MML2307CBL{Oso}*5U2fYG{OAqZ0RVdlO zE72Jt+e<=(>oD0l1f@D>A01gl9ir_U*R9(FxFfdWpa(|BGf_<7l$qgsX~Vd*@=j4+ zDhsID1#;P`RJ4u&2JrvEqc1T^NbNH>SO%SR<#gZvqK6C3sF^qUr;Ac{`Sau z;=KcvJ^+byD&1vNTAW`>-85z;b+=IkL(b0RS9k%=Ennv_u!NHWe}vRob<~2j zbTFFLjU6dCR?5gK3F5)mjg80P8g!nmh{M;zbcins71aWlAzmi+vS3~)YL~59L%dGH z9XG`7(YnHkIGR@OeLQf3)GNph81vqK3|)2&0Xm%kM+<7jrvqz3j8%>P;ipXNCKU8E z9*@!M7n>tx!6?$fX3PT?C3VD3XRRFW9G+$^`opMYY7P(zQVdaVyNpKxHvov_? z(e+FcM3KM&!Pk)Z7;ue_-~ki(mQW!o{j=VPrqR*-GZQI3N`NNIVpHO`P$$H?kdYgZ zz1h9Jl1xC2&P_C(Wu_@qv>TK z_q>b$tGzRit2uxF{)a&rOqMJO4JVSFqB2I7(88Q@5+=*kXjGOK*&2i~meO!WLLn+z zXqeFmGnJtt+h`>rB~+F{$u_#5*D>?`e&=`Jf8ERDemw5S-Cr|Ko%1=L&-K36*Xwl+ z@BeM=et(zoZIaDJWH0Yz0M2blp_>FxmDR-E3mKS!6FBXj{YpYVb=lz=r=}ohyH8>= z{OFEDDpg+4h))t7qPnzv>-jepp#6p)a09?&ytk#TB4fnqYK|g-Tq}C^-Jc0-+%VX%X;}M zM>=zlE2Guj>B}!;eNiulhdnBty6PG4pxtCB&mgO^V_3@2EAvf>SPN8lR5NOpx5uh8 zLsPvyX&8!7h72kRokD{1zVY*6T9NDAJtUI>SnAQBiV9a03Be98+0~#3#~-q%4kh4f z+ibT7qaQO#i%>ySyXqB0(A*UM`z`uXjxU6DI6_K$L)hz)l(8UvE#@%yU$7ywrf?8y&-%mB}{pVcw8Zcl$ z`I2GB_y5p?X-Rr%K>z&E11hXJb9=wu=TG?PMbvauf}dsa1rOjFnB-U#mMtw^t#^#O z^B^NQ#WS}DIM{ypf?RpJJmc8?3zpFi z$;=`>cceJmqS@B*6WUTo2l4n$&VA;`SVh=>1^dS6G5#_&FV7vD-vw0Y0bH8|BzQG7v&QG58(iAo6g_CB($2`Jublu$XlgtZpC2Ep^;Y1f* z^3T=!k6i zkdV&pyva-$DIYan$Yesm103aF$r!Y;GChUpH}3oO09j~tOcRMV-~jSV*!*eBCnt8N za&HnN0b2`i8WC<6D$%2q**{P6Y3`7VQ>hUFLg>flKXdi=oU+5e?=U%k`}Qp6qThmY znXhWXZAqX>GUKV%47=GleI4{xZ-Xs#y)rUvsK%(c3kvRNmXR{i`L{Umf{}lCP{YTg z$;foAc2p1Ij|7zE#!}}S8walnNbUQz=b3_+EzT6^Q=`%J#yI%Q+XZ)`oA~QeCBqA# z&du}|=-tt}T~d_@_CV5_?>++-L_`*pkL#l-z8pUW994}W8jP`{$BZe68UGO=%W(+_ z2`8Ul9&W)b!*#v%R-i&<$`JkQ6)Or*pJ{Fd_-ijvogl$Oh!i@~8Xk)#i@KPctiOJ> zqPqI?FYZf=i=p+@FYe2Z2wpZ7mVOJ4>-A4zW6$U+!(^gjA;yfRdY5A{Z!to=#r4bR$>S3v5c zZj&k%FSRIef=vqVIOps06X4)bYB-dSDmeSqP`7ng2D6se1Eh)B9;m`CA6B z|FR3x-O2sh`bjUE6VJ7|b!o2dF|}`d^4SyCEi_JlU)b!F=~7;E{!^{n<=cofnzy&v zu;WT}o5bxKE!SfvBCl-ie|H13lEgSh)+E$63|s>PP2-!qyx9LTlW^E-CXX*%zPw$< z5F-I1oYaSAgO7Qy=33`-71MuRo`UXCd6habifM=!URkooipol_c?)x6H$FW@NTrT@DK=-QQLtg};ltmoX=(U=)BzK6Kg?Ki6qnhH6lGgW8n%ktS@)yo zyi>e0f*TMzd!25gRAlHB0qoiKv}^F3<~N~~g*TU9HJi#elbcEyf*o|54*p0QAHpRt`d766zhA{`3GWB*R@)*t@XQU_{M)9us^TIq^-MV#49?nnY z+_=qSc_}Wsg@IDK1qA~Z9e~`y@G*AR^^KJHHM;NIFgxNf#o>{m`bx$Y-H2v_oiqGK zEc;Q}2GHNlto>Y^dM5A6Okf}C2Xa5`$I2M4TrHL| zotMbFYLIf749UoMw7e7}FU2>dHGmphi%WdTN#3Uf?q)U`Lj+1U2aOH*Z9Lnwb`2Df z;LxWX@1W%+Y`sjrRd@rzv=G-(Y$d+~Q*7TAgf3+sl-HCZ4lMDnj9NX|M z5;$+t)O2yC{Rz7;doHX6~qs%U3^LXRKzj(Uaf3Bu-ajhe0ceoq3KlqU2_^ zXkcSu>&0c}?34T0WgVOk-cdNk40<6wCXH#RY#ZV!*VaO=&0<~5&b2`IS@H4PL-^S} z<+9C2=w5QdS;Dm>Edv7!YiI`MRoYzl!QNp5jH!KQ3pH}{w*P^RM1TZVqMhYwDqmrR zAAkHY4yPolp>$;B6}i6PTp?4z1;!nMnE`zm5I8{zb`VB`+Do3P&Gr8<5+l7}vo-v2 zMg``tl;&FPvO4saLkZv}1f*RjRR^FRcovkLX3JWp^dx)ef9~yuRFbwIBBr zC#+(`g_YWvh$;FOIC0s*K2dM#OaJmD7G1IV43{y(sI=U!T)p@O!5gM^9PT1jUyj3x z7`d>V?Dx);wv>4Q2Y4TjB-)K&LluCSsRPVK66_Ess>6;M0b8V)(xHt9lfjAO% zfBEXsRY$JR!@+CE;;7>RxAI+`2?5b#oFRe{M(c8kFGi^87uc$Nr-o|=-G1| zPv_r8qMjpm*lr9*QnB2N4TIDc8}7SINrg+GC{5%|GuB}~|6wBz;z-2bDyb?0Az@{k zipgA#OM~c84Bw`uI3^|4?ca_hI#lOKf_?rw6DfmI>8AbLk>G&;awO6I9ys9qfpY1= zNvA!3@&YkU(>a>wy=@K0S-n=$!hbwen-fn#-tq`Y+YJm26A6{_2*O+O2%?)rcjltv zCvb}3)40x?*B1v@S})m0K}UH68R0+zg-J$ji6I6PB0%EHb1U`6nutK#Rpen8+>eS0 z`}X7X+gRxCTzn`d4F5)T^s5vY$o^3#%1==smuii^ zN>D=XqmmPonHtfVOm5XoF>4`L+gyy99P)iwd{$fQfQ-*R|0gAT!mRuW?vymLZzN{^t}eL9S9q*Qz-ztCEDQ+E+vp$9Td9ozH! zjgetWq5FJ^?d2YaHEts;D~u*XnL4z)FSW9aFXHr-E1%&JGkIfEz4xEo z@;^Q~LLo67XQSe-8Mdj`cGN_%teks7HHQu{7fW(~)yFBTPl6aW0hTx#3 zkB~IRuaoX>Chox&V%!RJ9O$=+QQ6)pGgCZ1=+IVQKN_%d;e#hW;Z7-zXDP-^fn?q| zzHmvPsZB}|WF5g$$_%kp+;2wg^;y5;yfrCa4@yJ0 z&}3|EYfQCPMa4|-Stbn&S_xEhh3D=nYA5((Cuxcp2KY%Dg%X+EJwzJNCR;FUYA&7TRAnHBX@%@X{Uv-@Y|tO``BWWGP+D)9(u4gObs3*Y0$<787>5BhFLym z8#mF}W`QeF9LydnV?vo9IWoPE^&XEk6S!|AKNou2M?W-LwU$1@p$@JaHK&pj!u<28 zufPB11G8X{La)F9jSq_Zv8lcHzA!W8P?7J78Y)!58C}{3dmrFRl;}^O@%|%-&PKus zO3=l>EcL|;;8mv8J`GG=#S=7o?|<`|ECFk5*R9)?>0;Ox-!Q{sS}6MEoDb@9$Dxsz z3chF%-vkGpu}o)!!79;7q@sibag{eP!1wW_UDr2`ZZ1c*zMJl=o7zz`=t=>c)L*4Q zqS-K4dK$^&BpNGjp?n$xZ;-YFMC%%89g56fylSIFe1oUIT-M`<9L5b)DlBn-aI@3UXp5v+RM+$*5iYT_?Fb?J6WrCX{Emm5kuV_Z|C^UU^ z=Z|E$4{kKEvF7_}dIeY$f3+EKz<&@C|3N;)8Y-5T0K^gAx0aNXrl;Su?CW3vL=;vy zMnVaAfyB|ly27XLW}ajFQ3{Q`3!6SD=r*LxJDwKs@DYmx0=@?UARt59V_CLNR*_(| zgnJ;(#44sMCybtR)xw>l9Z*qT-h=9qo_{qnyuK0Tv5tkIlxW?A;Ay6ZL_y+`}PM|u$Ad`0}z1>(Cnby-JA1kE6qZtMf;du*8rcZ zLTfQkC>pc@M9r3FP9A;u{;!q_m>!PUmJa_ zKhfol8?CD)_Fa4S>J{E<}c{07a@== z#5xe=Zr48?oiet2audj6-xE_;Li3Izr=Tp0SbDz)N&|eG;$N2il=p&$t|*9Gg9U<2 zl+6EjdPBV}3{`#{ULVp|R4!I~=#t2~o?|1Db zEWFNnoA}sTt_an{=(9(Cb#)q*M-h~J*`NjS?kWTK!vG69y&*@EiJ^cwKmp{}ROSV~ zcsR|@c1}1jFzqI@1muZL6XyPSmRD+-OvKZ8Ud{xqmhxkJ@9lhWr942|(1KZGY*ge` z4>(@fz+FCB`n%T~{%$i@$@H}bykQct1dovm6Qsg?C9qY>_f1c&f$9Cg+;Q%+yXRp= z%-!kUFG(l>#>O_xJ%|2GCFRXz8k7VPAtt#hwvA?ns;u-Z-d8XZpT7NLOpj54H4mJa zL476)w7@a>#c>HdkF52NQMl|T904$8veyaO7!x~LP=osc4c}K3G(#Ua(r z4p^7CHP(GeC-%qmhP~u|<@wX6=)G8U{Ro{@8H{m43y_$T(fXwF`saJ=<9T%2Sg?_m z%qC@ajM{nn;LMFlq^AFFmrTKHOPNY0xJ}q9+R!InQoxeuFoTRGZ`s^&&}boki4w7J zZe?(<5>UYuPKF5>D%l{}y2rS=%u+{`EEMDL!x$o}VmM838bs z+z#P7j}`tIt1ZgZ7iF0+Lfay_C@o0H5VFsZ|(xJVtz-ubx zzXZqNF=CDE{JCBK?l=_VWv6unK*ptlFBL?bjB(&>U1iSMzcP@OGs9og8>t0tT*Vql zt)^z*tX)`?%r->*G$*iMBRA`l6em=;F@U0kpW3hHg!kO*eR24W%r(}KGD~p%hCPgcFoxu zG5Fx94?>-rop6{wv*$ji0KfcpA8j<87#|wzvE6g#?@dp4P9NEE&(m|ZQ4dew{d0QA z$ji?kK7Y94@|vHPetQ2@-K~=aQ>z`dxWitwRB6&p&`CH8EQ`FEHiE^Abg1*YK^1`a z*sk##u#-U$(f`D$Q$?==&(bhOC=Kwxu3KNpM%{c4@{IX!a*CXso!y^XCr6-+$0X)@ z$?Yt<*zhZzZMRNf>LjuU-XRly_icT4-zL#4b}+Brs;l`YZ_EXPme|+v z6-yv0f#*2^ie;?jRvr++`ZE|wLOsyNt_Bj0rxZ9fAd0HD)?`$@&_L<&&G)gQZ%#8i zFs;eOK(NX0H*%Pnn{R7QxjrGd`<75_%ym;|qTvOL&{f0z= zut9J$s~oi{fD;M8!InSG>|kP7T{thsmsVS+L3U$DX%6SfCxB)$d?Y(_P#go@ePf$n z+40rJtz6uGS?Z(>&ArK52ClwZG{M2=_}#jC^=M)B*DPqz;R}J^QpaAioOxrqA8l+w zE0WiRu4FoS0K{Q6t4z4M1)K<%#0PFOW>mlZdPj(K(v;v?j~W+?vt0>=izg7a#6?N&%A~kS`E`^GMk!*_Kce9S>lx?Ttj&W{fykU$19#9)AN(9cCdJDkjl223F zcTaF%a<$m3j4(>KKM{D36UicPmoKEg0^@l+Zf&dpY(Pg0y-#?Og@vHYH)eOVFWf93iyue|9I1FRtp zf(}UJpkHqk(yCRfXEil4rfF6-TfQtAp{)6FTCtsdlA@aroorxn6#Vl-A9f1c3YAFq zjCiE1IN~a6K&VZn^?Ji-Rvr@UAOroG7KP8QtK?xnwH=1EmmE zUIwm!f7`fUCX=4sOoEg|j@iW|4@B+OO~th@ylqz9OT*^QTXb5`H!lMbQT&IDwz({D_S@(=ft6g!dtGq8y8dj~@A~m?bOf zXn=S}Ob~7#Tz}x`LIVT};{bwp(9rGiN#GZ$n2!_(5FNeQJp_ zLPDPArLS5gpf1rLV$!&IF~GVa)GTUP$YX}vrHT|H38{VPqy3RUwDIRc3o6=V&_`%N z)WTIDiiOlEO0|IHW+FAaoCFV{pciK4c8-o3LBVP(`v~3ugi9{;5_4H{$SU6+MEWkq_{N0OtkkOoCx(rcIw4ZnD3Tt<1?58_o)ca2D?#j&2>w&6Mj| zy0SE5fH2Hu3laxZiU;ytLQ))q6G?9bg>-c>iMapb#f1VlOO$E=)%ie1peLD6YBqJg$u;u9(Au=5=hr;GOW>Mbb1zLW zbUOi)iui<3h4ItB$VNVad}_hI#1IxFHponu0pt1yfz8e2c}&_LQGr{eH4UP@Dps1)Nd@j>trmBb*7D5TjU_ zYF~{^Mgh2gp{wEO<@1eLAOx!Dg#uDeT?y^2xW)oL+@o+e_Qz z_Gf3Lb@sNgQ4FMeF;~B7nfi9qvIUOw3YAjV(+i|?s3_N10_Qtpkj@DpGmN}waJ47n z*@wE2fO1?suiqr47~v=lN9?YMNkmV6M^z;MN|>73E5$g_ZkKfS0vzi$}#~{-n#d) z+q*yXM7~65+>V{H3Am8m1^`x`{Q86B4rXQQB+fr95Fr_etqYO|to8%p5Xja-PHthH zKA~GtdQPynr{OIfOc6>+IC4ZyCrmo+0RANr2bJ);Yfs-XG2L5PNKydy^)NZn1C;)c zS#>&$RaE7x#0nvPnJjuk)n$QIRe*`8csBw}bwzayac(}o&gybA8 zWfk)VKutqee13Qe%@exy_S*h4e-WO4C6Pg^8b5x#z|Z;H^t*=}dfVC>c?%Z$#L1IW zn%z+WkD9cL-7WZAwpxCiP&THJ6zISVKfj}hfFC2TDZd7SzJG@f9m?+udKjzpdq<@| zg?>10>TX#X6pORo*&XoKqB#Z1D^Ipu#x1n-_w#dN7^|v;t0H?2Cf;VyO-){tl1~1H zk$i83f1s(gIY`#Ex@9D7k{0v2>}P!-%TtS43M_a9*%~VvFH8R@H7nY< zVS_LZ#o4knC27)%Y-pkJ@e}0t_9Z_&4MTVc+gxrdtJE*Z!3%hVM| zFR$23vuV<#NdnbWCD7lHRLyB<7xrgR6Nn@mDYu$B*Yo0zk3%w@@9UO~mmZ&6lIlmx zI#b=p{T*rttvhupC?y+{O7Xoj zn)@hQ%Hjjk!|P6pq!Qho9tmad%mG|bW*=0EiBRB4_f(Lh%uECdDGl;~ks0CG9njH{ zR@T;L9Db4k2o{o-NSv`V2q=%+w9wW&;N9D0=;p>>{!_TkoO1Gmp(}xr&5WbKdz851 zok)q0Rm!$o98pq0y0!+Ek*ppCz@96sQl;%;AIUuv_L6WjX-vXi;n`{)brfG&>Z#9A zggd~lB3ox$(_u8$$ThFb4Isy<61llrYgp;qR8(~bF0VKk8~cFoy@lM0ul2F3YmxU2 zp$@x9*6RaW9NNkcPnTJEL7wAtq`T$A^i_f)&tV^%O=33x`s=Syr9_NRsFOm4A(3GY za6MJOe#n~CCJ!JglMzeDNvD)YgCV?0i;lC8y-KftL*nl8WlC>)g3t5Sa$M;x;nw_p zebq2IHaAbX;Ii_2|2PInkqp;3pL zSrTRh=qS5lEb4T4!}P|0qwq3s657?Ql{tpT{35tpK>3L6mon;TTeavd<_9gAbhJ{U6>_g2{3~lL%a$zAra|NyO)VXKYB&<%go)w#0b9TkwxK95l~Qk0b+f*_GT5l+dA zE{3dm=1zvzUKOaK4H@&$>Y!N*ctzy*xLof?)z9KqQKgui_tYy$a=AI9Kgqa!9Y@Dd z;aX1q(&^^K!xxr#hR4F6bVxL9)QqMgNjafmK}ogeS6|8GmC6yUn9RR`Hzy$nYW-d7 z)Hb8sK9Ch6qIyAZ9*wgVaU4I+8r9jAxzg>HgrjLp|2o3Gta%fT*2=n5x35Q?`sCuN z!RPw0K2?k<`~H=^MIwfA-)~8E;Y1oCg2&J3+S#wO>tq5BR_^kz2%k#M~(u5VL(Cz3#F2mvmPJRDN+pz z9|B*8lu39Qw6gl7DiRs2EJ_1VIfd6ZuvXJJ6&JdQk4Q`dt>MF0bOLIFDhW2G7vHA1I3_sh#;2yc(B|CD{tiX=c3UIZ2s6cjXr zPLWV3B@Wo}mo7jYFxN$B@d#61D4hT#S3V7r#Xrh0Yy5I#S!kb-&hT1A>K+UtuDihU z7HxT%$bx1V`ltt!r3EFHQsg;jp1euN;&&pxiLT^^%=+?+@SkLxpzgg_$-x&iDNTNx$ zVqWW>_U}h5hYuIzmw;O6s+z+SeciQr93@TpEJ;f>raN$$h^}0EGL5^{-e1Ux*aYuT`mHR?#S|X^U*@08jWu7~N?lO(_nl95Dp?e1A=k^#u Date: Mon, 6 Nov 2023 13:11:33 +0100 Subject: [PATCH 23/47] fix compilation problems --- .../service/AbstractDomainIndexingServiceIT.java | 2 +- .../index/service/AbstractIndexingServiceIT.java | 6 +++--- .../query/AbstractGraphQLRuntimesQueriesIT.java | 16 ++++++++-------- .../org/kie/kogito/index/test/TestUtils.java | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java index c72659d485..6eb3eb4b9c 100644 --- a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java +++ b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractDomainIndexingServiceIT.java @@ -709,7 +709,7 @@ void testUserTaskInstanceDomainIndex() throws Exception { .body("data.Deals[0].metadata.userTasks[0].started", is(formatDateTime(event.getData().getEventDate()))) .body("data.Deals[0].metadata.userTasks[0].lastUpdate", anything()); - event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "kogito", 2); + event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "kogito", "Completed"); UserTaskInstanceStateEventBody body = UserTaskInstanceStateEventBody.create() .eventType("Completed") .userTaskInstanceId(taskId) diff --git a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractIndexingServiceIT.java b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractIndexingServiceIT.java index 90b9ac04ba..9a64c29a21 100644 --- a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractIndexingServiceIT.java +++ b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/AbstractIndexingServiceIT.java @@ -399,18 +399,18 @@ void testUserTaskInstanceIndex() throws Exception { event); state = "Completed"; - event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "kogito", 2); + event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "kogito", "Completed"); indexUserTaskCloudEvent(event); validateUserTaskInstance( getUserTaskInstanceByIdAndCompleted(taskId, formatDateTime(event.getData().getEventDate())), event); - event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "admin", 2); + event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, "admin", "Completed"); indexUserTaskCloudEvent(event); validateUserTaskInstance(getUserTaskInstanceByIdAndActualOwner(taskId, "admin"), event); - event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, null, 2); + event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, null, state, null, "Completed"); LOGGER.info("event {}", event); indexUserTaskCloudEvent(event); diff --git a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/graphql/query/AbstractGraphQLRuntimesQueriesIT.java b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/graphql/query/AbstractGraphQLRuntimesQueriesIT.java index f136f09e26..04df4542e4 100644 --- a/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/graphql/query/AbstractGraphQLRuntimesQueriesIT.java +++ b/data-index/data-index-service/data-index-service-common/src/test/java/org/kie/kogito/index/service/graphql/query/AbstractGraphQLRuntimesQueriesIT.java @@ -259,7 +259,7 @@ void testGetTaskSchema() { String taskId = UUID.randomUUID().toString(); UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); checkOkResponse("{ \"query\" : \"{UserTaskInstances (where: {id: {equal:\\\"" + taskId + "\\\" }}){ " + @@ -280,7 +280,7 @@ void testUpdateUserTaskInstance() { String newDescription = "NewDescription"; UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); checkOkResponse("{ \"query\" : \"mutation { UserTaskInstanceUpdate ( " + @@ -306,7 +306,7 @@ void testCreateTaskComment() { String comment = "Comment to add"; UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); @@ -338,7 +338,7 @@ void testUpdateUserTaskInstanceComment() { String commentContent = "commentContent"; UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); @@ -368,7 +368,7 @@ void testDeleteUserTaskInstanceComment() { String commentId = UUID.randomUUID().toString(); UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); @@ -400,7 +400,7 @@ void testCreateTaskAttachment() { URI attachmentUri = URI.create("https://drive.google.com/file/d/1Z_Lipg2jzY9TNewTaskAttachmentUri"); UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); @@ -435,7 +435,7 @@ void testUpdateUserTaskInstanceAttachment() { URI attachmentUri = URI.create("http://localhost:8080"); UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); @@ -468,7 +468,7 @@ void testDeleteUserTaskInstanceAttachment() { URI attachmentUri = URI.create("http://localhost:8080"); UserTaskInstanceStateDataEvent event = getUserTaskCloudEvent(taskId, processId, processInstanceId, null, - null, "InProgress", user, 1); + null, "InProgress", user, "STARTED"); indexUserTaskCloudEvent(event); diff --git a/data-index/data-index-test-utils/src/main/java/org/kie/kogito/index/test/TestUtils.java b/data-index/data-index-test-utils/src/main/java/org/kie/kogito/index/test/TestUtils.java index b9a8acc347..68946a056c 100644 --- a/data-index/data-index-test-utils/src/main/java/org/kie/kogito/index/test/TestUtils.java +++ b/data-index/data-index-test-utils/src/main/java/org/kie/kogito/index/test/TestUtils.java @@ -270,11 +270,11 @@ private static ObjectNode getProcessInstanceVariablesJson() { } public static UserTaskInstanceStateDataEvent getUserTaskCloudEvent(String taskId, String processId, String processInstanceId, String rootProcessInstanceId, String rootProcessId, String state) { - return getUserTaskCloudEvent(taskId, processId, processInstanceId, rootProcessInstanceId, rootProcessId, state, "kogito", 1); + return getUserTaskCloudEvent(taskId, processId, processInstanceId, rootProcessInstanceId, rootProcessId, state, "kogito", "STARTED"); } public static UserTaskInstanceStateDataEvent getUserTaskCloudEvent(String taskId, String processId, String processInstanceId, String rootProcessInstanceId, String rootProcessId, String state, - String actualOwner, Integer eventType) { + String actualOwner, String eventType) { UserTaskInstanceStateEventBody body = UserTaskInstanceStateEventBody.create() .eventType(eventType) From eee46b5159333a1246ed46f7caf49c52a162bcc4 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Tue, 7 Nov 2023 11:24:30 +0100 Subject: [PATCH 24/47] fix artifact id and added new query --- .../pom.xml | 2 +- .../app/audit/jpa/JPADataAuditStore.java | 26 +++++--- .../model/AbstractUserTaskInstanceLog.java | 18 ++++++ .../app/audit/jpa/model/JobExecutionLog.java | 26 ++++---- .../jpa/model/ProcessInstanceErrorLog.java | 25 ++++---- .../app/audit/jpa/queries/DataMapper.java | 22 ++++++- .../audit/jpa/queries/JPAAbstractQuery.java | 6 +- .../jpa/queries/JPAComplexNamedQuery.java | 10 +-- ...QLSchemaProcessInstancesQueryProvider.java | 16 +++-- ...LSchemaUserTaskInstancesQueryProvider.java | 4 +- .../mapper/ProcessInstanceStateTOMapper.java | 2 +- ...rocessInstanceVariableHistoryTOMapper.java | 57 +++++++++++++++++ .../UserTaskInstanceAssignmentTOMapper.java | 2 +- .../UserTaskInstanceDeadlineTOMapper.java | 2 +- .../main/resources/META-INF/process-orm.xml | 26 +++++++- .../pom.xml | 2 +- .../pom.xml | 2 +- data-audit/jpa/pom.xml | 4 +- .../pom.xml | 2 +- .../addons/data/audit/common/kafka/App.java | 11 ---- .../kogito-addons-data-audit-common/pom.xml | 4 +- .../ProcessInstanceVariableHistoryTO.java | 64 +++++++++++++++++++ .../data-audit-process-query.graphqls | 3 +- .../META-INF/data-audit-types.graphqls | 6 ++ .../pom.xml | 2 +- .../kogito-addons-data-audit-quarkus/pom.xml | 2 +- .../QuarkusJPADataAuditEventPublisher.java | 2 +- ...uarkusAuditProcessInstanceServiceTest.java | 31 ++++++++- .../pom.xml | 2 +- data-audit/pom.xml | 31 +-------- 30 files changed, 304 insertions(+), 108 deletions(-) create mode 100644 data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java delete mode 100644 data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java create mode 100644 data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml index 7a08a6589d..1f01a03d88 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.kie.kogito - data-audit + kogito-addons-data-audit-jpa 2.0.0-SNAPSHOT kogito-addons-data-audit-jpa-common diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index b4f09cf574..a1a9d37c65 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -25,6 +25,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; +import java.util.function.Supplier; import javax.persistence.EntityManager; @@ -217,13 +218,18 @@ private void setProcessCommonAttributes(AbstractProcessInstanceLog log, ProcessI log.setProcessType(event.getKogitoProcessType()); log.setProcessId(event.getKogitoProcessId()); log.setProcessVersion(event.getKogitoProcessInstanceVersion()); - log.setParentProcessInstanceId(event.getKogitoParentProcessInstanceId()); log.setProcessInstanceId(event.getKogitoProcessInstanceId()); - log.setRootProcessId(event.getKogitoRootProcessId()); - log.setRootProcessInstanceId(event.getKogitoRootProcessInstanceId()); + log.setParentProcessInstanceId(getOnlyIfFilled(event::getKogitoParentProcessInstanceId)); + log.setRootProcessId(getOnlyIfFilled(event::getKogitoRootProcessId)); + log.setRootProcessInstanceId(getOnlyIfFilled(event::getKogitoRootProcessInstanceId)); log.setBusinessKey(event.getKogitoBusinessKey()); } + private String getOnlyIfFilled(Supplier producer) { + String data = producer.get(); + return data != null && !data.isBlank() ? data : null; + } + @Override public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskInstanceAssignmentDataEvent event) { UserTaskInstanceAssignmentLog log = new UserTaskInstanceAssignmentLog(); @@ -247,11 +253,15 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns log.setEventUser(event.getData().getEventUser()); log.setAttachmentId(event.getData().getAttachmentId()); log.setAttachmentName(event.getData().getAttachmentName()); - try { - log.setAttachmentURI(event.getData().getAttachmentURI().toURL()); - } catch (MalformedURLException e) { - LOGGER.error("Could not serialize url {}", e); + + if (event.getData().getAttachmentURI() != null) { + try { + log.setAttachmentURI(event.getData().getAttachmentURI().toURL()); + } catch (MalformedURLException e) { + LOGGER.error("Could not serialize url {}", e); + } } + log.setEventType(event.getData().getEventType()); EntityManager entityManager = context.getContext(); entityManager.persist(log); @@ -333,7 +343,7 @@ public void storeUserTaskInstanceDataEvent(DataAuditContext context, UserTaskIns private void setUserTaskCommonAttributes(AbstractUserTaskInstanceLog log, UserTaskInstanceDataEvent event) { log.setEventId(event.getId()); - log.setEventDate(new Date(event.getTime().toInstant().toEpochMilli())); + log.setEventDate(event.getTime() != null ? Date.from(event.getTime().toInstant()) : Date.from(Instant.now())); log.setProcessInstanceId(event.getKogitoProcessInstanceId()); log.setBusinessKey(event.getKogitoBusinessKey()); log.setUserTaskInstanceId(event.getKogitoUserTaskInstanceId()); diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java index 9cd9a436cc..d22fa7e09a 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.model; import java.util.Date; diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java index 0882f3bb8c..8118ff1ac4 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java @@ -1,19 +1,21 @@ /* - * Copyright 2023 Red Hat, Inc. and/or its affiliates. + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 * - * 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 * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. + * 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.kie.kogito.app.audit.jpa.model; import java.sql.Timestamp; diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java index d7b8e28bfa..95a1da9f96 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java @@ -1,17 +1,20 @@ /* - * Copyright 2023 Red Hat, Inc. and/or its affiliates. + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 * - * 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 * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. + * 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.kie.kogito.app.audit.jpa.model; diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java index facf0c66aa..27325d6066 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java @@ -1,7 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; import java.util.List; -public interface DataMapper { - List produce(List data); +public interface DataMapper { + List produce(List data); } \ No newline at end of file diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java index c806fa16db..b3a48de6c6 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -26,7 +26,7 @@ import javax.persistence.Query; import javax.persistence.TypedQuery; -public abstract class JPAAbstractQuery { +public abstract class JPAAbstractQuery { protected List executeWithEntityManager(EntityManager entityManager, String query, Class clazz) { return entityManager.createQuery(query, clazz).getResultList(); @@ -57,11 +57,11 @@ protected List executeWithNamedQueryEntityManagerAndArguments(EntityManag } - protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query) { + protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query) { return entityManager.createNamedQuery(query).getResultList(); } - protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Map arguments) { + protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Map arguments) { Map parameters = new HashMap<>(arguments); @SuppressWarnings("unchecked") diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java index e6ac487e77..22ed56cd95 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java @@ -28,17 +28,17 @@ import graphql.schema.DataFetchingEnvironment; -public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { +public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { private String name; private String namedQuery; - private DataMapper dataMapper; + private DataMapper dataMapper; - public JPAComplexNamedQuery(String name, DataMapper dataMapper) { + public JPAComplexNamedQuery(String name, DataMapper dataMapper) { this(name, name, dataMapper); } - public JPAComplexNamedQuery(String name, String namedQuery, DataMapper dataMapper) { + public JPAComplexNamedQuery(String name, String namedQuery, DataMapper dataMapper) { this.name = name; this.namedQuery = namedQuery; this.dataMapper = dataMapper; @@ -50,7 +50,7 @@ public String name() { } @Override - public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { + public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { Map arguments = dataFetchingEnvironment.getArguments(); DataAuditContext context = dataFetchingEnvironment.getLocalContext(); EntityManager entityManager = context.getContext(); diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java index a7e9ca03dd..905d712426 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -23,8 +23,10 @@ import org.kie.kogito.app.audit.graphql.type.ProcessInstanceErrorTO; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceNodeTO; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceStateTO; +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceVariableHistoryTO; import org.kie.kogito.app.audit.graphql.type.ProcessInstanceVariableTO; import org.kie.kogito.app.audit.jpa.queries.mapper.ProcessInstanceStateTOMapper; +import org.kie.kogito.app.audit.jpa.queries.mapper.ProcessInstanceVariableHistoryTOMapper; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider; @@ -33,14 +35,16 @@ public class JPAGraphQLSchemaProcessInstancesQueryProvider implements GraphQLSch @Override public List> queries() { return List.> of( - new JPAComplexNamedQuery("GetAllProcessInstancesState", new ProcessInstanceStateTOMapper()), - new JPAComplexNamedQuery("GetAllProcessInstancesStateByStatus", new ProcessInstanceStateTOMapper()), - new JPAComplexNamedQuery("GetAllProcessInstancesStateByProcessId", new ProcessInstanceStateTOMapper()), - new JPAComplexNamedQuery("GetProcessInstancesStateHistory", new ProcessInstanceStateTOMapper()), - new JPAComplexNamedQuery("GetProcessInstancesStateHistoryByBusinessKey", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetAllProcessInstancesState", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetAllProcessInstancesStateByStatus", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetAllProcessInstancesStateByProcessId", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetProcessInstancesStateHistory", new ProcessInstanceStateTOMapper()), + new JPAComplexNamedQuery("GetProcessInstancesStateHistoryByBusinessKey", new ProcessInstanceStateTOMapper()), new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), - new JPASimpleNamedQuery("GetAllProcessInstancesVariablebyProcessInstanceId", ProcessInstanceVariableTO.class)); + new JPASimpleNamedQuery("GetAllProcessInstancesVariableByProcessInstanceId", ProcessInstanceVariableTO.class), + new JPAComplexNamedQuery("GetAllProcessInstancesVariableHistoryByProcessInstanceId", + new ProcessInstanceVariableHistoryTOMapper())); } diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java index 8da652eaa7..5460acf1f9 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java @@ -43,8 +43,8 @@ public List> queries() { new JPASimpleNamedQuery("GetAllUserTaskInstanceAttachments", UserTaskInstanceAttachmentTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), - new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", new UserTaskInstanceAssignmentTOMapper()), - new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadline", new UserTaskInstanceDeadlineTOMapper())); + new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", new UserTaskInstanceAssignmentTOMapper()), + new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadline", new UserTaskInstanceDeadlineTOMapper())); } public OffsetDateTime toDateTime(Date date) { diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java index e961a64f89..1c0dca4e0c 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java @@ -29,7 +29,7 @@ import graphql.com.google.common.base.Objects; -public class ProcessInstanceStateTOMapper implements DataMapper { +public class ProcessInstanceStateTOMapper implements DataMapper { @Override public List produce(List data) { List transformedData = new ArrayList<>(); diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java new file mode 100644 index 0000000000..084b9f16ae --- /dev/null +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries.mapper; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceVariableHistoryTO; +import org.kie.kogito.app.audit.graphql.type.ProcessInstanceVariableTO; +import org.kie.kogito.app.audit.jpa.queries.DataMapper; + +import graphql.com.google.common.base.Objects; + +public class ProcessInstanceVariableHistoryTOMapper implements DataMapper { + @Override + public List produce(List data) { + List transformedData = new ArrayList<>(); + ProcessInstanceVariableHistoryTO current = null; + Object currentIndex = null; + for (int idx = 0; idx < data.size(); idx++) { + ProcessInstanceVariableTO row = data.get(idx); + if (!Objects.equal(currentIndex, row.getVariableId())) { + current = new ProcessInstanceVariableHistoryTO(); + current.setVariableId(row.getVariableId()); + current.setVariableName(row.getVariableName()); + currentIndex = row.getVariableId(); + transformedData.add(current); + } + current.addLog(row); + } + + return transformedData; + } + + public OffsetDateTime toDateTime(Date date) { + return (date != null) ? OffsetDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")) : null; + } +} diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java index 83d1715991..b740b494e2 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java @@ -29,7 +29,7 @@ import graphql.com.google.common.base.Objects; -public class UserTaskInstanceAssignmentTOMapper implements DataMapper { +public class UserTaskInstanceAssignmentTOMapper implements DataMapper { @Override public List produce(List data) { diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java index 9db735d77f..6974d0907d 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java @@ -29,7 +29,7 @@ import graphql.com.google.common.base.Objects; -public class UserTaskInstanceDeadlineTOMapper implements DataMapper { +public class UserTaskInstanceDeadlineTOMapper implements DataMapper { @Override public List produce(List data) { diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml index 4de5acc70b..708900eff4 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml @@ -193,7 +193,7 @@ SELECT log.event_id as eventId, @@ -219,6 +219,30 @@ + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.variable_id as variableId, + log.variable_name as variableName, + log.variable_value as variableValue + FROM ProcessInstanceVariableLog log + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.variable_id ASC, log.event_date DESC + + + + diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml index 32af9e0705..22414d3551 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - jpa + kogito-addons-data-audit-jpa org.kie.kogito 2.0.0-SNAPSHOT diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index bc070b4566..bc64f2f897 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - jpa + kogito-addons-data-audit-jpa org.kie.kogito 2.0.0-SNAPSHOT diff --git a/data-audit/jpa/pom.xml b/data-audit/jpa/pom.xml index c749d2609f..80a6f25da0 100644 --- a/data-audit/jpa/pom.xml +++ b/data-audit/jpa/pom.xml @@ -4,13 +4,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - data-audit + kogito-addons-data-audit org.kie.kogito 2.0.0-SNAPSHOT pom - jpa + kogito-addons-data-audit-jpa Kogito Apps :: Data Audit :: JPA diff --git a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml b/data-audit/kogito-addons-data-audit-common-kafka/pom.xml index 0ff11316a9..e102f49b24 100644 --- a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml +++ b/data-audit/kogito-addons-data-audit-common-kafka/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - data-audit + kogito-addons-data-audit org.kie.kogito 2.0.0-SNAPSHOT diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java b/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java deleted file mode 100644 index f4f086316b..0000000000 --- a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kogito/addons/data/audit/common/kafka/App.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.kogito.addons.data.audit.common.kafka; - -/** - * Hello world! - * - */ -public class App { - public static void main(String[] args) { - System.out.println("Hello World!"); - } -} diff --git a/data-audit/kogito-addons-data-audit-common/pom.xml b/data-audit/kogito-addons-data-audit-common/pom.xml index c88e5b1905..7e97c30d32 100644 --- a/data-audit/kogito-addons-data-audit-common/pom.xml +++ b/data-audit/kogito-addons-data-audit-common/pom.xml @@ -5,11 +5,11 @@ 4.0.0 org.kie.kogito - data-audit + kogito-addons-data-audit 2.0.0-SNAPSHOT kogito-addons-data-audit-common - Kogito Apps :: Data Audit :: Data Audit Service Common + Kogito Apps :: Data Audit :: Common 1.18 diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java new file mode 100644 index 0000000000..b7470fccf8 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.graphql.type; + +import java.util.ArrayList; +import java.util.List; + +public class ProcessInstanceVariableHistoryTO { + + private String variableId; + + private String variableName; + + private List logs; + + public ProcessInstanceVariableHistoryTO() { + logs = new ArrayList<>(); + } + + public String getVariableId() { + return variableId; + } + + public void setVariableId(String variableId) { + this.variableId = variableId; + } + + public String getVariableName() { + return variableName; + } + + public void setVariableName(String variableName) { + this.variableName = variableName; + } + + public List getLogs() { + return logs; + } + + public void setLogs(List logs) { + this.logs = logs; + } + + public void addLog(ProcessInstanceVariableTO log) { + logs.add(log); + } + +} diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls index f1d7a549df..fd53c71668 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls @@ -9,6 +9,7 @@ type Query { GetAllProcessInstancesNodeByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceNodeLog] GetAllProcessInstancesErrorByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceErrorLog] - GetAllProcessInstancesVariablebyProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] + GetAllProcessInstancesVariableByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableLog] + GetAllProcessInstancesVariableHistoryByProcessInstanceId (processInstanceId : String!, pagination: Pagination) : [ProcessInstanceVariableHistoryLog] } diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls index 793317b490..9200508f5d 100644 --- a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls +++ b/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls @@ -88,6 +88,12 @@ type ProcessInstanceVariableLog { variableName : String variableValue : JSON } + +type ProcessInstanceVariableHistoryLog { + variableId : String! + variableName : String! + logs : [ProcessInstanceVariableLog] +} type UserTaskInstanceStateLog { eventId : String! diff --git a/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml b/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml index 91b66ace02..f68cd2531f 100644 --- a/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - data-audit + kogito-addons-data-audit org.kie.kogito 2.0.0-SNAPSHOT diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml index 2b500ceb0a..01f2f90e57 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.kie.kogito - data-audit + kogito-addons-data-audit 2.0.0-SNAPSHOT diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index c847447871..af240f547a 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -68,7 +68,7 @@ public void publish(DataEvent event) { proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { - LOGGER.info("Processing job instance event {}", event); + LOGGER.debug("Processing job instance event {}", event); proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; } diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index f1d56bf8ac..2cbb4fba61 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -296,7 +296,7 @@ public void testGetAllProcessInstancesErrorByProcessInstanceId() { public void testGetAllProcessInstancesVariablebyProcessInstanceId() { String query = - "{ GetAllProcessInstancesVariablebyProcessInstanceId ( processInstanceId : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue } }"; + "{ GetAllProcessInstancesVariableByProcessInstanceId ( processInstanceId : \\\"1\\\") { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -307,13 +307,38 @@ public void testGetAllProcessInstancesVariablebyProcessInstanceId() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetAllProcessInstancesVariablebyProcessInstanceId"); + .extract().path("data.GetAllProcessInstancesVariableByProcessInstanceId"); assertThat(data) .hasSize(1) .extracting(e -> e.get("variableId"), e -> e.get("variableName"), e -> e.get("variableValue")) .containsExactlyInAnyOrder( - tuple("var_id1", "varName", "\"variableValue\"")); + tuple("var_id1", "varName", "variableValue")); + + } + + @Test + public void testGetAllProcessInstancesVariableHistoryByProcessInstanceId() { + + String query = + "{ GetAllProcessInstancesVariableHistoryByProcessInstanceId ( processInstanceId : \\\"1\\\") { variableId, variableName, logs { eventId, eventDate, processType, processId, processVersion, parentProcessInstanceId, rootProcessId, rootProcessInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue} } }"; + query = wrapQuery(query); + List> data = given() + .contentType(ContentType.JSON) + .body(query) + .when() + .post(SubsystemConstants.DATA_AUDIT_PATH) + .then() + .assertThat() + .statusCode(200) + .and() + .extract().path("data.GetAllProcessInstancesVariableHistoryByProcessInstanceId"); + + assertThat(data) + .hasSize(1) + .extracting(e -> e.get("variableId"), e -> e.get("variableName")) + .containsExactlyInAnyOrder( + tuple("var_id1", "varName")); } } diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml index def71662e7..87df8e34a4 100644 --- a/data-audit/kogito-addons-data-audit-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.kie.kogito - data-audit + kogito-addons-data-audit 2.0.0-SNAPSHOT diff --git a/data-audit/pom.xml b/data-audit/pom.xml index 6de95e8fa7..f61f600edb 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -3,52 +3,27 @@ - - org.kie.kogito - - kogito-apps-build-parent - - 2.0.0-SNAPSHOT - - ../kogito-apps-build-parent/pom.xml - - 4.0.0 - - data-audit - + kogito-addons-data-audit pom - - Kogito Apps :: Data Audit - - kogito-addons-data-audit-common - + kogito-addons-data-audit-common-kafka kogito-addons-data-audit-quarkus - - kogito-addons-data-audit-springboot - kogito-addons-data-audit-quarkus-subsystem - - kogito-addons-data-audit-common-kafka - - - + jpa - - From 6d1616d4b7da8a57a53d5a4c111ae9fb74cd52dc Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Wed, 8 Nov 2023 11:57:14 +0100 Subject: [PATCH 25/47] fix master pom adding data audit module --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 5f4aaa355a..d4defab9d2 100644 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,7 @@ persistence-commons jobs-service data-index + data-audit ui-packages security-commons management-console From 93cecff6b4856df04669417e3f577208f5986f01 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 9 Nov 2023 11:54:23 +0100 Subject: [PATCH 26/47] fix names in the projects to fit naming conventions --- .../pom.xml | 4 +- .../json/JsonJobDataEventDeserializer.java | 0 ...nProcessInstanceDataEventDeserializer.java | 0 ...UserTaskInstanceDataEventDeserializer.java | 0 .../kie/kogito/app/audit/json/JsonUtils.java | 0 .../audit/kafka/JobDataEventDeserializer.java | 0 .../ProcessInstanceDataEventDeserializer.java | 0 ...UserTaskInstanceDataEventDeserializer.java | 0 .../.gitignore | 0 data-audit/data-audit-common/pom.xml | 42 +++++++++++++++ .../app/audit/api/DataAuditContext.java | 0 .../app/audit/api/DataAuditQueryService.java | 0 .../audit/api/DataAuditStoreProxyService.java | 0 .../app/audit/api/SubsystemConstants.java | 0 .../kie/kogito/app/audit/api/TypeCheck.java | 0 .../audit/graphql/GraphQLSchemaManager.java | 0 .../audit/graphql/type/JobExecutionTO.java | 0 .../app/audit/graphql/type/JsonUtil.java | 0 .../graphql/type/ProcessInstanceErrorTO.java | 0 .../graphql/type/ProcessInstanceNodeTO.java | 0 .../graphql/type/ProcessInstanceStateTO.java | 0 .../ProcessInstanceVariableHistoryTO.java | 0 .../type/ProcessInstanceVariableTO.java | 0 .../type/UserTaskInstanceAssignmentTO.java | 0 .../type/UserTaskInstanceAttachmentTO.java | 0 .../type/UserTaskInstanceCommentTO.java | 0 .../type/UserTaskInstanceDeadlineTO.java | 0 .../graphql/type/UserTaskInstanceStateTO.java | 0 .../type/UserTaskInstanceVariableTO.java | 0 .../audit/spi/DataAuditContextFactory.java | 0 .../kogito/app/audit/spi/DataAuditStore.java | 0 .../app/audit/spi/GraphQLSchemaQuery.java | 0 .../audit/spi/GraphQLSchemaQueryProvider.java | 0 .../META-INF/data-audit-job-query.graphqls | 0 .../data-audit-process-query.graphqls | 0 .../META-INF/data-audit-types.graphqls | 0 .../data-audit-usertask-query.graphqls | 0 .../pom.xml | 6 +-- ...uarkusDataAuditMessagingEventConsumer.java | 0 .../src/main/resources/META-INF/beans.xml | 0 .../META-INF/microprofile-config.properties | 0 .../kogito-addons-data-audit-common/pom.xml | 46 ----------------- .../.gitignore | 0 .../pom.xml | 2 +- .../app/audit/jpa/JPADataAuditStore.java | 0 .../jpa/model/AbstractProcessInstanceLog.java | 0 .../model/AbstractUserTaskInstanceLog.java | 0 .../app/audit/jpa/model/JobExecutionLog.java | 0 .../app/audit/jpa/model/ModelConstants.java | 0 .../jpa/model/ProcessInstanceErrorLog.java | 0 .../jpa/model/ProcessInstanceNodeLog.java | 0 .../jpa/model/ProcessInstanceStateLog.java | 0 .../jpa/model/ProcessInstanceVariableLog.java | 0 .../model/UserTaskInstanceAssignmentLog.java | 0 .../model/UserTaskInstanceAttachmentLog.java | 0 .../jpa/model/UserTaskInstanceCommentLog.java | 0 .../model/UserTaskInstanceDeadlineLog.java | 0 .../jpa/model/UserTaskInstanceStateLog.java | 0 .../model/UserTaskInstanceVariableLog.java | 0 .../app/audit/jpa/queries/DataMapper.java | 0 .../audit/jpa/queries/JPAAbstractQuery.java | 0 .../jpa/queries/JPAComplexNamedQuery.java | 0 .../JPAGraphQLSchemaJobsQueryProvider.java | 0 ...QLSchemaProcessInstancesQueryProvider.java | 0 ...LSchemaUserTaskInstancesQueryProvider.java | 0 .../jpa/queries/JPASimpleNamedQuery.java | 0 .../mapper/ProcessInstanceStateTOMapper.java | 0 ...rocessInstanceVariableHistoryTOMapper.java | 0 .../UserTaskInstanceAssignmentTOMapper.java | 0 .../UserTaskInstanceDeadlineTOMapper.java | 0 .../main/resources/META-INF/entity-orm.xml | 0 .../src/main/resources/META-INF/job-orm.xml | 0 .../main/resources/META-INF/process-orm.xml | 0 ...rg.kie.kogito.app.audit.spi.DataAuditStore | 0 ...o.app.audit.spi.GraphQLSchemaQueryProvider | 0 .../main/resources/META-INF/usertask-orm.xml | 0 .../pom.xml | 2 +- .../QuarkusJPADataAuditContextFactory.java | 0 .../src/main/resources/META-INF/beans.xml | 0 .../pom.xml | 2 +- .../SpringbootJPAAuditDataConfiguration.java | 0 .../SpringbootJPADataAuditContextFactory.java | 0 .../src/main/resources/application.properties | 0 .../pom.xml | 2 +- .../kogito-addons-data-audit-quarkus/pom.xml | 4 +- .../pom.xml | 4 +- data-audit/pom.xml | 51 ++++++++++--------- kogito-apps-bom/pom.xml | 8 +-- 88 files changed, 85 insertions(+), 88 deletions(-) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/pom.xml (89%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java (100%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java (100%) rename data-audit/{kogito-addons-data-audit-common-kafka => data-audit-common-service}/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java (100%) rename data-audit/{jpa/kogito-addons-data-audit-jpa-common => data-audit-common}/.gitignore (100%) create mode 100644 data-audit/data-audit-common/pom.xml rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/resources/META-INF/data-audit-job-query.graphqls (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/resources/META-INF/data-audit-process-query.graphqls (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/resources/META-INF/data-audit-types.graphqls (100%) rename data-audit/{kogito-addons-data-audit-common => data-audit-common}/src/main/resources/META-INF/data-audit-usertask-query.graphqls (100%) rename data-audit/{kogito-addons-data-audit-quarkus-subsystem => data-audit-quarkus-service}/pom.xml (94%) rename data-audit/{kogito-addons-data-audit-quarkus-subsystem => data-audit-quarkus-service}/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java (100%) rename data-audit/{jpa/kogito-addons-data-audit-jpa-quarkus => data-audit-quarkus-service}/src/main/resources/META-INF/beans.xml (100%) rename data-audit/{kogito-addons-data-audit-quarkus-subsystem => data-audit-quarkus-service}/src/main/resources/META-INF/microprofile-config.properties (100%) delete mode 100644 data-audit/kogito-addons-data-audit-common/pom.xml rename data-audit/{kogito-addons-data-audit-common => kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common}/.gitignore (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/pom.xml (98%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-quarkus/pom.xml (97%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java (100%) rename data-audit/{kogito-addons-data-audit-quarkus-subsystem => kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus}/src/main/resources/META-INF/beans.xml (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-springboot/pom.xml (96%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties (100%) rename data-audit/{jpa => kogito-addons-data-audit-jpa}/pom.xml (93%) diff --git a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml b/data-audit/data-audit-common-service/pom.xml similarity index 89% rename from data-audit/kogito-addons-data-audit-common-kafka/pom.xml rename to data-audit/data-audit-common-service/pom.xml index e102f49b24..ad167502c9 100644 --- a/data-audit/kogito-addons-data-audit-common-kafka/pom.xml +++ b/data-audit/data-audit-common-service/pom.xml @@ -9,9 +9,9 @@ 2.0.0-SNAPSHOT - kogito-addons-data-audit-common-kafka + data-audit-common-service - Kogito Apps :: Data Audit :: Kafka Utils + Kogito Apps :: Data Audit :: Service Common UTF-8 diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonProcessInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUserTaskInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/kafka/JobDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/kafka/ProcessInstanceDataEventDeserializer.java diff --git a/data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common-kafka/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java rename to data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/kafka/UserTaskInstanceDataEventDeserializer.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/.gitignore b/data-audit/data-audit-common/.gitignore similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/.gitignore rename to data-audit/data-audit-common/.gitignore diff --git a/data-audit/data-audit-common/pom.xml b/data-audit/data-audit-common/pom.xml new file mode 100644 index 0000000000..18f8ca512a --- /dev/null +++ b/data-audit/data-audit-common/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + org.kie.kogito + data-audit + 2.0.0-SNAPSHOT + + data-audit-common + Kogito Apps :: Data Audit :: Common + + 1.18 + + + + com.graphql-java + graphql-java-extended-scalars + + + com.graphql-java + graphql-java + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.kie.kogito + jobs-service-internal-api + + + org.slf4j + slf4j-api + + + diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditContext.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditQueryService.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/DataAuditStoreProxyService.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/SubsystemConstants.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/api/TypeCheck.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/GraphQLSchemaManager.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JsonUtil.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceErrorTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceStateTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableHistoryTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceVariableTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAssignmentTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceCommentTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceDeadlineTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceVariableTO.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditContextFactory.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/DataAuditStore.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQuery.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java rename to data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/spi/GraphQLSchemaQueryProvider.java diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls rename to data-audit/data-audit-common/src/main/resources/META-INF/data-audit-job-query.graphqls diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls rename to data-audit/data-audit-common/src/main/resources/META-INF/data-audit-process-query.graphqls diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls rename to data-audit/data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls diff --git a/data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls similarity index 100% rename from data-audit/kogito-addons-data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls rename to data-audit/data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls diff --git a/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml b/data-audit/data-audit-quarkus-service/pom.xml similarity index 94% rename from data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml rename to data-audit/data-audit-quarkus-service/pom.xml index f68cd2531f..2f70292b2a 100644 --- a/data-audit/kogito-addons-data-audit-quarkus-subsystem/pom.xml +++ b/data-audit/data-audit-quarkus-service/pom.xml @@ -2,13 +2,13 @@ 4.0.0 - kogito-addons-data-audit + data-audit org.kie.kogito 2.0.0-SNAPSHOT - kogito-addons-data-audit-quarkus-subsystem + data-audit-quarkus-service Kogito Apps :: Data Audit :: Quarkus :: subsystem @@ -25,7 +25,7 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common org.kie.kogito diff --git a/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java similarity index 100% rename from data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java rename to data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml b/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/beans.xml similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml rename to data-audit/data-audit-quarkus-service/src/main/resources/META-INF/beans.xml diff --git a/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties b/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties similarity index 100% rename from data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/microprofile-config.properties rename to data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties diff --git a/data-audit/kogito-addons-data-audit-common/pom.xml b/data-audit/kogito-addons-data-audit-common/pom.xml deleted file mode 100644 index 7e97c30d32..0000000000 --- a/data-audit/kogito-addons-data-audit-common/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 4.0.0 - - org.kie.kogito - kogito-addons-data-audit - 2.0.0-SNAPSHOT - - kogito-addons-data-audit-common - Kogito Apps :: Data Audit :: Common - - 1.18 - - - - com.graphql-java - graphql-java-extended-scalars - - - com.graphql-java - graphql-java - - - org.kie.kogito - kogito-events-core - - - org.kie.kogito - jobs-service-api - - - org.kie.kogito - jobs-service-internal-api - - - org.slf4j - slf4j-api - - - org.apache.kafka - kafka-clients - - - diff --git a/data-audit/kogito-addons-data-audit-common/.gitignore b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/.gitignore similarity index 100% rename from data-audit/kogito-addons-data-audit-common/.gitignore rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/.gitignore diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml similarity index 98% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml index 1f01a03d88..822d5be4a8 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-common/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml @@ -21,7 +21,7 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common com.fasterxml.jackson.core diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ModelConstants.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/DataMapper.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaJobsQueryProvider.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceStateTOMapper.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceAssignmentTOMapper.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/UserTaskInstanceDeadlineTOMapper.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.DataAuditStore diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/services/org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml similarity index 97% rename from data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml index 22414d3551..d33db7cbc6 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -25,7 +25,7 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common org.kie.kogito diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java diff --git a/data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml similarity index 100% rename from data-audit/kogito-addons-data-audit-quarkus-subsystem/src/main/resources/META-INF/beans.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/META-INF/beans.xml diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml similarity index 96% rename from data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index bc64f2f897..54e944a78a 100644 --- a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -21,7 +21,7 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common org.kie.kogito diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java diff --git a/data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties similarity index 100% rename from data-audit/jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties diff --git a/data-audit/jpa/pom.xml b/data-audit/kogito-addons-data-audit-jpa/pom.xml similarity index 93% rename from data-audit/jpa/pom.xml rename to data-audit/kogito-addons-data-audit-jpa/pom.xml index 80a6f25da0..03df0a2a98 100644 --- a/data-audit/jpa/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - kogito-addons-data-audit + data-audit org.kie.kogito 2.0.0-SNAPSHOT diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml index 01f2f90e57..a5c88d8b7c 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.kie.kogito - kogito-addons-data-audit + data-audit 2.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common org.kie.kogito diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml index 87df8e34a4..0cbe540b8b 100644 --- a/data-audit/kogito-addons-data-audit-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.kie.kogito - kogito-addons-data-audit + data-audit 2.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common org.kie.kogito diff --git a/data-audit/pom.xml b/data-audit/pom.xml index f61f600edb..ad9047b282 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -1,29 +1,30 @@ - - - - - org.kie.kogito - kogito-apps-build-parent - 2.0.0-SNAPSHOT - ../kogito-apps-build-parent/pom.xml - - - - 4.0.0 - kogito-addons-data-audit - pom - Kogito Apps :: Data Audit - - - - kogito-addons-data-audit-common - kogito-addons-data-audit-common-kafka - kogito-addons-data-audit-quarkus - kogito-addons-data-audit-springboot - kogito-addons-data-audit-quarkus-subsystem + - jpa - + + + org.kie.kogito + kogito-apps-build-parent + 2.0.0-SNAPSHOT + ../kogito-apps-build-parent/pom.xml + + + + 4.0.0 + data-audit + pom + Kogito Apps :: Data Audit :: App Parent + + + + data-audit-common + data-audit-common-service + kogito-addons-data-audit-jpa + kogito-addons-data-audit-quarkus + kogito-addons-data-audit-springboot + data-audit-quarkus-service + diff --git a/kogito-apps-bom/pom.xml b/kogito-apps-bom/pom.xml index 8da899b193..4844e3195f 100644 --- a/kogito-apps-bom/pom.xml +++ b/kogito-apps-bom/pom.xml @@ -117,22 +117,22 @@ org.kie.kogito - kogito-addons-data-audit-common + data-audit-common ${project.version} org.kie.kogito - kogito-addons-data-audit-common-kafka + data-audit-common-service ${project.version} org.kie.kogito - kogito-addons-data-audit-quarkus + data-audit-quarkus-service ${project.version} org.kie.kogito - kogito-addons-data-audit-quarkus-subsystem + kogito-addons-data-audit-quarkus ${project.version} From f8029fd8ec77be45d036be547763618ac33f524a Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 10 Nov 2023 09:09:10 +0100 Subject: [PATCH 27/47] formatting pom.xml --- data-audit/data-audit-quarkus-service/pom.xml | 216 ++++++++++-------- .../kogito-addons-data-audit-quarkus/pom.xml | 3 +- 2 files changed, 121 insertions(+), 98 deletions(-) diff --git a/data-audit/data-audit-quarkus-service/pom.xml b/data-audit/data-audit-quarkus-service/pom.xml index 2f70292b2a..96563da1ce 100644 --- a/data-audit/data-audit-quarkus-service/pom.xml +++ b/data-audit/data-audit-quarkus-service/pom.xml @@ -1,113 +1,135 @@ - - 4.0.0 - - data-audit - org.kie.kogito - 2.0.0-SNAPSHOT - + + 4.0.0 + + data-audit + org.kie.kogito + 2.0.0-SNAPSHOT + - data-audit-quarkus-service + data-audit-quarkus-service - Kogito Apps :: Data Audit :: Quarkus :: subsystem + Kogito Apps :: Data Audit :: Quarkus :: subsystem - - UTF-8 + + UTF-8 - + - - - org.kie.kogito - kogito-addons-data-audit-jpa-common - - - org.kie.kogito - data-audit-common - - - org.kie.kogito - kogito-events-core - - - org.kie.kogito - jobs-service-api - - - org.slf4j - slf4j-api - + + + org.kie.kogito + kogito-addons-data-audit-quarkus + + + org.kie.kogito + data-audit-common + + + org.kie.kogito + kogito-events-core + + + org.kie.kogito + jobs-service-api + + + org.slf4j + slf4j-api + - + - - io.quarkus - quarkus-core - - - io.quarkus - quarkus-arc - + + io.quarkus + quarkus-core + + + io.quarkus + quarkus-arc + - - io.smallrye.reactive - smallrye-reactive-messaging-api - - - io.smallrye.reactive - smallrye-reactive-messaging-kafka - - - io.quarkus - quarkus-smallrye-metrics - - - org.apache.kafka - kafka-clients - + + io.smallrye.reactive + smallrye-reactive-messaging-api + + + io.smallrye.reactive + smallrye-reactive-messaging-kafka + + + io.quarkus + quarkus-smallrye-metrics + + + org.apache.kafka + kafka-clients + - - io.quarkus - quarkus-reactive-routes - - - io.quarkiverse.reactivemessaging.http - quarkus-reactive-messaging-http - - - io.quarkus - quarkus-vertx-graphql - + + io.quarkus + quarkus-reactive-routes + + + io.quarkiverse.reactivemessaging.http + quarkus-reactive-messaging-http + + + io.quarkus + quarkus-vertx-graphql + - - io.quarkus - quarkus-hibernate-orm - + + io.quarkus + quarkus-hibernate-orm + - - - org.hamcrest - hamcrest-all - 1.3 - test - - - org.assertj - assertj-core - test - - - io.quarkus - quarkus-junit5 - test - - - io.rest-assured - rest-assured - test - - + + + org.hamcrest + hamcrest-all + 1.3 + test + + + org.assertj + assertj-core + test + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + postgresql + + + org.kie.kogito + kogito-addons-data-audit-jpa-quarkus + + + io.quarkus + quarkus-jdbc-postgresql + + + io.quarkus + quarkus-container-image-jib + + + + diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml index a5c88d8b7c..ef952ae5a2 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -110,12 +110,13 @@ org.kie.kogito kogito-addons-data-audit-jpa-quarkus + runtime io.quarkus quarkus-jdbc-h2 - test + runtime From 23868d7b29018dac36a746dc15a533f75e01a627 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 10 Nov 2023 09:32:32 +0100 Subject: [PATCH 28/47] setting configuration --- data-audit/README.md | 8 ++++---- .../src/main/resources/application.properties | 4 ++++ .../SpringbootJPAAuditDataConfiguration.java | 2 ++ ...on.properties => application-data-audit.properties} | 2 +- .../src/test/resources/application.properties | 10 +--------- .../springboot/SpringbootAuditDataConfiguration.java | 1 + .../src/test/resources/application.properties | 6 +----- 7 files changed, 14 insertions(+), 19 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties rename data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/{application.properties => application-data-audit.properties} (58%) diff --git a/data-audit/README.md b/data-audit/README.md index 1cad3a4ef3..cc42fd1220 100644 --- a/data-audit/README.md +++ b/data-audit/README.md @@ -88,9 +88,9 @@ quarkus.datasource.data-audit-ds.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:pos In springboot might look like: +spring.datasource.jdbc-url=jdbc:h2:mem:test +spring.datasource.driver-class-name=org.h2.Driver + data-audit.spring.jpa.database=H2 data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect -data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop -data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl -data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -data-audit.spring.jpa.show-sql=false +data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties new file mode 100644 index 0000000000..f8a94b1c7f --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties @@ -0,0 +1,4 @@ +quarkus.hibernate-orm.DataAuditPU.enabled=true +quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model +quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +quarkus.hibernate-orm.DataAuditPU.datasource=data-audit \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java index 737d8864f3..0f920c12aa 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java @@ -28,11 +28,13 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.PropertySource; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; @Configuration(proxyBeanMethods = false) +@PropertySource("classpath:/application-data-audit.properties") public class SpringbootJPAAuditDataConfiguration { @Bean diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties similarity index 58% rename from data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties rename to data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties index eb2ef0e038..ab2bbe2a00 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties @@ -1,4 +1,4 @@ # configure jpa -data-audit.spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl +data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml data-audit.spring.jpa.show-sql=false \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties index bce897bab3..85757a56c4 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties @@ -1,18 +1,10 @@ -quarkus.datasource.db-kind=h2 -quarkus.datasource.username=hibernate -quarkus.datasource.password=hibernate -quarkus.datasource.jdbc.url=jdbc:h2:mem:test - quarkus.datasource.data-audit.db-kind=h2 quarkus.datasource.data-audit.username=hibernate quarkus.datasource.data-audit.password=hibernate quarkus.datasource.data-audit.jdbc.url=jdbc:h2:mem:test -quarkus.hibernate-orm.DataAuditPU.enabled=true -quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model -quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml quarkus.hibernate-orm.DataAuditPU.database.generation=create-drop -quarkus.hibernate-orm.DataAuditPU.datasource=data-audit + diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java index f7cbe6c52a..f9eca87d76 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java @@ -21,6 +21,7 @@ import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.PropertySource; @SpringBootConfiguration @EnableAutoConfiguration diff --git a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties index af3094627f..aa16a2b100 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties @@ -4,11 +4,7 @@ spring.datasource.jdbc-url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver -spring.jpa.show-sql=false - data-audit.spring.jpa.database=H2 data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop -data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl -data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -data-audit.spring.jpa.show-sql=false \ No newline at end of file + From 973029be413171e1cd9b0922c6fef4b0588c5f3e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 10 Nov 2023 11:35:18 +0100 Subject: [PATCH 29/47] fix service --- data-audit/data-audit-quarkus-service/pom.xml | 26 ++++++++++++------- .../audit/quarkus/QuarkusDataAuditMain.java | 12 +++++++++ ...uarkusDataAuditMessagingEventConsumer.java | 19 ++++---------- .../META-INF/microprofile-config.properties | 4 +-- .../src/main/resources/application.properties | 11 ++++++++ .../src/main/resources/application.properties | 1 - .../kogito-addons-data-audit-quarkus/pom.xml | 7 +++-- .../SpringbootAuditDataConfiguration.java | 1 - 8 files changed, 49 insertions(+), 32 deletions(-) create mode 100644 data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java create mode 100644 data-audit/data-audit-quarkus-service/src/main/resources/application.properties diff --git a/data-audit/data-audit-quarkus-service/pom.xml b/data-audit/data-audit-quarkus-service/pom.xml index 96563da1ce..06c5d37bd3 100644 --- a/data-audit/data-audit-quarkus-service/pom.xml +++ b/data-audit/data-audit-quarkus-service/pom.xml @@ -21,6 +21,10 @@ + + org.kie.kogito + data-audit-common-service + org.kie.kogito kogito-addons-data-audit-quarkus @@ -78,15 +82,6 @@ io.quarkiverse.reactivemessaging.http quarkus-reactive-messaging-http - - io.quarkus - quarkus-vertx-graphql - - - - io.quarkus - quarkus-hibernate-orm - @@ -115,6 +110,9 @@ postgresql + + true + org.kie.kogito @@ -124,12 +122,22 @@ io.quarkus quarkus-jdbc-postgresql + + + + + container + + false + + io.quarkus quarkus-container-image-jib + diff --git a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java new file mode 100644 index 0000000000..85cbba906d --- /dev/null +++ b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java @@ -0,0 +1,12 @@ +package org.kie.kogito.app.audit.quarkus; + +import io.quarkus.runtime.Quarkus; +import io.quarkus.runtime.annotations.QuarkusMain; + +@QuarkusMain +public class QuarkusDataAuditMain { + + public static void main(String... args) { + Quarkus.run(args); + } +} \ No newline at end of file diff --git a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java index 975a1a6c91..b6d15aa28e 100644 --- a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java +++ b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -23,8 +23,7 @@ import javax.transaction.Transactional; import org.eclipse.microprofile.reactive.messaging.Incoming; -import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; -import org.kie.kogito.app.audit.spi.DataAuditContextFactory; +import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; @@ -42,22 +41,15 @@ public class QuarkusDataAuditMessagingEventConsumer { private static final Logger LOGGER = LoggerFactory.getLogger(QuarkusDataAuditMessagingEventConsumer.class); - private DataAuditStoreProxyService proxy; - @Inject - DataAuditContextFactory dataAuditContextFactory; - - public QuarkusDataAuditMessagingEventConsumer() { - proxy = DataAuditStoreProxyService.newAuditStoreService(); - } + EventPublisher eventPublisher; @Incoming(KOGITO_PROCESSINSTANCES_EVENTS) @Blocking @Transactional public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { LOGGER.debug("Process instance consumer received ProcessInstanceDataEvent: \n{}", event); - proxy.storeProcessInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), event); - + eventPublisher.publish(event); } @Incoming(KOGITO_USERTASKINSTANCES_EVENTS) @@ -65,8 +57,7 @@ public void onProcessInstanceEvent(ProcessInstanceDataEvent event) { @Transactional public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { LOGGER.debug("Task instance received UserTaskInstanceDataEvent \n{}", event); - proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), event); - + eventPublisher.publish(event); } @Incoming(KOGITO_JOBS_EVENTS) @@ -74,7 +65,7 @@ public void onUserTaskInstanceEvent(UserTaskInstanceDataEvent event) { @Transactional public void onJobEvent(JobInstanceDataEvent event) { LOGGER.debug("Job received KogitoJobCloudEvent \n{}", event); - proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), event); + eventPublisher.publish(event); } } diff --git a/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties b/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties index 7354395593..64170db982 100644 --- a/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties +++ b/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties @@ -20,13 +20,11 @@ # Quarkus mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.index.service.messaging.ProcessInstanceDataEventDeserializer +mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer -quarkus.kafka.bootstrap-servers=localhost:9092 -kafka.bootstrap.servers=localhost:9092 mp.messaging.incoming.kogito-processinstances-events.topic=kogito-processinstances-events mp.messaging.incoming.kogito-processinstances-events.group.id=kogito-data-index-processinstances diff --git a/data-audit/data-audit-quarkus-service/src/main/resources/application.properties b/data-audit/data-audit-quarkus-service/src/main/resources/application.properties new file mode 100644 index 0000000000..6c1e5103d4 --- /dev/null +++ b/data-audit/data-audit-quarkus-service/src/main/resources/application.properties @@ -0,0 +1,11 @@ +kogito.persistence.type=jdbc + +quarkus.kafka.bootstrap-servers=localhost:9092 +kafka.bootstrap.servers=${QUARKUS_KAFKA_URL:localhost:9092} + +quarkus.datasource.data-audit.db-kind=postgresql +quarkus.datasource.data-audit.username=kogito-user +quarkus.datasource.data-audit.password=kogito-pass +quarkus.datasource.data-audit.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://localhost:5432/kogito} + +quarkus.hibernate-orm.DataAuditPU.database.generation=update \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties index f8a94b1c7f..b6fdadeb08 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties @@ -1,4 +1,3 @@ -quarkus.hibernate-orm.DataAuditPU.enabled=true quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml quarkus.hibernate-orm.DataAuditPU.datasource=data-audit \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml index ef952ae5a2..2fbc47441f 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -102,7 +102,7 @@ - jpa-h2 + jpa true @@ -110,13 +110,12 @@ org.kie.kogito kogito-addons-data-audit-jpa-quarkus - runtime + test - io.quarkus quarkus-jdbc-h2 - runtime + test diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java index f9eca87d76..f7cbe6c52a 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java @@ -21,7 +21,6 @@ import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.PropertySource; @SpringBootConfiguration @EnableAutoConfiguration From caa5281b24370f6d86abbcfa7975688c64c2bb81 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Tue, 14 Nov 2023 09:06:12 +0100 Subject: [PATCH 30/47] fix jdbc driver dependencies --- .../pom.xml | 8 + .../pom.xml | 9 +- .../kogito-addons-data-audit-quarkus/pom.xml | 5 - .../pom.xml | 5 - kogito-apps-bom/pom.xml | 186 ++++++++++-------- 5 files changed, 120 insertions(+), 93 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml index d33db7cbc6..a80508cb39 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -65,6 +65,14 @@ io.quarkus quarkus-hibernate-orm + + io.quarkus + quarkus-jdbc-h2 + + + io.quarkus + quarkus-jdbc-postgresql + diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index 54e944a78a..b8cb7d69b7 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -52,9 +52,12 @@ ${version.org.springframework.boot} - org.springframework.kafka - spring-kafka - 2.8.4 + com.h2database + h2 + + + org.postgresql + postgresql diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml index 2fbc47441f..8beb19c01e 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -112,11 +112,6 @@ kogito-addons-data-audit-jpa-quarkus test - - io.quarkus - quarkus-jdbc-h2 - test - diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml index 0cbe540b8b..73de49a60d 100644 --- a/data-audit/kogito-addons-data-audit-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -69,11 +69,6 @@ org.kie.kogito kogito-addons-data-audit-jpa-springboot - - com.h2database - h2 - test - diff --git a/kogito-apps-bom/pom.xml b/kogito-apps-bom/pom.xml index 4844e3195f..3bf624ca5c 100644 --- a/kogito-apps-bom/pom.xml +++ b/kogito-apps-bom/pom.xml @@ -20,8 +20,8 @@ --> + 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"> kogito-apps org.kie.kogito @@ -125,6 +125,28 @@ data-audit-common-service ${project.version} + + org.kie.kogito + data-audit-quarkus-tck + ${project.version} + + + org.kie.kogito + data-audit-quarkus-tck + ${project.version} + test-jar + + + org.kie.kogito + data-audit-springboot-tck + ${project.version} + + + org.kie.kogito + data-audit-springboot-tck + ${project.version} + test-jar + org.kie.kogito data-audit-quarkus-service @@ -158,7 +180,7 @@ - + org.kie.kogito data-index-service @@ -331,51 +353,55 @@ org.kie.kogito - kogito-addons-quarkus-data-index-persistence-common-runtime + + kogito-addons-quarkus-data-index-persistence-common-runtime ${project.version} org.kie.kogito - kogito-addons-quarkus-data-index-persistence-common-runtime + + kogito-addons-quarkus-data-index-persistence-common-runtime ${project.version} sources org.kie.kogito - kogito-addons-quarkus-data-index-persistence-common-deployment + + kogito-addons-quarkus-data-index-persistence-common-deployment ${project.version} org.kie.kogito - kogito-addons-quarkus-data-index-persistence-common-deployment + + kogito-addons-quarkus-data-index-persistence-common-deployment ${project.version} sources - org.kie.kogito - kogito-addons-quarkus-data-index-common-runtime - ${project.version} + org.kie.kogito + kogito-addons-quarkus-data-index-common-runtime + ${project.version} - org.kie.kogito - kogito-addons-quarkus-data-index-common-runtime - ${project.version} - sources + org.kie.kogito + kogito-addons-quarkus-data-index-common-runtime + ${project.version} + sources - org.kie.kogito - kogito-addons-quarkus-data-index-common-deployment - ${project.version} + org.kie.kogito + kogito-addons-quarkus-data-index-common-deployment + ${project.version} - org.kie.kogito - kogito-addons-quarkus-data-index-common-deployment - ${project.version} - sources + org.kie.kogito + kogito-addons-quarkus-data-index-common-deployment + ${project.version} + sources - + org.kie.kogito persistence-commons-api @@ -531,7 +557,7 @@ sources - + org.kie.kogito jitexecutor-runner @@ -549,57 +575,57 @@ ${project.version} javadoc - - - org.kie.kogito - jitexecutor-common - ${project.version} - - - org.kie.kogito - jitexecutor-common - ${project.version} - sources - - - org.kie.kogito - jitexecutor-common - ${project.version} - javadoc - - - org.kie.kogito - jitexecutor-common - ${project.version} - test-jar - test - - - - org.kie.kogito - jitexecutor-bpmn - ${project.version} - - - org.kie.kogito - jitexecutor-bpmn - ${project.version} - sources - - - org.kie.kogito - jitexecutor-bpmn - ${project.version} - javadoc - - - org.kie.kogito - jitexecutor-bpmn - ${project.version} - test-jar - test - - + + + org.kie.kogito + jitexecutor-common + ${project.version} + + + org.kie.kogito + jitexecutor-common + ${project.version} + sources + + + org.kie.kogito + jitexecutor-common + ${project.version} + javadoc + + + org.kie.kogito + jitexecutor-common + ${project.version} + test-jar + test + + + + org.kie.kogito + jitexecutor-bpmn + ${project.version} + + + org.kie.kogito + jitexecutor-bpmn + ${project.version} + sources + + + org.kie.kogito + jitexecutor-bpmn + ${project.version} + javadoc + + + org.kie.kogito + jitexecutor-bpmn + ${project.version} + test-jar + test + + org.kie.kogito jitexecutor-dmn @@ -625,7 +651,7 @@ test - + org.kie.kogito trusty-service-common @@ -795,7 +821,7 @@ javadoc - + org.kie.kogito security-commons @@ -808,7 +834,7 @@ sources - + org.kie.kogito explainability-api @@ -881,14 +907,14 @@ javadoc - + org.kie.kogito management-console ${project.version} - + org.kie.kogito task-console @@ -906,7 +932,7 @@ ${project.version} - + org.kie.kogito kogito-apps-ui-packages From 40dab61931ddb53eb466226bde364e00528198dc Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Tue, 14 Nov 2023 09:25:50 +0100 Subject: [PATCH 31/47] fix jdbc driver dependencies --- .../src/main/resources/application.properties | 12 +----------- .../kogito-addons-data-audit-jpa-quarkus/pom.xml | 3 ++- data-audit/kogito-addons-data-audit-jpa/pom.xml | 1 + data-audit/pom.xml | 2 +- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/data-audit/data-audit-quarkus-service/src/main/resources/application.properties b/data-audit/data-audit-quarkus-service/src/main/resources/application.properties index 6c1e5103d4..c674b7830a 100644 --- a/data-audit/data-audit-quarkus-service/src/main/resources/application.properties +++ b/data-audit/data-audit-quarkus-service/src/main/resources/application.properties @@ -1,11 +1 @@ -kogito.persistence.type=jdbc - -quarkus.kafka.bootstrap-servers=localhost:9092 -kafka.bootstrap.servers=${QUARKUS_KAFKA_URL:localhost:9092} - -quarkus.datasource.data-audit.db-kind=postgresql -quarkus.datasource.data-audit.username=kogito-user -quarkus.datasource.data-audit.password=kogito-pass -quarkus.datasource.data-audit.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://localhost:5432/kogito} - -quarkus.hibernate-orm.DataAuditPU.database.generation=update \ No newline at end of file +kafka.bootstrap.servers=${QUARKUS_KAFKA_URL:localhost:9092} \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml index a80508cb39..dc2ed9fe4d 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -61,10 +61,12 @@ quarkus-vertx-graphql + io.quarkus quarkus-hibernate-orm + io.quarkus quarkus-jdbc-h2 @@ -75,5 +77,4 @@ - diff --git a/data-audit/kogito-addons-data-audit-jpa/pom.xml b/data-audit/kogito-addons-data-audit-jpa/pom.xml index 03df0a2a98..e35ac86f8a 100644 --- a/data-audit/kogito-addons-data-audit-jpa/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/pom.xml @@ -22,5 +22,6 @@ kogito-addons-data-audit-jpa-common kogito-addons-data-audit-jpa-quarkus kogito-addons-data-audit-jpa-springboot + data-audit-quarkus-jpa-service diff --git a/data-audit/pom.xml b/data-audit/pom.xml index ad9047b282..e541b41fd6 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -15,7 +15,7 @@ 4.0.0 data-audit pom - Kogito Apps :: Data Audit :: App Parent + Kogito Apps :: Data Audit :: App From e1088175f21875f9af555f1eef9ab574c98c617e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Tue, 14 Nov 2023 12:14:28 +0100 Subject: [PATCH 32/47] added jpa container service --- .../json/JsonJobDataEventDeserializer.java | 32 ++++++----- .../kie/kogito/app/audit/json/JsonUtils.java | 4 +- data-audit/data-audit-quarkus-service/pom.xml | 35 +----------- .../audit/quarkus/QuarkusDataAuditMain.java | 18 ++++++ .../META-INF/microprofile-config.properties | 19 +++---- .../data-audit-quarkus-jpa-service/pom.xml | 55 +++++++++++++++++++ .../src/main/resources/META-INF/beans.xml | 0 .../src/main/resources/application.properties | 13 +++++ .../QuarkusJPADataAuditEventPublisher.java | 2 +- 9 files changed, 117 insertions(+), 61 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/META-INF/beans.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties diff --git a/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java index 75bad4960f..fde7cbc498 100644 --- a/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java +++ b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonJobDataEventDeserializer.java @@ -19,10 +19,9 @@ package org.kie.kogito.app.audit.json; import java.io.IOException; +import java.time.OffsetDateTime; -import org.kie.kogito.jobs.service.api.event.CreateJobEvent; -import org.kie.kogito.jobs.service.api.event.DeleteJobEvent; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +31,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -public class JsonJobDataEventDeserializer extends StdDeserializer> { +public class JsonJobDataEventDeserializer extends StdDeserializer { private static final Logger LOGGER = LoggerFactory.getLogger(JsonJobDataEventDeserializer.class); @@ -47,20 +46,25 @@ public JsonJobDataEventDeserializer(Class vc) { } @Override - public JobCloudEvent deserialize(JsonParser jp, DeserializationContext ctxt) + public JobInstanceDataEvent deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonNode node = jp.getCodec().readTree(jp); LOGGER.debug("Deserialize process instance data event: {}", node); - String type = node.get("type").asText(); + JobInstanceDataEvent event = new JobInstanceDataEvent( + node.has("type") ? node.get("type").asText() : null, + node.has("source") ? node.get("source").asText() : null, + node.has("data") ? node.get("data").binaryValue() : null, + node.has("kogitoprocinstanceid") ? node.get("kogitoprocinstanceid").asText() : null, + node.has("kogitorootprociid") ? node.get("kogitorootprociid").asText() : null, + node.has("kogitoprocid") ? node.get("kogitoprocid").asText() : null, + node.has("kogitorootprocid") ? node.get("kogitorootprocid").asText() : null, + node.has("kogitoidentity") ? node.get("kogitoidentity").asText() : null); - switch (type) { - case CreateJobEvent.TYPE: - return jp.getCodec().treeToValue(node, CreateJobEvent.class); - case DeleteJobEvent.TYPE: - return jp.getCodec().treeToValue(node, DeleteJobEvent.class); - default: - return null; - } + event.setId(node.has("id") ? node.get("id").asText() : null); + event.setKogitoIdentity(node.has("kogitoidentity") ? node.get("kogitoidentity").asText() : null); + event.setTime(node.has("time") ? jp.getCodec().treeToValue(node.get("time"), OffsetDateTime.class) : null); + + return event; } } \ No newline at end of file diff --git a/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java index 770bc13f7d..52ece97fd5 100644 --- a/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java +++ b/data-audit/data-audit-common-service/src/main/java/org/kie/kogito/app/audit/json/JsonUtils.java @@ -18,9 +18,9 @@ */ package org.kie.kogito.app.audit.json; +import org.kie.kogito.event.job.JobInstanceDataEvent; import org.kie.kogito.event.process.ProcessInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; -import org.kie.kogito.jobs.service.api.event.JobCloudEvent; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; @@ -48,7 +48,7 @@ public static ObjectMapper configure(ObjectMapper objectMapper) { SimpleModule module = new SimpleModule("Kogito Cloud Events"); module.addDeserializer(ProcessInstanceDataEvent.class, new JsonProcessInstanceDataEventDeserializer()); module.addDeserializer(UserTaskInstanceDataEvent.class, new JsonUserTaskInstanceDataEventDeserializer()); - module.addDeserializer(JobCloudEvent.class, new JsonJobDataEventDeserializer()); + module.addDeserializer(JobInstanceDataEvent.class, new JsonJobDataEventDeserializer()); objectMapper.registerModule(module); return objectMapper; } diff --git a/data-audit/data-audit-quarkus-service/pom.xml b/data-audit/data-audit-quarkus-service/pom.xml index 06c5d37bd3..a67a6d940d 100644 --- a/data-audit/data-audit-quarkus-service/pom.xml +++ b/data-audit/data-audit-quarkus-service/pom.xml @@ -12,7 +12,7 @@ data-audit-quarkus-service - Kogito Apps :: Data Audit :: Quarkus :: subsystem + Kogito Apps :: Data Audit :: Quarkus :: Service @@ -107,37 +107,4 @@ - - - postgresql - - true - - - - org.kie.kogito - kogito-addons-data-audit-jpa-quarkus - - - io.quarkus - quarkus-jdbc-postgresql - - - - - - container - - false - - - - io.quarkus - quarkus-container-image-jib - - - - - - diff --git a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java index 85cbba906d..aea424e516 100644 --- a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java +++ b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMain.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.quarkus; import io.quarkus.runtime.Quarkus; diff --git a/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties b/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties index 64170db982..48bd13b8da 100644 --- a/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties +++ b/data-audit/data-audit-quarkus-service/src/main/resources/META-INF/microprofile-config.properties @@ -19,28 +19,27 @@ # Quarkus -mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer -mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer -mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka -mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer - mp.messaging.incoming.kogito-processinstances-events.topic=kogito-processinstances-events -mp.messaging.incoming.kogito-processinstances-events.group.id=kogito-data-index-processinstances +mp.messaging.incoming.kogito-processinstances-events.group.id=kogito-data-audit-processinstances mp.messaging.incoming.kogito-processinstances-events.enable.auto.commit=false mp.messaging.incoming.kogito-processinstances-events.auto.offset.reset=earliest mp.messaging.incoming.kogito-processinstances-events.isolation.level=read_committed +mp.messaging.incoming.kogito-processinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-processinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.ProcessInstanceDataEventDeserializer mp.messaging.incoming.kogito-usertaskinstances-events.topic=kogito-usertaskinstances-events -mp.messaging.incoming.kogito-usertaskinstances-events.group.id=kogito-data-index-usertaskinstances +mp.messaging.incoming.kogito-usertaskinstances-events.group.id=kogito-data-audit-usertaskinstances mp.messaging.incoming.kogito-usertaskinstances-events.enable.auto.commit=false mp.messaging.incoming.kogito-usertaskinstances-events.auto.offset.reset=earliest mp.messaging.incoming.kogito-usertaskinstances-events.isolation.level=read_committed +mp.messaging.incoming.kogito-usertaskinstances-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-usertaskinstances-events.value.deserializer=org.kie.kogito.app.audit.kafka.UserTaskInstanceDataEventDeserializer mp.messaging.incoming.kogito-jobs-events.topic=kogito-jobs-events -mp.messaging.incoming.kogito-jobs-events.group.id=kogito-data-index-jobs +mp.messaging.incoming.kogito-jobs-events.group.id=kogito-data-audit-jobs mp.messaging.incoming.kogito-jobs-events.enable.auto.commit=false mp.messaging.incoming.kogito-jobs-events.auto.offset.reset=earliest mp.messaging.incoming.kogito-jobs-events.isolation.level=read_committed +mp.messaging.incoming.kogito-jobs-events.connector=smallrye-kafka +mp.messaging.incoming.kogito-jobs-events.value.deserializer=org.kie.kogito.app.audit.kafka.JobDataEventDeserializer diff --git a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml new file mode 100644 index 0000000000..9db698f1a1 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + kogito-addons-data-audit-jpa + org.kie.kogito + 2.0.0-SNAPSHOT + + + data-audit-quarkus-jpa-service + + Kogito Apps :: Data Audit :: JPA :: Service + + + UTF-8 + + + + + org.kie.kogito + data-audit-quarkus-service + + + + org.kie.kogito + kogito-addons-data-audit-jpa-quarkus + + + + io.quarkus + quarkus-container-image-jib + + + + + + + io.quarkus + quarkus-maven-plugin + + true + + + + + build + + + + + + + diff --git a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties new file mode 100644 index 0000000000..064c901bc3 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties @@ -0,0 +1,13 @@ +#default values + +quarkus.datasource.data-audit.db-kind=${QUARKUS_DATASOURCE_DB:h2} +quarkus.datasource.data-audit.username=${QUARKUS_DATASOURCE_USER:kogito-user} +quarkus.datasource.data-audit.password=${QUARKUS_DATASOURCE_PASS:kogito-pass} +quarkus.datasource.data-audit.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:h2:mem:data-audit} + +quarkus.hibernate-orm.DataAuditPU.database.generation=update + +quarkus.container-image.build=${quarkus.build.image:true} +quarkus.container-image.group=org.kie.kogito +quarkus.jib.jvm-arguments=-Dquarkus.http.port=8080 +quarkus.container-image.name=data-audit-jpa-service \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index af240f547a..c847447871 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -68,7 +68,7 @@ public void publish(DataEvent event) { proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { - LOGGER.debug("Processing job instance event {}", event); + LOGGER.info("Processing job instance event {}", event); proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; } From 6922fc11ce7a335552bfde32880dc3a1858a38af Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Wed, 15 Nov 2023 10:09:08 +0100 Subject: [PATCH 33/47] Fix naming conventions for tables --- .../app/audit/jpa/model/JobExecutionLog.java | 2 +- .../jpa/model/ProcessInstanceErrorLog.java | 2 +- .../jpa/model/ProcessInstanceNodeLog.java | 2 +- .../jpa/model/ProcessInstanceStateLog.java | 4 +- .../jpa/model/ProcessInstanceVariableLog.java | 2 +- .../model/UserTaskInstanceAssignmentLog.java | 4 +- .../model/UserTaskInstanceAttachmentLog.java | 2 +- .../jpa/model/UserTaskInstanceCommentLog.java | 2 +- .../model/UserTaskInstanceDeadlineLog.java | 2 +- .../jpa/model/UserTaskInstanceStateLog.java | 2 +- .../model/UserTaskInstanceVariableLog.java | 2 +- .../src/main/resources/META-INF/job-orm.xml | 48 +++++++++---------- .../main/resources/META-INF/process-orm.xml | 38 +++++++-------- .../main/resources/META-INF/usertask-orm.xml | 22 ++++----- 14 files changed, 67 insertions(+), 67 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java index 8118ff1ac4..22d08132b7 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java @@ -32,7 +32,7 @@ import javax.persistence.TemporalType; @Entity -@Table(name = "JobExecutionLog") +@Table(name = "Job_Execution_Log") @SequenceGenerator(name = "jobExecutionHistoryIdSeq", sequenceName = "JOB_EXECUTION_HISTORY_ID_SEQ") public class JobExecutionLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java index 95a1da9f96..4cc220cf20 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java @@ -34,7 +34,7 @@ import static org.kie.kogito.app.audit.jpa.model.ModelConstants.ERROR_LOG_LENGTH; @Entity -@Table(name = "ProcessInstanceErrorLog") +@Table(name = "Process_Instance_Error_Log") @SequenceGenerator(name = "processInstanceErrorHistorySeq", sequenceName = "PROCESS_INSTANCE_ERROR_LOG_SEQ_ID") public class ProcessInstanceErrorLog extends AbstractProcessInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java index 06b2ea9d01..2edfa9f2a4 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java @@ -34,7 +34,7 @@ import javax.persistence.TemporalType; @Entity -@Table(name = "ProcessInstanceNodeLog") +@Table(name = "Process_Instance_Node_Log") @SequenceGenerator(name = "processInstanceNodeLogIdSeq", sequenceName = "PROCESS_INSTANCE_NODE_LOG_ID_SEQ") public class ProcessInstanceNodeLog extends AbstractProcessInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java index cba7cea5e0..676d882ef6 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java @@ -39,7 +39,7 @@ import javax.persistence.TemporalType; @Entity -@Table(name = "ProcessInstanceStateLog") +@Table(name = "Process_Instance_State_Log") @SequenceGenerator(name = "processInstanceStateLogIdSeq", sequenceName = "PROCESS_INSTANCE_STATE_LOG_ID_SEQ") public class ProcessInstanceStateLog extends AbstractProcessInstanceLog { @@ -73,7 +73,7 @@ public enum ProcessStateLogType { private Date slaDueDate; @ElementCollection - @CollectionTable(name = "ProcessInstanceStateRolesLog", joinColumns = @JoinColumn(name = "process_instance_state_log_id", foreignKey = @ForeignKey(name = "fk_process_instance_state_pid"))) + @CollectionTable(name = "Process_Instance_State_Roles_Log", joinColumns = @JoinColumn(name = "process_instance_state_log_id", foreignKey = @ForeignKey(name = "fk_process_instance_state_pid"))) @Column(name = "role") private Set roles; diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java index 2f01a06a1d..9206f09a29 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java @@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory; @Entity -@Table(name = "ProcessInstanceVariableLog") +@Table(name = "Process_Instance_Variable_Log") @SequenceGenerator(name = "processInstanceVariableLogIdSeq", sequenceName = "PROCESS_INSTANCE_VARIABLE_LOG_ID_SEQ") public class ProcessInstanceVariableLog extends AbstractProcessInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java index 79500777d7..3a5d3c4db2 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -34,7 +34,7 @@ import javax.persistence.Table; @Entity -@Table(name = "TaskInstanceAssignmentLog") +@Table(name = "Task_Instance_Assignment_Log") @SequenceGenerator(name = "taskInstanceAssignmentLogIdSeq", sequenceName = "TASK_INSTANCE_ASSIGNMENT_LOG_ID_SEQ") public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { @@ -55,7 +55,7 @@ public class UserTaskInstanceAssignmentLog extends AbstractUserTaskInstanceLog { private String assignmentType; // POT OWNERS, ADMIN... @ElementCollection - @CollectionTable(name = "TaskInstanceAssignmentUsersLog", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), + @CollectionTable(name = "Task_Instance_Assignment_Users_Log", joinColumns = @JoinColumn(name = "task_instance_assignment_log_id"), foreignKey = @ForeignKey(name = "fk_task_instance_assignment_log_tid")) @Column(name = "user_id") private List users; diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java index 86b43697e3..349876efc2 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java @@ -30,7 +30,7 @@ import javax.persistence.Table; @Entity -@Table(name = "TaskInstanceAttachmentLog") +@Table(name = "Task_Instance_Attachment_Log") @SequenceGenerator(name = "taskInstanceAttachmentLogIdSeq", sequenceName = "TASK_INSTANCE_ATTACHMENT_LOG_ID_SEQ") public class UserTaskInstanceAttachmentLog extends AbstractUserTaskInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java index 8a331ce143..9192601f37 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java @@ -28,7 +28,7 @@ import javax.persistence.Table; @Entity -@Table(name = "TaskInstanceCommentLog") +@Table(name = "Task_Instance_Comment_Log") @SequenceGenerator(name = "taskInstanceCommentLogIdSeq", sequenceName = "TASK_INSTANCE_COMMENT_LOG_ID_SEQ") public class UserTaskInstanceCommentLog extends AbstractUserTaskInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java index 684ffa6ddb..e27d303570 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java @@ -35,7 +35,7 @@ import javax.persistence.Table; @Entity -@Table(name = "TaskInstanceDeadlineLog") +@Table(name = "Task_Instance_Deadline_Log") @SequenceGenerator(name = "taskInstanceDeadlineLogIdSeq", sequenceName = "TASK_INSTANCE_DEADLINE_LOG_ID_SEQ") public class UserTaskInstanceDeadlineLog extends AbstractUserTaskInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java index 64e3ee6000..263e977bcd 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java @@ -28,7 +28,7 @@ import javax.persistence.Table; @Entity -@Table(name = "TaskInstanceStateLog") +@Table(name = "Task_Instance_State_Log") @SequenceGenerator(name = "taskInstanceStateLogIdSeq", sequenceName = "TASK_INSTANCE_STATE_LOG_ID_SEQ") public class UserTaskInstanceStateLog extends AbstractUserTaskInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java index 08efefd586..a60c8ea585 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java @@ -30,7 +30,7 @@ import javax.persistence.Table; @Entity -@Table(name = "TaskInstanceVariableLog") +@Table(name = "Task_Instance_Variable_Log") @SequenceGenerator(name = "taskInstanceVariableLogIdSeq", sequenceName = "TASK_INSTANCE_VARIABLE_LOG_ID_SEQ") public class UserTaskInstanceVariableLog extends AbstractUserTaskInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml index 70e2c7e9d2..d3653b559a 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml @@ -28,8 +28,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status = 'SCHEDULED' @@ -51,8 +51,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.job_id = :jobId @@ -73,7 +73,7 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 + FROM Job_Execution_Log o1 WHERE o1.job_id = :jobId ORDER BY o1.event_date DESC @@ -96,7 +96,7 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 + FROM Job_Execution_Log o1 WHERE o1.process_instance_id = :processInstanceId ORDER BY o1.event_date DESC @@ -118,8 +118,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED', 'RETRY') @@ -141,8 +141,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED') @@ -163,8 +163,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status IN ('RETRY', 'ERROR') @@ -186,8 +186,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL ORDER BY o1.event_date DESC @@ -209,8 +209,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status = 'EXECUTED' @@ -231,8 +231,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status = 'ERROR' @@ -253,8 +253,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status = 'CANCELED' @@ -276,8 +276,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.status IN (:status) ORDER BY o1.event_date DESC @@ -299,8 +299,8 @@ o1.status as status, o1.execution_counter as executionCounter, o1.event_date as eventDate - FROM JobExecutionLog o1 - LEFT JOIN JobExecutionLog o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date WHERE o2.job_id IS NULL AND o1.process_instance_id = :processInstanceId ORDER BY o1.event_date DESC diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml index 708900eff4..951008af48 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml @@ -26,9 +26,9 @@ log.state as state, log.sla_due_date as slaDueDate, roles.role as role - FROM ProcessInstanceStateLog log - LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id WHERE log_newer.event_id IS NULL ORDER BY log.event_date DESC @@ -52,9 +52,9 @@ log.state as state, log.sla_due_date as slaDueDate, roles.role as role - FROM ProcessInstanceStateLog log - LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id WHERE log_newer.event_id IS NULL AND log.state = :status ORDER BY log.event_date DESC @@ -78,9 +78,9 @@ log.state as state, log.sla_due_date as slaDueDate, roles.role as role - FROM ProcessInstanceStateLog log - LEFT JOIN ProcessInstanceStateLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id WHERE log_newer.event_id IS NULL AND log.process_id = :processId ORDER BY log.event_date DESC @@ -105,8 +105,8 @@ log.state as state, log.sla_due_date as slaDueDate, roles.role as role - FROM ProcessInstanceStateLog log - LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id WHERE log.process_instance_id = :processInstanceId ORDER BY log.event_date DESC @@ -130,8 +130,8 @@ log.state as state, log.sla_due_date as slaDueDate, roles.role as role - FROM ProcessInstanceStateLog log - LEFT JOIN ProcessInstanceStateRolesLog roles ON log.id = roles.process_instance_state_log_id + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id WHERE log.business_key = :businessKey ORDER BY log.event_date DESC @@ -160,8 +160,8 @@ log.work_item_id as workItemId, log.sla_due_date as slaDueDate, log.event_data as eventData - FROM ProcessInstanceNodeLog log - LEFT JOIN ProcessInstanceNodeLog log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id + FROM Process_Instance_Node_Log log + LEFT JOIN Process_Instance_Node_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId ORDER BY log.event_date DESC @@ -185,7 +185,7 @@ log.error_message as errorMessage, log.node_definition_id as nodeDefinitionId, log.node_instance_id as nodeInstanceId - FROM ProcessInstanceErrorLog log + FROM Process_Instance_Error_Log log WHERE log.process_instance_id = :processInstanceId ORDER BY log.event_date DESC @@ -209,8 +209,8 @@ log.variable_id as variableId, log.variable_name as variableName, log.variable_value as variableValue - FROM ProcessInstanceVariableLog log - LEFT JOIN ProcessInstanceVariableLog log_newer ON log.event_date < log_newer.event_date + FROM Process_Instance_Variable_Log log + LEFT JOIN Process_Instance_Variable_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.variable_id = log_newer.variable_id WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId @@ -236,7 +236,7 @@ log.variable_id as variableId, log.variable_name as variableName, log.variable_value as variableValue - FROM ProcessInstanceVariableLog log + FROM Process_Instance_Variable_Log log WHERE log.process_instance_id = :processInstanceId ORDER BY log.variable_id ASC, log.event_date DESC diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml index 499c86f41f..5c93c5fedf 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml @@ -24,8 +24,8 @@ log.node_definition_id as nodeDefinitionId, log.node_instance_id as nodeInstanceId, log.event_type as eventType - FROM TaskInstanceStateLog log - LEFT JOIN TaskInstanceStateLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + FROM Task_Instance_State_Log log + LEFT JOIN Task_Instance_State_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id AND log_newer.event_date < log_newer.event_date WHERE log_newer.event_id IS NULL @@ -44,8 +44,8 @@ log.task_name as userTaskName, log.assignment_type as assignmentType, users.user_id - FROM TaskInstanceAssignmentLog log - LEFT JOIN TaskInstanceAssignmentUsersLog users ON users.task_instance_assignment_log_id = log.id + FROM Task_Instance_Assignment_Log log + LEFT JOIN Task_Instance_Assignment_Users_Log users ON users.task_instance_assignment_log_id = log.id WHERE log.user_task_instance_id = :userTaskInstanceId @@ -64,8 +64,8 @@ log.attachment_name as attachmentName, log.attachment_uri as attachmentURI, log.event_type as eventType - FROM TaskInstanceAttachmentLog log - LEFT JOIN TaskInstanceAttachmentLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + FROM Task_Instance_Attachment_Log log + LEFT JOIN Task_Instance_Attachment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id AND log.attachment_id = log_newer.attachment_id AND log_newer.event_date < log_newer.event_date WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId @@ -84,8 +84,8 @@ log.comment_id as commentId, log.comment_content as commentContent, log.event_type as eventType - FROM TaskInstanceCommentLog log - LEFT JOIN TaskInstanceCommentLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + FROM Task_Instance_Comment_Log log + LEFT JOIN Task_Instance_Comment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id AND log.comment_id = log_newer.comment_id AND log_newer.event_date < log_newer.event_date WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId @@ -104,7 +104,7 @@ log.event_type as eventType, notification.property_name as propertyName, notification.property_value as propertyValue - FROM TaskInstanceDeadlineLog log + FROM Task_Instance_Deadline_Log log LEFT JOIN TaskInstanceDeadlineNotificationLog notification ON log.id = notification.task_instance_deadline_log_id WHERE log.user_task_instance_id = :userTaskInstanceId @@ -124,8 +124,8 @@ log.variable_name as variableName, log.variable_value as variableValue, log.variable_type as variableType - FROM TaskInstanceVariableLog log - LEFT JOIN TaskInstanceVariableLog log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + FROM Task_Instance_Variable_Log log + LEFT JOIN Task_Instance_Variable_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id AND log.variable_id = log_newer.variable_id AND log.variable_type = log_newer.variable_type AND log.event_date < log_newer.event_date From 0f0c0349e48973ad16b7be816581967dc525353e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Wed, 15 Nov 2023 10:45:42 +0100 Subject: [PATCH 34/47] fix sla --- .../java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index a1a9d37c65..fbf6389a67 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -177,11 +177,9 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInstanceSLADataEvent event) { EntityManager entityManager = context.getContext(); - if (event.getData().getNodeDefinitionId() != null) { - + if (event.getData().getNodeDefinitionId() == null) { ProcessInstanceStateLog log = new ProcessInstanceStateLog(); setProcessCommonAttributes(log, event); - log.setEventType(ProcessStateLogType.SLA_VIOLATION); entityManager.persist(log); From 4fe323bbd2b37e089d2bb48396e907f0dc6ff20a Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Wed, 15 Nov 2023 13:02:03 +0100 Subject: [PATCH 35/47] fix configuration. simplification --- data-audit/README.md | 17 +- .../src/main/resources/application.properties | 10 +- .../src/main/resources/META-INF/beans.xml | 0 .../main/resources/META-INF/entity-orm.xml | 20 - .../src/main/resources/META-INF/job-orm.xml | 326 ------- .../src/main/resources/META-INF/orm.xml | 899 ++++++++++++++++++ .../main/resources/META-INF/process-orm.xml | 335 ------- .../main/resources/META-INF/usertask-orm.xml | 229 ----- .../QuarkusJPADataAuditContextFactory.java | 2 +- .../src/main/resources/application.properties | 6 +- .../SpringbootJPAAuditDataConfiguration.java | 56 +- .../SpringbootJPADataAuditContextFactory.java | 2 - .../src/main/resources/application.properties | 3 - .../src/test/resources/application.properties | 10 +- .../src/test/resources/application.properties | 6 +- 15 files changed, 919 insertions(+), 1002 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/beans.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml create mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml delete mode 100644 data-audit/kogito-addons-data-audit-quarkus/src/main/resources/application.properties diff --git a/data-audit/README.md b/data-audit/README.md index cc42fd1220..4e3e3be25a 100644 --- a/data-audit/README.md +++ b/data-audit/README.md @@ -77,20 +77,5 @@ Each implementation might require additional dependencies. In our case for using quarkus-jdbc-h2 -for the case of use h2 database with quarkus runtime. plus additional parameters. In our case for make in work in quarkus you need to define -the data audit persistence +No additional configuration is requires besides the default datasource use by the application already. - -quarkus.datasource.data-audit-ds.db-kind=posgres -quarkus.datasource.data-audit-ds.username=kogito-user -quarkus.datasource.data-audit-ds.password=kogito-pass -quarkus.datasource.data-audit-ds.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://localhost:5432/kogito} - -In springboot might look like: - -spring.datasource.jdbc-url=jdbc:h2:mem:test -spring.datasource.driver-class-name=org.h2.Driver - -data-audit.spring.jpa.database=H2 -data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect -data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties index 064c901bc3..be277ecd5c 100644 --- a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/src/main/resources/application.properties @@ -1,11 +1,11 @@ #default values -quarkus.datasource.data-audit.db-kind=${QUARKUS_DATASOURCE_DB:h2} -quarkus.datasource.data-audit.username=${QUARKUS_DATASOURCE_USER:kogito-user} -quarkus.datasource.data-audit.password=${QUARKUS_DATASOURCE_PASS:kogito-pass} -quarkus.datasource.data-audit.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:h2:mem:data-audit} +quarkus.datasource.db-kind=${QUARKUS_DATASOURCE_DB:h2} +quarkus.datasource.username=${QUARKUS_DATASOURCE_USER:kogito-user} +quarkus.datasource.password=${QUARKUS_DATASOURCE_PASS:kogito-pass} +quarkus.datasource.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:h2:mem:data-audit} -quarkus.hibernate-orm.DataAuditPU.database.generation=update +quarkus.hibernate-orm.database.generation=update quarkus.container-image.build=${quarkus.build.image:true} quarkus.container-image.group=org.kie.kogito diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/beans.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml deleted file mode 100644 index e384c33f24..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/entity-orm.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml deleted file mode 100644 index d3653b559a..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/job-orm.xml +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'SCHEDULED' - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.job_id = :jobId - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - WHERE o1.job_id = :jobId - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - WHERE o1.process_instance_id = :processInstanceId - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED', 'RETRY') - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED') - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN ('RETRY', 'ERROR') - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'EXECUTED' - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'ERROR' - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'CANCELED' - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN (:status) - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.process_instance_id = :processInstanceId - ORDER BY o1.event_date DESC - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml new file mode 100644 index 0000000000..cf1619ebd8 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml @@ -0,0 +1,899 @@ + + + + + + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'SCHEDULED' + + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.job_id = :jobId + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + WHERE o1.job_id = :jobId + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + WHERE o1.process_instance_id = :processInstanceId + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED', 'RETRY') + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED') + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('RETRY', 'ERROR') + + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'EXECUTED' + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'ERROR' + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'CANCELED' + + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN (:status) + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id as jobId, + o1.expiration_time as expirationTime, + o1.priority as priority, + o1.process_instance_id as processInstanceId, + o1.node_instance_id as nodeInstanceId, + o1.repeat_interval as repeatInterval, + o1.repeat_limit as repeatLimit, + o1.scheduled_id as scheduledId, + o1.retries as retries, + o1.status as status, + o1.execution_counter as executionCounter, + o1.event_date as eventDate + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.process_instance_id = :processInstanceId + ORDER BY o1.event_date DESC + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL AND log.state = :status + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL AND log.process_id = :processId + ORDER BY log.event_date DESC + + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log.business_key = :businessKey + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.node_type as nodeType, + log.node_name as nodeName, + log.node_instance_id as nodeInstanceId, + log.connection as connection, + log.work_item_id as workItemId, + log.sla_due_date as slaDueDate, + log.event_data as eventData + FROM Process_Instance_Node_Log log + LEFT JOIN Process_Instance_Node_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id + WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.error_message as errorMessage, + log.node_definition_id as nodeDefinitionId, + log.node_instance_id as nodeInstanceId + FROM Process_Instance_Error_Log log + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.variable_id as variableId, + log.variable_name as variableName, + log.variable_value as variableValue + FROM Process_Instance_Variable_Log log + LEFT JOIN Process_Instance_Variable_Log log_newer ON log.event_date < log_newer.event_date + AND log.process_instance_id = log_newer.process_instance_id + AND log.variable_id = log_newer.variable_id + WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.variable_id as variableId, + log.variable_name as variableName, + log.variable_value as variableValue + FROM Process_Instance_Variable_Log log + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.variable_id ASC, log.event_date DESC + + + + + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.task_id as taskId, + log.name as name, + log.description as description, + log.actual_user as actualUser, + log.state as state, + log.node_definition_id as nodeDefinitionId, + log.node_instance_id as nodeInstanceId, + log.event_type as eventType + FROM Task_Instance_State_Log log + LEFT JOIN Task_Instance_State_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.task_name as userTaskName, + log.assignment_type as assignmentType, + users.user_id + FROM Task_Instance_Assignment_Log log + LEFT JOIN Task_Instance_Assignment_Users_Log users ON users.task_instance_assignment_log_id = log.id + WHERE log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.attachment_id as attachmentId, + log.attachment_name as attachmentName, + log.attachment_uri as attachmentURI, + log.event_type as eventType + FROM Task_Instance_Attachment_Log log + LEFT JOIN Task_Instance_Attachment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.attachment_id = log_newer.attachment_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.comment_id as commentId, + log.comment_content as commentContent, + log.event_type as eventType + FROM Task_Instance_Comment_Log log + LEFT JOIN Task_Instance_Comment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.comment_id = log_newer.comment_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + notification.property_name as propertyName, + notification.property_value as propertyValue + FROM Task_Instance_Deadline_Log log + LEFT JOIN TaskInstanceDeadlineNotificationLog notification ON log.id = notification.task_instance_deadline_log_id + WHERE log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.variable_id as variableId, + log.variable_name as variableName, + log.variable_value as variableValue, + log.variable_type as variableType + FROM Task_Instance_Variable_Log log + LEFT JOIN Task_Instance_Variable_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.variable_id = log_newer.variable_id + AND log.variable_type = log_newer.variable_type + AND log.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml deleted file mode 100644 index 951008af48..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/process-orm.xml +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log_newer.event_id IS NULL - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log_newer.event_id IS NULL AND log.state = :status - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log_newer.event_id IS NULL AND log.process_id = :processId - ORDER BY log.event_date DESC - - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log.business_key = :businessKey - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.node_type as nodeType, - log.node_name as nodeName, - log.node_instance_id as nodeInstanceId, - log.connection as connection, - log.work_item_id as workItemId, - log.sla_due_date as slaDueDate, - log.event_data as eventData - FROM Process_Instance_Node_Log log - LEFT JOIN Process_Instance_Node_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id - WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.error_message as errorMessage, - log.node_definition_id as nodeDefinitionId, - log.node_instance_id as nodeInstanceId - FROM Process_Instance_Error_Log log - WHERE log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.variable_id as variableId, - log.variable_name as variableName, - log.variable_value as variableValue - FROM Process_Instance_Variable_Log log - LEFT JOIN Process_Instance_Variable_Log log_newer ON log.event_date < log_newer.event_date - AND log.process_instance_id = log_newer.process_instance_id - AND log.variable_id = log_newer.variable_id - WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.variable_id as variableId, - log.variable_name as variableName, - log.variable_value as variableValue - FROM Process_Instance_Variable_Log log - WHERE log.process_instance_id = :processInstanceId - ORDER BY log.variable_id ASC, log.event_date DESC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml deleted file mode 100644 index 5c93c5fedf..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/usertask-orm.xml +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.task_id as taskId, - log.name as name, - log.description as description, - log.actual_user as actualUser, - log.state as state, - log.node_definition_id as nodeDefinitionId, - log.node_instance_id as nodeInstanceId, - log.event_type as eventType - FROM Task_Instance_State_Log log - LEFT JOIN Task_Instance_State_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log_newer.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.event_user as eventUser, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.task_name as userTaskName, - log.assignment_type as assignmentType, - users.user_id - FROM Task_Instance_Assignment_Log log - LEFT JOIN Task_Instance_Assignment_Users_Log users ON users.task_instance_assignment_log_id = log.id - WHERE log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.event_user as eventUser, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.attachment_id as attachmentId, - log.attachment_name as attachmentName, - log.attachment_uri as attachmentURI, - log.event_type as eventType - FROM Task_Instance_Attachment_Log log - LEFT JOIN Task_Instance_Attachment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log.attachment_id = log_newer.attachment_id - AND log_newer.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.comment_id as commentId, - log.comment_content as commentContent, - log.event_type as eventType - FROM Task_Instance_Comment_Log log - LEFT JOIN Task_Instance_Comment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log.comment_id = log_newer.comment_id - AND log_newer.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - notification.property_name as propertyName, - notification.property_value as propertyValue - FROM Task_Instance_Deadline_Log log - LEFT JOIN TaskInstanceDeadlineNotificationLog notification ON log.id = notification.task_instance_deadline_log_id - WHERE log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.event_user as eventUser, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.variable_id as variableId, - log.variable_name as variableName, - log.variable_value as variableValue, - log.variable_type as variableType - FROM Task_Instance_Variable_Log log - LEFT JOIN Task_Instance_Variable_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log.variable_id = log_newer.variable_id - AND log.variable_type = log_newer.variable_type - AND log.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java index 873046f053..776a27114d 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java @@ -28,7 +28,7 @@ @ApplicationScoped public class QuarkusJPADataAuditContextFactory implements DataAuditContextFactory { - @PersistenceContext(unitName = "DataAuditPU") + @PersistenceContext EntityManager entityManager; @Override diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties index b6fdadeb08..b60de7d417 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/resources/application.properties @@ -1,3 +1,3 @@ -quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model -quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -quarkus.hibernate-orm.DataAuditPU.datasource=data-audit \ No newline at end of file +#quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model +#quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml +#quarkus.hibernate-orm.DataAuditPU.datasource=data-audit \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java index 0f920c12aa..b1e3ba37cc 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java @@ -18,63 +18,11 @@ */ package org.kie.kogito.app.audit.springboot; -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; -import org.springframework.context.annotation.Bean; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.context.annotation.PropertySource; -import org.springframework.orm.jpa.JpaVendorAdapter; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; @Configuration(proxyBeanMethods = false) -@PropertySource("classpath:/application-data-audit.properties") +@EntityScan(basePackages = "org.kie.kogito.app.audit.jpa.model") public class SpringbootJPAAuditDataConfiguration { - @Bean - @Primary - public JpaProperties primaryJpaDataAuditProperties() { - return new JpaProperties(); - } - - @Bean(name = "JPADataAuditProperties") - @Qualifier("JPADataAuditProperties") - @ConfigurationProperties(prefix = "data-audit.spring.jpa") - public JpaProperties jpaDataAuditProperties() { - return new JpaProperties(); - } - - @Bean(name = "jpaDataAuditEntityManagerFactory") - @Qualifier("jpaDataAuditEntityManagerFactory") - public LocalContainerEntityManagerFactoryBean jpaDataAuditEntityManagerFactory( - DataSource dataSource, - @Autowired @Qualifier("JPADataAuditProperties") JpaProperties jpaProperties) { - EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(jpaProperties); - return builder - .dataSource(dataSource) - .mappingResources(jpaProperties.getMappingResources().toArray(String[]::new)) - .properties(jpaProperties.getProperties()) - .persistenceUnit("DataAuditPU") - .build(); - } - - private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(JpaProperties jpaProperties) { - JpaVendorAdapter jpaVendorAdapter = createJpaVendorAdapter(jpaProperties); - return new EntityManagerFactoryBuilder(jpaVendorAdapter, jpaProperties.getProperties(), null); - } - - private JpaVendorAdapter createJpaVendorAdapter(JpaProperties jpaProperties) { - HibernateJpaVendorAdapter hibernate = new HibernateJpaVendorAdapter(); - hibernate.setDatabase(jpaProperties.getDatabase()); - hibernate.setGenerateDdl(jpaProperties.isGenerateDdl()); - hibernate.setShowSql(jpaProperties.isShowSql()); - hibernate.setDatabasePlatform(jpaProperties.getDatabasePlatform()); - return hibernate; - } } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java index 07a0f51115..32f933e338 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java @@ -23,14 +23,12 @@ import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @Component public class SpringbootJPADataAuditContextFactory implements DataAuditContextFactory { @Autowired - @Qualifier("jpaDataAuditEntityManagerFactory") EntityManager entityManager; @Override diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/resources/application.properties b/data-audit/kogito-addons-data-audit-quarkus/src/main/resources/application.properties deleted file mode 100644 index 0b034e5aa0..0000000000 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -quarkus.hibernate-orm.DataAuditPU.enabled=true -quarkus.hibernate-orm.DataAuditPU.packages=org.kie.kogito.app.audit.jpa.model -quarkus.hibernate-orm.DataAuditPU.mapping-files=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties index 85757a56c4..21c5f97026 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/resources/application.properties @@ -1,9 +1,9 @@ -quarkus.datasource.data-audit.db-kind=h2 -quarkus.datasource.data-audit.username=hibernate -quarkus.datasource.data-audit.password=hibernate -quarkus.datasource.data-audit.jdbc.url=jdbc:h2:mem:test +quarkus.datasource.db-kind=h2 +quarkus.datasource.username=hibernate +quarkus.datasource.password=hibernate +quarkus.datasource.jdbc.url=jdbc:h2:mem:test -quarkus.hibernate-orm.DataAuditPU.database.generation=create-drop +quarkus.hibernate-orm.database.generation=create-drop diff --git a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties index aa16a2b100..2ab6c0f432 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties @@ -4,7 +4,7 @@ spring.datasource.jdbc-url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver -data-audit.spring.jpa.database=H2 -data-audit.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect -data-audit.spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop +spring.jpa.database=H2 +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect +spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop From e90da08688783d9ca5ebf1c7e8144923565a14c2 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 16 Nov 2023 09:55:10 +0100 Subject: [PATCH 36/47] fix service --- data-audit/data-audit-common-service/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-audit/data-audit-common-service/pom.xml b/data-audit/data-audit-common-service/pom.xml index ad167502c9..c0b1807610 100644 --- a/data-audit/data-audit-common-service/pom.xml +++ b/data-audit/data-audit-common-service/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - kogito-addons-data-audit + data-audit org.kie.kogito 2.0.0-SNAPSHOT From cf382e9f2b6c6eb0f6fcb215696172a8489dfa42 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 16 Nov 2023 16:19:08 +0100 Subject: [PATCH 37/47] fix for orm --- .../audit/jpa/queries/JPAAbstractQuery.java | 49 +- .../jpa/queries/JPAComplexNamedQuery.java | 4 +- ...QLSchemaProcessInstancesQueryProvider.java | 2 +- .../jpa/queries/JPASimpleNamedQuery.java | 11 +- .../app/audit/jpa/queries/MappingFile.java | 71 ++ .../audit/jpa/queries/mapper/PojoMapper.java | 59 ++ ...rocessInstanceVariableHistoryTOMapper.java | 12 +- .../resources/META-INF/data-audit-orm.xml | 669 +++++++++++++ .../src/main/resources/META-INF/orm.xml | 899 ------------------ .../QuarkusJPADataAuditEventPublisher.java | 2 +- 10 files changed, 837 insertions(+), 941 deletions(-) create mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java create mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/PojoMapper.java create mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml delete mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java index b3a48de6c6..3b0f0a9300 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -18,66 +18,51 @@ */ package org.kie.kogito.app.audit.jpa.queries; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.Query; -import javax.persistence.TypedQuery; public abstract class JPAAbstractQuery { - protected List executeWithEntityManager(EntityManager entityManager, String query, Class clazz) { - return entityManager.createQuery(query, clazz).getResultList(); - + protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String queryName, Class clazz) { + return executeWithNamedQueryEntityManager("META-INF/data-audit-orm.xml", entityManager, queryName); } - protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query, Class clazz) { - return entityManager.createNamedQuery(query, clazz).getResultList(); + protected List executeWithNamedQueryEntityManager(String file, EntityManager entityManager, String queryName) { + String query = MappingFile.findInFile(file, entityManager, queryName); + return entityManager.createNativeQuery(query).getResultList(); } - protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Class clazz, Map arguments) { - - Map parameters = new HashMap<>(arguments); - @SuppressWarnings("unchecked") - Map pagination = (Map) parameters.remove("pagination"); - TypedQuery typedQuery = entityManager.createNamedQuery(query, clazz); - parameters.forEach(typedQuery::setParameter); - if (pagination != null) { - if (pagination.get("limit") != null) { - typedQuery.setMaxResults((Integer) pagination.get("limit")); - } - if (pagination.get("offset") != null) { - typedQuery.setFirstResult((Integer) pagination.get("offset")); - } - } - - return typedQuery.getResultList(); - + protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query) { + return executeWithNamedQueryEntityManagerAndArguments(entityManager, query, Collections.emptyMap()); } - protected List executeWithNamedQueryEntityManager(EntityManager entityManager, String query) { - return entityManager.createNamedQuery(query).getResultList(); + protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Map arguments) { + return executeWithNamedQueryEntityManagerAndArguments("META-INF/data-audit-orm.xml", entityManager, query, arguments); } - protected List executeWithNamedQueryEntityManagerAndArguments(EntityManager entityManager, String query, Map arguments) { + protected List executeWithNamedQueryEntityManagerAndArguments(String file, EntityManager entityManager, String queryName, Map arguments) { + String query = MappingFile.findInFile(file, entityManager, queryName); Map parameters = new HashMap<>(arguments); + Query jpaQuery = entityManager.createNativeQuery(query); @SuppressWarnings("unchecked") Map pagination = (Map) parameters.remove("pagination"); - Query typedQuery = entityManager.createNamedQuery(query); - parameters.forEach(typedQuery::setParameter); + parameters.forEach(jpaQuery::setParameter); if (pagination != null) { if (pagination.get("limit") != null) { - typedQuery.setMaxResults((Integer) pagination.get("limit")); + jpaQuery.setMaxResults((Integer) pagination.get("limit")); } if (pagination.get("offset") != null) { - typedQuery.setFirstResult((Integer) pagination.get("offset")); + jpaQuery.setFirstResult((Integer) pagination.get("offset")); } } - return typedQuery.getResultList(); + return jpaQuery.getResultList(); } } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java index 22ed56cd95..045dcf24cb 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java @@ -28,7 +28,7 @@ import graphql.schema.DataFetchingEnvironment; -public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { +public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { private String name; private String namedQuery; @@ -50,7 +50,7 @@ public String name() { } @Override - public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { + public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { Map arguments = dataFetchingEnvironment.getArguments(); DataAuditContext context = dataFetchingEnvironment.getLocalContext(); EntityManager entityManager = context.getContext(); diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java index 905d712426..3dd41f105f 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaProcessInstancesQueryProvider.java @@ -43,7 +43,7 @@ public List> queries() { new JPASimpleNamedQuery("GetAllProcessInstancesNodeByProcessInstanceId", ProcessInstanceNodeTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesErrorByProcessInstanceId", ProcessInstanceErrorTO.class), new JPASimpleNamedQuery("GetAllProcessInstancesVariableByProcessInstanceId", ProcessInstanceVariableTO.class), - new JPAComplexNamedQuery("GetAllProcessInstancesVariableHistoryByProcessInstanceId", + new JPAComplexNamedQuery("GetAllProcessInstancesVariableHistoryByProcessInstanceId", new ProcessInstanceVariableHistoryTOMapper())); } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java index 7882a15979..14b7fa0683 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -24,16 +24,18 @@ import javax.persistence.EntityManager; import org.kie.kogito.app.audit.api.DataAuditContext; +import org.kie.kogito.app.audit.jpa.queries.mapper.PojoMapper; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import graphql.schema.DataFetchingEnvironment; -public class JPASimpleNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { +public class JPASimpleNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { private String name; private String namedQuery; private Class clazz; - + private PojoMapper mapper; + public JPASimpleNamedQuery(String name, Class clazz) { this(name, name, clazz); } @@ -42,6 +44,7 @@ public JPASimpleNamedQuery(String name, String namedQuery, Class clazz) { this.name = name; this.namedQuery = namedQuery; this.clazz = clazz; + this.mapper = new PojoMapper(this.clazz); } @Override @@ -56,9 +59,9 @@ public List fetch(DataFetchingEnvironment dataFetchingEnvironment) { EntityManager entityManager = context.getContext(); if (arguments.isEmpty()) { - return executeWithNamedQueryEntityManager(entityManager, namedQuery, clazz); + return mapper.produce(executeWithNamedQueryEntityManager(entityManager, namedQuery)); } else { - return executeWithNamedQueryEntityManagerAndArguments(entityManager, namedQuery, clazz, arguments); + return mapper.produce(executeWithNamedQueryEntityManagerAndArguments(entityManager, namedQuery, arguments)); } } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java new file mode 100644 index 0000000000..075e745913 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries; + +import java.io.InputStream; + +import javax.persistence.EntityManager; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class MappingFile { + + public static String findInDefault(EntityManager entityManager, String queryName) { + return findInFile("META-INF/data-audit-orm.xml", entityManager, queryName); + } + + public static String findInFile(String file, EntityManager entityManager, String queryName) { + try (InputStream is = MappingFile.class.getClassLoader().getResourceAsStream(file)) { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + Document doc = db.parse(is); + Node entityMappingsNode = doc.getFirstChild(); // entity-mappings + + NodeList nativeQueries = entityMappingsNode.getChildNodes(); + for (int i = 0; i < nativeQueries.getLength(); i++) { + Node nativeQuery = nativeQueries.item(i); + if ("named-native-query".equals(nativeQuery.getNodeName())) { + String name = nativeQuery.getAttributes().getNamedItem("name").getNodeValue(); + String sqlQuery = null; + NodeList children = nativeQuery.getChildNodes(); + for (int j = 0; j < children.getLength(); j++) { + Node query = children.item(j); + if ("query".equals(query.getNodeName())) { + sqlQuery = query.getTextContent(); + } + } + + if (name.equals(queryName)) { + return sqlQuery; + } + } + } + } catch (Exception e) { + return null; + } + return null; + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/PojoMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/PojoMapper.java new file mode 100644 index 0000000000..60fb648ec4 --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/PojoMapper.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.app.audit.jpa.queries.mapper; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; + +import org.kie.kogito.app.audit.jpa.queries.DataMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PojoMapper implements DataMapper { + + private static final Logger LOGGER = LoggerFactory.getLogger(PojoMapper.class); + + private Class clazz; + private Constructor defaultConstructor; + + public PojoMapper(Class clazz) { + this.clazz = clazz; + for (Constructor constructor : clazz.getConstructors()) { + if (constructor.getParameterCount() > 0) { + defaultConstructor = (Constructor) constructor; + } + } + } + + @Override + public List produce(List data) { + List transformed = new ArrayList<>(); + for (Object[] row : data) { + try { + transformed.add(defaultConstructor.newInstance(row)); + } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + LOGGER.error("Could not transform data", e); + } + } + return transformed; + } + +} diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java index 084b9f16ae..a793180372 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java @@ -30,9 +30,17 @@ import graphql.com.google.common.base.Objects; -public class ProcessInstanceVariableHistoryTOMapper implements DataMapper { +public class ProcessInstanceVariableHistoryTOMapper implements DataMapper { + + PojoMapper mapper; + + public ProcessInstanceVariableHistoryTOMapper() { + mapper = new PojoMapper<>(ProcessInstanceVariableTO.class); + } + @Override - public List produce(List data) { + public List produce(List rows) { + List data = mapper.produce(rows); List transformedData = new ArrayList<>(); ProcessInstanceVariableHistoryTO current = null; Object currentIndex = null; diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml new file mode 100644 index 0000000000..932997dc8d --- /dev/null +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml @@ -0,0 +1,669 @@ + + + + + + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'SCHEDULED' + + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.job_id = :jobId + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + WHERE o1.job_id = :jobId + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + WHERE o1.process_instance_id = :processInstanceId + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED', 'RETRY') + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED') + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN ('RETRY', 'ERROR') + + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'EXECUTED' + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'ERROR' + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status = 'CANCELED' + + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.status IN (:status) + ORDER BY o1.event_date DESC + + + + + + SELECT + o1.job_id, + o1.expiration_time, + o1.priority, + o1.process_instance_id, + o1.node_instance_id, + o1.repeat_interval, + o1.repeat_limit, + o1.scheduled_id, + o1.retries, + o1.status, + o1.execution_counter, + o1.event_date + FROM Job_Execution_Log o1 + LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date + WHERE o2.job_id IS NULL AND o1.process_instance_id = :processInstanceId + ORDER BY o1.event_date DESC + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL AND log.state = :status + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log_newer.event_id IS NULL AND log.process_id = :processId + ORDER BY log.event_date DESC + + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.process_type as processType, + log.process_id as processId, + log.process_version as processVersion, + log.parent_process_instance_id as parentProcessInstanceId, + log.root_process_id as rootProcessId, + log.root_process_instance_id as rootProcessInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + log.outcome as outcome, + log.state as state, + log.sla_due_date as slaDueDate, + roles.role as role + FROM Process_Instance_State_Log log + LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id + WHERE log.business_key = :businessKey + ORDER BY log.event_date DESC + + + + + + + SELECT + log.event_id, + log.event_date, + log.process_type, + log.process_id, + log.process_version, + log.parent_process_instance_id, + log.root_process_id, + log.root_process_instance_id, + log.process_instance_id, + log.business_key, + log.event_type, + log.node_type, + log.node_name, + log.node_instance_id, + log.connection, + log.work_item_id, + log.sla_due_date, + log.event_data + FROM Process_Instance_Node_Log log + LEFT JOIN Process_Instance_Node_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id + WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT + log.event_id, + log.event_date, + log.process_type, + log.process_id, + log.process_version, + log.parent_process_instance_id, + log.root_process_id, + log.root_process_instance_id, + log.process_instance_id, + log.business_key, + log.error_message, + log.node_definition_id, + log.node_instance_id + FROM Process_Instance_Error_Log log + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT + log.event_id, + log.event_date, + log.process_type, + log.process_id, + log.process_version, + log.parent_process_instance_id, + log.root_process_id, + log.root_process_instance_id, + log.process_instance_id, + log.business_key, + log.variable_id, + log.variable_name, + log.variable_value + FROM Process_Instance_Variable_Log log + LEFT JOIN Process_Instance_Variable_Log log_newer ON log.event_date < log_newer.event_date + AND log.process_instance_id = log_newer.process_instance_id + AND log.variable_id = log_newer.variable_id + WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId + ORDER BY log.event_date DESC + + + + + + + SELECT + log.event_id, + log.event_date, + log.process_type, + log.process_id, + log.process_version, + log.parent_process_instance_id, + log.root_process_id, + log.root_process_instance_id, + log.process_instance_id, + log.business_key, + log.variable_id, + log.variable_name, + log.variable_value + FROM Process_Instance_Variable_Log log + WHERE log.process_instance_id = :processInstanceId + ORDER BY log.variable_id ASC, log.event_date DESC + + + + + + + + + + + SELECT + log.event_id, + log.event_date, + log.user_task_definition_id, + log.user_task_instance_id, + log.process_instance_id, + log.business_key, + log.task_id, + log.name, + log.description, + log.actual_user, + log.state, + log.node_definition_id, + log.node_instance_id, + log.event_type + FROM Task_Instance_State_Log log + LEFT JOIN Task_Instance_State_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.event_user as eventUser, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.task_name as userTaskName, + log.assignment_type as assignmentType, + users.user_id + FROM Task_Instance_Assignment_Log log + LEFT JOIN Task_Instance_Assignment_Users_Log users ON users.task_instance_assignment_log_id = log.id + WHERE log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT + log.event_id, + log.event_date, + log.event_user, + log.user_task_definition_id, + log.user_task_instance_id, + log.process_instance_id, + log.business_key, + log.attachment_id, + log.attachment_name, + log.attachment_uri, + log.event_type + FROM Task_Instance_Attachment_Log log + LEFT JOIN Task_Instance_Attachment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.attachment_id = log_newer.attachment_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT + log.event_id, + log.event_date, + log.user_task_definition_id, + log.user_task_instance_id, + log.process_instance_id, + log.business_key, + log.comment_id, + log.comment_content, + log.event_type + FROM Task_Instance_Comment_Log log + LEFT JOIN Task_Instance_Comment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.comment_id = log_newer.comment_id + AND log_newer.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT log.event_id as eventId, + log.event_date as eventDate, + log.user_task_definition_id as userTaskDefinitionId, + log.user_task_instance_id as userTaskInstanceId, + log.process_instance_id as processInstanceId, + log.business_key as businessKey, + log.event_type as eventType, + notification.property_name as propertyName, + notification.property_value as propertyValue + FROM Task_Instance_Deadline_Log log + LEFT JOIN TaskInstanceDeadlineNotificationLog notification ON log.id = notification.task_instance_deadline_log_id + WHERE log.user_task_instance_id = :userTaskInstanceId + + + + + + + SELECT + log.event_id, + log.event_date, + log.event_user, + log.user_task_definition_id, + log.user_task_instance_id, + log.process_instance_id, + log.business_key, + log.variable_id, + log.variable_name, + log.variable_value, + log.variable_type + FROM Task_Instance_Variable_Log log + LEFT JOIN Task_Instance_Variable_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id + AND log.variable_id = log_newer.variable_id + AND log.variable_type = log_newer.variable_type + AND log.event_date < log_newer.event_date + WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId + + + + + \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml deleted file mode 100644 index cf1619ebd8..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/orm.xml +++ /dev/null @@ -1,899 +0,0 @@ - - - - - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'SCHEDULED' - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.job_id = :jobId - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - WHERE o1.job_id = :jobId - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - WHERE o1.process_instance_id = :processInstanceId - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED', 'RETRY') - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN ('SCHEDULED') - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN ('RETRY', 'ERROR') - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'EXECUTED' - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'ERROR' - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status = 'CANCELED' - - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.status IN (:status) - ORDER BY o1.event_date DESC - - - - - - SELECT - o1.job_id as jobId, - o1.expiration_time as expirationTime, - o1.priority as priority, - o1.process_instance_id as processInstanceId, - o1.node_instance_id as nodeInstanceId, - o1.repeat_interval as repeatInterval, - o1.repeat_limit as repeatLimit, - o1.scheduled_id as scheduledId, - o1.retries as retries, - o1.status as status, - o1.execution_counter as executionCounter, - o1.event_date as eventDate - FROM Job_Execution_Log o1 - LEFT JOIN Job_Execution_Log o2 ON o1.job_id = o2.job_id AND o1.event_date < o2.event_date - WHERE o2.job_id IS NULL AND o1.process_instance_id = :processInstanceId - ORDER BY o1.event_date DESC - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log_newer.event_id IS NULL - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log_newer.event_id IS NULL AND log.state = :status - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log_newer.event_id IS NULL AND log.process_id = :processId - ORDER BY log.event_date DESC - - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.outcome as outcome, - log.state as state, - log.sla_due_date as slaDueDate, - roles.role as role - FROM Process_Instance_State_Log log - LEFT JOIN Process_Instance_State_Roles_Log roles ON log.id = roles.process_instance_state_log_id - WHERE log.business_key = :businessKey - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - log.node_type as nodeType, - log.node_name as nodeName, - log.node_instance_id as nodeInstanceId, - log.connection as connection, - log.work_item_id as workItemId, - log.sla_due_date as slaDueDate, - log.event_data as eventData - FROM Process_Instance_Node_Log log - LEFT JOIN Process_Instance_Node_Log log_newer ON log.event_date < log_newer.event_date AND log.process_instance_id = log_newer.process_instance_id AND log.node_instance_id = log_newer.node_instance_id - WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.error_message as errorMessage, - log.node_definition_id as nodeDefinitionId, - log.node_instance_id as nodeInstanceId - FROM Process_Instance_Error_Log log - WHERE log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.variable_id as variableId, - log.variable_name as variableName, - log.variable_value as variableValue - FROM Process_Instance_Variable_Log log - LEFT JOIN Process_Instance_Variable_Log log_newer ON log.event_date < log_newer.event_date - AND log.process_instance_id = log_newer.process_instance_id - AND log.variable_id = log_newer.variable_id - WHERE log_newer.event_id IS NULL AND log.process_instance_id = :processInstanceId - ORDER BY log.event_date DESC - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.process_type as processType, - log.process_id as processId, - log.process_version as processVersion, - log.parent_process_instance_id as parentProcessInstanceId, - log.root_process_id as rootProcessId, - log.root_process_instance_id as rootProcessInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.variable_id as variableId, - log.variable_name as variableName, - log.variable_value as variableValue - FROM Process_Instance_Variable_Log log - WHERE log.process_instance_id = :processInstanceId - ORDER BY log.variable_id ASC, log.event_date DESC - - - - - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.task_id as taskId, - log.name as name, - log.description as description, - log.actual_user as actualUser, - log.state as state, - log.node_definition_id as nodeDefinitionId, - log.node_instance_id as nodeInstanceId, - log.event_type as eventType - FROM Task_Instance_State_Log log - LEFT JOIN Task_Instance_State_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log_newer.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.event_user as eventUser, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.task_name as userTaskName, - log.assignment_type as assignmentType, - users.user_id - FROM Task_Instance_Assignment_Log log - LEFT JOIN Task_Instance_Assignment_Users_Log users ON users.task_instance_assignment_log_id = log.id - WHERE log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.event_user as eventUser, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.attachment_id as attachmentId, - log.attachment_name as attachmentName, - log.attachment_uri as attachmentURI, - log.event_type as eventType - FROM Task_Instance_Attachment_Log log - LEFT JOIN Task_Instance_Attachment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log.attachment_id = log_newer.attachment_id - AND log_newer.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.comment_id as commentId, - log.comment_content as commentContent, - log.event_type as eventType - FROM Task_Instance_Comment_Log log - LEFT JOIN Task_Instance_Comment_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log.comment_id = log_newer.comment_id - AND log_newer.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.event_type as eventType, - notification.property_name as propertyName, - notification.property_value as propertyValue - FROM Task_Instance_Deadline_Log log - LEFT JOIN TaskInstanceDeadlineNotificationLog notification ON log.id = notification.task_instance_deadline_log_id - WHERE log.user_task_instance_id = :userTaskInstanceId - - - - - - - SELECT log.event_id as eventId, - log.event_date as eventDate, - log.event_user as eventUser, - log.user_task_definition_id as userTaskDefinitionId, - log.user_task_instance_id as userTaskInstanceId, - log.process_instance_id as processInstanceId, - log.business_key as businessKey, - log.variable_id as variableId, - log.variable_name as variableName, - log.variable_value as variableValue, - log.variable_type as variableType - FROM Task_Instance_Variable_Log log - LEFT JOIN Task_Instance_Variable_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id - AND log.variable_id = log_newer.variable_id - AND log.variable_type = log_newer.variable_type - AND log.event_date < log_newer.event_date - WHERE log_newer.event_id IS NULL AND log.user_task_instance_id = :userTaskInstanceId - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index c847447871..af240f547a 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -68,7 +68,7 @@ public void publish(DataEvent event) { proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { - LOGGER.info("Processing job instance event {}", event); + LOGGER.debug("Processing job instance event {}", event); proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; } From 6399101c686a50a6052119c3d679e940614af455 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 16 Nov 2023 16:20:53 +0100 Subject: [PATCH 38/47] fix classloader --- .../kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java | 2 +- .../org/kie/kogito/app/audit/jpa/queries/MappingFile.java | 4 +++- .../mapper/ProcessInstanceVariableHistoryTOMapper.java | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java index 14b7fa0683..ccb3d04fd3 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -35,7 +35,7 @@ public class JPASimpleNamedQuery extends JPAAbstractQuery implements Graph private String namedQuery; private Class clazz; private PojoMapper mapper; - + public JPASimpleNamedQuery(String name, Class clazz) { this(name, name, clazz); } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java index 075e745913..eb805bdb8f 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java @@ -35,7 +35,9 @@ public static String findInDefault(EntityManager entityManager, String queryName } public static String findInFile(String file, EntityManager entityManager, String queryName) { - try (InputStream is = MappingFile.class.getClassLoader().getResourceAsStream(file)) { + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + cl = (cl == null) ? MappingFile.class.getClassLoader() : cl; + try (InputStream is = cl.getResourceAsStream(file)) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // parse XML file DocumentBuilder db = dbf.newDocumentBuilder(); diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java index a793180372..77e984f8b3 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/mapper/ProcessInstanceVariableHistoryTOMapper.java @@ -33,11 +33,11 @@ public class ProcessInstanceVariableHistoryTOMapper implements DataMapper { PojoMapper mapper; - + public ProcessInstanceVariableHistoryTOMapper() { mapper = new PojoMapper<>(ProcessInstanceVariableTO.class); } - + @Override public List produce(List rows) { List data = mapper.produce(rows); From cf7ad2e374e21355ec8cd4bd41881bb9a23b5e7c Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 17 Nov 2023 08:29:19 +0100 Subject: [PATCH 39/47] clean unnecessary fields --- .../jpa/model/UserTaskInstanceStateLog.java | 33 ------------------- .../QuarkusJPADataAuditEventPublisher.java | 2 +- 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java index 263e977bcd..6e8775a564 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java @@ -36,9 +36,6 @@ public class UserTaskInstanceStateLog extends AbstractUserTaskInstanceLog { @GeneratedValue(strategy = GenerationType.AUTO, generator = "taskInstanceStateLogIdSeq") private Long id; - @Column(name = "task_id") - private String taskId; - private String name; private String description; @@ -48,12 +45,6 @@ public class UserTaskInstanceStateLog extends AbstractUserTaskInstanceLog { private String state; - @Column(name = "node_definition_id") - private String nodeDefinitionId; - - @Column(name = "node_instance_id") - private String nodeInstanceId; - @Column(name = "event_type") private String eventType; @@ -65,14 +56,6 @@ public void setId(Long id) { this.id = id; } - public String getTaskId() { - return taskId; - } - - public void setTaskId(String taskId) { - this.taskId = taskId; - } - public String getName() { return name; } @@ -97,14 +80,6 @@ public void setActualUser(String actualUser) { this.actualUser = actualUser; } - public String getNodeInstanceId() { - return nodeInstanceId; - } - - public void setNodeInstanceId(String nodeInstanceId) { - this.nodeInstanceId = nodeInstanceId; - } - public String getEventType() { return eventType; } @@ -121,12 +96,4 @@ public void setState(String state) { this.state = state; } - public String getNodeDefinitionId() { - return nodeDefinitionId; - } - - public void setNodeDefinitionId(String nodeDefinitionId) { - this.nodeDefinitionId = nodeDefinitionId; - } - } diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index af240f547a..c847447871 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -68,7 +68,7 @@ public void publish(DataEvent event) { proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { - LOGGER.debug("Processing job instance event {}", event); + LOGGER.info("Processing job instance event {}", event); proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; } From 0149ee32e9c43e706385a9107c3d3d967aaab612 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Fri, 17 Nov 2023 16:14:46 +0100 Subject: [PATCH 40/47] fix readme.md --- data-audit/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data-audit/README.md b/data-audit/README.md index 4e3e3be25a..68eb515f86 100644 --- a/data-audit/README.md +++ b/data-audit/README.md @@ -1,6 +1,6 @@ ### Data Audit subsystem -This is the implementation of the Kogito Audit subystem. The subsystem allows to store the events from issued by +This is the implementation of the Kogito Audit subystem. The subsystem allows to store events from issued by - process engine - user task - job service @@ -33,7 +33,7 @@ Data Audit JPA «SpringBoot»: Provides the wiring between the specific implemen ## Queries -The way to retrieve information from the data audit is to use GraphQL. This way we can abstract how the information is retrieved and allow different needs depending on the user. +The way to retrieve information from the data audit is using GraphQL. This way we can abstract how the information is retrieved and allow different needs depending on the user. ## JPA implementation @@ -44,17 +44,17 @@ The jpa implementation allows you to store those events to be stored in a databa There are two different extensions. Those who belong to the runtime to wire things and those which does not depends on the runtime Extension points depending on the runtime is: -org.kie.kogito.app.audit.spi.DataAuditContextFactory: this allos to create context needed by a particular implementation +org.kie.kogito.app.audit.spi.DataAuditContextFactory: this allows creating the context needed by a particular implementation. Extension points not depending on the runtime: -org.kie.kogito.app.audit.spi.DataAuditStore: This is responsible to storange in certain way the data +org.kie.kogito.app.audit.spi.DataAuditStore: This is responsible to store the data in certain way org.kie.kogito.app.audit.spi.GraphQLSchemaQuery: This is responsible to execute a GraphQL query org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider: this allow the subsystem to identify additional queries provided by the end user ## How to use in with Quarkus/Springboot -You need to add two different dependencies to your project +You need to add two different dependencies to your project. org.kie.kogito @@ -67,7 +67,7 @@ You need to add two different dependencies to your project ${version} -The first dependency is related how to you want to deploy it. In this case as colocated/embedded service +The first dependency is related how to you want to deploy it. In this case as collocated/embedded service The second dependency is which implementation you want to use. Each implementation might require additional dependencies. In our case for using JPA implementation we might require driver From 5a71e70829b4d32f4e7dbe92472a37c5d10d2bfa Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 20 Nov 2023 14:49:06 +0100 Subject: [PATCH 41/47] fix transaction error in springboot --- .../kogito-addons-data-audit-jpa-springboot/pom.xml | 6 +----- .../src/main/resources/application-data-audit.properties | 4 ---- data-audit/kogito-addons-data-audit-springboot/pom.xml | 3 ++- .../springboot/SpringbootJPADataAuditEventPublisher.java | 3 +-- .../src/test/resources/application.properties | 3 ++- 5 files changed, 6 insertions(+), 13 deletions(-) delete mode 100644 data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index b8cb7d69b7..93cd4c7a51 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -41,16 +41,12 @@ spring-boot-starter ${version.org.springframework.boot} - - org.springframework.boot - spring-boot-starter-web - ${version.org.springframework.boot} - org.springframework.boot spring-boot-starter-data-jpa ${version.org.springframework.boot} + com.h2database h2 diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties deleted file mode 100644 index ab2bbe2a00..0000000000 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/resources/application-data-audit.properties +++ /dev/null @@ -1,4 +0,0 @@ -# configure jpa -data-audit.spring.jpa.properties.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl -data-audit.spring.jpa.mapping-resources=META-INF/entity-orm.xml,META-INF/job-orm.xml,META-INF/process-orm.xml,META-INF/usertask-orm.xml -data-audit.spring.jpa.show-sql=false \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml index 73de49a60d..abb9462ff5 100644 --- a/data-audit/kogito-addons-data-audit-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.kie.kogito - data-audit + data-audit 2.0.0-SNAPSHOT @@ -42,6 +42,7 @@ spring-boot-starter-web ${version.org.springframework.boot} + org.springframework.boot diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java index 67557ed4ac..120e4f6eea 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java @@ -31,7 +31,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; @Component public class SpringbootJPADataAuditEventPublisher implements EventPublisher { @@ -53,7 +52,7 @@ public void publish(Collection> events) { } @Override - @Transactional + public void publish(DataEvent event) { if (event instanceof ProcessInstanceDataEvent) { LOGGER.debug("Processing process instance event {}", event); diff --git a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties index 2ab6c0f432..f80c12af57 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties @@ -3,8 +3,9 @@ spring.datasource.jdbc-url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver - +spring.jta.enabled=true spring.jpa.database=H2 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop + From 0fe785affa0a935777077f7e227b05a9a4fed429 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Mon, 20 Nov 2023 15:49:37 +0100 Subject: [PATCH 42/47] fix try for transactions wthout transaction manager provider --- .../kogito-addons-data-audit-jpa-springboot/pom.xml | 1 - .../audit/springboot/SpringbootJPAAuditDataConfiguration.java | 2 ++ .../app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java | 2 ++ .../audit/springboot/SpringbootJPADataAuditEventPublisher.java | 2 ++ .../src/test/resources/application.properties | 1 - 5 files changed, 6 insertions(+), 2 deletions(-) diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index 93cd4c7a51..54ddd758a2 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -46,7 +46,6 @@ spring-boot-starter-data-jpa ${version.org.springframework.boot} - com.h2database h2 diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java index b1e3ba37cc..98734d9c23 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java @@ -20,9 +20,11 @@ import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration(proxyBeanMethods = false) @EntityScan(basePackages = "org.kie.kogito.app.audit.jpa.model") +@EnableTransactionManagement public class SpringbootJPAAuditDataConfiguration { } diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java index e463934ee3..87411013c1 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -26,6 +26,7 @@ import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -37,6 +38,7 @@ import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; @RestController +@Transactional public class GraphQLJPAAuditDataRouteMapping { private DataAuditQueryService dataAuditQueryService; diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java index 120e4f6eea..9f011e3394 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditEventPublisher.java @@ -31,8 +31,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; @Component +@Transactional public class SpringbootJPADataAuditEventPublisher implements EventPublisher { private static final Logger LOGGER = LoggerFactory.getLogger(SpringbootJPADataAuditEventPublisher.class); diff --git a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties index f80c12af57..60ec8b5691 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties +++ b/data-audit/kogito-addons-data-audit-springboot/src/test/resources/application.properties @@ -3,7 +3,6 @@ spring.datasource.jdbc-url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver -spring.jta.enabled=true spring.jpa.database=H2 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop From 0b177ac855469094200d1b0806b309655eb9d8a9 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Thu, 14 Dec 2023 10:15:54 +0100 Subject: [PATCH 43/47] fix --- .../mapper/UserTaskInstanceStateEventMerger.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java index 9802bf30d5..200ccae69a 100644 --- a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java +++ b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java @@ -19,6 +19,7 @@ package org.kie.kogito.index.event.mapper; import java.net.URI; +import java.util.List; import org.kie.kogito.event.usertask.UserTaskInstanceDataEvent; import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent; @@ -43,7 +44,13 @@ public boolean accept(Object event) { } @Override +<<<<<<< HEAD public UserTaskInstance merge(UserTaskInstance task, UserTaskInstanceDataEvent data) { +======= + public void merge(UserTaskInstance task, UserTaskInstanceDataEvent data) { + List finalState = List.of("Completed", "Aborted"); + +>>>>>>> 55104cd12 (fix user task events) UserTaskInstanceStateDataEvent event = (UserTaskInstanceStateDataEvent) data; LOGGER.debug("value before merging: {}", task); task.setId(event.getData().getUserTaskInstanceId()); @@ -55,9 +62,9 @@ public UserTaskInstance merge(UserTaskInstance task, UserTaskInstanceDataEvent Date: Wed, 22 Nov 2023 11:25:54 +0100 Subject: [PATCH 44/47] fix query --- data-audit/README.md | 33 +++++++++-------- .../graphql/type/ProcessInstanceNodeTO.java | 8 ++--- .../graphql/type/UserTaskInstanceStateTO.java | 35 +------------------ .../META-INF/data-audit-types.graphqls | 11 +++--- .../app/audit/jpa/JPADataAuditStore.java | 3 +- .../resources/META-INF/data-audit-orm.xml | 3 -- ...arkusAuditUserTaskInstanceServiceTest.java | 2 +- 7 files changed, 31 insertions(+), 64 deletions(-) diff --git a/data-audit/README.md b/data-audit/README.md index 68eb515f86..e567bba444 100644 --- a/data-audit/README.md +++ b/data-audit/README.md @@ -56,26 +56,29 @@ org.kie.kogito.app.audit.spi.GraphQLSchemaQueryProvider: this allow the subsyste You need to add two different dependencies to your project. - - org.kie.kogito - kogito-addons-data-audit- - ${version} - - - org.kie.kogito - kogito-addons-data-audit-jpa- - ${version} - - + + org.kie.kogito + kogito-addons-data-audit- + ${version} + + + org.kie.kogito + kogito-addons-data-audit-jpa- + ${version} + + + + + The first dependency is related how to you want to deploy it. In this case as collocated/embedded service The second dependency is which implementation you want to use. Each implementation might require additional dependencies. In our case for using JPA implementation we might require driver - - io.quarkus - quarkus-jdbc-h2 - + + io.quarkus + quarkus-jdbc-h2 + No additional configuration is requires besides the default datasource use by the application already. diff --git a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java index 9d4bb8f3b6..85498672a9 100644 --- a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java +++ b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/ProcessInstanceNodeTO.java @@ -57,7 +57,7 @@ public class ProcessInstanceNodeTO { private OffsetDateTime slaDueDate; - private String eventData; + private Object eventData; public ProcessInstanceNodeTO(String eventId, Date eventDate, String processType, String processId, String processVersion, String parentProcessInstanceId, String rootProcessId, String rootProcessInstanceId, String processInstanceId, @@ -82,7 +82,7 @@ public ProcessInstanceNodeTO(String eventId, Date eventDate, String processType, if (slaDueDate != null) { this.slaDueDate = OffsetDateTime.ofInstant(slaDueDate.toInstant(), ZoneId.of("UTC")); } - this.eventData = eventData; + this.eventData = JsonUtil.toJsonNode(eventData); } public String getEventId() { @@ -221,11 +221,11 @@ public void setSlaDueDate(OffsetDateTime slaDueDate) { this.slaDueDate = slaDueDate; } - public String getEventData() { + public Object getEventData() { return eventData; } - public void setEventData(String eventData) { + public void setEventData(Object eventData) { this.eventData = eventData; } diff --git a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java index dd5ed99913..67e88d46f2 100644 --- a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java +++ b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceStateTO.java @@ -37,8 +37,6 @@ public class UserTaskInstanceStateTO { private String businessKey; - private String taskId; - private String name; private String description; @@ -47,27 +45,20 @@ public class UserTaskInstanceStateTO { private String state; - private String nodeDefitionId; - - private String nodeInstanceId; - private String eventType; public UserTaskInstanceStateTO(String eventId, Date eventDate, String userTaskDefinitionId, String userTaskInstanceId, String processInstanceId, String businessKey, - String taskId, String name, String description, String actualUser, String state, String nodeDefitionId, String nodeInstanceId, String eventType) { + String name, String description, String actualUser, String state, String eventType) { this.eventId = eventId; this.eventDate = OffsetDateTime.ofInstant(eventDate.toInstant(), ZoneId.of("UTC")); this.userTaskDefinitionId = userTaskDefinitionId; this.userTaskInstanceId = userTaskInstanceId; this.processInstanceId = processInstanceId; this.businessKey = businessKey; - this.taskId = taskId; this.name = name; this.description = description; this.actualUser = actualUser; this.state = state; - this.nodeDefitionId = nodeDefitionId; - this.nodeInstanceId = nodeInstanceId; this.eventType = eventType; } @@ -119,14 +110,6 @@ public void setBusinessKey(String businessKey) { this.businessKey = businessKey; } - public String getTaskId() { - return taskId; - } - - public void setTaskId(String taskId) { - this.taskId = taskId; - } - public String getName() { return name; } @@ -159,14 +142,6 @@ public void setState(String state) { this.state = state; } - public String getNodeInstanceId() { - return nodeInstanceId; - } - - public void setNodeInstanceId(String nodeInstanceId) { - this.nodeInstanceId = nodeInstanceId; - } - public String getEventType() { return eventType; } @@ -175,12 +150,4 @@ public void setEventType(String eventType) { this.eventType = eventType; } - public String getNodeDefitionId() { - return nodeDefitionId; - } - - public void setNodeDefitionId(String nodeDefitionId) { - this.nodeDefitionId = nodeDefitionId; - } - } diff --git a/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls index 9200508f5d..44220f21c6 100644 --- a/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls +++ b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-types.graphqls @@ -40,8 +40,8 @@ type ProcessInstanceStateLog { type ProcessInstanceNodeLog { eventId : String! eventDate : DateTime - processType : String - processId : String + processType : String + processId : String processVersion : String parentProcessInstanceId : String rootProcessId : String @@ -53,8 +53,9 @@ type ProcessInstanceNodeLog { nodeName : String nodeInstanceId : String connection : String + workItemId : String slaDueDate : DateTime - eventData : String + eventData : JSON } type ProcessInstanceErrorLog { @@ -102,13 +103,11 @@ type UserTaskInstanceStateLog { userTaskInstanceId : String processInstanceId : String businessKey : String - taskId : String name : String description : String actualUser : String state : String - nodeDefitionId : String - nodeInstanceId : String + slaDueDate : DateTime eventType : String } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index fbf6389a67..1da85e5c07 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -181,7 +181,7 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta ProcessInstanceStateLog log = new ProcessInstanceStateLog(); setProcessCommonAttributes(log, event); log.setEventType(ProcessStateLogType.SLA_VIOLATION); - + log.setSlaDueDate(event.getData().getSlaDueDate()); entityManager.persist(log); } else { ProcessInstanceNodeLog log = new ProcessInstanceNodeLog(); @@ -191,6 +191,7 @@ public void storeProcessInstanceDataEvent(DataAuditContext context, ProcessInsta log.setNodeName(event.getData().getNodeName()); log.setNodeType(event.getData().getNodeType()); log.setEventType(NodeLogType.SLA_VIOLATION); + log.setSlaDueDate(event.getData().getSlaDueDate()); entityManager.persist(log); } } diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml index 932997dc8d..1d30aa1b01 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml @@ -545,13 +545,10 @@ log.user_task_instance_id, log.process_instance_id, log.business_key, - log.task_id, log.name, log.description, log.actual_user, log.state, - log.node_definition_id, - log.node_instance_id, log.event_type FROM Task_Instance_State_Log log LEFT JOIN Task_Instance_State_Log log_newer ON log.user_task_instance_id = log_newer.user_task_instance_id diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index 0e6549ab18..e89087d241 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -132,7 +132,7 @@ public void init() { public void testGetAllUserTaskInstanceState() { String query = - "{ GetAllUserTaskInstanceState { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, taskId, name, description, actualUser, state, nodeDefitionId, nodeInstanceId, eventType } }"; + "{ GetAllUserTaskInstanceState { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, name, description, actualUser, state, eventType } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) From d6bcde737cfd15fab921c6fbbf6a0e999563d730 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Martinez Date: Wed, 22 Nov 2023 12:18:29 +0100 Subject: [PATCH 45/47] fix plural queries --- .../type/UserTaskInstanceAttachmentTO.java | 4 +++- .../META-INF/data-audit-usertask-query.graphqls | 6 +++--- ...phQLSchemaUserTaskInstancesQueryProvider.java | 6 +++--- .../main/resources/META-INF/data-audit-orm.xml | 6 +++--- .../QuarkusAuditUserTaskInstanceServiceTest.java | 16 ++++++++-------- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java index 0eabf896f1..a5dd338c0e 100644 --- a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java +++ b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/UserTaskInstanceAttachmentTO.java @@ -59,7 +59,9 @@ public UserTaskInstanceAttachmentTO(String eventId, Date eventDate, String event this.businessKey = businessKey; this.attachmentId = attachmentId; this.attachmentName = attachmentName; - this.attachmentURI = URI.create(new String(attachmentURI)); + if (attachmentURI != null) { + this.attachmentURI = URI.create(new String(attachmentURI)); + } this.eventType = eventType; } diff --git a/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls index 861b884187..98ac378344 100644 --- a/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls +++ b/data-audit/data-audit-common/src/main/resources/META-INF/data-audit-usertask-query.graphqls @@ -2,7 +2,7 @@ type Query { GetAllUserTaskInstanceState (pagination: Pagination) : [UserTaskInstanceStateLog] GetAllUserTaskInstanceAssignments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAssignmentLog] GetAllUserTaskInstanceAttachments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceAttachmentLog] - GetAllUserTaskInstanceComment (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] - GetAllUserTaskInstanceDeadline (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] - GetAllUserTaskInstanceVariable (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] + GetAllUserTaskInstanceComments (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceCommentLog] + GetAllUserTaskInstanceDeadlines (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceDeadlineLog] + GetAllUserTaskInstanceVariables (userTaskInstanceId : String!, pagination: Pagination) : [UserTaskInstanceVariableLog] } \ No newline at end of file diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java index 5460acf1f9..9fa5a6f114 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAGraphQLSchemaUserTaskInstancesQueryProvider.java @@ -41,10 +41,10 @@ public List> queries() { return List.of( new JPASimpleNamedQuery("GetAllUserTaskInstanceState", UserTaskInstanceStateTO.class), new JPASimpleNamedQuery("GetAllUserTaskInstanceAttachments", UserTaskInstanceAttachmentTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceComment", UserTaskInstanceCommentTO.class), - new JPASimpleNamedQuery("GetAllUserTaskInstanceVariable", UserTaskInstanceVariableTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceComments", UserTaskInstanceCommentTO.class), + new JPASimpleNamedQuery("GetAllUserTaskInstanceVariables", UserTaskInstanceVariableTO.class), new JPAComplexNamedQuery("GetAllUserTaskInstanceAssignments", new UserTaskInstanceAssignmentTOMapper()), - new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadline", new UserTaskInstanceDeadlineTOMapper())); + new JPAComplexNamedQuery("GetAllUserTaskInstanceDeadlines", new UserTaskInstanceDeadlineTOMapper())); } public OffsetDateTime toDateTime(Date date) { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml index 1d30aa1b01..8d384fe7af 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/META-INF/data-audit-orm.xml @@ -600,7 +600,7 @@ - + SELECT log.event_id, @@ -621,7 +621,7 @@ - + SELECT log.event_id as eventId, log.event_date as eventDate, @@ -639,7 +639,7 @@ - + SELECT log.event_id, diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index e89087d241..eae56c4c4a 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -111,8 +111,8 @@ public void init() { UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); publisher.publish(attEvent); - attEvent = newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att2", "attName2", URI.create("http://localhost:8080/att2"), - UserTaskInstanceAttachmentEventBody.EVENT_TYPE_ADDED); + attEvent = newUserTaskInstanceAttachmentEvent(uEvent, "eventUser", "att2", "attName2", null, + UserTaskInstanceAttachmentEventBody.EVENT_TYPE_DELETED); publisher.publish(attEvent); UserTaskInstanceCommentDataEvent commentEvent; @@ -193,7 +193,7 @@ public void testGetAllUserTaskInstanceAttachments() { @Test public void testGetAllUserTaskInstanceComment() { String query = - "{ GetAllUserTaskInstanceComment (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, commentId, commentContent, eventType } }"; + "{ GetAllUserTaskInstanceComments (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, commentId, commentContent, eventType } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -204,7 +204,7 @@ public void testGetAllUserTaskInstanceComment() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetAllUserTaskInstanceComment"); + .extract().path("data.GetAllUserTaskInstanceComments"); assertThat(data).hasSize(1); @@ -213,7 +213,7 @@ public void testGetAllUserTaskInstanceComment() { @Test public void testGetAllUserTaskInstanceDeadline() { String query = - "{ GetAllUserTaskInstanceDeadline (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification } }"; + "{ GetAllUserTaskInstanceDeadlines (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, eventType, notification } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -224,7 +224,7 @@ public void testGetAllUserTaskInstanceDeadline() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetAllUserTaskInstanceDeadline"); + .extract().path("data.GetAllUserTaskInstanceDeadlines"); assertThat(data).hasSize(1); @@ -233,7 +233,7 @@ public void testGetAllUserTaskInstanceDeadline() { @Test public void testGetAllUserTaskInstanceVariable() { String query = - "{ GetAllUserTaskInstanceVariable (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue, variableType } }"; + "{ GetAllUserTaskInstanceVariables (userTaskInstanceId : \\\"1\\\") { eventId, eventDate, userTaskDefinitionId, userTaskInstanceId, processInstanceId, businessKey, variableId, variableName, variableValue, variableType } }"; query = wrapQuery(query); List> data = given() .contentType(ContentType.JSON) @@ -244,7 +244,7 @@ public void testGetAllUserTaskInstanceVariable() { .assertThat() .statusCode(200) .and() - .extract().path("data.GetAllUserTaskInstanceVariable"); + .extract().path("data.GetAllUserTaskInstanceVariables"); assertThat(data).hasSize(3); From 24335a1047c14f8aa34d45de7620919e966e2172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pere=20Fern=C3=A1ndez?= Date: Tue, 19 Dec 2023 15:11:51 +0100 Subject: [PATCH 46/47] Quarkus 3 upgrade fixes: - `999-SNAPSHOT` version bump - javax to jakarta migration - test fixes --- data-audit/data-audit-common-service/pom.xml | 2 +- data-audit/data-audit-common/pom.xml | 2 +- .../audit/graphql/type/JobExecutionTO.java | 5 ++-- data-audit/data-audit-quarkus-service/pom.xml | 2 +- ...uarkusDataAuditMessagingEventConsumer.java | 8 ++--- .../data-audit-quarkus-jpa-service/pom.xml | 2 +- .../pom.xml | 7 ++--- .../app/audit/jpa/JPADataAuditStore.java | 4 +-- .../jpa/model/AbstractProcessInstanceLog.java | 12 ++++---- .../model/AbstractUserTaskInstanceLog.java | 12 ++++---- .../app/audit/jpa/model/JobExecutionLog.java | 18 +++++------ .../jpa/model/ProcessInstanceErrorLog.java | 20 ++++++------- .../jpa/model/ProcessInstanceNodeLog.java | 22 +++++++------- .../jpa/model/ProcessInstanceStateLog.java | 30 +++++++++---------- .../jpa/model/ProcessInstanceVariableLog.java | 20 ++++++------- .../model/UserTaskInstanceAssignmentLog.java | 22 +++++++------- .../model/UserTaskInstanceAttachmentLog.java | 14 ++++----- .../jpa/model/UserTaskInstanceCommentLog.java | 14 ++++----- .../model/UserTaskInstanceDeadlineLog.java | 24 +++++++-------- .../jpa/model/UserTaskInstanceStateLog.java | 14 ++++----- .../model/UserTaskInstanceVariableLog.java | 18 +++++------ .../audit/jpa/queries/JPAAbstractQuery.java | 4 +-- .../jpa/queries/JPAComplexNamedQuery.java | 3 +- .../jpa/queries/JPASimpleNamedQuery.java | 3 +- .../app/audit/jpa/queries/MappingFile.java | 3 +- .../pom.xml | 2 +- .../QuarkusJPADataAuditContextFactory.java | 8 ++--- .../pom.xml | 2 +- .../SpringbootJPADataAuditContextFactory.java | 4 +-- .../kogito-addons-data-audit-jpa/pom.xml | 2 +- .../kogito-addons-data-audit-quarkus/pom.xml | 2 +- .../quarkus/GraphQLJPADataAuditRouter.java | 7 ++--- .../QuarkusJPADataAuditEventPublisher.java | 10 +++---- .../quarkus/QuarkusAuditJobServiceTest.java | 4 +-- ...uarkusAuditProcessInstanceServiceTest.java | 4 +-- ...arkusAuditUserTaskInstanceServiceTest.java | 4 +-- .../QuarkusEmbeddedJPADataAuditTest.java | 4 +-- .../pom.xml | 2 +- .../GraphQLJPAAuditDataRouteMapping.java | 3 +- .../SpringbootJPADataAuditTest.java | 2 +- data-audit/pom.xml | 2 +- .../kie/kogito/index/event/mapper/Merger.java | 19 ++++++++++++ .../UserTaskInstanceStateEventMerger.java | 4 --- 43 files changed, 190 insertions(+), 180 deletions(-) diff --git a/data-audit/data-audit-common-service/pom.xml b/data-audit/data-audit-common-service/pom.xml index c0b1807610..07d8bfbb9f 100644 --- a/data-audit/data-audit-common-service/pom.xml +++ b/data-audit/data-audit-common-service/pom.xml @@ -6,7 +6,7 @@ data-audit org.kie.kogito - 2.0.0-SNAPSHOT + 999-SNAPSHOT data-audit-common-service diff --git a/data-audit/data-audit-common/pom.xml b/data-audit/data-audit-common/pom.xml index 18f8ca512a..8a247b02eb 100644 --- a/data-audit/data-audit-common/pom.xml +++ b/data-audit/data-audit-common/pom.xml @@ -6,7 +6,7 @@ org.kie.kogito data-audit - 2.0.0-SNAPSHOT + 999-SNAPSHOT data-audit-common Kogito Apps :: Data Audit :: Common diff --git a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java index 7f70656e41..c8e649d73e 100644 --- a/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java +++ b/data-audit/data-audit-common/src/main/java/org/kie/kogito/app/audit/graphql/type/JobExecutionTO.java @@ -18,7 +18,6 @@ */ package org.kie.kogito.app.audit.graphql.type; -import java.math.BigInteger; import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Date; @@ -54,13 +53,13 @@ public JobExecutionTO() { } public JobExecutionTO(String jobId, Date expirationtime, Integer priority, String processInstanceId, String nodeInstanceId, - BigInteger repeatInterval, Integer repeatLimit, String scheduledId, Integer retries, String status, Integer executionCounter, Date eventDate) { + Long repeatInterval, Integer repeatLimit, String scheduledId, Integer retries, String status, Integer executionCounter, Date eventDate) { this.jobId = jobId; this.expirationTime = OffsetDateTime.ofInstant(expirationtime.toInstant(), ZoneId.of("UTC")); this.priority = priority; this.processInstanceId = processInstanceId; this.nodeInstanceId = nodeInstanceId; - this.repeatInterval = repeatInterval != null ? repeatInterval.longValue() : null; + this.repeatInterval = repeatInterval; this.repeatLimit = repeatLimit; this.scheduledId = scheduledId; this.retries = retries; diff --git a/data-audit/data-audit-quarkus-service/pom.xml b/data-audit/data-audit-quarkus-service/pom.xml index a67a6d940d..e8c773fe87 100644 --- a/data-audit/data-audit-quarkus-service/pom.xml +++ b/data-audit/data-audit-quarkus-service/pom.xml @@ -6,7 +6,7 @@ data-audit org.kie.kogito - 2.0.0-SNAPSHOT + 999-SNAPSHOT diff --git a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java index b6d15aa28e..38eddbd8d5 100644 --- a/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java +++ b/data-audit/data-audit-quarkus-service/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusDataAuditMessagingEventConsumer.java @@ -18,10 +18,6 @@ */ package org.kie.kogito.app.audit.quarkus; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.transaction.Transactional; - import org.eclipse.microprofile.reactive.messaging.Incoming; import org.kie.kogito.event.EventPublisher; import org.kie.kogito.event.job.JobInstanceDataEvent; @@ -32,6 +28,10 @@ import io.smallrye.common.annotation.Blocking; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; + import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_JOBS_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_PROCESSINSTANCES_EVENTS; import static org.kie.kogito.app.audit.api.SubsystemConstants.KOGITO_USERTASKINSTANCES_EVENTS; diff --git a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml index 9db698f1a1..0f7f031ef4 100644 --- a/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/data-audit-quarkus-jpa-service/pom.xml @@ -6,7 +6,7 @@ kogito-addons-data-audit-jpa org.kie.kogito - 2.0.0-SNAPSHOT + 999-SNAPSHOT data-audit-quarkus-jpa-service diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml index 822d5be4a8..9c734aeac8 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/pom.xml @@ -6,7 +6,7 @@ org.kie.kogito kogito-addons-data-audit-jpa - 2.0.0-SNAPSHOT + 999-SNAPSHOT kogito-addons-data-audit-jpa-common Kogito Apps :: Data Audit :: JPA :: Common @@ -28,9 +28,8 @@ jackson-core - javax.persistence - javax.persistence-api - 2.2 + jakarta.persistence + jakarta.persistence-api org.slf4j diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java index 1da85e5c07..8d51e98583 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java @@ -27,8 +27,6 @@ import java.util.Map; import java.util.function.Supplier; -import javax.persistence.EntityManager; - import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.jpa.model.AbstractProcessInstanceLog; import org.kie.kogito.app.audit.jpa.model.AbstractUserTaskInstanceLog; @@ -71,6 +69,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import jakarta.persistence.EntityManager; + public class JPADataAuditStore implements DataAuditStore { private static final Logger LOGGER = LoggerFactory.getLogger(JPADataAuditStore.class); diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java index 2f362fec93..bf3a7a300d 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractProcessInstanceLog.java @@ -21,15 +21,15 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.persistence.Transient; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.persistence.Transient; + import static org.kie.kogito.app.audit.jpa.model.ModelConstants.BUSINESS_KEY_LOG_LENGTH; @MappedSuperclass diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java index d22fa7e09a..ab4677fc37 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/AbstractUserTaskInstanceLog.java @@ -20,15 +20,15 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.persistence.Transient; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.persistence.Transient; + @MappedSuperclass public abstract class AbstractUserTaskInstanceLog { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java index 22d08132b7..450b112a45 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/JobExecutionLog.java @@ -21,15 +21,15 @@ import java.sql.Timestamp; import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; @Entity @Table(name = "Job_Execution_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java index 4cc220cf20..532b55d653 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceErrorLog.java @@ -19,18 +19,18 @@ package org.kie.kogito.app.audit.jpa.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; + import static org.kie.kogito.app.audit.jpa.model.ModelConstants.ERROR_LOG_LENGTH; @Entity @@ -91,4 +91,4 @@ public void setNodeInstanceId(String nodeInstanceId) { this.nodeInstanceId = nodeInstanceId; } -} \ No newline at end of file +} diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java index 2edfa9f2a4..0aeaf06e7a 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java @@ -21,17 +21,17 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; @Entity @Table(name = "Process_Instance_Node_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java index 676d882ef6..96f47f6ef4 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java @@ -22,21 +22,21 @@ import java.util.Date; import java.util.Set; -import javax.persistence.CollectionTable; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.ForeignKey; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import jakarta.persistence.CollectionTable; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; @Entity @Table(name = "Process_Instance_State_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java index 9206f09a29..76a528460b 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceVariableLog.java @@ -19,18 +19,18 @@ package org.kie.kogito.app.audit.jpa.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; + @Entity @Table(name = "Process_Instance_Variable_Log") @SequenceGenerator(name = "processInstanceVariableLogIdSeq", sequenceName = "PROCESS_INSTANCE_VARIABLE_LOG_ID_SEQ") @@ -84,4 +84,4 @@ public void setVariableValue(String variableValue) { this.variableValue = variableValue; } -} \ No newline at end of file +} diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java index 3a5d3c4db2..dd54c7415a 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAssignmentLog.java @@ -21,17 +21,17 @@ import java.util.List; -import javax.persistence.CollectionTable; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.ForeignKey; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.CollectionTable; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "Task_Instance_Assignment_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java index 349876efc2..0794d471f3 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceAttachmentLog.java @@ -21,13 +21,13 @@ import java.net.URL; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "Task_Instance_Attachment_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java index 9192601f37..3992b2fd66 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceCommentLog.java @@ -19,13 +19,13 @@ package org.kie.kogito.app.audit.jpa.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "Task_Instance_Comment_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java index e27d303570..3fee819639 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceDeadlineLog.java @@ -21,18 +21,18 @@ import java.util.Map; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.ForeignKey; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.MapKeyColumn; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.MapKeyColumn; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "Task_Instance_Deadline_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java index 6e8775a564..e7f0dca004 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceStateLog.java @@ -19,13 +19,13 @@ package org.kie.kogito.app.audit.jpa.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "Task_Instance_State_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java index a60c8ea585..5435901375 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/UserTaskInstanceVariableLog.java @@ -19,15 +19,15 @@ package org.kie.kogito.app.audit.jpa.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "Task_Instance_Variable_Log") diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java index 3b0f0a9300..b0dc015990 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAAbstractQuery.java @@ -23,8 +23,8 @@ import java.util.List; import java.util.Map; -import javax.persistence.EntityManager; -import javax.persistence.Query; +import jakarta.persistence.EntityManager; +import jakarta.persistence.Query; public abstract class JPAAbstractQuery { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java index 045dcf24cb..4efdc9629c 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPAComplexNamedQuery.java @@ -21,12 +21,11 @@ import java.util.List; import java.util.Map; -import javax.persistence.EntityManager; - import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import graphql.schema.DataFetchingEnvironment; +import jakarta.persistence.EntityManager; public class JPAComplexNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java index ccb3d04fd3..0624fda4de 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/JPASimpleNamedQuery.java @@ -21,13 +21,12 @@ import java.util.List; import java.util.Map; -import javax.persistence.EntityManager; - import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.jpa.queries.mapper.PojoMapper; import org.kie.kogito.app.audit.spi.GraphQLSchemaQuery; import graphql.schema.DataFetchingEnvironment; +import jakarta.persistence.EntityManager; public class JPASimpleNamedQuery extends JPAAbstractQuery implements GraphQLSchemaQuery> { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java index eb805bdb8f..b41a4dd423 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/queries/MappingFile.java @@ -20,7 +20,6 @@ import java.io.InputStream; -import javax.persistence.EntityManager; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -28,6 +27,8 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import jakarta.persistence.EntityManager; + public class MappingFile { public static String findInDefault(EntityManager entityManager, String queryName) { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml index dc2ed9fe4d..4f60023f3b 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/pom.xml @@ -6,7 +6,7 @@ kogito-addons-data-audit-jpa org.kie.kogito - 2.0.0-SNAPSHOT + 999-SNAPSHOT kogito-addons-data-audit-jpa-quarkus diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java index 776a27114d..40e35c1a18 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditContextFactory.java @@ -18,13 +18,13 @@ */ package org.kie.kogito.app.audit.quarkus; -import javax.enterprise.context.ApplicationScoped; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; - import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.spi.DataAuditContextFactory; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; + @ApplicationScoped public class QuarkusJPADataAuditContextFactory implements DataAuditContextFactory { diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml index 54ddd758a2..072f923b95 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/pom.xml @@ -6,7 +6,7 @@ kogito-addons-data-audit-jpa org.kie.kogito - 2.0.0-SNAPSHOT + 999-SNAPSHOT diff --git a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java index 32f933e338..c7c0b09259 100644 --- a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java +++ b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditContextFactory.java @@ -18,13 +18,13 @@ */ package org.kie.kogito.app.audit.springboot; -import javax.persistence.EntityManager; - import org.kie.kogito.app.audit.api.DataAuditContext; import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import jakarta.persistence.EntityManager; + @Component public class SpringbootJPADataAuditContextFactory implements DataAuditContextFactory { diff --git a/data-audit/kogito-addons-data-audit-jpa/pom.xml b/data-audit/kogito-addons-data-audit-jpa/pom.xml index e35ac86f8a..1f7e867c75 100644 --- a/data-audit/kogito-addons-data-audit-jpa/pom.xml +++ b/data-audit/kogito-addons-data-audit-jpa/pom.xml @@ -6,7 +6,7 @@ data-audit org.kie.kogito - 2.0.0-SNAPSHOT + 999-SNAPSHOT pom diff --git a/data-audit/kogito-addons-data-audit-quarkus/pom.xml b/data-audit/kogito-addons-data-audit-quarkus/pom.xml index 8beb19c01e..eca4a4b9bd 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/pom.xml +++ b/data-audit/kogito-addons-data-audit-quarkus/pom.xml @@ -6,7 +6,7 @@ org.kie.kogito data-audit - 2.0.0-SNAPSHOT + 999-SNAPSHOT kogito-addons-data-audit-quarkus diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java index 462c7fe301..28df810396 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/GraphQLJPADataAuditRouter.java @@ -18,10 +18,6 @@ */ package org.kie.kogito.app.audit.quarkus; -import javax.annotation.PostConstruct; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; - import org.kie.kogito.app.audit.api.DataAuditQueryService; import org.kie.kogito.app.audit.spi.DataAuditContextFactory; @@ -32,6 +28,9 @@ import io.vertx.ext.web.handler.graphql.GraphQLHandlerOptions; import graphql.GraphQL; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import static io.quarkus.vertx.web.Route.HttpMethod.GET; import static io.quarkus.vertx.web.Route.HttpMethod.POST; diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index c847447871..52678d0e62 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -20,11 +20,6 @@ import java.util.Collection; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.transaction.Transactional; -import javax.transaction.Transactional.TxType; - import org.kie.kogito.app.audit.api.DataAuditStoreProxyService; import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.kie.kogito.event.DataEvent; @@ -35,6 +30,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import jakarta.transaction.Transactional.TxType; + @ApplicationScoped public class QuarkusJPADataAuditEventPublisher implements EventPublisher { diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java index e3dbb30006..152306e74d 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditJobServiceTest.java @@ -21,8 +21,6 @@ import java.util.List; import java.util.Map; -import javax.inject.Inject; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -35,6 +33,8 @@ import io.quarkus.test.junit.QuarkusTest; import io.restassured.http.ContentType; +import jakarta.inject.Inject; + import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java index 2cbb4fba61..83f9954039 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditProcessInstanceServiceTest.java @@ -21,8 +21,6 @@ import java.util.List; import java.util.Map; -import javax.inject.Inject; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -40,6 +38,8 @@ import io.quarkus.test.junit.QuarkusTest; import io.restassured.http.ContentType; +import jakarta.inject.Inject; + import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java index eae56c4c4a..f1c7a52ab1 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusAuditUserTaskInstanceServiceTest.java @@ -23,8 +23,6 @@ import java.util.List; import java.util.Map; -import javax.inject.Inject; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -43,6 +41,8 @@ import io.quarkus.test.junit.QuarkusTest; import io.restassured.http.ContentType; +import jakarta.inject.Inject; + import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; import static org.kie.kogito.app.audit.quarkus.DataAuditTestUtils.newUserTaskInstanceAssignmentEvent; diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java index fa971ca9be..6edbcb0fb9 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/test/java/org/kie/kogito/app/audit/quarkus/QuarkusEmbeddedJPADataAuditTest.java @@ -23,8 +23,6 @@ import java.util.Map; import java.util.UUID; -import javax.inject.Inject; - import org.junit.jupiter.api.Test; import org.kie.kogito.app.audit.api.SubsystemConstants; import org.kie.kogito.event.EventPublisher; @@ -38,6 +36,8 @@ import io.restassured.http.ContentType; import io.restassured.response.Response; +import jakarta.inject.Inject; + import static io.restassured.RestAssured.given; @QuarkusTest diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml b/data-audit/kogito-addons-data-audit-springboot/pom.xml index abb9462ff5..88aa5b5a5b 100644 --- a/data-audit/kogito-addons-data-audit-springboot/pom.xml +++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml @@ -6,7 +6,7 @@ org.kie.kogito data-audit - 2.0.0-SNAPSHOT + 999-SNAPSHOT kogito-addons-data-audit-springboot diff --git a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java index 87411013c1..4d99ceff1a 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/GraphQLJPAAuditDataRouteMapping.java @@ -20,8 +20,6 @@ import java.util.Map; -import javax.annotation.PostConstruct; - import org.kie.kogito.app.audit.api.DataAuditQueryService; import org.kie.kogito.app.audit.spi.DataAuditContextFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +32,7 @@ import com.fasterxml.jackson.databind.JsonNode; import graphql.ExecutionResult; +import jakarta.annotation.PostConstruct; import static org.kie.kogito.app.audit.api.SubsystemConstants.DATA_AUDIT_PATH; diff --git a/data-audit/kogito-addons-data-audit-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java b/data-audit/kogito-addons-data-audit-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java index 65c0c4a0c6..0ffc2136a3 100644 --- a/data-audit/kogito-addons-data-audit-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java +++ b/data-audit/kogito-addons-data-audit-springboot/src/test/java/org/kie/kogito/app/audit/springboot/SpringbootJPADataAuditTest.java @@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import io.restassured.http.ContentType; import io.restassured.response.Response; diff --git a/data-audit/pom.xml b/data-audit/pom.xml index e541b41fd6..103a871d43 100644 --- a/data-audit/pom.xml +++ b/data-audit/pom.xml @@ -7,7 +7,7 @@ org.kie.kogito kogito-apps-build-parent - 2.0.0-SNAPSHOT + 999-SNAPSHOT ../kogito-apps-build-parent/pom.xml diff --git a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/Merger.java b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/Merger.java index 0f685661ed..b036703303 100644 --- a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/Merger.java +++ b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/Merger.java @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + * + * 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.kie.kogito.index.event.mapper; public interface Merger { diff --git a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java index 200ccae69a..7fa52f5b1f 100644 --- a/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java +++ b/data-index/data-index-common/src/main/java/org/kie/kogito/index/event/mapper/UserTaskInstanceStateEventMerger.java @@ -44,13 +44,9 @@ public boolean accept(Object event) { } @Override -<<<<<<< HEAD public UserTaskInstance merge(UserTaskInstance task, UserTaskInstanceDataEvent data) { -======= - public void merge(UserTaskInstance task, UserTaskInstanceDataEvent data) { List finalState = List.of("Completed", "Aborted"); ->>>>>>> 55104cd12 (fix user task events) UserTaskInstanceStateDataEvent event = (UserTaskInstanceStateDataEvent) data; LOGGER.debug("value before merging: {}", task); task.setId(event.getData().getUserTaskInstanceId()); From d157e3a7595db61963c45d97173b22b02cbf335e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pere=20Fern=C3=A1ndez?= Date: Fri, 22 Dec 2023 13:36:59 +0100 Subject: [PATCH 47/47] - fix log --- .../app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java index 52678d0e62..21261a5a1d 100644 --- a/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java +++ b/data-audit/kogito-addons-data-audit-quarkus/src/main/java/org/kie/kogito/app/audit/quarkus/QuarkusJPADataAuditEventPublisher.java @@ -68,7 +68,7 @@ public void publish(DataEvent event) { proxy.storeUserTaskInstanceDataEvent(dataAuditContextFactory.newDataAuditContext(), (UserTaskInstanceDataEvent) event); return; } else if (event instanceof JobInstanceDataEvent) { - LOGGER.info("Processing job instance event {}", event); + LOGGER.debug("Processing job instance event {}", event); proxy.storeJobDataEvent(dataAuditContextFactory.newDataAuditContext(), (JobInstanceDataEvent) event); return; }