Feature | Summary |
---|---|
Import and Export constraints | It is now possible to export and import the constraints settings for an interface. |
You now have the ability to export and import the constraints of a Logical Validation Implementation model. This option is available via the menu: Management -> Constraint settings. For each of the models shown you have the ability to export the constraint settings. This will create a JSON file in your download folder.
In this same UI window you have the ability to import constraints from one or more exported files similar to importing metadata files. You'll need to add one more files and then start the import. Although you can import several files they are processed one at a time.
The import is succesfull if:
thresholdAbsolute
are specified as integers and the values of constraintViolationActionCode
are specified as string.{info} The values for
thresholdAbsolute
andconstraintViolationActionCode
are always updated with the values from the import file, regardless the fact that someone has made changes to these settings manually. In other words, we do not check on lost updates.
The Web UI now prompts a confirmation dialog when you want to delete the constraint violation logs for a given delivery.
You have the option to specify how we should calcualate row counts before and after each update task to an entity. By default we use an ESTIMATE ROW COUNT
. In SQLServer this is implemented by querying SQLServer system tables which contain metadata regarding the rowcount of a table. This is by far the most fast approach to calculate rowcounts with high accuracy.
However, we've encountered an issue with locking. When a truncate table
statement is issued on a table within a transaction and the table contains data (it is not empty) SQLServer creates a lock on some of the sytem tables. This lock is not shareable, not even in read modus when we query some of the system tables to calculate the rowcount.
We've now changed the behaviour of the truncate table
statement. If a transaction exists before issuing a truncate table
we will commit the transaction after the truncate table
and create a new transaction directly after. This will release the locks on the system table.
You now have the option to specify a list of database in the configuration file which should be registered when the server starts. You can add the following configuration:
{
registerDatabases: {
doc: 'A list of database which should be registered in the metadata repository when the server is started.',
format: 'irArray',
values: {
code: {
doc: 'database code',
format: 'String',
default: '',
},
description: {
doc: 'database description',
format: 'String',
default: '',
},
},
default: [],
}
}
An example config file:
{
"boot": {
"database": {
"code": "ACME",
"description": "localhost metadata repository",
"connection": {
"driverConnectionProperties": {
"server": "localhost",
"authentication": {
"options": {
"userName": "sa"
}
},
"pool": {
"min": 10
}
}
}
}
},
"httpRestApi": {
"https": {
"host": "localhost",
"port": 3000,
"key": "./crypto/server.key",
"cert": "./crypto/server.crt"
},
"accessToken": {
"publicKey": "./crypto/key_public.pem",
"signatureAlgorithm": "RS256"
}
},
"registerDatabases": [
{
"code": "ACME",
"description": "Metadata repository"
},
{
"code": "IR_TSTGIN",
"description": "Raw data"
},
{
"code": "IR_HSTGIN",
"description": "Logical data."
},
{
"code": "IR_CFPL",
"description": "Facts over time."
},
{
"code": "IR_GDAL",
"description": "Generic data access on registered facts."
}
]
}
If a registered database is not yet known, given the value of the property code
we will register a new database.
If a registered database is known we will update the property description
with the value from the config file.
{info} If the value of code is an empty string we will silently skip this configuration item.