20 November 2009

1. Core

1.1. Collecting Log Files

A new administrative tool has been added that allows downloading the server log files in a ZIP file from a command in the web user interface, which makes it easier since you don’t need to collect this information manually.

The generated ZIP file will contain the TVC log files, information about settings made to TVC, system settings and the Matrix log files (if running in RIP mode). If you run Matrix in RMI mode, the log files are typically not available from the application server, and cannot be included.

This command is available from the "Admin Tools" menu.

1.2. Tabbed Pages – Remembering the Last Visited Tab

The tabbed pages can remember the last visited tab.

If a tabbed page is based upon the content of a "menu", this behaviour is automatically used. It is however possible to both disable this globally, or per tabbed page. The selected tab is remembered based upon the HREF of the command in the menu.

To disable this globally, use the following init parameter:

<init-param>
    <param-name>tvc.core.gui.tabPage.rememberSelection</init-param>
    <param-value>false</param-value>
</init-param>

To disable this per tabbed page, use the request parameter: rememberSelectedTab.

If you declare your tabs in a JSP page, using the tab tag-lib, you need to assign an id to the tabs, as shown below, in order to enable the remembering:

<tabpage:tabs tabsId="tvx-home-page">
    <tabpage:tab tabId="collections">
        <tabpage:label>...</tabpage:label>
        <tabpage:href>...</tabpage:href>
    </tabpage:tab>
    ...
</tabpage:tabs>

If no id’s are given, the last visited tab will not be remembered for such page.

1.3. JSON Support in the AJAX Framework

The AJAX framework that is a part of TVC Core has been enhanced to support the JSON (JavaScript Object Notation) data exchange format. This means that you can plug-in and use 3rd party Java Script toolkits that uses JSON and communicate with a TVC AJAX service that has been registered with your own TVC plug-in.

To invoke a TVC AJAX service using JSON as data exchange format, one needs to use the following URL:

http://server/enovia/tvc-action/json/${NAME_OF_SERVICE}/${NAME_OF_METHOD}

The JSON data structure is typically posted in the body of the request. It is however possible to perform a call to an AJAX service method that accepts basic arguments, such as strings values, integer values, Boolean values, numeric values or arrays, using the below format:

http://.../tvc-action/json/service/method?arg0=test&arg1=24&arg2=true

This will invoke a service method with the three arguments provided.

The JSON support is for example used in the Structure Browser to accomplish auto completion, using the "jquery autocomplete" module together with a TVC AJAX service.

A new action has been added in TVC that allows creating human readable URLs that can be used from external systems, that opens the "emxNavigator.jsp" with the object loaded.

The URL is formatted like:

http://server/enovia/tvc-action/showObject/${TYPE}/${NAME}/${REVISION}

This is for example used in the email notification feature in the Structure Browser.

If the user clicks on such link, and is not logged-in to the application, the user will be redirected to the standard login page. After a successful login, the user will see the "emxNavigator" page containing the requested object. This will work if the standard login pages/mechanisms in the ENOVIA Matrix application are used.

1.5. API Changes

1.5.1. Expander

The Expander API has been slightly changed. An Expander is typically used in cases when the structure is being expanded in a way that is not possible through using standard filters.

The main new feature is that your custom expander now also can customize the behaviour related to collapsing a node in a structure. This change allows you to have full control of the expand/collapse behaviour.

Some other minor changes has been made to the Expander API, below is an explanation of what has been changed.

isFullExpandSupported

This method now takes an ExpanderBasedStructureBean as argument instead of a StructureBean. Also, the exception has been removed from the method signature.

Was:

boolean isFullExpandSupported(StructureBean str) throws TVCException;

Now:

boolean isFullExpandSupported(ExpanderBasedStructureBean structure);
isMultiLevelExpandSupported

This method now takes an ExpanderBasedStructureBean as argument instead of a StructureBean. Also, the exception has been removed from the method signature.

Was:

boolean isMultiLevelExpandSupported(StructureBean str) throws TVCException;

Now:

boolean isMultiLevelExpandSupported(ExpanderBasedStructureBean structure);
getFilterMode

This method now takes an ExpanderBasedStructureBean as argument instead of a StructureBean.

Was:

FilterMode getFilterMode(StructureBean str);

Now:

FilterMode getFilterMode(ExpanderBasedStructureBean structure);
collapseNode

This is a new method that has been added in order to allow the Expander to control the behaviour when a node is being collapsed.

void collapseNode(ExpandCtx ctx, StructureBeanNode node);

