Version 6.7.1.4340

March 11, 2014

This version of the Dodeca Framework uses the .NET Framework, version 2.0, Service Pack 1 and higher on the desktop. The components used in this version of Dodeca are SpreadsheetGear 2012 (7.0.5.140), NetAdvantage 2011, Volume 1 (11.1.20111.2042), Aspose.Cells 7.0.3.0, and Syncfusion Essential Studio 11.3.0.30.

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.6. 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 are supported and tested on Java 1.6. Both services are known to run on Java 1.7, although extensive testing has not been performed on that Java version.

The release notes for this version contain the following sections:

Adhoc Essbase View — Fixes

Dodeca Metadata Service Timed Logger Enhancements

Essbase Member Select Dialog — Fixes

Essbase Selector Metadata Editor — Fixes

Excel Essbase View — Fixes

Metadata Editors — Fixes

PDF View Enhancements

SQLPassthroughDataSet — Concurrent Query Execution

View Selector Tree and View Selector Explorer Bar — Fixes

Workbook Script Editor — Fixes

Workbook Scripting — Event Links, Functions, Methods

Adhoc Essbase View

Dodeca Metadata Service Timed Logger Enhancements

The Dodeca Metadata Service timed logger was introduced in Version 6.0.0.3106. Additional DEBUG level log messages have been added to the timed logger messages, which provide timings for relational queries.

These log messages help identify the components that are consuming time inside the server. Each message contains 12 columns, which are delimited by a vertical bar '|'.

Column 1: log message level

Column 2: timestamp

Column 3: dodeca.service.timed

Column 4: sequential transaction number

Column 5: number of active threads

Column 6: unique GUID to identify the transaction

Column 7: client/user

Column 8: server action or method that is executed

Column 9: message description

Column 10: reserved

Column 11: reserved

Column 12: timings in milliseconds

Note that the columns can vary based on the configuration set in the log4j.properties file.

The row containing the string SQLPassthroughDataSet [SQLPassthroughDataSet name] complete indicates the total time the query runner thread took to complete its work, and the line identified by the INFO logging level is the total time of the transaction through the server including the unpackaging/packaging of xml and writing of the xml to the response stream.

If the query is configured to execute the queries concurrently, the Thread ID’s may be intermingled in the logs (i.e. you may see Thread-n references followed by Thread-n+1 references followed by more Thread-n references.)

DEBUG|2014.03.11 10:59:36.983|dodeca.service.timed|2|1|3ff034a7-92b8-413c-a10b-b7e926d1212c|aoi-kevin/kevin|SQLPassthroughDataSetQueryDetails|Servlet doPost method: pre-invoke action - SQLPassthroughDataSetQueryDetails.|0|0|1|

DEBUG|2014.03.11 10:59:36.984|dodeca.service.timed|2|1|3ff034a7-92b8-413c-a10b-b7e926d1212c|aoi-kevin/kevin|SQLPassthroughDataSetQueryDetails|Pre-parse processing|0|0|0|

DEBUG|2014.03.11 10:59:36.985|dodeca.service.timed|2|1|3ff034a7-92b8-413c-a10b-b7e926d1212c|aoi-kevin/kevin|SQLPassthroughDataSetQueryDetails|Parse XML|0|0|1|

INFO|2014.03.11 10:59:36.993|dodeca.service.timed|2|1|3ff034a7-92b8-413c-a10b-b7e926d1212c|aoi-kevin/kevin|SQLPassthroughDataSetQueryDetails|Servlet doPost method: post-invoke action - SQLPassthroughDataSetQueryDetails.|0|0|10|

DEBUG|2014.03.11 10:59:36.998|dodeca.service.timed|3|1|7c200bd6-6343-44b9-8fd1-eac49fac36fc|aoi-kevin/kevin|SQLConnectionQueryDetails|Servlet doPost method: pre-invoke action - SQLConnectionQueryDetails.|0|0|0|

DEBUG|2014.03.11 10:59:36.999|dodeca.service.timed|3|1|7c200bd6-6343-44b9-8fd1-eac49fac36fc|aoi-kevin/kevin|SQLConnectionQueryDetails|Pre-parse processing|0|0|0|

DEBUG|2014.03.11 10:59:37.000|dodeca.service.timed|3|1|7c200bd6-6343-44b9-8fd1-eac49fac36fc|aoi-kevin/kevin|SQLConnectionQueryDetails|Parse XML|0|0|1|

INFO|2014.03.11 10:59:37.007|dodeca.service.timed|3|1|7c200bd6-6343-44b9-8fd1-eac49fac36fc|aoi-kevin/kevin|SQLConnectionQueryDetails|Servlet doPost method: post-invoke action - SQLConnectionQueryDetails.|0|0|9|

DEBUG|2014.03.11 10:59:37.013|dodeca.service.timed|4|1|8de776cf-6479-4cda-8c79-a1e4087b0082|aoi-kevin/kevin|BinaryArtifactQueryDetails|Servlet doPost method: pre-invoke action - BinaryArtifactQueryDetails.|0|0|0|

DEBUG|2014.03.11 10:59:37.014|dodeca.service.timed|4|1|8de776cf-6479-4cda-8c79-a1e4087b0082|aoi-kevin/kevin|BinaryArtifactQueryDetails|Pre-parse processing|0|0|0|

