-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #236 from wkspower/develop
moving docs into project repo and updating CI/CD
- Loading branch information
Showing
63 changed files
with
31,099 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
name: Deploy | ||
name: deploy(disabled) | ||
|
||
on: | ||
workflow_dispatch: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,8 +3,7 @@ name: Build artifacts | |
on: | ||
push: | ||
branches: | ||
- main | ||
- develop | ||
- "**" | ||
workflow_dispatch: | ||
|
||
env: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
name: deploy docs website | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: install dependencies | ||
run: yarn --cwd apps/react/docs install | ||
|
||
- name: build website | ||
run: PROD=true GTAG_ID=${{ secrets.GTAG_ID }} yarn --cwd apps/react/docs build | ||
|
||
- name: Set AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v1 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_S3_DOCS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_S3_DOCS_SECRET_ACCESS_KEY }} | ||
aws-region: us-east-1 | ||
|
||
- name: S3 Publisher | ||
uses: osiegmar/s3-publisher-action@v1 | ||
with: | ||
bucket: ${{ secrets.AWS_S3_DOCS_BUCKET }} | ||
dir: apps/react/docs/build | ||
delete-orphaned: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
||
.env | ||
|
||
.docusaurus | ||
|
||
# dependencies | ||
/node_modules | ||
/.pnp | ||
.pnp.js | ||
|
||
# testing | ||
/coverage | ||
|
||
# production | ||
/build | ||
|
||
# misc | ||
.DS_Store | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
/.idea/ | ||
|
||
.vscode |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Website | ||
|
||
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. | ||
|
||
### Installation | ||
|
||
``` | ||
$ yarn | ||
``` | ||
|
||
### Local Development | ||
|
||
``` | ||
$ yarn start | ||
``` | ||
|
||
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. | ||
|
||
### Build | ||
|
||
``` | ||
$ yarn build | ||
``` | ||
|
||
This command generates static content into the `build` directory and can be served using any static contents hosting service. | ||
|
||
### Deployment | ||
|
||
Using SSH: | ||
|
||
``` | ||
$ USE_SSH=true yarn deploy | ||
``` | ||
|
||
Not using SSH: | ||
|
||
``` | ||
$ GIT_USER=<Your GitHub username> yarn deploy | ||
``` | ||
|
||
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
module.exports = { | ||
presets: [require.resolve('@docusaurus/core/lib/babel/preset')], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- | ||
id: intro-video | ||
title: Introduction Video | ||
--- | ||
|
||
export const Video = () => ( | ||
<div style={{ padding: '56.25% 0 0 0', position: 'relative' }}> | ||
<iframe | ||
src="https://player.vimeo.com/video/869062168?badge=0&autopause=0&quality_selector=1&progress_bar=1&player_id=0&app_id=58479" | ||
frameBorder="0" | ||
allow="autoplay; fullscreen; picture-in-picture" | ||
style={{ | ||
position: 'absolute', | ||
top: 0, | ||
left: 0, | ||
width: '100%', | ||
height: '100%', | ||
}} | ||
title="wks-generic-demo" | ||
></iframe> | ||
<script src="https://player.vimeo.com/api/player.js"></script> | ||
</div> | ||
); | ||
|
||
<Video /> | ||
|
||
## Cases Definitions | ||
|
||
Live demonstration of the WKS Platform. |
82 changes: 82 additions & 0 deletions
82
apps/react/docs/docs/01-Introduction/02-platform-architecture.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
--- | ||
id: platform-architecture | ||
title: Platform Architecture | ||
--- | ||
|
||
## The platform consists of the following components: | ||
|
||
1. **Camunda**: A BPM (Business Process Management) platform used for workflow automation and process execution. | ||
2. **Case Engine - Rest API**: A custom REST API service for the case engine, providing case-related functionality. | ||
3. **Case Engine - Camunda External Tasks**: Interacts with the BPM engine to process async operations within a business process. | ||
4. **E-mail to Case**: A service responsible for converting emails into cases in the platform. | ||
5. **Storage API**: An API service for interacting with the Minio storage. | ||
6. **Case Portal**: A web application built with React, serving as the user interface for interacting with the platform. | ||
7. **Websocket Publisher**: Responsible for sending backend event notifications to the UI. | ||
8. **Novu Publisher**: Integrates with [Novu](https://novu.co/), a communication management platform offering simple components and APIs for managing all communication channels in one place, including Email, SMS, Direct, In-App, and Push notifications. | ||
9. **Kafka**: Serves as the middleware for all asynchronous event processing on the platform, facilitating seamless communication between components. It is utilized by the Websocket Publisher and Novu Publisher to capture and handle backend events efficiently. | ||
10. **Minio**: An object storage server used for storing and accessing files and data. | ||
11. **MongoDB**: A document-oriented NoSQL database used for persistent data storage. | ||
12. **OPA**: Open Policy Agent, used for policy-based authorization and access control. | ||
13. **Traefik**: A reverse proxy and load balancer used for routing and securing HTTP traffic to different services. | ||
14. **Keycloak**: An open-source identity and access management solution used for authentication and authorization. | ||
15. **Demo Data Loader**: A service responsible for loading demo data into the platform. | ||
|
||
## Architecture Overview | ||
|
||
The platform architecture is composed of multiple microservices, each fulfilling specific functions and communicating with each other to provide a cohesive system. | ||
|
||
The main architectural components are shown in the diagram below and are elaborated on in the further sections. | ||
![Platform Architecture](../../static/img/wks-platform-architecture.svg) | ||
|
||
### Custom API Services | ||
|
||
Several custom API services are developed to provide specific functionalities within the platform: | ||
- **Case Engine - Rest API**: This API service exposes functionality related to the case engine, allowing the creation, modification, and retrieval of cases. | ||
- **Case Engine - Camunda External Tasks**: Camunda External tasks interacts with the BPM engine and performs specific tasks related to business process management. | ||
- **E-mail to case**: This service converts incoming emails into cases within the platform, automating the process of creating cases from email communication. | ||
- **Storage API**: This API service enables interaction with the Minio storage, allowing other services to store and retrieve files and data. | ||
- **Websocket Publisher**: Ensures seamless transmission of backend event notifications to the User Interface (UI), keeping your interface updated in real-time. | ||
- **Novu Publisher**: Seamlessly integrates with [Novu](https://novu.co/), a comprehensive communication management platform. Novu offers intuitive components and APIs, centralizing the management of all communication channels, including Email, SMS, Direct, In-App, and Push notifications, simplifying your communication workflows. | ||
- **Demo data loader** service is responsible for loading demo data into the platform. It interacts with MongoDB, the BPM engine, and Keycloak to populate the necessary data for the platform's operation. | ||
|
||
### Business Process Management | ||
|
||
Camunda is used as the BPM platform, providing workflow automation and process execution capabilities. It allows the definition and execution of complex business processes, managing process instances, tasks, and user interactions. | ||
|
||
### User Interface | ||
|
||
The `case-portal` web application serves as the user interface for the platform. It is built with React and provides a user-friendly interface for interacting with cases, processes, and platform functionalities. | ||
|
||
### Storage | ||
|
||
Minio is employed as the object storage server, providing durable and scalable storage for files and data within the platform. It offers an S3-compatible API and allows services to store and retrieve data from the storage backend. | ||
|
||
### Database | ||
|
||
MongoDB is the chosen NoSQL database for persistent data storage. It provides high performance, scalability, and flexibility for storing structured and unstructured data. Services within the platform interact with MongoDB for data persistence and retrieval. | ||
|
||
### Authorization and Access Control | ||
|
||
OPA (Open Policy Agent) is integrated into the platform for policy-based authorization and access control. It enables fine-grained control over access to platform resources based on defined policies. | ||
|
||
### Identity and Access Management | ||
|
||
Keycloak is utilized as the identity and access management solution. It enables user authentication, authorization, and user management functionalities within the platform. Keycloak ensures secure access to platform resources and APIs. | ||
|
||
### Reverse Proxy and Load Balancer | ||
|
||
Traefik is utilized as the reverse proxy and load balancer. It provides routing capabilities, SSL termination, and load balancing for the services deployed in the platform. Traefik enables secure access to services through HTTP and HTTPS protocols. | ||
|
||
### Kafka Event Hub | ||
Kafka plays a pivotal role as the event hub within the platform, supporting seamless communication between services and ensuring real-time event processing. It serves as the backbone for asynchronous event handling, facilitating reliable and scalable communication between components. | ||
|
||
Kafka supports both Websockets and Novu integrations, enabling the Websocket Publisher and Novu Publisher to capture and process backend events efficiently. By centralizing event streams and decoupling producers and consumers, Kafka enhances the platform's flexibility and scalability, enabling efficient communication across distributed systems. | ||
|
||
### Communication and Dependencies | ||
The services within the platform communicate with each other through well-defined APIs and network connections, with microservices orchestration meticulously handled by Camunda. Acting as a microservice orchestrator, Camunda ensures transaction correctness and maintains data integrity across service interactions. | ||
|
||
Camunda leverages the SAGA (Saga Pattern) to manage distributed transactions effectively. By coordinating the sequence of operations across multiple services, Camunda ensures that complex platform operations are executed reliably and consistently, even in the face of failures. | ||
|
||
The Case Enginr Rest API serves as the gateway to the database, facilitating data access for Camunda External Tasks, Email to Case, and Storage API. This streamlined approach enhances efficiency and maintains data integrity throughout the platform. | ||
|
||
These services rely on MongoDB, Camunda, and Keycloak for seamless operation, leveraging their functionalities to perform specific tasks efficiently. The architecture is meticulously designed to be scalable and resilient, enabling seamless addition and removal of services as per the platform's evolving requirements. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
--- | ||
id: intro | ||
title: Introduction | ||
--- | ||
|
||
|
||
WKS Platform is an open-source Case Management and Process Automation solution that combines a powerful stack of technologies to provide organizations with comprehensive tools for managing and automating their business processes. Leveraging an array of cutting-edge technologies, including [Camunda](https://camunda.com/), [MongoDB](https://www.mongodb.com/), [Keycloak](https://www.keycloak.org/), [Traefik](https://traefik.io/), [MinIO](https://min.io/), [Kafka](https://kafka.apache.org/), [OPA (Open Policy Agent)](https://www.openpolicyagent.org/), [Form.io](https://form.io) , Spring Boot, and React, the WKS Platform enables businesses to streamline their operations, enhance efficiency, and improve decision-making. | ||
Key Features: | ||
1. **Case Definitions**: Users can create case definitions through an intuitive user interface. A case definition encompasses various elements such as stages, status, events, forms, and processes, allowing for flexible and customizable case management. | ||
2. **Form Designer**: The platform includes a powerful form designer that enables users to create custom forms effortlessly. The form designer provides a range of form components and options, allowing for the creation of dynamic and interactive forms tailored to specific case requirements. | ||
3. **Case Management**: Users can initiate new cases based on predefined case definitions, empowering them to efficiently handle and monitor their cases throughout their lifecycle. The platform facilitates task completion within cases, ensuring seamless collaboration and progress tracking. | ||
4. **Document Management**: WKS Platform offers robust document management capabilities. Users can attach relevant documents to cases, upload and organize files, and access them securely. The platform supports document versioning and permissions, enabling effective document control. | ||
5. **Collaboration and Communication**: Collaboration features enhance teamwork and communication within the platform. Users can comment on cases, fostering real-time discussions and providing context-specific information. Additionally, the email-to-case feature facilitates case creation and updates via email integration. | ||
6. **Process Automation with Camunda**: WKS Platform integrates with Camunda, a renowned open-source workflow and decision automation tool. This integration empowers organizations to design and manage workflows, automate business processes, and incorporate business rules and decision tables. | ||
7. **Security and Authentication**: Ensuring data security and user access control is paramount. The platform supports authentication and authorization mechanisms, and integrates with Keycloak for robust identity management. User roles and permissions can be managed effectively, providing granular control over platform access. | ||
8. **Administration and Configuration**: Administrators have access to a range of configuration options to tailor the platform to their organization's needs. Monitoring and logging features help maintain system health, and backup and recovery procedures safeguard data integrity. | ||
|
||
The WKS Platform offers a comprehensive and scalable solution for Adaptive Case Management and Process Automation. By combining user-friendly interfaces, flexible case management capabilities, powerful process automation tools, and robust security features, the platform equips organizations with the means to optimize their operations, increase productivity, and make informed decisions. |
Oops, something went wrong.