TIF 2021.3.0 Release Information 2021-07-16
Support for Apache Kafka
General support for using Apache Kafka have been added as this release. Supported functionality are:
-
Transfer job data to a Kafka topic
-
Consume data from a Kafka topic
-
Use reply handler to handle asynchronous replies from a Kafka topic
More detail in the subchapters below.
Transfer Job Data
As of this release, you can send data to an Apache Kafka Topic.
Configuring such destination is done in the ${TIF_ROOT}/etc/destinations.xml
file as shown below:
<Destinations xmlns="http://technia.com/TIF/Destinations"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://technia.com/TIF/Destinations destinations.xsd">
<Kafka id="kafka-1"
bootstrapServer="server1:9092,server2:9092,server3:9092"
clientId="${tif.node}-${tif.instance}" />
</Destinations>
Secondly, you use the destination in the Job configurations like shown below:
<Job>
<Name>Example Job</Name>
<TransferData>
<Payload>tvc:payload/ExamplePayload.xml</Payload>
<Destinations>
<Kafka id="kafka-1" topic="TIF-JOB-TEST" key="${job.source.name}">
<Header name="tifJobId" value="${job.id}" />
<Header name="tifInstanceId" value="${tif.instance.id}" />
<Header name="tifDestinationId" value="${destination.id}" />
</Kafka>
</Destinations>
</TransferData>
</Job>
Please see this document for more details.
Kafka Consumer
You can set up consumers / listeners that will consumer records from Kafka topics. With such consumer you can for example import data into ENOVIA/3DEXPERIENCE from data, which some other system have published into a Kafka topic.
You can use custom code to process the message or directly trigger the create/update integration.
See this document regarding triggering of the create/update integration.
Kafka Reply Handler
You can use Kafka as a source for a reply handler. This means that you can receive asynchronous replies to a previous outbound job from TIF. With the reply handler, you can update ENOVIA/3DEXPERIENCE with the response from the other system.
Image below illustrates the reply handler in context of Kafka.
Please see this document for more details.
XML External Entity (XXE) Prevention
There are new properties defined in ${TIF_HOME}/modules/enovia/etc/module.properties
to control the security aspects of XML, XSLT and XSD configurations/payloads.
This concerns XML External Entity (XXE) prevention, and the default settings are defined in accordance with OWASP recommendations.
xml.disallowDoctypeDecl=true
xslt.accessExternalDtd=false
xslt.accessExternalStylesheet=false
xsd.accessExternalDtd=false
xsd.accessExternalSchema=false
See ${TIF_HOME}/modules/enovia/etc/module.properties
for further documentation notes.
Admin UI Improvements
-
When resending a failed job, there is an option to mark the job as resolved if the resend succeeds.
-
In Jobs view there are separated columns added for source object type, name and revision.
"Not Found Strategy" for REST IDLocators
There is a new optional configuration setting for REST IDLocators called notFoundStrategy
. The strategy defines what to do if no IDs are found.
The valid values are fail
(default), continue
and exit
.
-
fail
stops the execution. The job is marked as failed and HTTP status code 404 "Not Found" is responded to client. -
exit
stops the execution. The job is marked as completed and HTTP status code 204 "No Content" is responded to client. -
continue
continues the execution with no IDs.
For example:
<Rest>
...
<IdLocator notFoundStrategy="exit" />
</Rest>
Server JAR Modularization
Some blocks of functionality have been refactored and broken out from the tif-enovia-server.jar
file into separate JAR files.
This is mainly related to the support for the different messaging technologies such as JMS, Rabbit-MQ, IBM-MQ and Kafka.
Fixed Bugs
Below is the list of fixed bugs as of this release.
Issue No | Description |
---|---|
808 |
SOAP destination not working with Java 11 |
809 |
History off not working when running the create/update integration. |
812 |
Mail job event handler missing dependencies |
815 |
Response meta properties not shown if response has no body |
816 |
MQ listener service not closed correctly |
814 |
Unable to process CSV files using a directory listener with the create/update integration |
775 |
A transactional context is not available when postponing a transfer to the future. |
806 |
Unclear information provided in the startup of TIF regarding available HTTP/HTTPS connectors and the URL’s to the webapplications. |
819 |
Page size and related controls not visible in Job view |