Dodeca Version 8.4.0

November 14th, 2024 - Build 270


This version of the Dodeca uses the .NET Framework, version 4.7.2 and higher on the desktop. The components used in this version of Dodeca are SpreadsheetGear 2023 (9.2.44.102), NetAdvantage 2021, Volume 2 (21.2.46), Aspose.Cells 24.8.0, Aspose.Slides 24.8.0, Syncfusion Essential Studio 25.1.39, GdPicture.NET 14.1.0.121, and Xceed Zip 3.6.7363.15420.

*Upgraded from SpreadsheetGear 2017 8.7.12.102 to 2023 9.2.44.102.

This version of Dodeca has two server-side services that run inside a Java Application Server. The Dodeca service is supported and tested on Java 8, 11, and 17. The Dodeca-Essbase connector (for all Essbase versions) is supported and tested on Java 8, 11, and 17.

This release notes for this version contain the following items:

Application Startup

  • Improvements have been made to the initial launch performance of Dodeca. It was discovered that the original caching mechanisms, based on the Microsoft Application Blocks codebase, did not perform efficiently in the modern version of .NET introduced in Dodeca 8.0. These caching mechanisms have been rewritten, resulting in significantly improved launch performance. #2497, #3258

  • Added support for launching the Dodeca client application via a custom app URI scheme. Any configured UriScheme (dodeca:// by default) can be used to launch the Dodeca client with ClickOnce format query string parameters, as follows: dodeca://launch?t=DEMOAPP&a=ADMIN

    To change the app scheme registered and used by the Dodeca client, update the UriScheme defined in the <appSettings> block of the AppliedOLAP.Dodeca.SmartClient.exe.config. To disable custom app scheme registration, comment out or remove the same line. #3580

    <appSettings>
      <!-- Indicates the custom app URI scheme used to launch the application. -->
      <add key="UriScheme" value="dodeca://" />
    </appSettings>

Application Tokens

  • Added support for adding (or overriding) application tokens with locally defined values at startup. These are most commonly used to add privileged or environment-specific values to the application token table without retaining them in or distributing them via metadata.

    To add tokens to the application token table at startup, any number of <token> elements can be added to the pre-defined <tokens> block in the AppliedOLAP.Dodeca.SmartClient.exe.config. #3768

    <!-- Dodeca Token Configuration
        If desired, the tokens block can be used to specify any number of tokens to be
        to the application token table at startup. These are commonly used to provide
        privileged or environment-specific values to the app without distributing them.
    -->
    <tokenConfiguration>
      <tokens>
        <token name="[T.ClientCertificate]" value="%USERPROFILE%\app-only.pfx" />
      </tokens>
    </tokenConfiguration>

AuraPlayer Connector

  • Added an AuraPlayer connector, which allows for bringing data from Oracle E-Business Suite, Oracle Cloud ERP, Oracle Cloud HCM, Oracle Integration Cloud, Oracle ORDS database, and other REST-based data sources via the AuraPlayer server into a formatted view. See further documentation on the AuraPlayer connector at https://developer.appliedolap.com. #3593

Documentation

  • Removed the Workbook Script Reference Guide from the Dodeca Framework distribution. See https://developer.appliedolap.com for an up-to-date Workbook Script reference. #2695

Dodeca Shell

  • The import-tenant command can now honor artifact locks. The --honor-locks flag will instruct the import process to not overwrite or update artifacts that are locked. #3456

Dodeca Standalone

  • The Tanuki Java Service Wrapper, which is used to manage the Dodeca Standalone service, was updated from version 3.2.3 to version 3.5.54. #3669

  • Fixed Issue: SQL Passthrough DataSet operations returning a large number of rows (660,000+) may throw a Java memory error (heap space) due to larger memory settings in the Standalone configuration not being honored (fix is updated wrapper). #3535

Drillbridge Connector

  • Added a Drillbridge connector, which allows for bringing data from a Drillbridge report into a formatted view. See further documentation on the Drillbridge connector at https://developer.appliedolap.com. #3747

  • Added native support to Excel Essbase views for Drillbridge drill-through. #3686

Oracle EDM Connector

  • Added an Oracle EDM connector, which allows for bringing data from EDM via the Oracle Cloud EPM REST API. See further documentation on the Drillbridge connector at https://developer.appliedolap.com. #3898

EPM Cloud Connector

  • Added support for Update Outline XML and updating EPM Connector cache from the Essbase Connections metadata editor. #3700

Essbase Connector

  • Fixed Issue: When a blank value is sent during a send operation, an error message stating "Cell content is not double." is displayed. #3892

  • The Dodeca Essbase Connector (WAR packaging) and Dodeca Essbase Standalone Connector have been merged into a single distribution. Instead of shipping pre-packaged .WAR files for each version of Essbase Java media, the media are provided and a packager tool has been shipped with the standalone connector that will generate a .WAR file for a given version of Essbase media. The packager tool is provided in the /tools folder of the connector. The simplest possible invocation is to run java -jar dodeca-essbase-packager.jar create --version 11.1.2.4.048 which would then create a WAR file containing the Essbase Java media for version 11.1.2.4.048. #3468

  • The Tanuki Java Service Wrapper, which is used to manage the Dodeca-Essbase Standalone service, was updated from version 3.2.3 to version 3.5.54. #3863

Essbase REST Connector

In Dodeca 8.4, the new native Essbase REST Connector enables direct connectivity between Dodeca and an Essbase server using the Essbase REST API over the HTTPS protocol. This eliminates the need for the Dodeca-Essbase connector, a middle-tier component that previously had to be located in close physical proximity to the Essbase server. The native Essbase REST Connector is built on the open-source EssSharp project published by Applied OLAP (https://github.com/appliedolap/EssSharp). #3243

NOTE: Due to differences in how the Essbase REST API returns Essbase labels in the grid information compared to the Essbase Java API used in the Dodeca-Essbase Connector, you may need to adjust the value of the RepeatMemberLabels property to obtain comparable results. To illustrate this issue, consider the following Essbase grids.

image

When retrieved using the Dodeca-Essbase service, the resolved grid appears as below:

image

When the RepeatMemberLabels property is set to False for the grid, the grid retrieved using the Dodeca Essbase REST Connector does not retain block headers on columns. Note that the Essbase member labels are missing from the range D1:D2:

image

Finally, when the RepeatMemberLabels property is set to True for the grid, the block header format is properly retained for columns. This is particularly important for member labels that are referenced by formulas used in the Dodeca commentary functionality. The RepeatMemberLabels property in the Dodeca Essbase REST Connector applies to both rows and columns, which differs from the Essbase Java API behavior, where it applies only to rows. The same grid retrieved using the Essbase REST API is shown below. Note that Essbase member labels are filled in the range A5:A7.

image

When converting existing Dodeca views from using the Dodeca-Essbase Connector to using the Dodeca Essbase REST Connector, you may need to set the RepeatMemberLabels property to True to maintain the same functionality.

Metadata Dependencies

  • Fixed Issue: Metadata Depends On functionality does not detect EssbaseConnectionID for a view when they are explicitly set in a view’s selector configuration. #3720

  • The Dodeca Server now uses the Fastexcel instead of Apache POI to analyze spreadsheet template binary artifacts for dependencies. #3428

Metadata Editors

  • A new Connections editor has been introduced that will eventually replace individual connection editors such as those for SQL and Essbase connections with a single interface to edit and manage all connection types. #3244

  • Added support for SQL connection type in general Connection editor. Various connection objects such as SQL, Essbase, SMTP, and EPM Cloud are gradually being moved to a general editor instead of having separate ones. #3706

  • Modified the Essbase Connections metadata editor’s Test Connection button’s behavior. The test results information has been remomved from the connection property grid and added a test results dialog to show the test results. #3265

    image
  • Fixed Issue: Fixed issue of case sensitivity with tokens in the SQL Editor. Eliminated token case sensitivity when using the "Show TestToken Values" checkbox and also when using the "Edit TestTokens" button. #3399

  • Added the DataTable name to the SQL editor form’s title. #3557

    image
  • Fixed Issue: Modified the Dodeca Applications metadata editor to preserve the current view selector properties when a different ViewSelectorObjectTypeID is selected. Prior to this change properties like HierarchyID were lost whenever ViewSelectorObjectTypeID was changed. #3712

  • Fixed Issue: When viewing module files in the Modules metadata editor, temporary files are not removed from the user’s temp folder. #802

PDF View

  • Fixed Issue: PDFs loaded from SQL BLOBs may load slowly and jump to the incorrect location. #3303

PowerPoint Exports

  • Added a ShapeType argument to PowerPoint export functionality to allow for the copying of ranges to PowerPoint as images or tables. A ShapeType argument has also been added to the PowerPointOperations method’s CopyRange overload. #3555

  • Replaced PowerPoint automation with the Aspose Slides API for Dodeca’s PowerPoint export functionality. This has allowed us to make the export functionality faster and more flexible. All existing PowerPoint export functionality should be thoroughly tested. #3522

Selector Lists

  • Added support for a DataSetSelectorList that utilizes a DataSet to produce generic selector list items for a SelectorComboBox or SelectorListBox. For an arbitrary data set, an ItemValueColumn and, optionally, an ItemDisplayNameColumn from the data set are chosen. #3753

    For the following data set, which represents a list of Oracle Enterprise Data Management applications, a selector list can easily be constructed.

    image

    For the DataSetID EDM Applications, the ID column will be chosen as the ItemValueColumn, and the Name column will be chosen as the ItemDisplayNameColumn.

    image

    When added to a view, the end-user is presented with a generic selector populated by the backing data set.

    image

Selectors

  • Autosize width functionality has been added to selectors. #2101

    • Double-clicking the splitter that separates the point of view selectors from the other windows, presumably view windows, will auto-size the width of the selector pane.

    • In the Selector Lists metadata editor, there are two new properties:

      • AutoSizeOnNodeExpansion: Whether to automatically size the width of the selector when a node is expanded. The width will only be changed if it isn’t wide enough to display all nodes. The width will never be made narrower.

      • MaxAutoWidth: The maximum width of the control when it is auto-sized. A default value of 0 is applied as no limit.

  • Fixed Issue: Multiple requests sent to server when mouse moves over a member in the treeview selector. #3748

  • Fixed Issue: Multiple SQL selectors cannot be initialized simultaneously. #3672

  • Added Today as an option in a selector’s DefaultSelectionPolicy list. This option only applies to Date selectors and Generic selectors that use the SelectorComboBox SelectorControlObjectTypeID. #2053

  • Fixed Issue: In earlier 8.x releases, selector and other cached values were not retained across upgrades under some circumstances. #3249

Spellcheck

  • Spellcheck functionality has been added to Dodeca. #2258

    • New workbookscript method: Added a SpellCheckOperations workbook script method with a Range overload. The overload spellchecks a specified range. If no range is specified the worksheet will be spell-checked.

    • Spell-check in the comments editor: This functionality uses squiggly red underlines to indicate spelling errors in the subject and comment input boxes, and a spelling context menu to provide options to fix. Comment ranges have a new property, SpellcheckEnabled, to control whether spellcheck is enabled for each specific comment range.

    • Spell-check on worksheets: A new standard tool controller, ExcelSpellCheckToolController, with a key of ExcelSpellCheck, has been added to Dodeca. Clicking this button initiates spell checking of specific ranges (or the used range if there are no ranges specified). Ranges can be specified by setting the new SpellCheckEnabled property on the CommentRange class and/or setting the SpellCheckEnabledRange on the DataTableRange class. The range-check functionality cycles through the cells in the specified range(s) and uses a dialog to prompt the user to respond to each spelling error.

SpreadsheetGear

Numerous new features were introduced and numerous issues were resolved with the updated version of SpreadsheetGear included in this version of Dodeca.

  • Introduced support for fine-grained worksheet protection options, allowing for more detailed control over the protection settings within worksheets. #3332

    Fine-grained protections were introduced in Excel to allow users to protect different elements of a spreadsheet. Below is the Protect Sheet dialog from Excel showing the functionalities which users can be given access within protected worksheets when using fine-grained protections.

    image

    Fine-grained protection functionality has also been integrated into workbook scripting. See Workbook Scripting for more information.

    Potential Breaking Change: Previous versions of Dodeca included code which silently unprotected the worksheet when the mouse cursor was moved off of the data cells of the grid in order to allow worksheet grouping row and column expansion and collapse to work properly on a protected worksheet. This code was removed from this version of Dodeca. In order to allow worksheet grouping to work properly on protected worksheets, you must export the workbook and apply fine-grained protections to allow the Format columns and `Format rows' operations on protected worksheets.

  • Added support for built-in and custom document properties. #3333

    The ability to set and to retrieve document properties have been integrated into workbook scripting. See Workbook Scripting for more information.

  • Fixed Issue: A warning is displayed when an unlocked cell is double-clicked or when the mouse is dragged outside the worksheet in a password-protected workbook. #2219

  • Fixed Issue: Cell comments are now preserved when exporting a Dodeca xlsx workbook to Excel. In prior versions, cell comments were not retained during the export process when the Dodeca template used the Excel xlsx file format. #2643

  • Fixed Issue: Worksheet grouping lines disappear when grouping columns and hiding the column immediately to the left of the grouping +/- sign. #3066

  • Fixed Issue: Dodeca client crashes running a view containing a cascade when the "Icon Set" conditional format is used in the template. #3556

  • Fixed Issue: Tooltip positioning issue when using split / frozen panes. #3607

SQLPassthroughDataSets

  • Removed the IncrementalMaxRows property from the SQLPassthroughDataSet Query, since it has not been supported by the Dodeca server since 8.2.0. #3776

  • Removed the DatabaseCursorType property from the SQLPassthroughDataset Query, since it has not been supported by the Dodeca server since 8.2.0. #3500

  • Added a RowSetCachingProvider option to SQLPassthroughDataset operations. The Default or no selection options use standard behavior for operations. The GZipCompressed option will compress result sets in order to reduce memory usage on the server, which may be useful for large dataset operations.

View Selection

  • A filter row has been added to the view selection form which is used to choose a view in the view hierarchy editor, the view editor (to select a drill-through view), and the toolbars configuration editor (to associate a view with the open view button). #2324

    image

View Selectors

  • Autosize width functionality has added to view selectors. #2101

    • Double-clicking the splitter that separates the View Selector from the other windows, presumably view windows, will auto-size the width of the view selector pane.

    • In the Application metadata editor, there are two new properties under ViewSelectorProperties:

      • AutoSizeOnNodeExpansion: Whether to automatically size the width of the selector when a node is expanded. The width will only be changed if it isn’t wide enough to display all nodes. The width will never be made narrower.

      • MaxAutoWidth: The maximum width of the control when it is auto-sized. A default value of 0 is applied as no limit.

  • New ViewHierarchyItem Type: Added a MostRecentlyUsedViewListHierarchyItem. When this item is added to a view hierarchy a list of the user’s most recently used views will be included in the ViewSelector at runtime. #3698

  • Added a "Copy Name" item to the View Selector context menu to allow copying of any view or category name. In addition, the keyboard shortcut Ctrl+C is now supported to copy a view or category name when the ViewSelectorObjectTypeID is ViewSelectorTree or ViewSelectorExplorerBarTreeHybrid. #3573

View Wizard

  • The Dodeca view wizard dialogs have been enhanced to automatically set the ViewID to match the ViewName, if the ViewID is blank. #3595

Workbook Script Debugger

  • Added the WorkbookScript name to the Dodeca debugger’s title bar. This helps to reduce confusion when multiple WorkbookScripts could be in context. #3604

Workbook Script Editor

  • The WorkbookScript editor has been enhanced to automatically set the MethodCondition to TRUE when the method’s Enabled property is changed from FALSE to TRUE, provided that the MethodCondition was previously set to the literal value FALSE. #3725

  • New Feature: Instant formula resolution capability has been added to the Dodeca Formula Editor. In the formula editor any open view can be selected to instantly resolve the formula as it is being typed. #3681

    image

Workbook Scripting

  • New Function: Added new function, Directory: @Dir(<FileOrFolder>, <Path>, [<Recursive>], [<IncludeHeaders>], [<MaxRows>], [<SortOrder>], [<Col1>], [<Col2>], [<Col3>], …​ ) returns a Directory listing. #2359

    Parameters include:

    • FileOrFolder, Whether to return files or folders. Specify "Fi(le)" or "Fo(lder)".

    • Path, The path to the directory to search, like "C:\Users\Myself\Desktop".

    • SearchPattern, The search string to match against the path. Can be left blank. This can include valid literal and wildcard characters, like "*.xlsx". Regular expressions are not supported.

    • Recursive, Whether to search sub-folders. The default is FALSE.

    • IncludeHeaders, Whether to include column headers. The default is FALSE.

    • MaxRows, The maximum number of rows to return. Defaults to 300.

    • SortOrder, Specify the list’s column number(s) to sort by, separated by commas, like "FolderName, Name desc".

    • Col(n), Which columns to include, like "…​, Name, Extenstion, FileSize". The default is "Name".

      Available columns:

    • All Include all columns.

    • Name The name of the file or folder.

    • FullName The full path of the file or folder.

    • Extension The extension of the file (returns blank of listing folders).

    • DirectoryRoot The root of the file or folder’s path.

    • FolderName The name of the folder. If files are listed this would be the file’s folder. If folders are listed this would be the folder’s name (the same value returned for the Name column).

    • FolderParent The parent folder of the listed file or folder.

    • FileSize The size of the file in kilobytes (returns blank if listing folders).

    • FileCount The number of files in the folder.

    • FolderCount The number of sub-folders of the folder.

    • ReadOnly Whether the file is read-only (returns blank if listing folders).

    • Attributes The attributes of the file (returns blank if listing folders).

    • Created The time the file or folder was created.

    • CreatedUtc The time the file or folder was created in Coordinated Universal Time.

    • Accessed The time the file or folder was last accessed.

    • AccessedUtc The time the file or folder was last accessed in Coordinated Universal Time.

    • Written The time the file or folder was last written to.

    • WrittenUtc The time the file or folder was last written to in Coordinated Universal Time.

  • New Function: Added a ProcessInfo function. @ProcessInfo(<InfoType>) returns specified process information. #3493 InfoTypes include:

    • ID, Returns the application’s ProcessID.

    • StartTime, Returns the application’s StartTime.

    • TotalMinutes, Returns the number of minutes that the application has been running.

  • New Overload: Added a DelimitedString overload to the ForEach method. The new overload executes a procedure for each value in a delimited string. Arguments are String, Delimiter, Procedure, ExitLoopCondition, and PropertyName. #3515

  • Added a ReplaceTokens argument to the SetPageSetup` HeadersAndFooters` overload. This argument determines whether to replace tokens in all headers and footers. Token replacement is done after new header or footer values are set, if any. It isn’t necessary to specify any headers or footers to do token replacement. The default is TRUE. #3568

  • New Method: Added a FileOperations method with overloads AddFile, CopyFile, DeleteFile, MoveFile, AddFolder, CopyFolder, DeleteFolder, and MoveFolder. #3569

  • New Overload: Added a Tokens overload to the AddDataCache method to build a DataCache from tokens. The overload includes arguments for whether to include each of these token types: ApplicationTokens, SelectorTokens, and ViewTokens. #3587

  • New Method: Added a the UpdateExcelPivotTable WorkbookScript method. This method updates a pivot table in an existing Excel file. The overloads are BinaryArtifact and File to allow the source Excel file to come from the file system or an application binary artifact. The data to update the pivot table with can come from a view range, a DataCache, or SQLPassthroughDataset. #3603

  • New Overload: The the PowerPointOperations method has a new overload, GetRangeMetrics. This overload can be used to capture placement and size information of a specified range in WorkbookScript properties. These properties are Top, Left, Height, Width, Scale, SlideHeight, and SlideWidth. Using the Dodeca @PVal() function, these values can be used to place ranges from Dodeca views into a PowerPoint presentation relative to other objects in the presentation. Known Issue: When a table containing hidden rows is copied into a Powerpoint presentation, the hidden rows appear unhidden in the Powerpoint presentation. #3649

  • Removed the unused EnableLogging property from this SendEmail ServletSMTP overload. #3668

  • New Method: The ShowContextMenu method shows the specified worksheet context menu. It defaults to the GridContextMenuID defined in the view’s UI properties. #3683

  • Fixed Issue: Error message "Operation is not valid on a locked cell" displayed when performing a Cut operation on an unlocked cell in a protected worksheet, followed by the SetFill method being called in the RangeChanged event. #3606

  • Fixed issue: The WorkbookScript error dialog would not appear after clicking the Error Details button at the bottom of the view’s window. #3702

  • New Method: The SetViewCaption method sets the view caption text and icon at the top of a view tab. #3768

  • Modified view properties SelectorConfiguration and CascadeSources to return their lists, as delimited strings, when captured using the @ViewPVal() function, rather than simply returning the class name. The function results can be used with the AddDataCache method to create a list of the view’s selectors or cascade sources. #3779

  • New Method Overload: The DataSet overload has been added to the AddDataCache method. #3719

  • New Method Overloads: The following overloads have been added to the SetProtection method: #3332

    • AllowFormatCells - Whether to allow users to format cells.

    • AllowFormatColumns - Whether to allow users to format columns.

    • AllowFormatRows - Whether to allow users to format rows.

    • AllowInsertColumns - Whether to allow users to insert columns.

    • AllowInsertRows - Whether to allow users to insert rows.

    • AllowInsertHyperlinks - Whether to allow users to insert hyperlinks.

    • AllowDeleteColumns - Whether to allow users to delete columns.

    • AllowDeleteRows - Whether to allow users to delete rows.

    • AllowSelectLockedCells - Whether to allow users to select locked cells.

    • AllowSelectUnlockedCells - Whether to allow users to select unlocked cells.

    • AllowSort - Whether to allow users to sort.

    • AllowUseAutoFilter - Whether to allow users to use auto filter.

    • AllowEditObjects - Whether to allow users to change graphic objects including maps, embedded charts, shapes, and text boxes, as well as comments.

  • New Method: The SetWorkbookProperty method sets the value of one or more workbook properties. #3333

    image
    Method Arguments - General Overload
    • Author: Set the value of the Author workbook property.

    • Category: Set the value of the Category workbook property.

    • Comments: Set the value of the Comments workbook property.

    • ContentStatus: Set the value of the ContentStatus workbook property.

    • CreationDate: Set the value of the CreationDate workbook property.

    • DocumentVersion: Set the value of the DocumentVersion workbook property.

    • Keywords: Set the value of the Keywords workbook property.

    • Language: Set the value of the Language workbook property.

    • LastAuthor: Set the value of the LastAuthor workbook property.

    • LastPrintDate: Set the value of the LastPrintDate workbook property.

    • LastSaveTime: Set the value of the LastSaveTime workbook property.

    • RevisionNumber: Set the value of the RevisionNumber workbook property.

    • Subject: Set the value of the Subject workbook property.

    • Title: Set the value of the Title workbook property.

    • CustomPropertyName: The name of a custom property to set the value of.

    • CustomPropertyValue: The value to give to the specified custom workbook property.

    Method Arguments - Clear Overload
    • ClearBuiltInProperties: Whether to clear all built-in workbook properties.

    • ClearCustomProperties: Whether to remove all custom workbook properties.

  • Added ability to create SMTP connection objects and specify an SMTP connection ID in the SendEmail method. Centralizing SMTP connection information into objects will allow for easier maintenance and aligns this functionality with Dodeca’s connection model. #2651

  • New Event Link: A WorkbookScriptException has been added. The new event occurs when there is a workbook script exception. #3405

    The event link’s properties include:

    • WorkbookScriptID, The ID of the WorkbookScript that raised the exception.

    • EventLinkName, The name of the EventLink that ran the Procedure that raised the exception.

    • ProcedureName, The name of the Procedure that raised the exception.

    • MethodName, The name of the Method that raised the exception.

    • OverloadName, The name of the Overload of Method that raised the exception.

    • MethodNumber, The number (within the Procedure) of the Method that raised the exception.

    • Arguments, The arguments of the Method that raised the exception.

    • Exception, The text of the exception.