LogicBlox 4.24


LogicBlox 4.24.1

Release Date: June 18, 2020

Corrected Issues

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

  • Modeler
    • Resolved a functional dependency violation (FDV) error that could occur when loading multiple app nodes with the same hostname.

  • Modeler IDE
    • The Modeler IDE generated incorrect CubiQL update expressions for copy actions in cases where the intersection of the filter is partially higher and lower than the intersection of the source measure. This issue has been resolved.

Known Issues

The issues listed below are known to exist in the 4.24.1 release.

  • Tools, Database, and Services
    • This release contains changes to some lb-workflow tasks related to workbook creation. These fixes have not been applied yet to lb.wb.CreateWorkbook, which means errors related to recent changes in the LB runtime that imposes restrictions on string lengths can still occur. Please note that this known issue does apply to lb.wb.util.CreateWorkbook.

LogicBlox 4.24.0

Release Date: June 5, 2020

What's New

LogicBlox 4.24.0 introduces the following enhancements:

  • Modeler IDE
    • The Modeler IDE now supports the configuration of CubiQL rules and inverses as overrides to measure components. This new feature enables the reuse of rules and inverses in measure variants instead of having to configure these rules and inverses for each measure variant. This solves a common problem in planning applications, where rule patterns (e.g. to compare different versions of a plan over time) are typically configured and maintained per measure variant.

      To allow the reuse of CubiQL rules and inverses configured as overrides, we have introduced the $$THIS variable. Just like how $$BASE always refers to the base intersection of the derived measure, $$THIS always refers to the current measure. Furthermore, you can use the measure explosion syntax to refer to a specific version of the current measure (e.g. $$THIS_WP or $$THIS_R_LY). For consistency, the $$THIS variable is also available when configuring rules and inverses for a specific measure variant.

      Example 1. 

      For example, you can use rule overrides to configure the rule and its inverses for the Average Unit Retail (AUR). Instead of configuring the rule for each measure variant that uses the AUR item of the measure component Unit of Measure (UOM), you can now configure it once as an override.

    • The Modeler IDE can now automatically generate TDX services for importing and exporting measure data. Additionally, the IDE will automatically generate TDX services for all hierarchies configured in the measure model.

      The "TDX" view of the Modeler IDE allows you to configure one or more filters that specify the measures that should be included and/or excluded in the TDX service generation. The IDE will display warnings for concrete and derived measures that have rules and inverses.

      Example 2. 

      For example, the following configuration includes the following measures for TDX service generation:

      • Concrete measure ElapsedWeek.
      • All derived measures for the Working Plan (WP) version.

      Optionally, the user could arbitrarily exclude specific measures by checking the checkbox the "Exclude" column. Hierarchies are always included in the TDX service generation, and can therefore not be excluded.

      The URL of the generated service for each hierarchy and measure is displayed in the "TDX" view.

      Example 3. 

      Example output when exporting the default hierarchy of the Product dimension:

      $ curl http://localhost:55183/ide-planning-app/tdx/hierarchies/Product_Default
      
      Product:Sku:id|Product:Sku:label|Product:Subclass:id|Product:Subclass:label|Product:Class:id|Product:Class:label
      "sku-9"|"Radishes"|"Root Vegetables"|"Root Vegetables"|"Vegetables"|"Vegetables"
      "sku-8"|"Ginger"|"Root Vegetables"|"Root Vegetables"|"Vegetables"|"Vegetables"
      "sku-7"|"Beets"|"Root Vegetables"|"Root Vegetables"|"Vegetables"|"Vegetables"
      "sku-3"|"Navel Oranges"|"Citrus"|"Citrus"|"Fruit"|"Fruit"
      "sku-2"|"Clementines"|"Citrus"|"Citrus"|"Fruit"|"Fruit"
      "sku-1"|"Blood Orange"|"Citrus"|"Citrus"|"Fruit"|"Fruit"curl
      ...

      Example output when exporting the measure data of the NetSales_R_TY_PLN measure:

      $ curl http://localhost:55183/ide-planning-app/tdx/measures/Sales_R_TY_PLN
      
      Product:Sku:id|Location:Store:id|Calendar:Week:id|Sales_R_TY_PLN
      "sku-1"|"store-1"|"20170118"|"1778.61"
      "sku-2"|"store-1"|"20170118"|"1158.84"
      "sku-4"|"store-1"|"20170118"|"445.51"
      "sku-3"|"store-1"|"20170118"|"353.41"
      "sku-9"|"store-1"|"20170118"|"382.5"
      "sku-6"|"store-1"|"20170118"|"1417.5"
      "sku-5"|"store-1"|"20170118"|"1625"
      ...

    • The Modeler IDE now passes the names of the proxy and master workspaces to the workspace parameter of the main workflow found in on_build.wf. This allows you to specify the workspace names when reloading services in workflows.

    • Commit and refresh group names must now be unique across all workbook templates.

    • Displayable Measures and Displayable Dimensions can now be set at the Workbook Template level. The Modeler IDE will apply these Displayable Measures and Dimensions configurations to all available views within the workbook.

    • Improved the usability of the "Commit Group" and "Refresh Group" tabs in the "Workbook Templates" view of the Modeler IDE. It's now a lot easier to configure levels and their level policies correctly when "Include All Levels?" has been set to "No".

  • Tools, Database, and Services
    • It is now possible for an lb-web websocket handler/service to expose different optional protocols and alter their behavior based upon the protocol selected by the client.

    • Some small optimizations were made to the lb-web websocket proxy handler to improve latency.

    • lb-workflow has a new MeasureServiceCall task that can be used to query the measure service over the websocket protocol. Input parameters for the task include uri (identifies the measure service to receive the request), transport (hostname and port of server running the measure service), inputFormat (json, proto-text, proto, proto-binary, cubiql, or text), and file (path to file containing the request). The task returns the measure service response in JSON format. For example:

      lb.MeasureServiceCall(
        transport = "http://localhost:55183",
        uri = "/mfp/websocket/measure",
        inputFormat = "json",
        file = "file.json")

  • Measure service
    • The CubiQL parser can now parse more expressions as direct arguments to expression function default arguments or applications without having to wrap them in extraneous parentheses. For example, fun [inter](E = fun (M) in M) in ... versus fun [inter](E = (fun (M) in M)) in ...

