From 35ccd491a94a6e1b9b3cfeb7f81cfc7281213bf3 Mon Sep 17 00:00:00 2001 From: Walter Medvedeo Date: Mon, 4 Mar 2024 20:03:04 +0100 Subject: [PATCH] kie-kogito-docs-554: Guide to help DB Admins to understand Serverless Workflows persistence (#555) --- .../Persistence-Configuration.drawio | 40 +++++++++ .../persistence/Persistence-Configuration.png | Bin 0 -> 21329 bytes .../Persistence-Core-Concepts.drawio | 73 ++++++++++++++++ .../persistence/Persistence-Core-Concepts.png | Bin 0 -> 46237 bytes .../Persistence-PostgreSQL-Advanced.drawio | 55 ++++++++++++ .../Persistence-PostgreSQL-Advanced.png | Bin 0 -> 44415 bytes serverlessworkflow/modules/ROOT/nav.adoc | 2 + .../persistence-core-concepts.adoc | 44 ++++++++++ .../persistence-with-postgresql.adoc | 32 ++++--- .../postgresql-advanced-concepts.adoc | 78 ++++++++++++++++++ 10 files changed, 307 insertions(+), 17 deletions(-) create mode 100644 serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.drawio create mode 100644 serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.png create mode 100644 serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Core-Concepts.drawio create mode 100644 serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Core-Concepts.png create mode 100644 serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-PostgreSQL-Advanced.drawio create mode 100644 serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-PostgreSQL-Advanced.png create mode 100644 serverlessworkflow/modules/ROOT/pages/use-cases/advanced-developer-use-cases/persistence/persistence-core-concepts.adoc create mode 100644 serverlessworkflow/modules/ROOT/pages/use-cases/advanced-developer-use-cases/persistence/postgresql-advanced-concepts.adoc diff --git a/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.drawio b/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.drawio new file mode 100644 index 000000000..09b121c3b --- /dev/null +++ b/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.drawio @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.png b/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..25a4ec24a015d7ce8c2d195712e2a58804e1bb75 GIT binary patch literal 21329 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

ZBOK4D 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 f{)ZrPF6jE?yA}$u<^kmIE-Cc2ji6PU4w3%=$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Core-Concepts.png b/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-Core-Concepts.png new file mode 100644 index 0000000000000000000000000000000000000000..393f165638e12bfdb84da3a5c52d0e728ad7eb32 GIT binary patch literal 46237 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 xAWQ^)2y0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-PostgreSQL-Advanced.png b/serverlessworkflow/modules/ROOT/assets/images/persistence/Persistence-PostgreSQL-Advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2ee5a82a5e7f2839e2872f02b9e303d62e35a2 GIT binary patch literal 44415 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 directly in your project. -For example, when a process reaches a `callback` or needs to wait for an event, then the execution of the process is paused and the engine takes a snapshot of the workflow data. The snapshot is persisted in the database as a binary format along with process metadata information. The process metadata information includes process ID, process instance ID, and process version. - -Runtime persistence is used for storing data, which is required to resume the workflow execution of a process instance. Once a process is completed, the related data is removed from the database. This means that only required data to resume the execution is persisted. - -In {product_name}, you can enable persistence using add-ons. This document describes the use of the `kogito-addons-quarkus-persistence-jdbc` add-on, which is based on Java Database Connectivity (JDBC) along with PostgreSQL. - -The `kogito-addons-quarkus-persistence-jdbc` add-on also extends on the Quarkus capabilities and you can use the available features directly from Quarkus JDBC support. For more information about Quarkus and JDBC, see link:{quarkus_datasource_guide}[Quarkus Datasources]. - -You can also see the `serverless-workflow-callback-quarkus` example application in GitHub repository. To execute the `serverless-workflow-callback-quarkus` example application, you can follow the instructions mentioned in the `README` file. To clone the `kogito-example` repository, use the following command: - -.Clone `kogito-examples` repository -[source,shell] +.Getting the serverless-workflow-callback-quarkus application +. In a command terminal, clone the `kogito-examples` repository, navigate to the cloned directory, and follow link:{kogito_sw_examples_url}/serverless-workflow-callback-quarkus/README.md[these steps]: +[source, bash] ---- -git clone git@github.com:apache/incubator-kie-kogito-examples.git +git clone https://github.com/apache/incubator-kie-kogito-examples.git + +cd kogito-examples/serverless-workflow-examples/serverless-workflow-callback-quarkus ---- .Prerequisites @@ -41,9 +36,10 @@ include::../../../../pages/_common-content/getting-started-requirement.adoc[] [NOTE] ==== -This document relies on running PostgreSQL as a Docker service, even though PostgreSQL installation is mentioned as a prerequisite. +This document relies on running PostgreSQL as a Docker service, however, if you are not following the `serverless-workflow-callback-quarkus` example you can use your own PostgreSQL installation. ==== +[#configuration_procedure] .Procedure . Add required dependencies to the `pom.xml` file of your project to use the persistence add-on: + @@ -97,6 +93,7 @@ quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/postgres . Create PostgreSQL database schema. + +[#create-database-schema] -- The persistence add-on uses link:{flyway_url}[Flyway] to create the database schema. To enable the database schema creation during the runtime startup, you must set the following properties in the `application.properties` file. @@ -166,7 +163,8 @@ The following table serves as a quick reference of commonly used persistence con [[postgresql-persistence-additional-resources]] == Additional resources +* xref:use-cases/advanced-developer-use-cases/persistence/postgresql-advanced-concepts.adoc[Postgresql Advanced Concepts] +* xref:use-cases/advanced-developer-use-cases/persistence/postgresql-flyway-migration.adoc[PostgreSQL Database Migration] * xref:use-cases/advanced-developer-use-cases/persistence/integration-tests-with-postgresql.adoc[{product_name} integration test using PostgreSQL] -* xref:use-cases/advanced-developer-use-cases/persistence/postgresql-flyway-migration.adoc[Migrating Your PostgreSQL Database] include::../../../../pages/_common-content/report-issue.adoc[] \ No newline at end of file diff --git a/serverlessworkflow/modules/ROOT/pages/use-cases/advanced-developer-use-cases/persistence/postgresql-advanced-concepts.adoc b/serverlessworkflow/modules/ROOT/pages/use-cases/advanced-developer-use-cases/persistence/postgresql-advanced-concepts.adoc new file mode 100644 index 000000000..26ea3e24c --- /dev/null +++ b/serverlessworkflow/modules/ROOT/pages/use-cases/advanced-developer-use-cases/persistence/postgresql-advanced-concepts.adoc @@ -0,0 +1,78 @@ += Postgresql Advanced Concepts +:compat-mode!: +// Metadata: +:description: Running Quarkus Workflow Application using PostgresSQL +:keywords: kogito, workflow, quarkus, serverless, quarkus-cli, persistence, postgresql +:flyway_url: https://flywaydb.org/ + +This document shows a detailed view of the database structure when you use the PostgreSQL persistence. + +.Prerequisites +* You are familiar with the xref:use-cases/advanced-developer-use-cases/persistence/persistence-core-concepts.adoc[Persistence Core concepts] guide +* You are familiar with the xref:use-cases/advanced-developer-use-cases/persistence/persistence-with-postgresql.adoc[Persistence with PostreSQL] guide + +As it was introduced in the xref:use-cases/advanced-developer-use-cases/persistence/persistence-core-concepts.adoc[Persistence Core concepts], every workflow instance requires some status information and data to execute, this information is automatically managed by the workflow's runtime. And is persisted at different moments of the workflow execution in the form of a snapshot. + +In the following diagram you can see the tables that support these information: + +image::persistence/Persistence-PostgreSQL-Advanced.png[] + +[NOTE] +==== +Regular backup procedures are not performed by the workflow's runtime persistence, and thus, they must be provided by the installation owner. +==== + +== `process_instances` +This table stores the workflow snapshots. These snapshots are stored in binary format, and by default, are maintained in the database as long as the workflow instance is active. When a workflow instance finalizes its execution, the corresponding snapshot is removed from the database for optimization purposes. +However, if you have installed the xref:data-index/data-index-core-concepts.adoc[Data Index] service, information about that workflow execution is kept by this service. + +[source, sql] +---- +CREATE TABLE process_instances +( + id character(36) NOT NULL, + payload bytea NOT NULL, + process_id character varying NOT NULL, + version bigint, + process_version character varying, + CONSTRAINT process_instances_pkey PRIMARY KEY (id) +); +CREATE INDEX idx_process_instances_process_id ON process_instances (process_id, id, process_version); +---- + +== `correlation_instances` +This table stores the information about the xref:eventing/event-correlation-with-workflows.adoc[Event Correlations] defined for a workflow. + +[source, sql] +---- +CREATE TABLE correlation_instances +( + id character(36) NOT NULL, + encoded_correlation_id character varying(36) NOT NULL UNIQUE, + correlated_id character varying(36) NOT NULL, + correlation json NOT NULL, + version bigint, + CONSTRAINT correlation_instances_pkey PRIMARY KEY (id) +); +CREATE INDEX idx_correlation_instances_encoded_id ON correlation_instances (encoded_correlation_id); +CREATE INDEX idx_correlation_instances_correlated_id ON correlation_instances (correlated_id); +---- + +== `flyway_schema_history` +If the link:{flyway_url}[Flyway] database schema generation was enabled for the current workflow project, this table contains information about the schema versions and the corresponding updates and that framework completely manages it. + +* To enable the Flyway managed database schema generation, you must follow this xref:use-cases/advanced-developer-use-cases/persistence/persistence-with-postgresql.adoc#create-database-schema[procedure]. +* To create the database schema manually, you must be sure that the following application property `quarkus.flyway.migrate-at-start` is not configured, or is set to `false`, and follow this xref:use-cases/advanced-developer-use-cases/persistence/postgresql-flyway-migration.adoc#manually-executing-scripts[procedure]. + +[[postgresql-persistence-additional-resources]] +== Additional resources + +* xref:use-cases/advanced-developer-use-cases/persistence/postgresql-flyway-migration.adoc[PostgreSQL Database Migration] +* xref:use-cases/advanced-developer-use-cases/persistence/integration-tests-with-postgresql.adoc[{product_name} integration test using PostgreSQL] + +include::../../../_common-content/report-issue.adoc[] + + + + +