onecx-document-management-svc
Default properties
src/main/resources/application.properties
quarkus.http.auth.permission.health.paths=/q/*
quarkus.http.auth.permission.health.policy=permit
quarkus.http.auth.permission.default.paths=/*
quarkus.http.auth.permission.default.policy=authenticated
quarkus.banner.enabled=false
quarkus.http.limits.max-body-size=20240K
quarkus.liquibase.migrate-at-start=true
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.max-size=8
quarkus.datasource.jdbc.min-size=2
quarkus.datasource.metrics.enabled=true
quarkus.hibernate-orm.metrics.enabled=true
quarkus.hibernate-orm.database.generation=none
quarkus.hibernate-orm.database.generation.halt-on-error=true
quarkus.hibernate-orm.jdbc.timezone=UTC
quarkus.log.category."org.hibernate.engine.internal.StatisticalLoggingSessionEventListener".level=WARNING
quarkus.jacoco.excludes=**/mappers/*,**/minio/*
tkit.log.json.enabled=true
tkit.log.json.keys.type=rs-time=double,time=double,rs-response-status=int
tkit.log.json.keys.mdc=traceId=X-B3-TraceId,spanId=X-B3-SpanId
tkit.log.json.keys.ignore=loggerClassName,ndc
tkit.log.json.keys.override=timestamp=@timestamp,threadName=thread,loggerName=source
tkit.log.json.keys.env=service_domain=SERVICE_DOMAIN
minio.bucket.folder=test-bucket
quarkus.jacoco.excludes=**/mappers/*
## TEST
quarkus.minio.secure=false
Extensions
Extensions |
Documentation |
Configuration |
Version |
---|---|---|---|
tkit-quarkus-log-rs |
2.36.0 |
||
tkit-quarkus-log-cdi |
2.36.0 |
||
tkit-quarkus-log-json |
2.36.0 |
||
tkit-quarkus-jpa |
2.36.0 |
||
tkit-quarkus-rest |
2.36.0 |
||
quarkus-rest |
3.15.1 |
||
quarkus-rest-jackson |
3.15.1 |
||
quarkus-arc |
3.15.1 |
||
quarkus-smallrye-openapi |
3.15.1 |
||
quarkus-liquibase |
3.15.1 |
||
quarkus-jdbc-postgresql |
3.15.1 |
||
quarkus-hibernate-validator |
3.15.1 |
||
quarkus-smallrye-jwt |
3.15.1 |
||
quarkus-smallrye-health |
3.15.1 |
||
quarkus-resteasy-reactive |
3.15.1 |
||
quarkus-oidc |
3.15.1 |
||
tkit-quarkus-security |
2.36.0 |
||
onecx-core |
0.34.0 |
||
quarkus-micrometer-registry-prometheus |
3.15.1 |
||
quarkus-opentelemetry |
3.15.1 |
||
quarkus-container-image-docker |
3.15.1 |
||
onecx-security |
0.34.0 |
||
quarkus-scheduler |
3.15.1 |
||
quarkus-minio |
3.7.7 |
Helm
Default values
app:
image:
repository: "onecx-apps/onecx-document-management-svc"
db:
enabled: true
product: false
Document management refers to the systematic process of capturing, organizing, storing, and retrieving documents within an organization. It involves the efficient handling of digital documents, ensuring secure access, version control, collaboration based on TM-Forum standard TMF 667.
With OneCX-Document-Management Software, you can streamline your document management workflows, reduce manual efforts, and enhance productivity. Whether it’s managing contracts, invoices, legal documents, or any other form of digital content, OneCX Document Management provides a centralized and user-friendly solution for effectively managing your documents.
Issue tracking
All OneCX Document Management issues are tracked and maintained here issue tracking tool.
Overview
OneCX-Document-Management is a comprehensive solution for managing documents in a user-friendly and efficient manner. It is a solution that consists of three main components which are explained in more detail in the general documentation. Please refer to the following documentation to learn more Document-Management Documenation. However, in this document we are only referring to one of the three components, the OneCX-Document-Management-Service (Backend) of OneCX-Document-Management.
This component provides the core functionality for document management. It handles tasks such as document storage, retrieval, metadata management, and access control. The backend is built cloud native using Quarkus.
Getting Started
To start developing the OneCX Document Management Service, you need to set up your local development environment. It’s recommended that you use WSL as the runtime for your application, as shown in the figure below. If you are using a different runtime, please check that you meet the requirements below.
Prerequisites
Before you begin, ensure you have the following installed:
-
Java Development Kit (JDK) version 17
-
Maven build tool
-
Git
-
Docker + Docker Compose (Windows Subsystem for Linux (WSL) recommended)
Clone the Repository
Start by cloning the required repositories to your local machine using the following command:
git clone https://github.com/onecx-apps/onecx-document-management-svc.git
git clone https://github.com/onecx-apps/document-management-dev.git
The repository onecx-document-management
contains the source code of
the document management backend. The repository
document-management-dev
contains the necessary OneCX platform
dependencies and the docker-compose script required to run the OneCX
Document-Management-Service on your local machine.
Build the Project
Navigate to the project directory and build the application using Maven:
cd onecx-document-management-svc
mvn clean install
Downloading the required Maven dependencies for the first time may take some time.
Update local DNS resolution
Assuming you are using WSL, updating the local host file for local development allows you to map domain names to specific IP addresses, making it easier to test and debug applications using custom domain names instead of IP addresses. To enable multiple services on the same port, we use traefik as a reverse proxy. A running traefik container is therefore essential for your local setup to route your traffic to the appropriate Docker containers based on hostnames.
It is recommended that the WSL host file and the Windows host file are aligned. Unless you have disabled this behaviour, the WSL host file will be automatically generated from the Windows host file when WSL is restarted.
Update Windows host file
Open the file C:\Windows\System32\drivers\etc\hosts
in your favorite
editor and add the following entries:
127.0.0.1 pgadmin
127.0.0.1 postgresdb
127.0.0.1 keycloak-app
127.0.0.1 traefik
127.0.0.1 tkit-portal-app
127.0.0.1 tkit-portal-server
127.0.0.1 apm
127.0.0.1 wiremock
127.0.0.1 minio
127.0.0.1 onecx-document-management-ui
127.0.0.1 onecx-document-management-bff
127.0.0.1 onecx-document-management-svc
Starting OneCX dependencies
In a local development environment, Docker Compose is used to define and manage multiple containers as a single application stack. It enables developers to easily start, stop, and configure all the necessary services and dependencies required by OneCX Document Management using a simple configuration file.
cd document-management-dev
docker compose up -d traefik postgresdb pgadmin keycloak-app tkit-portal-server minio apm
-
traefik
: Traefik is an ingress controller for Kubernetes deployments that enables dynamic traffic routing and load balancing based on defined rules and configurations. -
postgresdb
: PostgreSQL is an open-source relational database management system. It is used as persistence layer for storing and managing data in OneCX Document Management, providing reliability and scalability. -
pgadmin
: pgAdmin is an open-source administration and development platform that offers a user-friendly graphical interface for managing and interacting with the local PostgreSQL database. -
keycloak
: Keycloak is an open-source identity and access management system that simplifies authentication, authorization, and single sign-on for web and mobile applications. -
tkit-portal-server
: This micro-service is responsible mostly for handling the logic of portals and their meunitems and user data and settings. -
minio
: We use MinIO as a facade or abstraction layer to decouple our applications from the underlying cloud storage provider, providing greater flexibility and allowing us to seamlessly switch between different providers without changing our application code. It acts as a unified interface, enabling us to interact with various cloud storage systems using the standardized Amazon S3 API. -
apm
: In this backend, user permissions are stored in a structured manner and an endpoint is provided to import permissions via CSV files. Each application can be assigned a set of roles and permissions, managed through an association table in the APM database. Roles are assigned in the Keycloak admin console and are retrieved from tokens, while strings defined in APM are used to grant access to specific components or views on the frontend.
Stopping OneCX dependencies
The docker-compose stop
command is used to stop the containers defined
in a Docker Compose file. It gracefully stops the running containers by
sending a stop signal, allowing them to perform any necessary cleanup
tasks before shutting down.
docker compose stop
Starting the OneCX Document Management Service
The command mvn compile quarkus:dev is used in a Maven-based Quarkus project to compile the source code and start a live coding development mode. In this mode, Quarkus will automatically rebuild and redeploy the application whenever changes are detected in the source code, allowing for rapid development and testing.
mvn compile quarkus:dev
-
mvn compile
: This command tells Maven to compile the source code of the project. It resolves dependencies, compiles the Java source files, and generates the compiled bytecode. -
quarkus:dev
: This is a Maven plugin goal provided by the Quarkus framework. It starts the Quarkus dev mode, which is a live coding mode for development. It launches your application in development mode, which includes features like hot-reloading and automatic recompilation.
When you run mvn compile quarkus:dev, the build process compiles your application, and once it’s built, Quarkus starts a development server that listens for changes in the source code. If any changes are detected, the affected parts of the application are automatically recompiled and redeployed, allowing you to see the changes in real-time without restarting the application manually.