While Knot.x HTTP Server is a "hearth" of Knot.x, Fragments processing is its "brain".
Knot.x Fragments is a Swiss Army knife for integrating with dynamic data sources. It comes with distributed systems stability patterns such as a circuit breaker to handle different kinds of network failures. Thanks to those build-in mechanisms you can focus more on delivering business logic and be ready to handle any unexpected integration problems.
Knot.x Fragments encourages to decompose business logic into a chain of simple steps that later can be wrapped with integration stability patterns without code changes. Besides, when the chain becomes more complex and additional failure scenarios are known, failure logic can be adjusted with fallback configuration (no changes in the business logic required).
Knot.x Fragments is designed to build fault-tolerant, back-end integrations such as:
- Gateway APIs, Backend For Frontend (BFF) for single-page applications (SPA), Web APIs
- documents processing (HTML markup, JSON, PDF etc) with a templating engine support
How does it work
Each Fragment can specify a processing Task that points to a named, directed graph of Actions.
Each Action transforms the Fragment's content and/or updates its payload.
Fragment's path in the Task graph is defined by Action's outputs, called Transitions.
You may read more about it in the Fragments Handler API.
Action is a simple function (business logic) with possible restrictions imposed. E.g. the function execution can be limited to a certain time. If this does not end within that time, Action will time out. In this case, the Action responds with an error Transition, which indicates that some fallback Action can be applied.
Additionally, Actions are executed in parallel when they are independent of each other. More details can be found here.
Finally, after all the Fragments were processed, they are combined into a single response by the Fragments Assembler handler.
Example: HTML template processing
Read more about configuring HTML template processing in the Knot.x Example Project.
- Fragments Supplier - converts a HTTP request into one or more Fragments
- Fragments Handler - evaluates Tasks assigned to Fragments
- Fragments Assembler - merges Fragments into one a single response
Each module contains its own documentation inside.
Knot.x Fragments is licensed under the Apache License, Version 2.0 (the "License")
Icons come from https://www.slidescarnival.com and use Creative Commons License Attribution 4.0 International.