Architecture
Last updated
Last updated
The xFlow system is a versatile workflow engine designed to be deployed in any cloud environment or on-premises infrastructure. It incorporates a distributed architecture model capable of handling complex, asynchronous workflows with efficiency and resilience. Below is the technical documentation detailing the architecture of the xFlow system.
Diagram illustrating the detailed components of the xFlow solution and the roles, relationships of these components.
(1) All client requests to xFlow are routed through the xFlow Gateway, which then routes requests to corresponding systems such as xPlatform, LowCoder, and xFlow Services. (1a) Requests related to process management and initialization are routed to the xflow-engine service.
(2) Requests related to xPlatform services (services with prefix "xp" or authentication, user information) are routed through the xFlow Gateway to the xPlatform Gateway, which further routes them to the respective services. (2a) Upload/download file requests are routed to the xpdms service. (2b) User Task-related requests are routed to the xptask service.
(3) Requests related to LowCoder such as form management, query, and datasource handling are routed to the LowCoder system via an Nginx Proxy. (3a) The LowCoder API Service handles the main logic of LowCoder, while the Node Service is utilized when executing queries against datasources not supported by the API Service.
(4) The microservices connect to Kafka for publishing/subscribing messages, with TriggerMesh responsible for routing messages between the xFlow and xPlatform systems.
(5) The xflow-engine utilizes Temporal as its core engine to implement the Serverless Workflow Spec.
(6) In addition to providing REST APIs related to user task management business, the xptask service also serves as a Plugin Worker of the xflow-engine to execute task initialization based on the logic of User Task State Spec.
(7) The LowCoder API Service also functions as a Plugin Worker of the xflow-engine, executing actions corresponding to queries defined within LowCoder.
(8) The LowCoder Node Service provides the capability to execute queries related to datasources not supported by the LowCoder API Service.
(9) Microservices belonging to xFlow and xPlatform utilize PostgresDB for storing data.
(10) The LowCoder API Service utilizes MongoDB to store data such as Forms, Data Sources, Queries, etc.
(11) The LowCoder API Service employs Redis as a cache layer.