Version 6.2.0.3390

March 30, 2012

This version uses SpreadsheetGear 2010 (6.0.3.190), NetAdvantage 2011, Volume 1 (11.1.20111.2042), and Aspose.Cells 7.0.3.0.

The release notes for this version contain the following sections:

Application Metadata

Application Metadata Editor

Commentary

Date Selector and Date Selector List

Essbase Connection Metadata

Essbase Operations

Metadata Editors

Relational

Saved Views

Session Cache

View Selector Explorer Bar and View Selector Tree

View to PDF Conversion

Workbook Script Metadata Editor

Workbook Script Functions, Methods, and Event Links

Workbook Script Tool Controller

Application Metadata

Application Metadata Editor

Commentary

Date Selector and Selector List

Resolution: The date assigned to the selector’s token is based on local time, which ensures that the token value represents the same day as the selected date. (#1043)

When an administrator defines a date selector list, the format of the specified date string for the MaxDate, MinDate, DefaultSelectionString, and NullLastUsedItemString settings should conform to the date formats of the locale used by the Windows operating system (on which the Admin application is running.)

The framework persists the date values to the metadata database using a neutral format that is not associated with any particular locale. This allows the actual date values to be retained and then converted to the appropriate format when the locale of the adminstrator’s Windows system changes as well as when the date selector list is used by a date selector within a view.

image

When the date selector list is used by a date selector within a view, the format of the date presented by the selector is determined by the view’s culture settings (i.e. CulturePolicy and CultureName.) In the screenshot below, the CulturePolicy for the Transaction by Supplier view is UseWindowsCulture. At runtime, the format of the dates presented by the selector is based on the regional format settings on the user’s system. Alternatively, when the CulturePolicy is set to UseSpecifiedCulture, the specified CultureName value determines the date formats.

image

Essbase Connection Metadata

image

The credentials are required and used for the following:

  1. Beginning with Essbase 11.1.2.1.102, the Java API, which is used by the dodeca-essbase service, requires administrator privileges when obtaining information that requires opening the outline. To accommodate this change to the API, the client uses the AdminUsername and AdminPassword when requesting cube-related information.
  2. When an application uses the EssbaseUserRolesFromGroupNames authentication service and the view selector is configured to show saved views that are owned and shared by users that are members of a specific Essbase group, the client uses the AdminUsername and AdminPassword to request the names of all the users that are assigned to the group. The Java API is used by the dodeca-essbase service to obtain the users in a given group, and the API requires administrator privileges for this operation. This applies to Essbase versions 9.3.0 and later.

Essbase Operations

Relational

For a SQLPassthroughDataSet, a SQL statement cannot contain a column name that is the same as the value specified as the DataTableName. This will result in the following error:

image
image

This screenshot illustrates the corrected outlining:

image

By default, all the rows selected by a relational query are returned to the client at one time. If the query retrieves hundreds of thousands of rows, for instance, then a large amount of memory is required by the dodeca service, which runs inside the Java application server, to construct the XML, which contains the results returned to the client.

A query’s IncrementalMaxRows property can be used to limit the number of rows fetched by a single call to the server. When the total number of rows selected by a query exceeds the specified maximum number of rows, additional requests are made by the client until all the rows are fetched. For example, if the IncrementalMaxRows value is 100,000 and the query selects 345,000 rows, then the client incrementally sends four requests to the server. As one response is received, another is sent, until all the rows are received by the client. The database query is executed during the first request, and the dodeca service retains a database cursor to the results, which is used by each subsequent request and then released after all the rows have been sent to the client.

Typically, use of the IncrementalMaxRows property is recommended only when the total number of rows is likely to exceed 100,000 to 200,000. As a rule of thumb, set the property value to 100,000. However, each environment is different, and the best approach is to experiment in your environment to determine the optimal setting for a given query. For instance, if the query returns a large number of columns, you may need to set the value of the IncrementalMaxRows to a smaller number, since the number of columns also affects the size of the data.

image

*Note: The IncrementalMaxRows property only applies when the SQLPassthroughDataSet contains a single query. A SQLPassthroughDataSet that contains more than one query retrieves all the rows for all the queries in a single request to the server. As a rule, queries that potentially select thousands of rows should not be combined with other queries in the same SQLPassthroughDataSet.*

Another way to reduce memory usage and improve performance, especially when retrieving thousands of rows, is to use column aliases in the SELECT statement. For instance, this is a relational query used by the Dodeca Sample Application.

SELECT SUPPLIER.SUPPLIER_ALIAS,

CONVERT(char(10), SALES.TRANSDATE, 101) ,

MARKET.STATE, PRODUCT.SKU_ALIAS,

MEASURES.CHILD,

SCENARIO.SCENARIO,

SALES.AMOUNT

FROM SCENARIO INNER JOIN

MEASURES INNER JOIN

PRODUCT INNER JOIN

MARKET INNER JOIN

SALES INNER JOIN

SUPPLIER ON SALES.SUPPLIERID = SUPPLIER.SUPPLIERID ON MARKET.STATEID = SALES.STATEID ON

PRODUCT.PRODUCTID = SALES.PRODUCTID ON MEASURES.MEASURESID = SALES.MEASURESID ON

SCENARIO.SCENARIOID = SALES.SCENARIOID

Using this SELECT statement and setting the query’s DataTableName to "Transaction", the following illustrates the response XML for two of the rows generated by the query.

image

By changing the select statement to use single character column aliases, as shown below, and by also changing the query’s DataTableName to "T", the size of the XML returned to the client is significantly reduced, which reduces the amount of memory required to package the XML on the server and to read the XML on the client.

SELECT SUPPLIER.SUPPLIER_ALIAS AS S,

CONVERT(char(10), SALES.TRANSDATE, 101) AS D,

MARKET.STATE AS T,

PRODUCT.SKU_ALIAS AS P,

MEASURES.CHILD AS M,

SCENARIO.SCENARIO AS E,

SALES.AMOUNT AS A

FROM SCENARIO INNER JOIN

MEASURES INNER JOIN

PRODUCT INNER JOIN

MARKET INNER JOIN

SALES INNER JOIN

SUPPLIER ON SALES.SUPPLIERID = SUPPLIER.SUPPLIERID ON MARKET.STATEID = SALES.STATEID ON

PRODUCT.PRODUCTID = SALES.PRODUCTID ON MEASURES.MEASURESID = SALES.MEASURESID ON

SCENARIO.SCENARIOID = SALES.SCENARIOID

image

Saved Views

The ability for a user to save a view is a capability already supported by Dodeca. This capability is enabled for a given view by setting the view’s AllowSave property to True, and by also using a toolbars configuration that contains the Save As and Save tools.

The Open View tool can be used to view the current user’s saved views, and the Manage Saved Views dialog can be used to open, rename, and delete the current user’s saved views. Both of these tools are accessed from the File menu on the application’s main menu bar.

As an enhancement implemented for this release, the current user’s saved views can be listed in the view selector, from which the user is able to open, rename, and delete a saved view.

To show the current user’s saved views in the view selector, add a SavedViewList item to a hierarchy and set the OwnerFilter property to CurrentUser, which is the default setting. The item serves as a placeholder. At startup, as well as when the user refreshes the view selector, the SavedViewList item is replaced with items that represent the user’s saved views.

image

The Manage Saved Views dialog is still supported, although saved views can only be shared from the Save As dialog and from the View Selector. Opening, renaming, and deleting saved views can be performed from both the Manage Saved Views dialog and the View Selector. Deleting multiple saved views at a time is supported by the Manage Saved Views dialog.

This setting is required if you want to leverage the view selector’s HierarchyToRoleMapping capability, which allows you to control which view hierarchy or hierarchies are presented in the view selector based on the authenticated user’s role membership.

This setting was previously called WindowsUserRoleSqlPassthroughDataSetID and the variable setting was called WindowsUserNameVariable. Although the names presented in the metadata editor have changed, the metadata defined in previous releases is compatible with the 6.2 release.

View Selector Explorer Bar and View Selector Tree

The size and location of the view selector control is now automatically captured when the application is exited, and restored when the application is started. For the View Selector Explorer Bar, the group (i.e. the category) expansion is also captured and restored. Similarly, for the View Selector Tree, the node expansion is captured and restored. When the user refreshes the content of the view selector by selecting the Refresh button on the context menu, the size and group (or node) expansion is retained. (#1040)

A view’s Excel template can now be exported directly from the view selector. When the ViewSelectorProperties AllowImportExcelTemplate setting is True, an "Export Excel Template" item is displayed on the context menu if the view is assigned an Excel template binary artifact. This menu item is only displayed for an Excel, a SQL Excel, or an Excel Essbase view. (#1066)

image

This capability is supported for both the ViewSelectorExplorerBar and the ViewSelectorTree. It is intended for use with an Admin application as a way to quickly export a view’s Excel template binary artifact directly from the view selector. By default, the option is not shown in order to avoid unintentionally exposing this capability to end users.

To enable this capability for an application, you must set the view selector’s AllowExportExcelTemplate setting to True.

View to PDF Conversion

Workbook Script Metadata Editor

To debug a workbook script, you can now either enable debugging for all procedures or for specific procedures by setting the Debug Mode.

image

Debugging is enabled for a specific procedure by checking the box located to the left of the procedure name in the Procedures grid.

image

In this example, the debugger is automatically opened when the AfterBuildSetup procedure is executed. Debugging can be disabled for the procedure from within the debugger using the Enable Procedure Debugging state button.

image

If you are not familiar with the workbook script debugger, refer to the Workbook Script Debugger section of the Version 5.3.0.2646 Release Notes for more details.

Workbook Script Functions, Methods, and Event Links

The @WSEval function can now be used to evaluate an Excel formula. Since @WSEval is the only WBS function that allows an Excel formula as the argument, the function can be used as an argument to other WBS functions, which effectively allows you to specify an Excel formula as the argument for any WBS function. Also note that the formula argument can also contain other workbook script functions.

Workbook Script Tool Controller

The difference between the CheckedInitializeProperty and the CheckedProperty arguments is that the CheckedInitializeProperty does not trigger the tool click event. In most cases, you simply want to set the checked state from the workbook script without executing the procedure specified by the ProcedureName argument. (#1067)

Dodeca Framework