The "collapseNode" method can be implemented like this:

public void collapseNode(ExpandCtx ctx, StructureBeanNode node) {
    node.removeChildNodes(true);
}

NOTE: For convenience, you can instead of implementing the Expander interface, instead let your custom expander be a subclass of the com.technia.tvc.core.structure.expand.AbstractExpander.

2. Structure Browser

2.1. Email Notification

A tool that allows sending external emails, containing links to one or more business objects, has been added to the Structure Browser. Such command can typically be added to the toolbar or to the context menu. See screenshot below. The email notification dialog can be opened in a popup window or in the side panel, with or without the possibility to use the editor that allows the user to format the emails using HTML markup.

image

The send notification dialog in the side panel with the HTML editor is shown below.

image

The notification dialog has the following features:

  • Auto completion when selecting the user(s) to send the notification too.

  • The message can be configured through the URL request parameters, such as subject and message and allows having macros.

  • Using HTML formatted messages or plain text messages.

  • Show the dialog in either the side panel or in a popup window.

  • Sending multiple objects in the same mail.

2.2. Table Query

The table query tool, formerly known as advanced table filter and structure search (before TVC 2009.1.0), has been enhanced as of this release. The new main features are:

  • Quickly applying a saved query from the "table query pane" that is shown below the toolbar.

  • Sharing a query with another user

    • Support for auto completion when selecting the user to share the query with

  • Support for using AND or OR when having multiple criteria

  • If a filter has been applied on a page, this will be remembered the next time the user enter the page. This is remembered in the same way as the last selected view/table/filter/visible columns/sort order.

The search pane shows the saved queries, which allows the user to quickly apply an already defined query.

image

The query dialog, shown in the side panel, offers new features for sharing a query and defining if multiple criteria should be used in combination or individually (AND / OR).

image

A new column type has been added, which will generate a column gives an icon that, upon click, will show the link to the object. This link can then be copied and used as a shortcut to the object in for example an email message.

image

The column type is called objectlink and is registered like the examples below:

XML Tables:

<Column>
    <ColumnType>objectlink</ColumnType>
</Column>

System Tables:

Setting Name: "Column Type"
Setting Value: "objectlink"

2.4. Collections

The manage collections functionality has been enhanced. See the subchapters below for details.

2.4.1. Distribute Collection

The distribute collection function has been enhanced to take advantage of the auto completion functionality. The dialog is now also displayed in the side panel. See screenshot below.

image

The command that launches the distribute dialog doesn’t require any rows to be pre selected.

2.4.2. Merge Collection

The merge collection dialog has been improved. It is shown in the side panel, and it allows merging two or more collections into a new collection or into an already existing collection. It also supports auto completion.

image

2.4.3. Collection Page

The page that displays the content of the collection has some new features, such as:

  • Context menu that contains a command for using the "send notification" feature.

  • Toolbar contains a new command for clearing the collection.

2.5. Search Tool

The search tool has a number of new features. These are explained in the subchapters below.

2.5.1. Auto Complete

The search tool takes advantage of the new auto completion capabilities. This is by default used for the following types of fields:

Type Field image::image10.png[image]

Owner Field

image
  • Selecting the Design Organization (RDO)

NOTE: The auto complete feature in the search dialog is disabled on clients that are using Internet Explorer 6, due to technical limitations in this browser.

The auto completion feature can be disabled completely, by applying the following init parameter:

<init-param>
    <param-name>tvc.structurebrowser.search.autoCompleteEnabled</param-name>
    <param-value>false</param-value>
</init-param>

2.5.2. Default RDO

The RDO (Design Organization Field) has a new button that allows the user to use the default RDO as set in the preferences.

2.5.3. Save As

The "Save As" field, which allows the user to save the query, has been moved to the lowest frame.

image

To change this behaviour, apply the following init parameter:

<init-param>
    <param-name>tvc.structurebrowser.search.showSaveAsInBottomFrame</param-name
    <param-value>false</param-value>
</init-param>

2.5.4. Search Result with Dynamic Columns

Normally when a search is performed, the result is displayed in the table as configured via the configurations made (page configuration and view). In some cases, the user might perform a search on a field that is not part of the table used to display the search result. As of this release, there are some new configuration options available that can be used to enable dynamically generated search result tables. This can either be configured on a global basis and/or per use case.

Configure via Init Parameters

