Here are some docs, video lectures and example Configs that focus on a feature set or type of component in TDI.
(Very) Advanced XML Handling
Franz Wolfhagen has created these excellent presentation, along with accompanying example Configs on how to handle XML using TDI.
How to use AMC
AMC is the TDI Administration and Monitoring Console
. This is an AppServer application that is part of the TDI installation. You can either use WAS Express (WebSphere Application Server Express edition is bundled with TDI) or install it on full WAS or even Apache Tomcat.
The AMC system must be started separately and provides a web-based interface for monitoring your running solutions, starting and stopping ALs, examining logs, modifying properties, and much more. Jon Elwood has been kind enough to provide the following tutorial write-up and example files:
Thanks again, Jon! Hope your Metamerge pen serves you well
Integrating Domino/Notes with TDI
This tutorial walk-through covers the various Connectors available in TDI for Domino/Notes work and includes step-by-step exercises for managing Domino Internet Users, provisioning Notes accounts (with mail and id file setup), working directly with Documents and detecting changes in any .nsf database.
And here is a link
to the Domino Java classes that you can access from your TDI script code. Note that this link is for Domino 8.5, and you can find the other by Googling for "Corba classes domino".
Lak Sri of TDI L2 Support fame has gone above and beyond with this lecture on the various XML handling options available in TDI, including simple and complex XML, DSML and Web Services. Please note the video format used works best with Microsoft Internet Explorer, and Centra will probably want to install software on your desktop to view it. Also note that you will want to fast-forward past the first 3 minutes of "testing...testing..." to get to the good stuff.
The inimitable TDI Support Team have created this tutorial on how to build a web service using TDI, as well as how to call one. Hats off to Jason, Lak and Brian for this awesome community contribution!
Loops are a powerful component for your AssemblyLines
, allowing you to take code out Hooks where it is hidden and hard to manage, and putting it right there in the AL component list. This package contains docs and an example Config on how to use Loops.
Detecting and Sync'ing Changes
This PDF discusses the various features in TDI for Delta Discovery
and subsequent Delta Application
-- or in other words, finding changes and then propagating them.
(Note: the earlier versions are still available at the bottom of this page)
is a screenshot of an AL that synchronizes a central directory out to multiple targets. This solution handles both changes to user entries, as well as password changes caught by the TDI password-catcher plugin. There is little or no Hook coding (apart from Default On Error for all Connectors). All logic is visible in the AssmblyLine component list. Which also means it's perfect for the interactive AL Stepper (Debugger).
One interesting technique is the use of Loops as "If_Connector_Lookup_Successful" branches. The Loop is based on a Connector doing a Lookup. If none are found, no looping. If one or more are found then the loop starts cycling. Since the Link Criteria in this example should always find a single entry, it works like a IF branch.
There is a Hints & Tips topic on this here: Improving error messages
And this write-up:
One approach is to have all AssemblyLines
inherit their Connectors from the Library. Then set these Library Connectors up to use the same basic error handling: for example, a script function call -- e.g. "errorMsg()" -- in their Default On Error Hooks. Here is an example
of an errorMsg() function that dumps
out as much info as possible to the log.
Writing Custom TDI Components
. For example, to make your own Parser, simply create a new Parser and choose the Script Parser. TDI provides you with a template of the Interface needed for this component: readEntry() and writeEntry(). If your Parser will only be used on Input, then you only have to customize the readEntry() function. Note that the Entry
where you add your Attributes
will be the conn
Entry returned for Input Mapping.
Similarly, to make your own Connector simply choose the Script Connector type. To support AddOnly mode, simply customize the putEntry() method. If Iterator mode is required then you customize selectEntries() and getNextEntry(). For Lookup mode you write the findEntry() function, which is also used by Delete and Update modes. In addition, Delete mode also needs deleteEntry(), while Update uses putEntry() and modEntry().
Another approach is to use Java to create a .jar file that adds your components to TDI's repertoire. More on this subject here
And finally, you can take an entire AssemblyLine
and turn it into a Connector as described in this DeveloperWorks tutorial
TDI Server API
within a TDI solution.
- 17 April 2009
Complex XML using the XSLT Parser
The File System Connector in conjunction with XSL based XML Parser provides a flexible mechanism for generating XML files in any format through TDI. This paper attempts to explain the various related concepts and typical usage with a simple example.
- 10 Oct 2006
How to Turn AssemblyLines into Components (Adapters)
Here is an excellent (and award-winning) DeveloperWorks article done by our illustrious and TDI-savvy colleague, Dinesh T. Jain.
Note that although the article title states version "6.1", it applies equally well to newer releases.
How to do lookups in flat files
You have two flat files (CSV, LDIF, XML...) and you need to work out which entries
match and which are different or missing. You cannot do a lookup in a CSV file, so
how do you solve the problem?
Read about Flat File Lookups
Pre-FP3 versions of How-To's: