LogicBlox 4.3.5

Release Date: December 2nd 2015

What's New

modeler-js User Interface Components

  • Collaboration: modeler-js components now support multi-user collaboration, where each user will see the results of actions and edits made by other users in the same workbook, within a configurable amount of time (the default is 6 seconds). Cell changes made by other users will appear green briefly, whereas an action triggered by other users will cause a notification window to appear. Figure 1 shows an example of the notification window, where the user is notified that "user1" has triggered the action "Set Timestamp". The action will be disabled for all active users in the workbook until the re-querying of updated data is made.

    Figure 1. 

    Note that if a user is editing the same cell that others are also editing, her cell will not be updated with new values. In this situation, the last writer wins.

    To activate a collaboration feature, a collaboration section has to be defined inside the modelingFeatures section. The collaboration update interval can be configured as follows:

      modelingFeatures: {
        ...
        collaboration: {
            minUpdateInterval: 0, //in seconds
            maxUpdateInterval: 6 //in seconds
        },
        ...
    }
  • Export to Excel: It is now possible to export the contents of a sheet to a Microsoft Excel file. The new Export to Excel option is available in the sheet's config pop-up menu that can be accessed by clicking on the cogwheel located at the bottom right side of a sheet. The export process runs in the background; users receive a notification once the export has completed. The file is automatically saved in the Downloads folder that is configured for the browser.

    Example 42. 

    Figure 2 shows an example sheet with various aggregations (aggregations are being displayed with a light blue background). Figure 3 shows how the corresponding exported file in MS Excel would look like.

    Figure 2. 

    Figure 3. 

  • Logout Notification: After some time of being idle the user will be notified via a pop-up message that her session is about to close, as shown in Figure 4. She can choose from one of two possible options: continue the session or close the session. If neither of these options is selected, the user will be logged out automatically after the timer runs out.

    Figure 4. 

    Developers can configure the time until the notification message, as well as the time until the automatic logout. The default values are 1800 seconds for the idleNotificationTime and 60 seconds for the idleLogoutTime.

    The idle notification time and the idle logout times can be configured as follows:

    modelingFeatures: {
        ...
            idleNotificationTime: 1800, //in seconds
            idleLogoutTime: 60 //in seconds
        ...
    }
  • afterAction Event: After each action is executed, an afterAction event is emitted, that applications can listen to. This feature allows developers to configure JavaScript functions to be executed after an action.
    React.createElement(AuthenticatedModelerController, {
        ...,
        events: {
            afterAction: function(actionConfig, response, getServiceUrl) {
                if (actionConfig.id === "action_info") {
                    if (!logicblox.util.actionResponseHasError(response)) {
                        // do something here
                    }
                }
            }
        }
    }); 
  • Formula Editor: We have improved the formula editor to allow the inspection of rules. Opening the formula editor will display the formulas for all metrics on the visible measures axis that have formulas. If a metric that is used in a formula is not yet on the grid, clicking on its name will automatically add it.

    Below is an example on how to enable the formula editor via the html files. The formula editor can be found under the cogwheel located at the bottom right side of a sheet, if the ruleEditor setting is enabled.

    modelingFeatures: {
        ...
          ruleEditor: true
        ...
    }

    Example 43. 

    In the example below a sheet is being displayed with the EDB measures Sales and Returns and the IDB measure NetSales. The formula editor shows the primary formula as well as the 2 inverse formulas. Via the formula editor, developers can inspect all the formulas as well as update the inverse rules.

    Figure 5. 

Measure Service

  • Support for min/max/sort aggregations on entity-valued expressions. In order for an entity to be used for min/max/sort aggregations, it must have:
    • A predicate that maps the entity to a primitive type.
    • The entity must back a unique level in the measure service meta model, and must have an order attribute using the ordering predicate.

    Example 44. 

    If Day is an entity type, it should have a predicate that orders Day’s

    Day_index[d] = index -> Day(d), int(index).

    The entity Day must back a level Calendar.Day and the predicate Day_index must back the attribute Calendar.Day.order.

Services Framework

  • TDX imports now return an HTTP Header called x-blox-tdx-import-errors that contains "true/false" indicating whether there were import errors. This is only available if allow_partial_import is true (otherwise any error would make the request fail completely). This feature is exposed to lb web-client import and lb-workflow, to indicate via a warning message that there were import errors. The new option --silent to the lb web-client import command can be used to suppress the warning.
  • Improved meta-service to list all HTTP methods accepted by a service.

