Hello everyone,
In this sprint, we have added new ways for clients to specify values for lookup columns and columns with elements when directly POSTing/PATCHing to table, task, and report endpoints.
Note that we have also made a possible breaking change to how the OAuth server scope is applied. Please check the breaking changes section for more information.
You can read more about Indicium's features in the Indicium user manual.
About Indicium
Two types of the Thinkwise Indicium Application Tier are available:
-
Indicium Basic: for use with the Windows GUI and Mobile GUI. This basic version does not support features such as system flows and OpenID.
-
Indicium: for use with the Universal GUI and via APIs. This version uses the full range of Indicium functionality. Download Indicium release 2024.1.11 here.
Contents
Breaking
OAuth server scope now applies to OAuth server login connector
change
The OAuth server login process flow connector did not use the Scope setting of the corresponding OAuth server configuration when the scope input parameter was not assigned. This has been fixed.
In addition, we have made a minor change to the OAuth user login connector. If this connector had an assignment for the Scope input parameter, but the value of the assignment was empty, it would erroneously fall back to the Scope setting of the OAuth server configuration. This should not happen because the existence of any assignment to the Scope input parameter should always lead to ignoring the Scope setting of the OAuth server configuration.
As of this release, any assignment to the Scope input parameters for the OAuth server login and OAuth user login connectors takes precedence over the Scope setting for the OAuth server configuration. So, even if the input parameter is assigned to a process variable with no value, the OAuth server configuration scope will be ignored. However, if the input parameter is not assigned at all, the OAuth server configuration scope will be used instead in both cases.
Note that both fixes have a small possibility of being a breaking change.
For the OAuth server login connector, this change can be breaking when both of the following conditions are met:
- The OAuth server login connector has no assignment for the Scope input parameter.
- The corresponding OAuth server does have a Scope configured.
In this case, Indicium would previously not send a scope to the OAuth provider, but as of this release, it will send the scope defined in the OAuth server configuration.
For the OAuth user login connector, this change can be breaking when both of the following conditions are met:
- The OAuth user login connector is assigned to a process variable, and the value of this process variable may be empty.
- The corresponding OAuth server has a Scope configured.
In this case, Indicium would previously send the scope defined in the OAuth server configuration to the OAuth provider, but as of this release, no scope will be sent.
Check your process flow connectors
Check the connectors that meet the criteria outlined above.
For both cases, if the conditions are met, it will depend on your specific situation whether it will be an issue.
New and changed
Added ways to choose
new
We have added new ways for clients to specify values for lookup columns and columns with elements when directly POSTing/PATCHing to table, task, and report endpoints.
The first one is choose
. Use it to choose a lookup value by providing the primary key values of the lookup source. This can be useful if the client knows from which source record to select the target value, but the foreign key from the target to the source is not part of the source's primary key.
POST <metasource>/<application>/<target_table>
{
"<target_FK_column>": {
"choose": {
"<source_PK_column>": "36724a01-521a-4b4a-b51f-30d943f9a0d0"
}
}
}
The second one is choose_by_display
. You can use it to choose a lookup value by providing the value from the column configured as the display column.
Note:
- The display value must resolve to a unique record in the source.
- When the display column has domain elements, the given value must correspond to the database value of an element instead of the translation.
- Use
choose_by_element
instead when selecting based on element translation values.
For example, if the model contains a project
table:
project_id | project_name |
---|---|
1234 | Example project |
And a sub_project
table that has a sub_project.project_id
-> project.project_id
lookup which is configured to display the project.project_name
. Then Indicium allows the following when adding a new sub_project
:
POST <metasource>/<application>/sub_project
{
"project_id": {
"choose_by_display": {
"display_value": "Example project"
}
}
}
Which, in the example above, would resolve to 1234
as the value for project_id
for the new subproject.
The third way is the choose_by_element
translation. Use it to choose the database value for a column configured with elements based on the translation value of an element.
Note:
- Use this for both regular columns and lookups that have configured a display column with elements.
- When used with a lookup, the value must resolve to a unique record in the source, just like when using
choose_by_display
.
For example, in a model containing a domain example_domain
configured with the following elements:
element_id | element_value |
---|---|
example_element_1 | 0 |
example_element_2 | 1 |
example_element_3 | 2 |
And element translations:
element_id | lang_id | transl_value |
---|---|---|
example_element_1 | EN | Element one |
example_element_2 | EN | Element two |
example_element_3 | EN | Element three |
example_element_1 | NL | Element één |
example_element_2 | NL | Element twee |
example_element_3 | NL | Element drie |
Then Indicium will allow a column using this domain to be posted or patched like this:
POST <metasource>/<application>/example_table
{
"some_element_column": {
"choose_by_element": {
"element_transl": "Element two"
}
}
}
PATCH <metasource>/<application>/example_table(1234)
{
"some_element_column": {
"choose_by_element": {
"element_transl": "Element three"
}
}
}
By default, this feature uses the session user's language to match the translations or the application's fallback language if the application does not contain translations for the user language. The above example assumes this to be English (EN) for the user making the example request. You can overwrite this behavior by providing a language_hint
value with the column. For example, to use Dutch instead of English in the previous example, specify the following:
POST <metasource>/<application>/example_table
{
"some_element_column": {
"choose_by_element": {
"element_transl": "Element twee",
"language_hint": "NL"
}
}
}
If the language for the language_hint
cannot be found, the application's fallback language will be used instead.
Minor fixes and tasks
- When shutting down or restarting, Indicium attempts to wait for all running system flows to finish before ending the process. Although this functioned correctly, it sometimes generated error messages in the error log. This issue has been resolved.
Questions or suggestions?
Questions or suggestions about the release notes? Let us know in the Thinkwise Community!