A number of new so called TVC init parameters were added in order to control the behaviour of this.

  1. To enable the dynamically appending of columns globally, the following init parameter must be set to true (default is FALSE).

        <init-param>
            <param-name>tvc.structurebrowser.search.appendQueryFieldsToTable</param-name>
            <param-value>true</param-value>
        </init-param>
  2. If you want to add fields that map to attributes only or if you want to add columns for all fields, you should set the following parameter to either true or false (default is TRUE).

    <init-param>
        <param-name>tvc.structurebrowser.search.appendAttributeFieldsOnly</param-name>
        <param-value>true</param-value>
    </init-param>
  3. if you want to use a table that contains a set of columns that always should be shown (or no table at all, which might be the case if you add all query parameters as columns in the table) you should modify this parameter:

    <init-param>
        <param-name>tvc.structurebrowser.search.defaultDynamicResultTable</param-name>
        <param-value>*name of table*</param-value>
    </init-param>

    The default value of this parameter is:

    tvc:table//com/technia/tvc/structurebrowser/search/form/res/DynamicSearchResultTable.xml

    You should not manipulate this built-in table; instead, point to your own custom table that defines your own columns.

    The table can be an XML table or a System Table.

    Setting this parameter to an empty string is OK if you don’t want to use a "template" and only base the result table on the used fields.

Configure per Form / Field

You can also per search form and per field within a form do additional fine-tuning.

  1. To disable the dynamic append for one particular form (or enable if it has been disabled globally), you can in the XML definition do:

    <SearchFormConfig appendQueryFieldsToTable="true">
    ...
    </SearchFormConfig>
  2. To use a different "base/template table" when using a particular form, you can in the XML definition do:

    <SearchFormConfig tableName="tvc:table:namespace/MySpecialTable.xml">
    ...
    </SearchFormConfig>
  3. In case you want to prevent that a particular field is added as a table column, you can in the XML definition do:

    <SearchFormConfig ...>
        ...
        <Fields>
            <Field mapsTo="attribute_ABC" addFieldToResultTable="false">
                ...
            </Field>
        </Fields>
    </SearchFormConfig>

2.5.5. New Operators (String Fields)

String fields have a set of new operators, which allows the user to define if the string matching should be done in using a case sensitive manner or not.

image

This can be changed through a TVC init parameter, as shown below:

<init-param>
    <param-name>tvc.structurebrowser.search.stringOperators</param-name>
    <param-value>case-insensitive | case-sensitive | all</param-value>
</init-param>

2.5.6. API Changes

The class com.technia.tvc.structurebrowser.search.form.gui.DefaultFieldRenderer, which has been marked deprecated since several releases back, has been removed due to implementation changes.

If you have implemented a custom field, and your field provided a custom field renderer that is derived from the class com.technia.tvc.structurebrowser.search.form.gui.DefaultFieldRenderer, you need to convert your field renderer to now extend the class:

com.technia.tvc.structurebrowser.form.gui.NewDefaultFieldRenderer

The reason for this change is that the search form rendering framework has been enhanced.

Selection Tracker ~~~~~~~~~~~~~~~~~

The selection tracker, which is used to remember the last used view/table/filters/sorted columns/visible columns on a table page, has been enhanced to also support remembering the last used table query filter.

As the addition of remembering the last used table query filter resulted in a major change of the format used for saving this information, any previously stored selections will be lost upon upgrade.

3. Office Integration

3.1. Linux Client Support

The Office Integration now also provides an applet for clients on Linux platforms. On Linux, following features are not supported:

  • Document property transfer

  • Display of application specific icon associated with the downloaded file

The Linux implementation uses the "xdg-open" tool to open the downloaded file. This tool is available in many of the common Linux distributions. If the user lacks this tool in his/her Linux distribution, the user needs to install it or disable the office integration.

To disable the Linux platform support, you can apply the following init parameter:

<init-param>
    <param-name>tvc.office.linuxSupported</param-name>
    <param-value>false</param-value>
</init-param>

3.2. Validate Version upon Check-in

When the user has downloaded a document for edit, there are some situations when the user uses the "update" function from the web-ui to upload the edited file manually (e.g. not using the "check-in" feature in the Office Integration applet).

This means that even if the file has been uploaded and a new version has been created, the user can still upload the file that originally was opened for edit, once again from the Office Integration applet.

In order to prevent this to happen, a mechanism has been added that verifies that there isn’t a new version created, which is validated upon check-in. When the user clicks "check-in", and a newer version exists, the following dialog will appear if a newer version exists, which allows the user to decide what to do.

image

