Files
richard-churchman 5f6bbe45f7 A major refactoring of the software to make model IDs less volatile between Import, Export, and Peek (comparison) of the model configuration environment. As part of the extensive refactor, most tables have been updated to include a GUID field, which is consistent across Import, irrespective of the IDs remaining volatile. The consistent GUID allows for the separation of production (i.e., Case, Transaction, and Counter data), Redis cache data and quasi-production data(i.e, Lists, Suppressions, and Dictionaries) from the configuration environment. Significant rework of Controllers, Repositories and POCOs to support GUID as an access path rather than ID.
Major bug fixes relating to the Redis implementation in Reprocessing and Search Key Cache were identified and fixed as part of the rekeying development.

Included functionality to stop the Exhaustive training.  Fixed the Unsupervised learning functionality in Exhaustive Training.  Embedded the Mock Data CSV data into a class to make it compatible with Docker without needing to modify the Dockerfile (i.e, build).  Included a new table that stores training data to enhance support capabilities for Exhaustive.

Reintroduced and validated the Multitenancy functionality.

Postgres is now fully deprecated in place of Redis for cache, and all implementations of the Interfaces for Postgres have been removed.  No migrations exist to support this deprecation, and Postgres as a cache is now wholly unsupported.  Removed the Indexing background thread,  as Redis does not require it, given that it is a key-value pair database.

Created a RedisCommandFlag Environment Variable to support Fire and Forget write to Redis in Invocation.

Implemented functionality to Export, Peek and Download configuration environments using a secure, encrypted scheme.  Created a permission to access the functionality via the user interface.  Extensive database-based logging is included to provide for a comprehensive audit.  Created functionality to Import the encrypted Export file inside a database transaction to ensure consistency.

As Docker is now the primary deployment model, log4net instantiation has been moved to an approach that primarily uses programmatic instantiation of the ConsoleLogger and RollingFileAppender given Environment Variables. Implemented functionality to support remote \ mounted Log4Net XML Serialisation files for more advanced log4net configurations.

Reintroduced access to counters via the user interface and created a permission.

Took the opportunity to implement ReSharper linter suggestions.

Disabled the Lock button across the whole application, with that functionality being reserved for future use. It is intended that locking happens programmatically on the basis of dependencies in future commits.

Fixed several significant end-use bugs which became apparent during testing of the refactored code relating to case management and visualisations.  Fixed certain other minor bugs that came up during testing.

Brought documentation up to date for this commit.

Brought the Docker Compose file up to date for this commit.

Removed Redundant Environment Variables for this commit.

Made the README file less verbose and unnecessary.
2025-08-13 19:01:08 +03:00

4.1 KiB

layout, title, nav_order, parent, grand_parent
layout title nav_order parent grand_parent
default Visualisation Parameters 3 Visualisations Configuration

🚀Speed up implementation with hands-on, face-to-face training from the developer.

Visualisation Parameters

The concept of visualisations in Jube is that SQL is executed against the database and presented in either grid or chart form. The SQL itself can be parameterized on a tokens basis.

There can be many datasource's available to a Visualisation, however, they are expected to share a common collection of parameters.

Parameters can either be collected via manual form entry or matched to the Case payload in the event that the Visualisation is embedded (where the parameters are matched to the values in the case payload based on their name).

For the purpose of this example, an example table will be used as follows, with the following basic SQL returning:

select * from "ExampleCaseVolumeEntry"

Image

In this example, the table will be filtered based on a LIKE statement on name:

select * from "ExampleCaseVolumeEntry"
where "ActivationRuleName" LIKE '%Email%'

Which returns a filtered view of the table:

Image

The SQL will however be parameterized via a named @ parameters (this is SQL syntax rather than the Jube style of tokenization):

select * from "ExampleCaseVolumeEntry"
where "ActivationRuleName" LIKE @Name

Tokenization as supported in the rest of the application is not supported here for reasons of SQL injection prevention, each parameter has formal equivalence as a scoped parameter in the call to the database.

To create a parameter, start by navigating to Administration >> Visualisation >> Visualisation Parameters:

Image

Click on the node entry for the recently created Visualisation Registry, in this case Demonstration, to expose options for the creation of a parameter:

Image

Visualisation Registry Parameters have the following properties:

Value Description Example
Data Type The data type governing the control that will be displayed when collecting parameters. True
Default The default value to be provided to the control and the scoped parameter matching on report recall (noting that Case embedding does not include controls to capture parameters). In the case of date, this will be an offset of the number of days. %Test%
Required A flag indicating if the parameter is mandatory. True

Keeping in mind the SQL above and the eventual parameterization of this query, create a parameter as follows:

Image

Scroll down and click update to create a version of the Visualisation Registry Parameter:

Image

Navigate to the Visualisation page via the main menu and click through the Demonstration link to recall this Visualisation Registry, which should expose the parameters:

Image

Clicking run will collate the parameters and make them available for datasource parameterization, yet for the purpose of this example, there does exists no datasource's to execute SQL:

Image