Apache Camel - basics
Apache Camel integrations are defined within your application's jvm/-script-config/{app-name}-camel.kts file.
Apache Camel integrations are defined within your application's jvm/-script-config/{app-name}-camel.kts file.
The application components enable you to create the working event-driven applications quickly. You can configure each component as per your requirement and doing so will add precise control, complexity and sophistication to your application.
Every Genesis application is different, but all Genesis applications share a common architecture. The best way to understand the purpose of all the main elements of this architecture is to familiarise yourself with the server components and the web front-end.
These core components are part of the Genesis low-code platform which run automatically. These components eliminate the need of the manual low-level programming which is otherwise mandatory for creating financial markets applications. Hence, you can simply focus on developing the essential value specific to your application.
Most financial applications have to interact with other outside systems for information exchange and smooth workflow creation within themselves. The Genesis low-code platform makes this process faster with it's growing list of components that enable you to connect quickly to market-leading services. Instead of creating the interfaces from scratch, you simply need to select your component, enable it and configure it.
The Genesis low-code platform offers you more than 50 components that provide proven quality code which speed up your development, testing and deployment to a great extent.
With these user-interface (UI) components, you can create clear and usable interfaces quickly.
You define a Consolidator service in a consolidator.kts file. Within the file, you can define as many Consolidators as you like. Each one is specified in a Consolidator block of code.
Custom endpoints are defined within their own submodule of the project, using classes implementing the WebEndpoint interface provided by Genesis-Router.
The fields dictionary is where you specify all the fields you need for your data model.
Tables of data will be critical to your application, from simple tables of currencies or locations to more complex ones that contain trade or order information (for example).
Whereas tables tend to be groups of related information, a view is a way of looking at data - in many cases, literally. If you want to show all the trades you have done, then you might want to take some of that data from a table of trades, but you might want to add data from one or more other tables - currency details or counterparty IDs, for example.
Where to define
Let's make things really simple.
Configuration
Dynamic rules
Let's make things really simple.
Field types
Creating a new component
It is important to know that the Genesis low-code platform uses system-generated versions of these system files.
Let us now mention another important system file, Genesis Router. The Genesis Router module controls the routing of the messages between the back end and the front end of your application. You can configure this in the file genesis-router.kts.
The system-definition file, genesis-system-definition.kts, is the basis of all the configurations, scripts, data models, etc.
Your application must have a -processes.xml file. For example, if your application is called 'bravo', then the file will be called bravo-processes.xml.
Every application must have a -service-definitions.xml file. This is where you specify the ports of the various processes. The ports are used to communicate internally between these various processes.
What is the Genesis low-code platform?
Once you are happy with your data model, you can build your database.
With a database and two modules (a Data Server and an Event Handler) in place to supply data to the front end, we can now build our server.
So how would you go about creating something like that?
Now, let's just take stock.
There are some simple commands that enable you to start and stop your server.
A Data Server supplies real-time (streaming) data to the front end of your application.
A Request Server supplies static data to the front end of your application.
Applications must respond immediately to different types of input: inputs from users, messages from other systems, market-data updates and internally calculated analytic signals. These inputs are events.
Authentication
You define your State Machine as a specific type of Event Handler.
In your application's tables-dictionary.kts file, you need to define every table that your application needs. Let us go back to the very simple example definition that we started with. This contains a single table with three fields in it.
A view definition is made up of joins and fields.
Broadly speaking, the process can be summarised as follows:
To view or use your Genesis application, you need to create one or more web pages. On each of these pages, you need to have components that display information or enable the user to interact with the application. For example:
Previously, we showed you how to create a new page. Now we shall add a data grid.
The package.json file is auto-generated for you by the CLI, based on your answers to the prompts.
What you need to know to start
This page looks at the npm commands for building a project.
In financial organisations everywhere, there are spreadsheets that are effective tools, but which pose a significant operational and compliance risk.
Once you have the Genesis low-code platform, you can develop and deploy your own applications at speed, from the simplest of internal systems to complete exchanges.
You don't have to be bound by your existing systems at all. If you have a need for a new application, which looks too ambitious for now, the Genesis low-code platform could make that a realistic proposition in a realistic timeframe.
You can build complete new trading platforms that integrate with multiple internal and external systems. These are applications with clear user interfaces, highly sophisticated features; they can be specified and built to meet exactly the security and regulatory requirements you require.
Self-contained systems (aren't you bored by the term "silo") remain a big blocker for anyone looking for efficiency.