This behaviour can be disabled through the following init-parameter:

<init-param>
    <param-name>tvc.office.validateVersionOnCheckin</param-name>
    <param-value>false</param-value>
</init-param>

3.3. Property Transfer to Visio Files

Visio doesn’t handle properties in Unicode format. A workaround has been added in the TVC Office Integration to transfer property values in a non-Unicode manner. This means that you can only transfer US ASCII characters to a Visio document, other characters will not be represented correctly.

Note that Visio itself uses document properties in a different way than other MS Office documents, and if you intend to use these in your Visio document, you probably need to use some VB Macro in the document to access these properties.

3.4. XHTML Compatible Markup

The logic that creates the HTML used to display the icons related to the file handling in the Office Integration does now create XHTML compatible markup. E.g. "<img>" tags has a matching end tag and the " " is replaced with " ". This means that you can use the standard functions on pages that requires XHTML markup.

3.5. Easier Registration of Default Triggers

When disabling the built-in triggers in the Office Integration, sometimes one might need to enable one of the built-in triggers. In the configuration file, this has been made easier; there is no need to remember long class names. See the example below:

<OfficeIntegration useBuiltInTriggers="false">
    <Triggers>
        <ReasonForChangeTrigger/>
        <DefaultPropertyTransferTrigger/>
    </Triggers>
</OfficeIntegration>

4. Grid Browser

4.1. Rotated Headers

The header for the column objects can be rotated, see screenshot below.

image

If the header is rotated, the header text is generated as a PNG image with a pre-defined font, size and color. This means that any formatting that has been defined within the configuration; such as if the text should be bold, italic and no-wrapping, those settings are not supported.

Also note that the rotation is only supported in the HTML view, and neither in the Export nor in the PDF view.

As the rotated headers are generated with images, the load time of a Grid Browser might be longer in case many column objects are being used compared to when the headers are displayed with plain text.

This is applied in the configuration as shown below:

<Columns rotateHeader="true">

4.2. Loading Selected Rows into the Grid Browser

A new configuration setting in the Grid Browser makes it easier to load selected rows, which are submitted from a TVC Structure Browser page or from an "emxTable" page, into the Grid Browser.

To enable this, use the loadSelectedRows attribute on the data loader element as shown below:

<DataLoader loadSelectedRows="true">

4.3. API Changes

4.3.1. Loader

The Loader interface has been slightly changed to also get a reference to the Grid Browser instance. The interface is now defined as:

void loadInto(GridBrowser grid,
              AbstractTableBean table,
              Map args,
              Format format) throws TVCException;

5. Graphic Reporting

5.1. Charts

The format of how the pre defined chart configuration has been slightly changed. To specify a so called "Data Provider", the following format should be used:

Inquiry:

<DataProvider>inquiry:MyInquiry</DataProvider>

JPO:

<DataProvider>jpo:MyJPO:myMethod</DataProvider>

Java:

<DataProvider>java:com.acme.MyDataProvider</DataProvider>

5.2. Status Planner

The status planner is no longer a part of TVC as of this release.

6. XBOM Manager

6.1. XBL (XML Baselines)

