11 April 2023

1. Changes to Database Schema

There are some changes made in the internal TIF database schema in order to improve performance of scheduled maintenance tasks, e.g. the payloads-stats-updater and tif-payload-cleanser.

If your database contains large amount of data, then this first time start-up after upgrading may take a few more minutes than normal.

DO NOT ABORT/KILL THE TIF SERVER PROCESS DURING THIS UPGRADE PHASE. THIS MAY CORRUPT YOUR DATABASE.

2. JDK Note

The lowest JDK version supported by TIF is currently JDK 8. This will be the last version of TIF supporting that version.

The upcoming release of TIF will have JDK 11 as its lowest JDK.

3. Windows File Modifier / Create PDF - Document Structure Tags

There is a new option to specify whether to include document structure tags to created PDF.

According to the Microsoft API, document structure tags help screen readers, for example information about the flow and logical organization of the content.

By default, tags are included, and this option can be used for excluding those.

For example:

<CreatePDF>
    <WordOptions>
        <DocStructureTags>false</DocStructureTags>
    </WordOptions>
</CreatePDF>

4. Create/Update Integration Improvements

4.1. Progress Logging

The create/update integration will now log progress information to the progress logger in order to allow inspecting the progress of the integration use case from the Admin UI.

Per default this is enabled for all create/update integration use cases, but you can disable this globally or individually per configuration.

The global flag is controlled within the module.properties file using the key create-update-integration.progress-log.default-enabled. The attribute progressLogEnabled on the create/update configuration can be used to override the global setting.

image
Figure 1. Progress log information

4.2. Asynchronously Invocation via REST Call

The create/update integration can now be triggered asynchronously via a REST call. The REST call will create a new job and run that separately and the REST call itself will return before completion.

To configure this, your REST service definition will be configured like this:

<Rest>
    <DisplayName>Async Example</DisplayName>
    <ServiceName>async-create-update-example</ServiceName>
    <Credentials containerManaged="true" />
    <NewJob config="CreateUpdateConfigJobExample.xml" async="true" /> (1)
</Rest>
1 Set async flag to true and point out the job configuration

and the referenced Job configuration will look like this:

<Job>
    <Name>The name of the async job</Name>
    <CreateUpdate config="tvc:createconfig/MyConfig.xml" />
</Job>

4.3. Transaction Scope

Two new attribute have been added that will allow controlling the transaction isolation level and how to handle errors during processing.

The attributes are called

txIsolation

Possible values are all or entry-point.

txErrorStrategy

Possible values are fail or continue and are used when the txIsolation is set to entry-point.

When the txIsolation is set to entry-point, this will imply that the current ENOVIA/3DExperience transaction is started/committed around each entry-point during the processing, and not around all items as is the default behavior.

If the processing fails in such case for one entry-point, the txErrorStrategy attribute defines if to stop processing the remaining and mark the job as being failed, or if to continue processing any remaining items and not cause the job to fail.

5. Start/Stop Service Activator on Schedule

A service activator, such as a directory listener or a ENOVIA/3DExperience queue listener etc, can be started / stopped via a scheduled job.

Below is an example how to use this to start a directory listener at 4AM and stop it at 7AM.

<timetable>
    <group id="test">
        <job id="start-json-file-import-listener" displayName="Start/Stop JSON File Import Listener">
            <schedule>
                <second>0</second>
                <minute>0</minute>
                <hour>4/3</hour>
            </schedule>
            <java>com.technia.tif.enovia.scheduling.job.StartStopServiceActivator</java>
            <args>
                <arg name="match" value="DirectoryListener:*import_json.xml*" type="string"/>
                <arg name="mode" value="toggle" type="string" />
            </args>
        </job>
    </group>
</timetable>

Read this document for more details.

6. Prevent Start of ENOVIA Job Activator on Startup

There is a new configuration option available to prevent an ENOVIA/3DExperience job activator from being started when the TIF server is started up.

This is controlled via module.properties using the below syntax for the default queue listener:

defaultQueueListener.start = false
...

or for another queue listener:

queueListener.0.start=false
...

If a queue is configured to not start on startup, you need to either manually start it from the Admin UI or ensure that you have a scheduled task that will start it at a certain time.

7. Fixed Bugs

Below is the list of fixed bugs as of this release.

Issue No Description

931

Reply handler configurations are not visible in the configuration editor within the Admin UI.

943

Admin UI inaccessible during long running REST call

945

Payload statistics not calculated correctly for migrated data that lacks some information

946

Resend action in Jobs view fails when Elastic Search query mode is enabled

947

Create PDF: The left/right/bottom margins defined in the Excel options were mixed up.

948

Resolve action modifies job’s server instance information