You are viewing the documentation for Blueriq 17. Documentation for other versions is available in our documentation directory.
Configuration
The customerdata service is required by the Customerdata Client component, so when this component is used the following needs to be configured first. In the documentation below, the <service>
is customerdata
, the <datasource-name>
is customerdata-sql-store
and the configuration YAML is blueriq-customerdata-odata-service-v1.yml
.
External config location
For supplying configuration from an external location you need to configure the spring.config.additional-location
for the application. See the Config location section for your application platform on the page Installing Runtime.
Database
Scripts to create the required database content are provided for the supported databases.
For customers that are upgrading, if the database scheme was already created in a previous version, check to see if there are database upgrade scripts provided for any of the intermediate versions in the Upgrade Instructions.
Datasource configuration
The datasource needs to be configured in the configuration YAML file.
blueriq: <service>: datasource: <datasource-name>: url: <url> username: <username> password: <password> driver-class-name: <driver-class> validation-query: <validation-query> testWhileIdle: true timeBetweenEvictionRunsMillis: 5000 hibernate: dialect: <dialect> hbm2ddl: auto: validate id: new_generator_mappings: true show_sql: false use_nationalized_character_data: true
Example configuration
Below are configuration examples which contain a JDBC url, driver-class, validation query and dialect for each supported database.
blueriq: <service>: datasource: <datasource-name>: url: jdbc:oracle:thin:@<host>:<port>/<servicename> username: <username> password: <password> driver-class-name: oracle.jdbc.driver.OracleDriver validation-query: SELECT 1 FROM DUAL testWhileIdle: true timeBetweenEvictionRunsMillis: 5000 hibernate: dialect: org.hibernate.dialect.OracleDialect hbm2ddl: auto: validate id: new_generator_mappings: true show_sql: false use_nationalized_character_data: true
blueriq: <service>: datasource: <datasource-name>: url: jdbc:sqlserver://<host>:<port>;databaseName=<database>;trustServerCertificate=true username: <username> password: <password> driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver validation-query: SELECT 1 testWhileIdle: true timeBetweenEvictionRunsMillis: 5000 hibernate: dialect: org.hibernate.dialect.SQLServer2012Dialect hbm2ddl: auto: validate id: new_generator_mappings: true show_sql: false use_nationalized_character_data: true
blueriq: <service>: datasource: <datasource-name>: url: jdbc:postgresql://<host>:<port>/<database> username: <username> password: <password> driver-class-name: org.postgresql.Driver validation-query: SELECT 1 testWhileIdle: true timeBetweenEvictionRunsMillis: 5000 hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect hbm2ddl: auto: validate id: new_generator_mappings: true show_sql: false use_nationalized_character_data: true
Database query timeout
To specify the database query timeout, set the defaultQueryTimeoutSeconds
property in the datasource configuration.
If multi-tenancy enabled, when needed, the value has to be set for each datasource separately.
Without setting property, the default value is 60 seconds.
blueriq: <service>: datasource: <datasource-name>: ... defaultQueryTimeoutSeconds: 10
For additional datasource configuration please refer to the Spring property documentation.
Database drivers
Depending on the underlying database, a specific driver needs to be installed on the application server as described on Configuring JDBC database drivers.
JNDI
If you would like to use JNDI to configure your datasource, replace the blueriq.customerdata.datasource
section in the blueriq-customerdata-odata-service-v1.yml
described above with the following:
Please note that when JNDI is your preferred resource configuration, the Customerdata Service needs differently named JNDI resources for the customer-sql-store on the one hand, and the entity-event-manager on the other hand.
blueriq: customerdata: datasource: customerdata-sql-store: jndi-name: java:jboss/datasources/myCustomerdataSqlStoreJndiName
Case Insensitive searching for oracle
For MSSQL searching through case data is case insensitive by default. Oracle and PostgreSQL are case sensitive and because of that searching in Case Data is case sensitive.
We created the possibility to enable case insensitive searching on these case sensitive databases, for more information how to enable it see: How to enable case insensitive search on case data for Oracle & PostgreSQL.
The feature toggle has to be set to true to enable this feature.
Example:
blueriq: customerdata: oracle: case-insensitive-search-enabled: true
The case-insensitive search works on filtering text fields in aggregate lists, and using the "like" operator in searches.
Endpoint per aggregate type
It is possible to have different endpoints per aggregate type. In the schematic overview below is shown how having multiple endpoints per aggregate looks like. The application.properties
contains multiple connections per aggregate type, the customerdata properties contain the information to which data store the aggregate should be saved to.
application.properties
The following properties need to be set in the application.properties
of the Blueriq Runtime:
# Mandatory = default connection for every aggregate that does not have a custom connection blueriq.customerdata-client.url=http://localhost:10097/customerdata/api/v1 blueriq.customerdata-client.username=blueriq blueriq.customerdata-client.password=welcome # Optional - Custom connection(s) per aggregate type blueriq.customerdata-client.type.employee.url=http://localhost:20097/customerdata/api/v1 blueriq.customerdata-client.type.employee.username=blueriq blueriq.customerdata-client.type.employee.password=welcome blueriq.customerdata-client.type.departement.url=http://localhost:30097/customerdata/api/v1 blueriq.customerdata-client.type.departement.username=blueriq blueriq.customerdata-client.type.departement.password=welcome
The properties above contain the default settings, which are set by the Installer. If afterwards these settings are customized in the customerdata service they need to be changed in the Runtime as well.