Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENDOC-379 Create documentation for the PDA Plugin #360

Merged
merged 7 commits into from
Dec 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 20 additions & 30 deletions vuepress/docs/next/docs/concepts/pda-architecture.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,30 @@
# PDA Architecture

The objective of this document is to provide an explanation for the components
that compose the Process Driven Applications plugin (PDA) architecture from a
deployment perspective as well as how they interact with each other.
This document describes the components that comprise the Process Driven Applications (PDA) plugin architecture with respect to
deployment, as well as how they interact with each other.

The image below shows the components in high level:
The image below shows the high level components.

![PDA Architecture](./img/pda-architecture.png)

## PDA MFEs

The PDA Micro Frontends run on the browser and they render the UI custom
components the user interacts with. These components are written in React and
they fetch data from the PDA API, passing the Keycloak token for authentication.
The MFEs also make calls to the Entando Core API in order to retrieve the
settings required for the configuration UI. These components will be available
on Entando App Builder after the PDA plugin bundle is installed and the user
can create pages with them.
The PDA micro frontends run on the browser, rendering the custom UI
components the user interacts with. These components are written in React and fetch data from the PDA API, passing the Keycloak token for authentication.

The MFEs also make calls to the Entando Core API to retrieve the
settings required for the UI configuration. These components are available to assist with page creation after the PDA plugin bundle is installed.

The source code for this component:
<https://github.com/entando/entando-process-driven-plugin/tree/master/widgets>

## PDA API

The Spring Boot application that communicates with the engine and make its data
available in a Rest API. It interacts with Keycloak to validate the token and
with the sidecar to retrieve the connections/sensitive data, depending on how it
was deployed. The application shouldn't call specific engine classes directly,
instead it always calls the abstractions defined in PDA Core library. The engine
implementation to use is decided at runtime based on the connection details
provided. It is important to note that the PDA API application is stateless,
since it doesn't have a database. All data available on the API is retrieved
from the BPM engine. After bundle installation, it will be deployed as a
microservice in the Kubernetes infrastructure and an Ingress will be created to
The PDA API is a Spring Boot application that communicates with the BPM engine, and BPM engine data is made available in a Rest API. Subject to deployment configuration, the PDA API interacts with Keycloak to validate the token, and with the sidecar to retrieve the connection and sensitive data. Instead of calling specific engine classes directly, the application calls the abstractions defined in the PDA Core library.

The engine implementation is determined at runtime based on the connection details provided. It is important to note that the PDA API does not have a database and is therefore stateless. All data available in the API are retrieved
from the BPM engine. After bundle installation, the API is deployed as a
microservice in the Kubernetes infrastructure. An Ingress is also created to
make the API available to the MFEs, as described by the Entando Plugin custom
resource.

Expand All @@ -41,28 +33,26 @@ The source code for this component:

## Sidecar

The sidecar is another application (docker container) deployed in the same Pod
as the PDA API. It exposes services to manage connection details, which will be
stored as secrets in Kubernetes. The PDA API communicates with the sidecar to
The sidecar is another application (Docker container) deployed in the same Pod
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure how to track it but I think the sidecar has now been removed in 6.3.2. @Lyd1aCla1r3, once you get your local copy working, let's look at it together. If it's actually gone, we can remove all reference to the sidecar in the /next docs.

as the PDA API. It exposes services to manage connection details, which are
stored as Secrets in Kubernetes. The PDA API communicates with the sidecar to
manage BPM engine connection details.

The source code for this component:
<https://github.com/entando/entando-plugin-sidecar>

## PDA Core

This is the library that defines the interfaces and abstractions that should be
implemented to interact with specific BPM engines. This way it is possible to
have multiple engine implementations at the same time.
The PDA Core is the library that defines the interface and abstraction implementations that interact with specific BPM engines. It allows multiple engine implementations to exist simultaneously.

The source code for this component:
<https://github.com/entando/pda-core-engine>

## PAM Impl

The Red Hat PAM implementation for the PDA Core library. If the connection maps
to a PAM engine, these are the classes that are going to be executed when the
PDA API requests for engine operations. This implementation communicates with
The PAM Impl is the Red Hat PAM implementation for the PDA Core library. If the connection maps
to a PAM engine, these are the classes that are executed when the
PDA API requests engine operations. This implementation communicates with
the Kie Server, which executes the defined process operations.

The source code for this component:
Expand Down
Loading