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 2017 (8.6.7.102), NetAdvantage 2020, Volume 2 (20.2.30), Aspose.Cells 19.5.0, Syncfusion Essential Studio 19.2.0.44, GdPicture.NET 14.1.0.112, and Xceed Zip 3.6.7363.15420.
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 1.8. The Dodeca-Essbase service for all Essbase versions prior to, and including, Essbase 11.1.1.3 are supported and tested on Java 1.5. The Dodeca-Essbase service for all Essbase versions 11.1.1.4 and higher is supported and tested on Java 1.6. Both services are known to run on Java 1.7, 1.8, 1.9, and 1.10.
The release notes for this version contain the following sections:
A Duplicate tool has been added to the context menu of a view window, both tabbed and floating. The tool opens a copy of the view with the same POV selections. This is useful, for example, when the user wants to do a side-by-side comparison between an existing view and a new instance of the view with the same POV selections to determine whether there have been changes in the data. #2960
CulturePolicy
is set to
UseSpecifiedCulture, the system’s culture settings (rather than those of the
application’s SpecifiedCulture
) are used by many parts of the application.
This issue was introduced in 8.0.0.569. #3048A new application property, MetadataFilesDeletionPolicy
, controls whether
the metadata files for the application’s tenant are retained in the Dodeca data
directory across sessions or are deleted when an application session is closed.
By default and as is recommended for optimum performance, the policy is set to Never, and the files are retained across sessions. When set to OnSessionClose, the files are deleted when an application session is closed/exited.
The first time a given metadata instance is used by the client, a file, which contains the metadata for the instance, is downloaded to the client. The files are retained in the data directory, and the location of the directory is determined by the type of deployment.
If the metadata for a given instance is changed in the metadata repository, the
timing of the re-download of the instance’s metadata file to the client is determined
by the CheckForMetadataUpdatesFrequencyPolicy
. Deleting the metadata files when
a session is closed is NOT necessary to ensure that the client is using the most
recent version of the metadata in the repository during the next session. #2632
DodecaTeal_OfficeWhite_Style
style library has been updated for 8.1, and
includes changes related to ribbons, as discussed in the Ribbons
section, as well as changes to ensure that all the UI controls use the same font,
which is Segoe UI. #3052A new style library, DodecaTeal_OfficeColorful_Style
is available in 8.1, which
mimics the Office Colorful theme. The style library can be imported from the
metadata_starter_kit.zip or style_library.zip, which installed in the Dodeca
Framework metadata
folder.
PackageDeployments
and PackageDocumentation
lose their default values and are set to False. #3047In 8.1, the ability to associate attachments with a cell is supported. An attachment can be a file, a file link, or a hyperlink. The capability leverages the commentary infrastructure, which has been expanded to allow for comments and/or attachments to be associated with cells in a range. #1615
In previous versions, the term comment range is used to refer to the various settings that control the location, behavior, and appearance of related commentary in a view. The location is an actual range of cells on a worksheet. Each cell within the comment sheet range can optionally have one or more associated comments.
In 8.1, the term comment range is still used, but the new AllowComments
and
AllowAttachments
settings control whether cells within the defined sheet range
can have only comments, only attachments, or both comments and attachments.
The following properties control the behavior of attachments:
AllowDeleteAttachments
- Controls whether to allow attachments to be deleted.AllowedAttachmentFileTypes
- A semicolon delimited string of file types, such as
.xlsx;.txt;.docx. Only attachments of the file types specified are allowed to be
attached. If no file types are specified, then all types are allowed, except for
restricted types, which include files with any of the following extensions:
exe, pif, application, gadget, msi, msp, com, scr, hta, cpl,
msc, jar, bat, cmd, vb, vbs, vbe, js, jse, ws, wsf, wsc,
wsh, ps1, ps1xml, ps2, ps2xml, psc1, psc2, msh, msh1, msh2,
mshxml, msh1xml, msh2xml, scf, inf, reg, docm, dotm, xlsm,
xltm, xlam, pptm, potm, ppam, ppsm, sldmS1CountShow
- Indicates whether to show the attachment count rectangle in the upper
left corner of a cell, which has associated file attachments.
MaximumFileSize
- The maximum allowed file size of an attachment in kilobytes.MaximumAttachments
- The maximum number of files that can be attached to a cell.Since enabling the ability to associate attachments to cells in a view uses the
same CommentRanges
configuration as commentary, with the addition of the attachments
settings, instructions are not provided here; however, changes to the Comments Explorer
and examples of the attachment tool layouts are included below.
How to Attach a File, File Link, or Hyperlink to a Cell
A file, file link, or hyperlink can be attached to a cell in the Comments Explorer or by using the various attachment tools, which can be added to a context menu, toolbar, or ribbon.
The Comments Explorer has been revised to accommodate attachments as well as to improve the interface for viewing and editing comments. On the left is the pre-8.1 Comments Explorer, and the revised user-interface is on the right.
In 8.1, a comment is edited in an separate field instead of within the list of comments. The comment tools, edit field, and list of comments are only presented when the comment range associated with the selected cell allows comments.
The attachment tools and list of attachments are only presented when the comment range
associated with the selected cell allows attachments. The tools support attaching
a file, a file link, or a hyperlink. An attachment can be removed, when allowed
by the AllowDeleteAttachments
setting. The Open tool opens the attachment
in the application associated with the file extension. The selected attachment
description can be edited, and the attachments can be viewed as Icons, Details,
or a List.
Attachment Tools
The attachment tools include the Attach File, Attach Link, and Attach Hyperlink tools, which are used to associate an attachment with a cell, along with the Open Attachment, Export Attachment, and Delete Attachment tools, which display a dropdown list from which to select an attachment for the active cell. An Attachments menu tool is also available, which contains all of the other tools. The tools can be added to a toolbar (or ribbon) and context menu, as shown in the following examples:
The Attachments menu tool in a toolbar:
All of the attachment tools in a toolbar:
The Attachments menu tool in a ribbon:
All of the attachment tools in a ribbon:
On the left, the Attachments menu tool is used as the view’s context menu. On the right, the Attachments menu tool has been added along with other tools to the view’s context menu.
How to Add the Attachment Tools to a Toolbars Configuration
The attachment tools can be imported into a toolbars configuration, which represents toolbars or represents a ribbon.
To add the Attachments toolbar:
To add the Attachments group to a ribbon tab:
In Version 8.0.0.569, the Comment Range Editor was added to the View Template Designer
to assist with the creation of the key items formulas in the KeyItemsColumnRange
and KeyItemsRowRange
. In 8.1, the default names of the Address
, KeyItemsColumRange
and KeyItemsRowRange
are based on the caption.
For example, if the comment range caption is DataPointComments, then instead of Comments.Range.1, Items.Column.Range.1, and Items.Row.Range.1, as the range names, the default range names are DataPointComments.Comments.Range, DataPointComments.Key.Items.Column, and DataPointComments.Key.Items.Row. #3013
Fixed Issue: As noted in the 8.0.3 Release Notes, the following issue was fixed: There are cases when a comment, after being saved from the client, does not appear as a comment after the view is rebuilt, or when another view references the same comment. The issue is related to the computation of the key hash used to identify the comment, which is based on the key items, so the behavior is not encountered for all comments and appears to occur inconsistently. This issue was introduced in 8.0.0.569.
While the fix in 8.0.3 addressed the cause of some occurrences of this behavior, similar occurrences were subsequently detected, and have been addressed in 8.1. #2971
jdbc-test
Command: When an existing dodeca.properties file is updated, the
jdbc-test
command will attempt to locate the file by using the default path,
../staging/WEB-INF/classes/dodeca.properties. If the file is not found, the
user is prompted to enter the path to the existing properties file. Prior to 8.1,
the user was always required to type in the file path. #2909Connect
command has been restored. #2785delete-comments
command is used to delete a comment
by specifying only the comment key, unless the key value is preceded by --include-key-spec
in the command line, the comment is not deleted. The delete-comments
command has
3 parameters: author
, include-key-spec
, and exclude-key-spec
. In 8.1, the command
treats a single parameter value that is not preceded by the parameter name as
the key of the comment to delete. #3070delete-data-audit-log
and delete-metadata-audit-log-records
commands do not delete audit log records when the --days
parameter is used. #2981In 8.1, the ID of the view from which a user changes an Essbase data value, is stored in the data audit log record, and reported in the Essbase Audit Log Viewer. #2770
The Essbase Cube Editor provides an interface for editing the outline of an Essbase 21c database, which is associated an existing Essbase Connection, by using an Application Workbook. #2532
Refer to the Oracle Application Workbooks Reference.
The following operations are supported:
Export an Essbase cube to an Application Workbook, and optionally include data and/or calculation scripts.
Data is exported to a data worksheet, named Data.<database name>, in the workbook for a block storage cube when the size of the data is 400 MB or less. The data for an aggregate storage cube and for a block storage cube that exceeds 400 MB, is exported to a text file, named <database name>.txt, which is included in a file named <database name>.zip. The .zip file is created under the related application a nd database folder under applications in the OAC Files catalog.
Import the modified outline, data, and calculation scripts from an Application Workbook into the database. The workbook may contain multiple data and calculation script worksheets.
Uploading data or changes to the data is only supported by the Cube Editor through data worksheets in the Application Workbook.
Sheets can be inserted, deleted, renamed, moved, and copied using the sheet context menu, which is displayed by clicking the right mouse button when positioned over the sheet tabs.
The Cube Editor is opened for a defined Essbase connection from the
Essbase Connection Editor using the Cube Editor tool. The connection must reference
an Essbase 21c database and specify the RESTUrl
property.
A new property, CascadeTemplateSheetPolicy
, controls whether a cascade sheet
is identified by the CascadeTemplateSheetNumber
or CascadeTemplateSheetName
property.
Prior to 8.1, a cascade sheet could only be identified by the sheet number, which
required that the CascadeTemplateSheetNumber
be updated when a change to the
template caused the sheet number to be adjusted.
The CascadeTemplateSheetPolicy
, CascadeTemplateSheetNumber
, CascadeTemplateSheetName
properties are supported at the view-level as well as for the CascadeSheetConfig
property. The view-level properties can be used when the view contains a single
cascade template sheet. The CascadeSheetConfig
is used when the view contains
one or more cascade template sheets. #2738
A new Essbase Zoom In tool is supported, which is a segmented PopupMenuTool. When the button is clicked, the standard zoom-in operation is executed, which uses the current Zoom Level option. The dropdown menu contains the Zoom In, Zoom In (Next Level), Zoom In (All Levels), and Zoom In (Bottom Level) tools. #2938
To add the Zoom In PopupMenuTool to a toolbar, use the following steps:
To add the Zoom In PopupMenuTool to a ribbon tab, use the following steps:
Then the menu tool is dragged from the list on the left to the appropriate position in the group.
To set the tool size, hover the mouse over the tool and click the Modify Item icon, and set the Preferred Size to Large.
Click OK to close the Ribbon Designer.
AllowPaste
, which is supported for Excel views, controls whether
the user is allowed to paste into a sheet using the Ctrl+V or the Shift+Insert
keys, or by using the Paste tool. #2357Zoom Magnification Percentages: For Excel views, users often change the zoom
magnification of worksheets in the view, and the percentages must be reset each time
a view is built. In 8.1, to allow for the percentages to be retained and restored,
the Excel, SQL Excel, and Essbase Excel view types support a new property,
WorksheetZoomPercentageRestorePolicy
, which Controls whether the worksheet zoom
magnification percentages are restored when a view is rebuilt, when a view is opened
and built, or not at all. #3042
The property supports the following options:
RestoreOnOpenAndRebuild - As with the RestoreOnRebuild option, when a view is rebuilt, the zoom magnification of each worksheet is restored to the percentage as set by the user before rebuilding the view. And, when a new instance of the view is opened and built, the zoom magnification of the worksheets is set to the percentages of the worksheets in the instance of the view for which the percentages were most recently changed.
For the RestoreOnOpenAndRebuild option, the magnification percentages are retained in the persistent cache (i.e. across sessions) for all the sheets in the view when the magnification percentage is changed for any given worksheet. A new instance of the view uses the persisted percentages when initially built, but adjustments are not reflected in other open instances of the view that have already been built, but are restored when the new instance is rebuilt.
While none of Dodeca’s components were found to be vulnerable to the Log4Shell vulnerability (CVE-2021-44228), in this release, the Dodeca metadata service no longer uses log4j at all. Likewise, the Dodeca Essbase connector (the Dodeca-Essbase service) now ships with and uses the reload4j library, which is compatible with and based on log4j 1.2.17, but with all of the known log4j 1.2 CVEs fixed. #3078
For more information, see:+ https://www.appliedolap.com/blog/log4j-log4shell-vulnerability-statement
Multiple Item Selection Enhancements - The techniques supported by the Import/Export from Local Zip File dialogs to select (i.e. highlight) and check/uncheck multiple items have been expanded. #2836
Select multiple items:
Check or uncheck selected items:
DataSetRanges
contains a DataTableRange
that is configured without the InsertCells option set in the SetDataFlags
(i.e. the retrieved data rows are not inserted into the range specified as the
DataSheetRangeName
) and the number of columns in the sheet range is less than
the number of columns in the retrieved data, the following error occurs when the
data set range is saved: Index was outside the bounds of the array. This issue
was introduced in 7.8.8.7644. #3085The Reporting Services view type is no longer supported. The view type provided a way to define and retrieve the view data through Microsoft Reporting Services. #2656
The discontinuation of support for the Reporting Services view type is a potential breaking change. We are not aware of any customers who are using this capability. Please contact support@appliedolap.com if you are impacted by this change.
The Ribbons documentation contains the following sections: #1605
Ribbons and the Application Style Library
The DodecaTeal_OfficeWhite_Style and Office 2010 Style Library (Blue) style libraries have been updated with necessary changes for use with ribbons. Ribbon behavior and appearance, such as the availability of the minimize button, are dependent on these changes. Both style libraries can be imported from the metadata-starter-kit in the metadata folder of the Dodeca Framework installation.
A new style library DodecaTeal_OfficeColorful_Style is available in 8.1, and shown is here with different combinations of minimized and maximized application and view ribbons.
Tool Images
Updates to the tool images, which are used by toolbars configurations, were included in 8.0, along with support for the ability to upgrade the tool images in existing toolbars configurations.
With the introduction of ribbons, new tool images and additional revisions to existing images are included in 8.1. Upgrading existing toolbars configurations to the new tool images is highly recommended. To do so, use the Upgrade Images and Upgrade All Images utilities in the Toolbars Configuration Editor.
Ribbon Screenshots
To begin the introduction to ribbons, here are a few example screenshots.
Default Administrator Ribbon
View Ribbon with a Single Home Tab and the Build/Selectors Main Menu Toolbar
Same View Ribbon with the Ribbon Minimized
View Ribbon with Home and View (Build/Selectors) Tabs
Adhoc View with File, Excel, and Data Tabs, and a QAT (Quick Access Toolbar)
Application Main Menu Bar versus Ribbon
A Dodeca application can use either the default administrator toolbars or use a
toolbars configuration, which is specified as the ToolbarsConfigurationID
.
When an application’s UseDefaultAdminToolbarsConfiguration
property is True,
the DefaultAdminToolbarsConfigurationDisplayPolicy
controls whether the tools
are presented as a main menu bar or as a ribbon.
ToolbarsConfigurationID
is specified, the referenced toolbars configuration
determines whether the tools are presented as a main menu bar or as a ribbon.View Main Menu Bar versus View Tab
All of the view toolbars configurations, which are included in the metadata-starter-kit, contain a View toolbar (i.e. has "View" as the key"). The View toolbar typically contains the Build view button, and may also contain the Auto Build, Refresh and/or Auto Refresh buttons, and is the default toolbar used for selectors.
In a toolbars configuration, one toolbar can be designated as the main menu bar, which has the following characteristics:
For these reasons, the View toolbar is designated as the main menu bar.
When a view uses a ribbon, the View main menu bar appears below the ribbon.
The main menu bar remains visible when the ribbon is minimized.
Alternatively, the Build (and related buttons) and the selectors can be presented in a ribbon tab.
Toolbars Configuration
The term toolbars configuration was adopted before the introduction of ribbons by Microsoft for the Office applications. The term will continue to be used, but now refers to the configuration of tools as presented in toolbars, a ribbon, or a combination of both.
When assigned as the application’s ToolbarsConfigurationID
, or a view’s
ViewToolbarsConfigurationID
or MergeableToolbarsConfigurationID
,
it is the definition of the toolbars configuration that determines whether the tools are presented in toolbars, a main menu bar, a ribbon, or a combination.
There are 3 new toolbars configuration properties that apply specifically to ribbons.
Ribbon.TabItemAreaDisplayStyle
- Controls how the ribbon tab caption/header
area is displayed.
HideTabs - The tab headers are not displayed, but the tab header area is rendered.
When the ribbon contains a single tab and the display style is set to Hidden or HideTabs, the ribbon cannot be minimized.
RibbonQuickAccessToolbarVisible
- Controls whether the Quick Access Toolbar
is displayed in the ribbon. At runtime, if the toolbar does not contain any tools,
it is automatically hidden. Use the Ribbon Designer to add tools to the Quick Access Toolbar.Ribbon.QuickAccessToolbarLocation
- Controls the location of the Quick Access Toolbar,
if visible, as either above or below the ribbon.Ways to Create a Ribbon
Let’s take a look at the different ways to create a ribbon.
Add a new toolbars configuration as a ribbon.
Use the New tool and check the Create the toolbars configuration as a ribbon checkbox., and then use the Ribbon Designer and Import Wizard to add tabs, groups, and tools.
Copy an existing ribbon.
Use the Copy tool to copy an existing toolbars configuration that contains a ribbon, and then use Ribbon Designer to modify or add the tabs, groups, and/or tools. The metadata-starter-kit contains ribbons that can be copied and used as is or modified.
Convert a toolbars configuration, which contains only toolbars, to a ribbon.
Use the Convert To Ribbon or Convert All To Ribbon tools to convert a single or multiple toolbars configurations to a ribbon.
Ribbon Designer
The Ribbon Designer is the UI for editing the ribbon and the Quick Access Toolbar.
Ribbon tabs, groups, and tools can be added, imported, modified, deleted, and rearranged.
Quick Access Toolbar
A Quick Access Toolbar (QAT) can be added for a ribbon, and be displayed either above or below the ribbon.
Import Wizard
The Import Wizard is opened from the Ribbon Designer.
For example, in this screenshot, after importing the standard Excel tab into an new toolbars configuration, the available items list on the left and the ribbon layout on the right are the same.
Import Wizard with Standard Tools Sorted by Category
The standard tool categories have been updated to provide an easier way to identify related tools, to represent the association between the standard tabs, groups, and for consistency between the import functionality and the converter.
Toolbars to Ribbon Converter
Migrating from Toolbars to Ribbons
With the introduction of ribbons coming late in the evolution of Dodeca, a primary focus of the implementation was to provide a viable migration path to support converting existing toolbars configurations from a toolbars layout to a ribbon layout, with the following objectives:
Converter Tools
In the Toolbars Configuration Editor, the Convert to Ribbon and Convert All to Ribbon tools support the conversion of a selected or of the filtered toolbars configurations from toolbars to a ribbon, respectively.
The Convert to Ribbon tool opens the Toolbars to Ribbon Converter dialog.
The Toolbars Configuration section supports the following options:
For a view toolbars configuration, the Toolbar to Ribbon Tab Conversion section supports the following ribbon tab layout options:
The Commands tab is always positioned as the first tab.
Examples of View Ribbon Tab Layout Options
This toolbars configuration contains standard tools as well as a custom toolbar, which contains 4 custom tools.
Converted to a Single Home Tab in Preview Mode
Converted to a Home Tab and a Commands Tab
File, Excel, Data, and Commands Tabs
Converting an Application (or mergeable View) Main Menu Bar Toolbars Configuration
When the source toolbars configuration represents an application or mergeable view toolbars configuration, the converter dialog does not contain any conversion options.
When an application main menu bar is converted to a ribbon:
When an mergeable view main menu bar is converted to a ribbon:
This is an example of the a view mergeable toolbars configuration, which contains the File menu, converted to a ribbon, and displayed as merged into the Application ribbon.
Ribbon Template
Internally, a ribbon template is used by the converter. The template defines the following:
Standard groups for view-level tools:
As an example, the Retrieve group contains all of the retrieve-related standard tools. The converter creates the group in the appropriate tab in the ribbon, based on the conversion option, and adds each of the retrieve-related tools in he toolbar to the group based on the layout and sizes of the tools as defined in the template.
For the File, Excel, and Data tabs, the template defines the standard groups in each tab as well as the relative placement of the groups. Each of the groups maps to a standard group as shown in the screenshot above.
File Tab Group Layout
Excel Tab Group Layout
Data Tab Group Layout
How to Add a View Tab to a Ribbon
As described in the View Main Menu Bar versus View Tab section above, the view build-related buttons and selectors can be displayed either in a toolbar or in a ribbon tab.
To add a View tab to a ribbon:
Click the Show Checked button to list only the checked tools. Uncheck any that you do not want in the View tab.
How to Add a Custom Tool to a Ribbon
As an example, this ribbon contains a custom toolbar with 4 custom tools.
The steps to add a custom tool to a ribbon:
Add the custom tool to the ribbon using the Ribbon Designer.
The new group can be moved using the grab handle, the Up/Down arrows, or the context menu. The Sales Channel group was moved to be the first group in the Home tab. The Ribbon Preview is automatically updated to reflect the changes.
Ribbons and Workbook Scripting
SetToolbarVisible Method
The SetToolbarVisible method has been modified to accommodate ribbons.
SetTool Method
After the Visible argument value is applied to the tool:
ServiceProviderRequestedAuthenticationContext
property of the
SamlAuthenticationProvider
. By default, the identity provider is allowed to
choose an appropriate authentication method. #3002NullLastUsedItemString
,
NullSelectionText
, and NullSelectionTokenValue
. #2645In previous versions, a selected item, which contains a blank or the
SelectorList.SelectorcontrolProperties.SelectionTextDelimiter
, is enclosed in
double quotes as displayed in the selector tool. For example, Hex Nut 1 is displayed
in double quotes, because the string contains a blank. Abbas, Syed is displayed
in double quotes, becaue the string contains a blank and a comma, which is the
SelectionTextDelimiter
. #1579
In 8.1, only a selected item containing the delimiter is enclosed in double quotes.
So, for example, Hex Nut 1 is no longer enclosed in double quotes, because the
string does not contain the SelectionTextDelimiter
, but double quotes are still
used for Abbas, Syed.
In 8.1, a SQLConnectionID
property can be tokenized. #2712
When a token is specified for the Query.SQLConnectionID
used by the SQLPassthroughDataSet
associated with any of the following application authentication services, the
token must be defined in the application’s ApplicationTokens
:
If an application uses the ApplicationTokensSqlPassthroughDataSetID
to populate
the application tokens, the SQLConnectionID
of the query/queries can be tokenized,
but the token must be defined in the application’s ApplicationTokens
.
In the SQLPassthroughDataSet Metadata Editor, the Test Data Set utility resolves
a query’s tokenized SQLConnectionID
using the application tokens and the query’s
TestTokens
, which allows for testing a token defined as an application token or
a token that will be defined as a view token at runtime.
The Identify Table Columns utility in the Query Editor and Column Editor
also uses the application’s ApplicationTokens
and the TestTokens
to resolve the
query’s SQLConnectionID
.
The runtime tokens, which are the application’s ApplicationTokens
, the view’s ViewTokens
as defined in the metadata and those added by the AddToken
workbook script method,
can be used as the Query.SQLConnectionID
for a SQLPassthroughDataSet
associated
with a selector list, a DataSetRange
or AutoCompleteRange
in a view, or a DataSetID
in a workbook script AddDataCache
or BuildDataSetFromRange
method.
In 8.1, the Load Test Tokens tool in the SQL Passthrough DataSet Editor
supports the option to include tokens from the selected open view that were added
by the view’s workbook script using the AddToken.General
method/overload. The
tokens loaded as test tokens always include the application tokens, the view
tokens, and the current point-of-view tokens. #2652
The Query.DataTableInfo.SelectSQLParameters
functionality, which was originally
added in Version 6.6.0.4194 (11/22/2013), was requested by a customer to leverage
performance optimizations gained through the caching of parameterized statements
in DB2, but was later determined to not improve performance due to the caching scheme
used by the database. We are not aware of any customers using this functionality,
and the property has been removed in 8.1. #3010
The customer was able to improve performance by leveraging concurrent
query execution, supported by the SQLPassthrougDataSet ConcurrentQueryExecutionEnabled
setting, which was added in Version 6.7.1.4340 (3/11/14).
Escape
key can be used to close the Formula dialog. #2870The search behavior of the Find dialog has changed to be more consistent with Excel. The Direction Up/Down options were removed. The search starts at the active cell, searches down, and loops back to the top to continue the search. When the next detected match is the first match initially detected, a No more occurrences found. message is displayed. #2703
AllowOnlySingleInstanceFromViewSelector
property, the view cannot be opened
from the view selector if the view’s template is open in the View Template Designer.
Instead, the View Template Designer window is activated when the user attempts
to open the view. #3079A Notes
property has been added to all view types. #2244
DodecaTeal_OfficeWhite_Style
library, and 5) to automatically close the dialog when the user clicks the enter
key after entering the Name. The Tab key (or mouse) can be used to navigate from
the Name field to the Description field. #3006When the application’s ViewSelectorProperties.AllowEditViewMetadata
property is
True, a SQLPassthroughDataSet associated with a view through the DataSetRanges
or the AutoCompleteRanges
property, can be accessed (i.e. navigated to in the
SQLPassthrough DataSet Editor) from the view selector’s context menu. #1571
BeforeTokenTableBuild
event. #3028The layout of the Workbook Script Debugger has been changed so that all of the controls which were previously on the Breakpoints tab and used for stepping the workbook script, setting breakpoints, examining argument values, etc. are on the left, and all the remaining tabs are on the right. This allows a developer to be able to view and control the current context while also accessing the functionality available in the Formula Evaluator, Tokens, Procedure, Event, Sender, View, Workbook Script, and Data Set tabs. #2907
In 8.1, the Tokens tab in the Workbook Script Debugger supports the
ability to replace tokens in a specified string with the tokens defined in the
TokenTable
. #1596
When a new procedure is added by clicking the Add a new procedure tool, a slight change to the user-interface behavior was made to allow the procedure name to be entered before the Method dropdown list is displayed. #2044
To improve the user-interface for entering descriptions and comments and
to also allow for multiple lines to be to entered, the Workbook Script Description
and Comments
, Property Comment
, Event Link Comment
, and Procedure Description
can be edited in a new Text Editor, which is opened by clicking the button
to the right of the Description
or Comment
field. #2943
When method arguments are displayed on-the-side, the Find/Replace functionality only searchs the method arguments of the current selected method. A note has been added the Find/Replace control to serve as a visual cue of the limitation. #2882
A new Paste After tool has been added to support the ability to paste a copied item after the selected item. The tool is available in the tool bar and in the context menu. #2731
ShowScriptDebugger
and ThrowException
method arguments
is inconsistent with other methods. #3058The Workbook Script PseudoCode documentation contains the following sections:
What is Workbook Script PseudoCode?
Workbook Script PseudoCode is a text-based representation of the logical sequence of the events, procedures, and methods as executed by a workbook script. It slightly resembles a programming language in the use of syntax, such a curly brackets to delimit nested blocks, as well as workbook scripting constructs, such as method and method argument names, etc. #2942
PseudoCode Uses and Benefits
PseudoCode is a tool that can be used throughout all phases of workbook script development. Some of the potential uses and benefits include the following:
Notepad++
Notepad++ is the preferred text editor for viewing pseudocode. The pseudocode file extension can be either .txt or .wbs. A Notepad++ UDL (user-defined language) is defined for the .wbs extension, and is included in the metadata-starter-kit as a Binary Artifact.
To use the UDL, do the following:
WbsPseudoCode Notepad++ UDL
binary artifact from the metadata-starter-kit.
If you do not have access to an installation of the Dodeca Framework, contact support@appliedolap.com.WbsPseudoCode Notepad++ UDL.xml
file from the artifact.PseudoCode File Layout and Content
PROPERTIES: Properties listed in alphabetical order by name, and includes the DataType, Shared status, Value, and Comment.
EVENT LINKS: Event links ordered either as listed in the workbook script, alphabetically, or in logical sequence, and includes the related procedure name, active or inactive status, and comment.
EVENT PROCEDURES: Contains the representation of the executed logic of each event-related procedure.
NON-EVENT PROCEDURES: Contains the top-level procedures that are not called within the context of an event.
WARNINGS: Contains discrepancies or indications of potential issues related
to the SpecifySheetBy
, SheetSpec
, Address
, CellByCell
, DataSetID
, ScriptID
,
and procedure name arguments. Each warning includes the procedure, method, warning
and a line #.
PseudoCode Examples
The logical runtime sequence of the execution of a workbook script’s procedures is based on the following structure:
ExecuteProcedure
and ForEach
, execute another procedure,
which may also contain methods that execute a procedure.Pseudocode represents the logical sequencing as nested blocks of script. The pseudocode delimits a nested block of script with opening and closing curly brackets and indentation.
Methods with optional procedure arguments, such as the CancelEvent
method’s
CancelProcedure argument, and the On<Event>Procedures for methods, such as SetControl
,
also embed the executed procedure as a nested block.
Workbook Script Editor PseudoCode Tools
The PseudoCode tools are accessed from the Workbook Script Editor.
PseudoCode Options Editor
Comments Options
Event Links Options
When ordered in logical sequence, the event links are listed in the most probable or predictable order, which is not necessarily the exact runtime order. For example, during a build, the ActiveSheetChanged
or RangeChanged
events may be raised, but that isn’t predictable.
Methods Options
Method Arguments Options
SQLPassthroughDataSets and Essbase Scripts Option
Workbook Script ScriptSets
capability was introduced in version 8.0.0.569 to
facilitate the Dodeca no code / low code environment by making Workbook Scripts
easier to write and maintain, while also enabling Workbook Script reuse
and readability. #3061
In 8.1, a set of Utility workbook scripts is being made available to serve as an
example of how ScriptSets
can be used to easily tailor view behavior without
significant Workbook Script experience.
The Utility workbook scripts can be imported from the metadata_starter_kit.zip, which is in the Metadata folder of the Dodeca Framework installation. Also included is a Utility WorkbookScripts Documentation view and template, which provides a description and instructions for how to use each utility script.
The following Utility workbook scripts are included:
Utilities.BuildColumnsFromMDXScript
– This script builds columns into a template
based on a template range and a MDX script.Utilities.BuildRowsFromMDXScript
- This script builds rows into a template
based on a template range and a MDX script.Utilities.ConfigureExportToExcel
– This script configures the tools necessary
for exporting an Essbase view to Excel. This capability is used in conjunction with
the Import View from Excel tool in order to update Essbase with values stored
in a disconnected input workbook.Utilities.Debug
– This script contains debug utilities, which unhide the
cover to display the worksheet, and display the formula bar, Excel row and column
headers, and gridlines.Utilities.Debug.UnhideRowsAndColumns
– This script contains a debug utility
to unhide all rows and columns in the AfterBuild
event.Utilities.EventLogger.Essbase
– This script logs all events, including Essbase
and SQL events, in an Essbase view type along with their event arguments.Utilities.EventLogger.SQL
- This script logs all events in a SQL view type
along with their event arguments.Utilities.FlipSigns
– This script loops the Utilities.FlipSigns.Address
range
cell-by-cell in the AfterBuild
event and flips the signs on any cell that is not
protected and that has a numeric formula. This script loops all worksheets and skips
the worksheet if it does not have the required range name.Utilities.HideColumnsAfterWorkbookOpen
– This script uses the Utilities.HideColumnsAfterWorkbookOpen.Columns
range name to conditionally hide columns in the template in the AfterWorkbookOpen
event.Utilities.HideRowsAfterWorkbookOpen
- This script uses the Utilities.HideRowsAfterWorkbookOpen.Rows
range name to conditionally hide rows in the template in the AfterWorkbookOpen
event.Utilities.LoopColumnsAfterBuild
- This script uses the Utilities.LoopColumnsOnActiveSheet.Columns
range name to loop columns in the template in the AfterBuild
event. The columns
are processed in reverse order from last column to first column in order to support
deletion of a column during processing.Utilities.LoopRowsAfterBuild
- This script uses the Utilities.LoopRowsOnActiveSheet.Rows
range name to loop rows in the template in the AfterBuild event. The rows are
processed in reverse order from last row to first row in order to support deletion
of a row during processing.Utilities.ProtectAllSheets
- This script restores protection on all worksheets in the
AfterBuild
event.Utilities.UnprotectAllSheets
- This script unprotects all worksheets in the
AfterWorkbookOpen
event.The Utility scripts use Excel range names in the view template, as needed, to pass parameter values from the view template to the workbook scripts. The Utility WorkbookScripts Documentation view, which is included in the metadata_starter_kit.zip, documents the range names and can be used as a source for copying and pasting into the view template.
To do so, open the view from the View Editor using the Preview button. Then, for easier access, double-click the Utility WorkbookScripts Documentation view tab to float the view window and move the window to a location that is convenient for copying the names, as needed, from the view and pasting into the template.
AutoAddRetrieveSubRanges
has been added to the EssbaseRetrieve
method. #1816SaveAll
argument has been added to the SaveDataSetRanges
method. To save a specific data set range, the DataSetRangeName argument should
be specified to indicate the name of the data set range to save. To save all
data set ranges, the SaveAll argument should be set to TRUE. When the SaveAll
argument is blank or resolves to FALSE, the DataSetRangeName argument is required.
#2623SendEmail
method. If the ZipAttachments argument is TRUE, the ZipFileName indicates the
name of the attached zip file. If not specified, the view’s name is used as the
file name. #2803New Method Argument: A SyncTokens argument has been added to the AddToken
and
AddTokensForSubstVars
methods. The argument allows a developer to control whether
the method pushes all the existing view tokens to the runtime tokens when a View
token is added, and similarly, whether the method pushes all the existing application
tokens to the runtime tokens when an Application token is added.
The automatic synchronizing of all of the existing view tokens with the runtime tokens
when a view token is added, can be problematic in complex scenarios where the workbook
script, for instance, is adding view tokens in the RequestGridContextMenuID
event as well as in other events that occur during the build processing.
In general, if a View token is being added in the RequestGridContextMenuID
for the purpose of sharing with a view opened by the workbook script or a workbook
script associated with a WorkbookScriptToolController
, setting the SyncTokens
argument to FALSE is advised.
By default, the argument value is TRUE, to be consistent with the behavior in previous versions. #2831
SetSelectorConfiguration
method has a new overload,
ResetAllEssbase
, which allows for the following connection-related properties
to be set for all Essbase selectors: ConnectionPolicy, ConnectionID, EssbaseLoginServiceObjectTypeID,
UseAliases, and AliasTableName. #2710New Method Overloads: In version 8.0.0.569, the CommentOperations
method
was added with a single overload, Load
. In 8.1, overloads have been
added that replicate the functionality supported by the Copy.Comments
and SetComment
methods. Although these methods will continue to be supported, the CommentOperations
consolidates all comment-related operations as overloads into a single method. #3084
Existing Method.Overload | CommentOperations Overload |
---|---|
SetComment.Add | Add |
CopyComments.General | Copy |
SetComment.DeleteByCommentID | DeleteByCommentID |
SetComment.DeleteByKeyHash | DeleteByKeyHash |
SetComment.Save | Save |
N/A | Load |
WriteLogMessage
method has been changed to, for example,
2022-02-02T11:53:05.631. #3059BinaryArtifactOperations.CreateFromWorkbook
method/overload
is used and the Filename argument is not specified, or the specified value does
not include an extension, the Excel file in the binary artifact will also not contain
an extension, which can result is various issues depending on how the binary artifact
is subsequently used. This issue was introduced in 8.0.0.569. #3068SendEmail.ServletSMTP
method/overload is used with
IsHtmlMessage = TRUE and ImageBaseURL is not specified, the method will fail
with the following error: Unable to send mail. no protocol. #3049SQLExceptionOccurred
event link cannot be used by a workbook
script to detect when a SQL error occurs as a result of calling the BuildRangeFromScript.SQLPassthroughDataSet
or the AddDataCache.SQLPassthroughDataSet
method/overload. #3026AddDataCache
DelimitedString
and CartesianList
overloads
do not honor the TrimLeft and TrimRight arguments, and always trim whitespace
from the left and right of each value. In 8.1, to avoid introducing changes that
might break existing workbook scripts, if not specified, the default value of
TrimLeft and TrimRight for the DelimitedString
and CartesianList
overloads
is TRUE; whereas, for all other overloads, the default value of TrimLeft and
TrimRight is FALSE. When non-blank, the specified argument value is used. #2601AddToken
method is used to add tokens in the BeforeDataSetRangeSave
event, the newly added tokens are not replaced in the InsertSQL
, UpdateSQL
,
and DeleteSQL
statements. While this issue has been addressed in 8.1, it should
be noted that the General
overload must be used for token replacement to occur.
#3039SQLPassthroughExecute
method, if the last statement
in the value specified as the Statements argument, ends with a semicolon, the following
error occurs: SQL statement to execute cannot be empty or null. Of the databases
tested, this error occurs when using Oracle, and not SQL Server. #3001CellByCell
execution in an asynchronous view,
a very large collection of tasks could be produced and, because of frequent
enumeration, cause degraded performance. #2999ScriptSet
, a secondary script is able to call a procedure
defined in the primary script without qualifying the procedure name with the
primary script ID. This allows for a script to be used as a secondary script in
different workbook scripts as long as the primary script contains the referenced
procedure. #3082In previous versions, the WorkbookScriptToolController
can be assigned to a
Button, StateButton, ComboBox, TextBox, or PopupColorPicker tool. In 8.1, the
WorkbookScriptToolController
can also be assigned to a PopupMenuTool, which
has a DropDownArrowStyle
of Segmented or SegmentedStateButton. When segmented,
the PopupMenuTool contains a button and a dropdown menu, and is treated as a Button
tool by the tool controller when the user clicks the button. #2938