-
Notifications
You must be signed in to change notification settings - Fork 23
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
Changes from 2 commits
a59f206
696e73d
6b59e9f
ebc9b5c
5d09dd8
92f039a
5d4bcc7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,31 @@ | ||
# 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 Entando engine, and 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. | ||
|
||
Engine implementation is determined at runtime based on the connection details | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Minor, I would say "The engine implementation" |
||
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. | ||
|
||
|
@@ -41,28 +34,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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"BPM engine, and BPM engine data"