Tech Stack
Last updated
Last updated
xFlow embraces a microservices architecture, offering a suite of services developed using Java with Spring Boot, as well as targeted services built using Node.js and Python for specialized tasks. This design strategy ensures that xFlow can provide robust and highly scalable solutions tailored to various operational needs. The diagram below shows the primary technologies used.
xFlow harnesses the power of Java and the Spring framework to deliver a suite of services that embrace the microservices architecture. The services are encapsulated within Spring Boot, providing streamlined deployment and effortless management.
Spring Framework Integration
At the heart of xFlow's design philosophy lies a deep integration with the Spring ecosystem, chosen for its robust features and widespread familiarity among developers. xFlow's usage of Spring includes:
Core Spring: For comprehensive dependency injection and management.
Spring REST: To build scalable and secure RESTful services.
Spring Data: For consistent data access and manipulation across a variety of database technologies.
Spring Cloud Streaming: Enabling event-driven microservices with stream processing capabilities.
Spring Cloud Gateway: Offering a simple yet effective way to route API traffic and concerns.
Spring Security: Implementing robust authentication and authorization for service security.
Our commitment to staying in sync with the latest Spring versions means that xFlow is consistently aligned with the newest features and improvements that Spring has to offer, along with support for the latest Java versions as they are released.
Utilizing Diverse Technologies
While Java and Spring constitute the backbone of xFlow services, the platform exhibits versatility by incorporating alternative technologies like Node.js and Python for certain services. This strategic use of diverse programming languages and runtimes ensures that each service within the xFlow ecosystem operates at peak performance, catering to the specific needs of different functionalities.
The selective employment of Node.js and Python allows xFlow to harness specialized libraries, frameworks, and runtime efficiencies, providing the flexibility required to tackle various microservices challenges effectively. This multi-technology approach facilitates a balance between leveraging the strengths of Java and Spring, while also taking advantage of the unique capabilities offered by Node.js and Python where they excel.
User Portal
xFlow’s User Portal is an integral component of the platform, offering a highly interactive and responsive interface for managing and monitoring workflows. The web application is crafted using React and Angular, ensuring that users have a smooth and consistent experience across all functionalities.
Web Applications:
Employs Angular for its robust framework capabilities, enabling the creation of scalable single-page applications with rich features and client-side logic.
Mobile Applications:
For the mobile dimension, xFlow embraces Flutter, Google's UI toolkit, to build natively compiled applications for mobile from a single codebase. This approach guarantees that mobile users enjoy the same quality and coherence of experience as found in the web portals.
Lowcode UI and SDK:
xFlow supports a low-code approach to form design within its User Portal, simplifying the creation and configuration of UI elements without extensive coding.
Accompanying the low-code platform is an SDK, allowing developers to customize and extend the portal’s functionality, ensuring that specific business requirements can be met with precision.
Developer Portal
In parallel to the User Portal, xFlow provides a Developer Portal that serves as the hub for technical users to define, deploy, and manage the services and workflows. This portal is developed using React due to its component-based architecture, which offers a high degree of flexibility and efficiency in developing interactive UIs.
The Developer Portal is designed to cater to the needs of developers, offering tools and resources for:
Workflow Definition and Management: Empowering developers to create complex workflows with ease.
Service Interaction: Facilitating a convenient way to interact with various microservices, check their status, and debug as necessary.
Integration and Extension Development: Providing a space to develop, test, and integrate extensions or additional services into the xFlow ecosystem.
Both the User and Developer Portals are designed to integrate seamlessly with the backend services, providing a cohesive experience across the xFlow platform. The addition of mobile app capabilities ensures that xFlow is accessible and functional for users on the go, making it a comprehensive solution for workflow management in any environment.
Messaging within xFlow is powered by Spring Cloud Stream. While we officially support Kafka, Google Cloud Platform (GCP), Azure Event Hubs, and AWS MSK, our architecture is compatible with other Spring Cloud Stream-enabled technologies.
TriggerMesh is employed for event routing workflows, enhancing the interconnectivity between cloud services and xFlow's event-driven architecture.
xFlow is designed to be cloud-agnostic. It is compatible with any environment where a Spring application can be hosted, including but not limited to Google Cloud, AWS, and Azure.
On-Premise deployment is also fully supported, providing flexibility for enterprises that require or prefer to manage their infrastructure.
PostgreSQL is the primary database for xFlow, ensuring ACID compliance and robust transaction management. MongoDB is employed for specific services, including those within our Lowcode Form suite.
xFlow supports containerization through Docker and Kubernetes, offering scalable deployments and management. For more details, refer to our section on .
xFlow integrates several open standards to ensure seamless interoperability, precise communication, and clear documentation. These standards include for API descriptions, the for defining workflows, and for event definition.
Our security model aligns with best practices, incorporating for authorization. However, due to the flexible nature of Spring Security, our model can adapt to various security implementations.