Developer Tools

  • New command lb batch-script allows dlbatch commands to be executed inside a running lb-server instance.

    Usage:

    usage: lb batch-script [-h] [-t] [-f FILE] [--loglevel LOGLEVEL] [-L]
                           [--cwd [DIR]]
                           WORKSPACE [SCRIPT]

    Example 45. 

    In the example below the showDefiningRules dlbatch command is called via the lb batch-script command:

    lb foo> addblock 'c(x,y) <- a(x), b(y).'
    added block 'block_1Z3FC9NG'
    lb foo> batch-script -t 'showDefiningRules --predicate c'
    // block_1Z3FC9NG:1(1)--1(20)#1Z3FGTPE c(x,y)
    c(v0,v1) <-
       a(v0),
       b(v1).

    The list of dlbatch commands and their usage can be gotten via dlbatch’s underlying help command, i.e., by invoking batch-script ‘help’. For instance:

    lb foo> batch-script 'help summary'
    Usage: summary [options]
      --lifetime arg        Lifetime to summarize (e.g. database, builtin,
                            transaction)
      --kind arg            Kind of objects to list (e.g. predicates or blocks)
      --list                List names of objects only (no detailed description)
      --filename arg        Filename where summary is written to
    
    Summarize high-level workspace state

    Note

    Running this command is only permitted under authenticated mode, and there are a few restrictions:

    • Workspace-related commands like create and destroy are disallowed.
    • Transaction-related commands like transaction, abort, and commit are disallowed. Instead, if the --transactional flag is passed, then the script will be executed inside a (soft-commit write) transaction. This flag is required for commands like addBlock or exec which need to execute inside a transaction.

    Please refer to the Command Reference chapter in the reference manual for an extensive overview of all the LogicBlox commands and their usage.

  • The new command lb list-blocks can be used to list all active and inactive blocks installed in a workspace.

    Usage:

    usage: lb list-blocks [-h] [--inactive | --active] [--loglevel LOGLEVEL] [-L]
                          [--cwd [DIR]]
                          WORKSPACE 
    Please refer to the Command Reference chapter in the reference manual for an extensive overview of all the LogicBlox commands and their usage.
  • The log message about long-running rules is enhanced to include the changed predicate(s).

Corrected Issues

The issues listed below have been corrected since the 4.3.4 release.

  • Corrected a performance issue with default value rules when entity elements are added
  • Corrected an error when using default value values on pulse predicates
  • Corrected a performance issue with many concurrent requests on machines with many cores (e.g. 40)
  • Corrected some issues with regard to incremental maintenance.
  • It is not possible anymore to execute a write transaction on a mirror via the dlbatch command.
  • Trying to export a predicate column with type decimal with format type integer, TDX now returns an exception, including hints on how to to use an import/export function to declare the exact conversion to use (e.g. use decimal:round, decimal:floor or decimal:ceil to get another decimal and then convert it into a string or float).
  • Resolved an issue that prevented browsing the meta service for protobuf services.
  • Measure Service:
    • Resolved an issue with the ambig aggregation over expressions with a non-zero default value.
    • Improved performance of composite spreads and spreads involving several chained transformations.
    • Resolved an issue where install requests were only caching optimized expressions and compiled logic, but not installing logic.
    • Improvements to predicate key ordering in generated logic and prototype support for generating pragmas to force runtime variable order choices.

Installation and Upgrade information

Installation Instructions

Installing LogicBlox 4.3.5 is as simple as following the steps outlined below:

  1. Download the installation package.
  2. Extract the tarball in <YourPreferredInstallDirectory>
  3. Run the following command:
    source <YourPreferredInstallDirectory>/logicblox-4.3.5/etc/profile.d/logicblox.sh
    
    NOTE: this script will set all the necessary environment variables. You might want to add this command to your .bashrc.

Release Information

Server requirements
Operating System: 64 bit Linux; OSX 10.10+ is supported for local development.
Java Runtime Environment 7, update 11 or higher
Python 2.7 or higher
CPU compatible with the corei7 architecture
Client requirements
Applications using modeler-js User Interface Components: Google Chrome
Requirements for applications using non-modeler-js components may vary per application.