When a custom implementation is created please keep in mind that Blueriq upgrades may lead to changes in the persistence API, which should be implemented in the custom implementation to avoid loss of functionality (e.g. Blueriq plugins who call the API). Where possible we will try to be backwards compatible, but if not possible it may be that the impact of an upgrade is larger then usually.
When the default programming language within an organization is different from Java it may not be desirable to obtain and maintain Java knowledge. This could be a reason to implement a complete custom Persistence API implementation in the desired programming language. Besides the OLingo (Java) library which is used by Blueriq, libraries are available for at least .Net, Javascript, C++ and Python.
Within many enterprise organisations a certain database type is preferred above others. Please see Platform Support for more details on our supported database types. If the preferred database type of a customer is different and the costs of setting up and maintaining or the license costs of one of the supported types are too high a custom implementation can be made based on the Blueriq API that reuses the Blueriq API and OData\OLingo implementation and translation modules. This means that the Blueriq libraries are used to translate the OData HTTP requests to API calls and predefined expression trees. The API calls and the translation of the expression trees to custom SQL queries need to be implemented.
It may be desirable to store the data in another format than the default Aggregates with custom metadata fields. For example data should be stored as relational data instead of the current approach Aggregates. In this scenario a custom implementation may reuse of the Blueriq API and OData\OLingo implementation and translation modules. This means that the Blueriq libraries are used to translate the OData Http-requests to API-calls and predefined expression trees. The API calls have to be implemented, the expression trees have to be translated to custom SQL queries and mapping to the custom scheme has to be created and maintained.
Limited knowledge of OData is needed.
Not all OData functionality has to be reimplemented.
Custom implementation is closer to the default Blueriq implementation.
Like every OData V4 compliant service a custom implementation must also publish an OData V4 service schema. A custom implementation must use the same schema as the default Blueriq persistence service implementation. When using the default deployment (from the Blueriq installer), the schema can be obtained through the URL 'http://localhost:10099/customerdata/api/v1/$metadata'
GET request:
POST request:
PUT request:
PATCH request:
DELETE request:
Parts of the desired information is logged by the Blueriq runtime, this includes:
For a custom implementation there are currently no explicit logging requirements, things to consider for logging:
Service operations for a custom implementation should be transactional. This means that in case of failure the database should be rolled back to the state before the operation started. Transactions are not expected to span multiple service operations.
Service operations for a custom implementation should respond in a timely fashion, the absolute maximum allowed response times are:
*Complex filter operations on large data sets will exceed this
When the average response time is close to the mentioned maximum response times, performance problems are expected to happen. |
A custom implementation should be able to handle at least 10 concurrent HTTP requests, regardless of the service operation that is performed.
Service operation responses for a custom implementation should not be too big. The maximum data size is mainly determined by the aggregate model as defined in Encore, there are no explicit data size requirements on the custom service side.