The XBL feature has been rewritten in order to support a large number of new features, such as:

  • Being able to use complex select statements, not just attributes and basic properties.

    • For example: "from.to.name"

  • Being able to use standard Data Handler’s and Cell Renderer’s that normally are used in table/structure pages to define select statements and decides how to render the information.

    • Previously, XBL used a more complex API that had a number of limitations, and it didn’t allow reusing datahandler’s that already had been implemented in other existing tables.

    • Makes it easier to define new tables that can use existing logic for data retrieval.

    • No need for learning a new API, which were the case with the so called "Column Spec" classes.

  • Being able to use JPO’s that produce cell values.

    • Note: Recommended by Technia is to use datahandler’s in order to improve performance. The JPO support should be used sparsely.

  • The data that is serialized and used in the XBL is based upon all columns in all tables that are defined in the XBL configuration. This means that the amount of data is optimized for the particular XBL use case.

  • Allows extending how to expand the structure easier, through either using a so called Expander (same as being used in the Structure Browse) or by using a custom "Handler".

    • Previously one could do this by implementing an XBL-Expander, but such XBL-Expander required knowledge about the underlying XML format and was difficult to implement. The Handler is more intuitive and uses the standard TVC API.

  • The XBL data is by default compressed in order to save space and improve performance when reading the XBL data.

    • When the data is compressed, the XBL data is checked in to the baseline object using the "generic" format, while if it is uncompressed it is checked in under the format "XML".

    • It is possible to configure this behaviour through a TVC init parameter.

  • The way how the comparison tool matches a row from one structure in another can be configured. By default, the type, name and revision from the object and the relationship type is used for the key, which the row matcher uses. However, in some cases this will fail, especially if two objects are connected with multiple connections of the same type. In such case, one can define a different strategy for how the key should be computed. For example, when comparing EBOM structures, one might use the "Find Number" as part of the identifying key.

  • A baseline can include information about the current versions that a document has, and provide links in the user interface to download the file version at a later time.

  • The description for the baseline were previously automatically generate, when the baseline were created and used a fixed macro.

    • It is now possible to specify a macro, per configuration, that defines how the description should be constructed (this is done per configuration). If no macro is specified, the auto generated description functionality is disabled.

  • It is possible to mark an XBL Configuration as "hidden". This can be useful if you do changes to a configuration that isn’t compatible with baselines that already has been created using the configuration that is being changed. A hidden configuration will not appear in the list of available configurations when the user is creating the baseline.

  • An XBL configuration can be stored as a resource within the web application, in order to not having to update the database when doing configuration changes. The resource type is called "xblconfig".

  • Possibility to specify access control list. E.g. only allow certain users, or users that are assigned a specific role/group, to use a configuration.

  • The header + sub header that can be displayed on a table page; can now be used on a XBL Baseline page. The header + sub header is resolved against the serialized data.

  • Possibility to define "filters" that will define how to expand the structure.

  • Possibility to define a so called "expander" (same as in TVC Core) that defines a custom expander

    • Inquiry Expander

    • Shadow Expander

    • Java Expander

    • JPO Expander

6.1.1. User Interface Improvements

A number of improvements related to the user interface have been made, such as:

  • The create dialog is now shown in the side panel. The alert message that previously was shown upon creation is removed. The side panel window can be closed, meanwhile the baseline is created.

  • The comparison dialog has been improved to be more intuitive.

  • The comparison always starts from the baseline level in order to make it easier for the user to understand how and what the comparison is calculated against. The structure to compare against is easier to find. See screenshot below.

    image
  • Comparison can start from the list of baselines, in order to not require the user to first open the baseline.

  • The comparison result allows the user to perform filtering; e.g. display only rows that has been added, removed or has a modification. Only rows that are changed will be shown in the comparison result (including any ancestor row). See screenshot below.

    image
  • Standard table pages can define a column, whose "Column Type" setting is set to "xbl-baselines" in order to display whether or not an object has a baseline attached. Once clicking on the icon, the attached baselines are shown in the side panel and the baseline could from there be opened or the user can start the comparison directly. See screenshot below:

    image
  • From the list of baselines, once selecting to navigate (show) the content of the baseline, this is not opened inside a popup window as done in previous release. Instead, the baseline is opened in the same view with possibilities for the user to just click the "go-back" button in order to see the list of baselines again.

    • A new column has been added in this table that allows opening the baseline in a new popup window.

  • When looking in a baseline, it is now possible to use the "data group" function.

6.1.2. Upgrading Notes

Review the below changes, if you intend to upgrade from an earlier version of TVC.

API Changes

The use of so called "Column Spec" classes is no longer supported. The new approach is to use traditional "Data Handler’s".

The use of so called "Expander" (XBL expander) that could be used for performing more complex expansions is no longer supported. The new approach is to either use a "Handler", or configure the expansion in the configuration using filters or "expand mode".

Schema Changes

The attribute "TVC XBL Used Relationship Pattern" has been removed as this attribute held information that weren’t used. This attribute is deleted when installing TVC.

The attribute "Originator" has been removed from the type "TVC XBL Baseline". The owner of the object is the same as what the "Originator" attribute previously contained.

The format "generic" has been added to the policy "TVC XBL Baseline".

Resource Files

The resource files (tables, menus, page configuration objects etc.) related to the XBL feature has been renamed and moved into a separate namespace.

These are now located under "/WEB-INF/tvc/xbom/xbl".

Old Baselines

Baselines that have been created using an older version can be viewed and used in comparison as previously with some limitations, such as:

  • If so called "Column Spec" classes were used, these will no longer work as expected.

The previous implementation serialized all object attributes, even though they weren’t used in all tables. This information was used in the "object details page", which read the information from the XBL data. As of this release, only the data that is needed from any column from all tables used are serialized to the XBL; hence, the object details page can only display information from the object that is part of the XBL data.