Corrected Issues

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

  • Modeler IDE
    • The "Export to CSV" functionality in the "Measures" view of the Modeler IDE now substitutes variables in rules and inverses (e.g. $$THIS, $$BASE, and $Sales_WP). This means that the measure configuration export functionality now exports rules and inverses as they are generated for each derived measure.

    • The Modeler IDE did not automatically save changes in the "Sheets" view when the user dragged a level or measure field to another position on the same axis. This has been fixed.

    • Resolved an issue that occurred when deleting measures with measure variants. Before this fix, deleting a measure with variants caused an error resulting in the "Choose a different project" screen being displayed to the user.

    • Fixed a rendering issue related to the "Edit Components" option in the "Measures" view that could occur when managing the configuration of a measure variant with a large number of measure component items (e.g. versions).

    • In the "Displayable Dimensions" view, we've added the missing option to include or exclude the ALL level of a dimension.

    • In the "Sheets" view, we've added the missing option to add the ALL level of a dimension to an axis and to apply a dropdown measure filter to an entity-typed measure.

    • The Modeler IDE did not apply the "Unfiltered Hierarchies" option which can be configured as part of the "Position Access" configuration of workbook templates. This issue has been resolved.

    • In the "Measures" tab of the "Workbook Templates" view, the "Rule" filter only identified rules and inverses for concrete measures, not for measures with variants. This has been fixed.

    • Checking the "Enable schema editing" option in the "Modeling Features" tab of the "Settings" view now results in all schema editing options, including "Assign <level member>" and "Remove from <level>", to be available in the context menu shown upon right-click on a level header in the Modeler application.

  • Tools, Database, and Services
    • Fixed a bug in the rule optimizer that would cause runtime crashes for certain inventory P2P rules.

  • Measure service
    • The REPL and some other measure service clients will no longer register unnecessary listener predicates and named pipes.

    • The result of the REPL commands :desugar and :optimize will not longer elide deeply nested CubiQL expressions by default.

Known Issues

The issues listed below are known to exist in the 4.24.0 release.

  • Tools, Database, and Services
    • This release contains changes to some lb-workflow tasks related to workbook creation. These fixes have not been applied yet to lb.wb.CreateWorkbook, which means errors related to recent changes in the LB runtime that imposes restrictions on string lengths can still occur. Please note that this known issue does apply to lb.wb.util.CreateWorkbook.

Installation Information

Install LogicBlox 4.24.0 by following the steps outlined below:

  1. Download the LogicBlox installation package for Linux or macOS from the LogicBlox developer website.
  2. Extract the tarball into a directory, which we refer to as <LOGICBLOX_HOME>.
  3. Run the following commands:
    source <LOGICBLOX_HOME>/etc/profile.d/logicblox.sh
    source <LOGICBLOX_HOME>/etc/bash_completion.d/logicblox.sh
    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 --no-save <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:

      ./node_modules/.bin/migrate-modeler --fromVersion <prevVer> --toVersion <toVer> /path/to/my/modelerapp

      where the version numbers refer to LogicBlox releases (e.g. 4.24.0).

      NOTE: If you installed the npm module globally, you won't need the ./node_modules/.bin prefix on the command.

Release Information

  • Server requirements
    • Operating System: 64-bit Linux; Apple macOS 10.10+ is supported for local development
    • Java Runtime Environment 8, update 101 or higher
    • Python 3.5 or higher
  • Client requirements
    • Applications using LogicBlox Modeler: Modeler supports major browsers not older than 1 year. Google Chrome provides the best performance.
    • Requirements for applications using non-LogicBlox Modeler components may vary per application.