LogicBlox 4.3.9

Release Date: April 2nd 2016

What's New

modeler-js User Interface Components

See what's new in this release for modeler-js based applications in our LogicBlox 4.3.9 - New Features playlist!

  • Conditional Formatting: This new feature allows measure values to be conditionally formatted based on comparisons with constants. Conditions apply to measures of any value type: numeric, boolean, string, or level entities. Formatting options include the background color, foreground color, and font styles such as bold, italic, and strike-through.

    The feature is available for end-users, while more expressive configuration options are available to configuration consultants only. End-users can open up the conditional formatting panel by clicking on the settings cogwheel in the bottom-right of a view, where they can add, edit and remove conditional rules. The configuration is stored per user.

    In order to apply some initial (conditional) formatting to a view, a conditionalFormatting configuration section needs to be added to the view's json configuration file.

    Example 26. 

    The figure below shows the conditional formatting panel, which has a rule defined for the measure Sales Units TY stating that all cells need to be rendered with a red background color, and the font needs to be displayed in white and in bold if the value of the measure is smaller or equal to 175,000.

    The backend configuration of this example would look as follows:

    "conditionalFormatting": {
      "TY_Sales_Units": [
        {
          "condition": "<=",
          "value": 175000,
          "style": {
    	"background-color": "red",
    	"font-style": "bold",
    	"color": "white"
          }
        }
      ]
    }

    The backend option allows configuration consultants to specify conditional formatting that applies to measures at certain intersections only, rather than applying to a measure's value at all intersections.

  • Shortcut Buttons View: The new ShortcutButtons view allows developers to configure a group of buttons that can change the configuration of one or more views on the same canvas.

    A shortcut-buttons section in a canvas configuration can specify a partial configuration for another view or views. When button is pressed, the partial configuration overrides the current configuration for the specified view(s) with the provided configuration.

    Example 27. 

    In the example below:

    • module is required to be ShortcutButtons
    • applyToViews attribute specifies a list of views the button's configuration should be applied to when pressed.
    • buttons contains a list of button specifications. label specifies the label of the botton, while config contains the partial configuration that will be applied to the views listed in applyToViews.

      In this example, when the "Enable Mask Filter" button is clicked, the list of mask filters on the mask-filter-sheet will be set to SkuMask. The second button, "Disable Mask Filter", clears the list of mask filters.

    "shortcut-buttons": {
      "module": "ShortcutButtons",
      "applyToViews": ["mask-filter-sheet"],
      "buttons": [
        {
          "label": "Enable Mask Filter",
          "config": {
    	"pivotConfig": {
    	  "maskFilter": ["SkuMask"]
    	}
          }
        },
        {
          "label": "Disable Mask Filter",
          "config": {
    	"pivotConfig": {
    	  "maskFilter": []
    	}
          }                    
        }
      ]
    } 

    The buttons will appear as a group, whether a button is active depends on whether the current configuration of the sheet(s) already matches the configuration defined for the button.

  • Copy/paste to and from external applications: In previous releases, modeler-js supported copy/paste activities within its own pivot grids. This release introduces the possibility of copying and pasting a rectangular region of data to and from an external application, such as Microsoft Excel.

Services Framework
  • New configuration option in lb-web-server.config to avoid sending the NameIdPolicy element in a SAML authorization request, as sending it could cause issues with certain IDP's.

    # if true, include the NameIDPolicy element in the AuthnRequest. This is an optional field that may
    # cause issues with some IDPs. Default is true.
    #include_name_id_policy=true 
Measure Service
  • Simplification of removal requests: Previously when removing values from a metric with inverses, it was necessary to provide not only the keys, but also the value to be removed, even though the value can be determined from the keys. With this release, the value is no longer necessary.

  • Intersection operators: It is now possible to define intersections in terms of the meet and join of other intersections. See the CompositeIntersection protocol message for details. It is also possible to define an intersection as the restriction of another intersection. See the RestrictionIntersection message for details.

Workflow

  • It is now possible to configure the prefix for the status service and control service at once, using lb:workflow:service:prefix[]; by setting it to app, the services will be hosted at /app/status and /app/control respectively. Furthermore, the LB_WORKFLOW_SERVICES environment variable is used to change the default prefix on the command line (e.g. LB_WORKFLOW_SERVICES=http://localhost:55183/app) to avoid having to pass it to every command. Finally, the status service library was incorporated into the core lb-workflow library, so there's no need to include it in application projects anymore.

  • New workflow tasks to call the new workflow control service:

    • The task lb.control.Purge can be used to delete selected, terminated workflow instances.

    • The task lb.control.Action can be used to send actions to selected workflow processes.

  • The action command now provides feedback on which processes were affected by the executed action.

Corrected Issues

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

  • Resolved an issue in TDX that prevented error files to be generated if the combination of async mode, errors only on error and a file URI were used together.

  • The output of log-level perf has been revised. Unnecessary lines are removed to make the logs significantly smaller and easier to review.

  • Fixed various runtime internal errors.

  • modeler-js User Interface Components:
    • Resolved an issue with the rendering of the settings menu when the user clicked onto the settings cogwheel on a split canvas, where the top view was configured to be very small.

    • Resolved an issue that prevented users from being able to export a view to MS Excel, when a measure was displayed at an aggregate level and the aggregation method none was configured as its default aggregation method.

    • All numeric measures are now exported correctly to MS Excel, including their formatting.

    • The "remove" option now also works correctly for levels on the slice.

    • Fixed a regression where the mouseover formatting option no longer displayed image on mouseover.

  • Measure Service:

    • The update_pred field of the Predicate message is now correctly consulted when defined.

Installation and Upgrade information

Installation Instructions

Installing LogicBlox 4.3.9 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.9/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.

Upgrade Information

  • Support for TDX plugin has been removed in this release.

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.