Release Notes for TM v3.1
Release 3.1 (released January 2004) contained the following new features:
Implementation of Open Interfaces
Open Interfaces, introduced in the previous release, have continued to be enhanced and extended. TM Open Interfaces allow Transformation Manager to be integrated into a number of client architectures.
They are open in the sense that ETL publish a Java interface, and allow the TM design time and runtime to be extended with plug-ins to support transformation design and execution for any type of data model.
These are fully documented in the Loader Open Interface Guide and Instance Data Open InterfaceGuide respectively.
A number of examples are provided in the samples subdirectory of the TM installation. The Loader Open Interface Guide also describes an exa mple of loading a hierarchical model and the Instance Data Open Interface Guide describes a number of examples.
Full Javadoc for the samples and the Open Interfaces are provided in the docs directory.
GUI Enhancements
Several enhancements have been made to the design-time user interface. See online help for full details of all these features.
Model Loaders
The XML and Relational model loaders have been replaced with the XML Import Wizard and the Relational Import Wizard respectively.
Password Protection of Projects
Projects can be password protected, thus preventing changes to the models and transforms.
Import and Export
The user interface for importing and exporting transformation projects to the file system has been enhanced.
Import and export of user defined function libraries is also supported.
Super Projects
A project can invoke transforms up a hierarchy of other projects. This hierarchy may be combined into a single project using the 'Project Rollup' functionality.
Model Editing
Model editing features, such as adding attributes and relationships, are now grouped under an Edit Model submenu.
Content groups (sequence and alternate groups) can be added to elements and edited (for cardinality).
The pseudo attribute $Content can be added to XML elements. $Content refers to element content for data-centric XML models. Once added, the simple type of the content can be set.
To accommodate non XML hierarchical models, attribute names which are invalid in XML can be added to elements. A warning is given if the name does not conform to XML attribute naming rules.
Type Maps
Type Maps have been implemented as a special type of User Defined Function. They can be automatically inserted when required and a template can be specified.
Transform Wizard
This wizard guides the users through the steps involved in setting up the transforms in a project. Detailed help is given during this process.
Project Notes
A set of arbitrary notes may be defined and edited for a project.
User Levels
The availability of much of the functionality, and the level of help provided, is dependant on the concept of user levels. The user level defaults to normal, and can be changed from the Tools -> User Level menu option. The user level cannot be changed when a project is open.
Query Propagation
The classic transformation problem involves transforming instance data in terms of the source model into instance data in terms of the target model, for example the occupation attribute of the source model becomes the position attribute in the target model.
However, to resolve the case where the target system initiates a query in terms of the target model, a query propagation feature, which is entirely generic, has been included in Transformation Manager version 3.1. The classic transform contains sufficient information such that a query in terms of the target model can be converted to a query in terms of the source model, and thus, regardless of the size of the source instance data will select only the relevant data. This selected data is then transformed in the normal manner and returned as a result of the query.
Query propagation in Transformation Manager V3.1 has the followings limitations:
- Only domains associated with a transform can be queried.
- Only one domain can be queried and the attributes belonging to this domains.
- Data filtering via where clause. It will support any kind of logical expressions but the support for operations will be limited to equal('='), bigger than('>'), less than('<') and not equal('!=').
Terminal expression will be written using SML paths.
Transformation Manager uses its own internal representation for representing a query, accessed via the interface net.etltm.qp.TMQuery. For transforming this abstract query representation to an executable query, a Query adapter is required. An TM-Oracle query adapter has been built and it can be accessed using the factory class net.etltm.qp.QPWriterFactory.
A query propagation example can be found in the samples/openinterfaces/qps subdirectory. To compile the sample using Java SDK 1.3 or above, open a command prompt or shell, change to the TM installation directory, ensure the current directory, and the jar and zip files in the lib subdirectory are in the CLASSPATH, and type:
javac samples/openinterfaces/qps/*.java
Under Windows, opening the Command Prompt from the Transformation Manager start menu program group will open a command prompt with the correct directory selected and the CLASSPATH correctly configured.
The command line for starting the example is:
java samples.openinterfaces.qps.QpsMain
This should pop up a dialog window that allows the user to add projects. Once a project is added and selected the query panel pops up as shown in the figure. The number field is used to limit the number of elements to return. The domain field is used to select the domain of the entities to return. The attribute table is used to select the attributes to populate. If no attributes are selected, the query will populate all the attributes (similar to SELECT * in SQL). The where field is used to select the desired subset of the available elements. They are expressed using logical expression and SML paths. The order field is used to select the attribute(s) for ordering the result of the query. Paths are not allowed in the order field. Finally, the last field is used to show the result of a query.
Mode Property
Transforms now have a mode property, which is similar to the XSLT mode functionality. In the transform properties, displayed when a new transform is created or the Transform->Properties menu, specifying a mode permits more than one transform between the same two elements. The PUSHMODE() built in function to specify the transform mode for a given cascade call. The classic example that demonstrates the purpose of mode is a transformation that produces a document. Initially, transforms can be invoked in mode “toc”, to produce the Table of Contents, and subsequently in mode “body”, to produce the main body of text. i.e. assuming Div and Document are relationships to the elements Div and Document respectively:
Div := Document + PUSHMODE(‘toc’);
Will search for and execute the transform Div <- Document whose mode property is ‘toc’, and
Div := Document + PUSHMODE(‘body’);
Will search for and execute the transform Div <- Document whose mode property is ‘body’.
PUSHMODE(‘toc’); on its own passes the mode property ‘toc’ to all subsequent cascade calls.
Logging using Log4J
The runtime logging capability has been improved by incorporating the log4J logging architecture into TM. Several TM Builder built -in functions have been introduced to allow the user to specify the type of log4J logging required at runtime. For further information, please see the section Logging using Log4J in the TM Builder on-line documentation.
