Example Refresh Scenarios
Below are some example refresh scenarios based on the static configurations.
In this example, below processing entities exist.
-
BANK_ENTITY_1
-
BANK_ENTITY_2
-
UNKNOWN (Global)
The rules designer model has below variables that are declared "dynamic".
| Model | Variable |
|---|---|
test-model1 |
limitCheckEnabled |
test-model2 |
limitCheckEnabled |
The static configurations on the dynamic config adapter are as below:
ipf.dynamic-config-adapter {
# Dynamic Configuration Types supported by the dynamic config adapter
dynamic-config-types: ["customProcessingSettings"]
# the period at which the values are refreshed automatically
value-refresh-period: 1m
# list of setting categories to be retrieved upon refresh
setting-categories: ["InitiationSettings", "FXSettings"]
# Correlation Entries map dynamic configuration values to the variables used by external systems
correlation-entries: [
{
# variable key
# For IPF studio, variable keys are made of the model name and variable name
destination-variable-key: "test-model1.limitCheckEnabled"
# the type of the variable used on the registry; Currently supported types:
# string
# stringArray
# number
# numberArray
# boolean
variable-value-type: boolean
# dynamic configs to be used to source values to be refreshed into the dynamic variables
source-dynamic-config: {
# the type of dynamic configuration
config-type: "customProcessingSettings"
# the name of dynamic configuration
config-name: "limitCheckAllowed"
}
}
]
}
Below are representative dynamic expression registry values based on the values of the dynamic configurations. Please note that this scenario does not take into account another provider (e.g. Hocon provider). If the same variables are sourced from multiple providers, then precedence levels should be considered between the providers.
| # | Scenario | CPS Values | Action | Expected Global Registry Entry Values | Expected Entity Scoped Registry Entry Values |
|---|---|---|---|---|---|
1 |
Service restart refreshes all latest values to dynamic configurations. |
PE: UNKNOWN, limitCheckAllowed = true PE: BANK_ENTITY_1, limitCheckAllowed = false |
Service start up / restart |
test-model1.limitCheckEnabled = true |
BANK_ENTITY_1: test-model1.limitCheckEnabled = false |
2 |
A new entry to CPS is reflected on registry based on the processing entity value |
PE: UNKNOWN, limitCheckAllowed = true PE: BANK_ENTITY_1, limitCheckAllowed = false |
New CPS Value added PE: BANK_ENTITY_2, limitCheckAllowed = false |
test-model1.limitCheckEnabled = true |
BANK_ENTITY_1: test-model1.limitCheckEnabled = false BANK_ENTITY_2: test-model1.limitCheckEnabled = false |
3 |
Changed values of dynamic configurations are reflected on dynamic expression registry |
PE: UNKNOWN, limitCheckAllowed = true PE: BANK_ENTITY_1, limitCheckAllowed = false PE: BANK_ENTITY_2, limitCheckAllowed = false |
CPS value updated PE: UNKNOWN: test-model1.limitCheckEnabled = false PE: BANK_ENTITY_1, limitCheckAllowed = true PE: BANK_ENTITY_2, limitCheckAllowed = true |
test-model1.limitCheckEnabled = false |
BANK_ENTITY_1: test-model1.limitCheckEnabled = true BANK_ENTITY_2: test-model1.limitCheckEnabled = true |
4 |
Deletion of CPS values is reflected on dynamic expression registry |
PE: UNKNOWN: test-model1.limitCheckEnabled = false PE: BANK_ENTITY_1, limitCheckAllowed = true PE: BANK_ENTITY_2, limitCheckAllowed = true |
CPS value deleted PE: UNKNOWN: test-model1.limitCheckEnabled = false PE: BANK_ENTITY_2, limitCheckAllowed = true |
— |
BANK_ENTITY_1: test-model1.limitCheckEnabled = true |
5 |
Addition of CPS value us reflected on dynamic expression registry |
PE: BANK_ENTITY_1, limitCheckAllowed = true |
CPS value added PE: UNKNOWN: test-model1.limitCheckEnabled = false |
test-model1.limitCheckEnabled = false |
BANK_ENTITY_1: test-model1.limitCheckEnabled = true |
6 |
Deletion of entity scoped CPS value is reflected on dynamic expression registry |
UNKNOWN: test-model1.limitCheckEnabled = false BANK_ENTITY_1: test-model1.limitCheckEnabled = true |
CPS value deleted BANK_ENTITY_1: test-model1.limitCheckEnabled = true |
test-model1.limitCheckEnabled = false |
— |