DEBUG|2014.03.11 10:59:37.016|dodeca.service.timed|4|1|8de776cf-6479-4cda-8c79-a1e4087b0082|aoi-kevin/kevin|BinaryArtifactQueryDetails|Parse XML|0|0|2|

INFO|2014.03.11 10:59:37.028|dodeca.service.timed|4|1|8de776cf-6479-4cda-8c79-a1e4087b0082|aoi-kevin/kevin|BinaryArtifactQueryDetails|Servlet doPost method: post-invoke action - BinaryArtifactQueryDetails.|0|0|15|

DEBUG|2014.03.11 10:59:37.217|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Servlet doPost method: pre-invoke action - SQLPassthroughDataSet.|0|0|8|

DEBUG|2014.03.11 10:59:37.219|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Pre-parse processing|0|0|1|

DEBUG|2014.03.11 10:59:37.225|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Parse XML|0|0|6|

DEBUG|2014.03.11 10:59:37.231|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Query threads created: 1|0|0|6|

DEBUG|2014.03.11 10:59:37.231|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Query thread Thread-26 started|0|0|0|

DEBUG|2014.03.11 10:59:37.232|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Creating ResultSet|0|0|0|

DEBUG|2014.03.11 10:59:37.240|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Obtained JDBC connection|0|0|9|

DEBUG|2014.03.11 10:59:37.240|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: SQL = 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|0|0|0|

DEBUG|2014.03.11 10:59:37.241|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Statement prepared|0|0|1|

DEBUG|2014.03.11 10:59:37.825|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Query executed and scrollable resultset returned|0|0|584|

DEBUG|2014.03.11 10:59:37.847|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Writing schema to stream|0|0|22|

DEBUG|2014.03.11 10:59:38.613|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: 49165 data rows written to stream|0|0|766|

DEBUG|2014.03.11 10:59:38.614|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: RowCounts written to stream|0|0|0|

DEBUG|2014.03.11 10:59:38.614|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Closed ResultSet|0|0|1|

DEBUG|2014.03.11 10:59:38.614|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: setConnectionInUse set to false|0|0|0|

DEBUG|2014.03.11 10:59:38.620|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Prepared statement closed|0|0|6|

DEBUG|2014.03.11 10:59:38.620|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: cleanupConnections complete|0|0|0|

DEBUG|2014.03.11 10:59:38.621|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Thread-26-Trans: Query execution thread total time|0|0|1390|

DEBUG|2014.03.11 10:59:38.621|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Query thread Thread-26 joined|0|0|1390|

DEBUG|2014.03.11 10:59:38.621|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Query thread Thread-26 row counts written to stream|0|0|0|

DEBUG|2014.03.11 10:59:38.622|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Query thread Thread-26 schema written to stream|0|0|1|

DEBUG|2014.03.11 10:59:38.623|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Query thread Thread-26 data written to stream|0|0|1|

DEBUG|2014.03.11 10:59:38.625|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|SQLPassthroughDataSet SampleBasic_TransactionBySupplier_All complete|0|0|1400|

INFO|2014.03.11 10:59:38.976|dodeca.service.timed|5|1|c89086d0-20c1-4ab7-86eb-b7e192596029|aoi-kevin/kevin|SQLPassthroughDataSet|Servlet doPost method: post-invoke action - SQLPassthroughDataSet.|0|0|1758|

In the example above, the highlighted entries show the following: the JDBC connection took 9 ms, the query executed in 484 ms, the data was written to a stream/array for processing in 766 ms and the total query thread ran in 1390 ms. The transaction took a total of 1758 ms reading the xml, performing the query, and writing the xml back out to the response. (#1274)

Essbase Member Select Dialog

Essbase Selector Metadata Editor

The view "Input by Product" window cannot be initialized. Unable to setup selectors. Unable to create selector "DEPT\AREA". Unable to get selector definition "DEPT\AREA". Illegal characters in path.

Excel Essbase View

Metadata Editors

PDF View

The PDF View type now supports the ability to load the PDF from a relational table. A SQL connection ID and a SELECT statement are specified as the SQLConnectionID and SelectSQL properties, respectively. Both of the properties can be tokenized. The PDF must be stored in the relational database as an image. (#1272)

With this addition, the PDF view supports the following sources for the PDF, which are listed in the order of precedence:

  1. SQLConnectionID and SelectSQL
  2. PDFBinaryArtifact
  3. URL

SQLPassthroughDataSet — Concurrent Query Execution

Prior to this release, all the queries defined for a given SQLPassthroughDataSet were processed sequentially on the server. In this release, the ConcurrentQueryExecutionEnabled setting has been added to the SQLPassthroughDataSet properties. This setting controls whether the queries are processed concurrently or sequentially. By default, the setting is False. When a SQLPassthroughDataSet contains multiple queries, we recommend experimenting by setting the value to True to determine whether the concurrent execution results in faster performance. And, we would be very interested to hear about your findings. (#1271)

View Selector Tree and View Selector ExplorerBar

Workbook Script Editor

Workbook Scripting — Event Links, Functions, Methods

Dodeca Framework