LogicBlox 4.7.0

Release Date: October 16, 2018

What's New

LogicBlox 4.7.0 introduces the following enhancements:

Modeler

Users can now search for headers within Modeler's grid to find specific positions without scrolling.
Header Search can be invoked by clicking on the magnifying glass icon in the toolbar or by pressing CTRL+SHIFT+F from within the sheet.

Type your search term in the search field to find headers on either the Rows or Columns axis.
When there is more than one match, use the < and > buttons to select the previous or next matching position.
To make your search case sensitive, select the Aa option in the search field.

Modeler now implements internationalization support and comes with English and Russian languages out of the
box.
Translations are provided as JSON files and are located in the <LOGICBLOX_HOME>/assets/translations/common directory of the LogicBlox distribution.

You can use the new Modeler configuration setting availableLanguages to configure the supported languages in your Modeler application.
These languages will be selectable by the user in the Language Selector in the menu pane.

Modeler will detect the browser's locale on startup and choose the most appropriate language from the availableLanguages list.
If no language was found or there's no appropriate one, Modeler will fallback to the English language.

Example 1.

The following configuration enables both English (en-US) and Russian (ru-RU) in the Modeler application.

Pro tip: you can use flag emojis in language names as shown in the screenshot above.

You can add your own language(s) by duplicating one of the bundled translation files (en-US is recommended) and using a valid
BCP 47 language tag as its file name. Then, replace the JSON values with
appropriate translations. There is support for
interpolation,
plural forms, and
contexts.
You may compare the bundled en-US and ru-RU JSON files to better understand these principles.

The <LOGICBLOX_HOME>/assets directory of the LogicBlox distribution is typically copied over to Modeler application projects.
In your project, new translation files should be placed alongside the bundled translation files (e.g. in <MODELER_APP>/frontend/translations/common).

Define prefixed keys. By convention, a prefix is usually a control type or a target property name.
This will simplify key management and will allow you to find keys faster.

Example 2.

Some examples:

buttonSubmit - For a button's text.

labelNoMoreRecords - For a label somewhere on UI.

captionStartTyping - For the caption property of an input field.

With future releases of Modeler, there may be changes/additions/removals of translation keys and values.
If you're supporting a language, you need to synchronize your file with the bundled en-US.json.
You could do this using the following simple steps:

Compare the newer en-US.json file with the previous version using any diff tool (VSCode/Meld/diff/etc).

Look for changed keys/values and modify your own file to follow those changes.

There is a special language { name: "Debug", value: "cimode" } which can be used during translation development.
Selecting this language shows keys instead of translated values on the UI.

Additionally, you can use the Modeler configuration setting translationDebug to see missing keys and other debug messages in the browser's console.

Runtime support for language modules has been added. At this time it is really
only practical for platform developers to add new modules. New request/response
messages have been added to the ConnectBlox protocol for interacting with
language modules and a new dlbatch command allows interaction with language
modules. A tutorial language implementation will be coming soon.

Internal refactoring has improved the consistency of interpreting combinations
of lifetime, run stage, and install flags for blocks. This is largely an
invisible change, but did require removing some long deprecated fields from
compiled block bytecodes. Separately compiled logic from earlier LogicBlox
releases will not be compatible and will need to be recompiled.

Added a --branch option to the lb print-rules command, allowing inspection
of database rules installed on a specific branch.

TDX services now allow multiple aliases to be specified for a single column in
a CSV file. To define aliases, replace a normal column name in the TDX
configuration with a bar delimited list of column aliases surrounded by braces.
For example, {name1|name2|name3}. Aliases are also supported for
optional columns, as in [{name1|name2|name3}].

The signature algorithm used in SAML is now configurable through the signature_algo option.
It supports sha1, sha256 and sha512.

Measure service

A new flag, up_on_some has been added to the dimension lock message.
This can be used to control the behavior of dimension locks on targets with a
base intersection using a level from the given dimension above its bottom level.
Previously, a lock would only be propagated up from the bottom of a dimension to
a higher level if all children rolling up to a position at the higher level were
locked. The flag allows specifying that a position at the higher level be locked
if only some of its children are locked.

Added an additional validation on slides to ensure that a given label's
dimension does not change between the source and the target of the slide.

Improved the abstraction of the CubiQL parser into an independent jar. This
makes it possible to provide a different parser implementation when using
the measure service code on non-JVM targets.

Corrected Issues

The issues listed below have been corrected
since the 4.6.0 release:

Modeler

Fixed an issue where editing the base positions of a level (e.g. Sku) with multiple percent parent
rollup locks (e.g. on Subclass 1 and Subclass 2) would result in invalid updates of data.

Fixed an issue where the cover aggregation method was not displayed correctly
on the Measure Properties panel under "Default Aggregation".

Fixed an issue with scrolling in the Filter Panel.

Tools and Services

Improved performance of rules of the pattern A=(B-C)/C, where all
predicates have a default value.

Added limits to threads that can be spawned by alpha-trees. In some cases,
huge data imports could previously cause alpha-trees to spawn a number of threads
the exceeded the allowed number of threads per process. This should no longer
occur. In addition, we try to make sure the newly spawned threads are targeted
to the busiest subdomains.

Fixed an issue where underscores were not allowed in protobuf namespaces.

The LogicBlox lb web-client and batch commands were
not using compression. This has been fixed.

The gzip parameter for the JsonService workflow task is now respected properly
instead of always compressing.

Fixed an issue with lb-workflow's JSON parsing, where boolean literals would
generate invalid JSON when a JSON typed variable is used to store the result.

Fixed a null deference error that would occasionally occur when adding
blocks, a problem introduced with recent code cleanup.

Fixed an issue with lb web-client that was not correctly sending authentication
headers when using a PrivateKeyHolder.

Measure service

Fixed an issue where we would generate an additional and unnecessary use of a
conversion atom for request parameters that already had a named entity type.
This additional atom would cause the logic to be invalid.

Fixed an issue where we would incorrectly sink dices inside of aggregations
that use slides. In general, this transformation will not be semantics
preserving.

Fixed an issue that was preventing the propagation of some warnings and errors
concerning the model back to clients. These are now correctly logged and
returned in model requests.

NOTE: these scripts automatically set all the necessary environment
variables (please be aware that this script only works if you use bash as your shell). You might want
to add these commands to your .bashrc.

Upgrade Information

Modeler

The library containing the Modeler migration tool is included in the
distribution under <LOGICBLOX_HOME>/lib/npm/modeler-migrations-<VERSION>.tgz
and contains a command line tool for doing various transformations/migrations
of modeler configurations.

To use the npm module, you first need to install it by running
npm install <LOGICBLOX_HOME>/lib/npm/modeler-migrations-<VERSION>.tgz.
You will then be able to use the command line tool.
The module contains a README.md file that lists all available
transformations as well as detailed instructions for use.

To automatically upgrade a Modeler application from one version to another,
run the upgrade script to upgrade between versions: