What is retic | Retic and JyRetic | How to build an adaptor | How to launch adaptors


Thanks to people that give me feedback on Retic!!

Alexander DEJANOVSKI ( alexander.dejanovski@laposte.net )

============
04/08/2004
============


JyRetic 1.0 is out !!
- Download

After a full year since I began working on Retic, 1.0 is finally out...
It comes with great crash handling features brought by the Java Service Wrapper.

Changes are :

- New : The Java Service Wrapper from Tanuki Software is now used to control JyRetic.
It provides great restart on crash features.
- New : Adaptor and parameter definitions are now stored to provide, among others, "restart" features.
- Bug fix : Exception are now correctly raised on error in SQLSink.
- New : SMTP Postprocessor
- New : Jabber Postprocessor
- New : SNMP Trap Appender (logger)
- Various bug fixes and improvements I might have forgotten...

 

Retic Administrator 1.32 is out !! - Download

Changes are :

- Fix : Corrected bug on WSDL parsing during WS component creation
- Fix : Corrected bug on estimated end time in execution tracking
- New : New items in execution tracking popup menu => Open adaptor definition, Open params definition and restart
- New : support for scheduling permanent adaptors

============
04/03/2004
============


JyRetic 1.0RC4 is out !!
- Download

Changes are :

- Bug fix : ToXML pipe didn't work because of an internal type mismatch
- Bug fix : Scheduler didn't want to add recurrent events if there were none already scheduled
- Bug fix : SQLSource didn't properly close the JDBC connection (which didn't prevent it from working)
- Bug fix : Jabber communications with the server are back up
- Improvement : SQLSink threaded inserts now use persistent connections overall adaptor execution (instead of opening/closing connection for each message)
- Some other small bug fixes I might forget.
- Improvement : Support for Xindice 1.1 (to use prior versions of Xindice, place the right libs in the javalib dir and modify jython.bat or jython.sh to include them in the local classpath)

----------------------------------------------------

Retic Administrator 1.3 is out !! - Download

- New : popup menus have appeared to ease operations (try right-clicking on lists and trees), especially adaptor design. - New : possibility to subscribe to get a notice on adaptor end, through a Jabber message (Email will come in future releases)
- Improvement : Refresh schedule is now threaded and non-blocking. You can then set auto-refresh on, while you'll be able to work on other tabs without being interrupted
- New : Images in Running/Terminated adaptors tracking let you know the execution status
- New : Terminated adaptors can be filtered according to end date/hour and/or status
- New : Partial internationalization support (french and english supported, through languages files) => All texts haven't been translated yet.

----------------------------------------------------

Retic SOAP Tester 0.3 is out !! - Download

Major bug fix that prevented from generating correct SOAP Envelopes on some SOAP implementations.



Please upgrade both JyRetic and Retic Admin at the same time or you might get compatibility issues.

 

Retic is an EAI Server.
Its purpose is to permit applications to communicate, even if they don't speak the same language (which means transport protocols as well as data structures).

This is done by building adaptors. An adaptor is composed of :

- One source
- Several pipes (process data transformations)
- Several sinks (destination of data)
- Several loggers (we'll see later what these are)
- Several preprocessors (they don't carry any message and are executed only once before source polls begin)
- Several postprocessors (they don't carry any message and are executed only once after adaptor execution)

Adaptors are tree-like structures that could be pictured this way:


 

 

 

Retic was initially developped in Python, but an EAI server means a connectivity with as many protocols and products as possible. Python, although it's the greatest language ever, lacks connectivity with databases and MOMs.
That is why Retic was translated to Jython : JyRetic, giving it JDBC and JMS connectivity (among a lot of other Java packages, that will provide many useful components).

JyRetic provides the same components than Retic (parameters are sometimes different of course).

Retic Administrator can control the Retic as well as JyRetic, as they communicate through XMLRPC calls.

JyRetic as a Jython src distribution (Jython is provided in the release so all you need is Java 1.3 or +).

 

I've decided to stop the developement of the Python version of Retic. It would take me too much time to maintain both. Python also lacks good connectivity with enterprise standards (JDBC, MQSeries, JMS, ...).

 

Adaptors are described by a XML file.
Retic Administrator is a GUI that can build adaptors and launch them on servers.

Here is an example of what it looks like :

<?xml version="1.0" encoding="UTF-8"?>
<retic_adaptor>
++<source name="source1" type="fileSource" polls="2" pollPeriod="10" filePath="c:" fileFilter="ext_err*.csv" newExtension="">
++ ++<pipe name="transform_to_XML1" type="ToXML" msgKind="delimited" delimiter=";" rootTag="racine" recTag="rec" encoding="UTF-8">
++ ++ ++<field name="message"/>
++ ++ ++<field name="date_traitement"/>
++ ++ ++<field name="ident"/>
++ ++ ++<field name="no_contrat"/>
++ ++ ++<field name="no_lt"/>
++ ++ ++<field name="date_lt"/>
++ ++ ++<field name="etat"/>
++ ++ ++<field name="date_heure_saisie"/>
++ ++ ++<sink name="outputToFile1" type="fileSink" filePath="c:\" fileName="test_sink.xml" addTimestamp="n"/>
++ ++ ++<pipe name="xslt1" type="XSLT" stylesheet="E:\\Xml\\XSL\\test.xsl">
++ ++ ++ ++<sink name="outputToFile2" type="fileSink" filePath="c:\" fileName="test_sink.html" addTimestamp="n"/>
++ ++ ++ ++<sink name="outputToFtpFile1" type="ftpSink" ftpHost="ftp.bogus.com" ftpPort="" ftpUser="guest" ftpPass="guest" filePath="/E:/ADI" fileName="test_sink.html" addTimestamp="n"/>
++ ++ ++</pipe>
++ ++</pipe>
++</source>
</retic_adaptor>

source1 is a file source that looks for files that match the filter ext_err*.csv in directory c:\
The file is loaded into pipe transform_to_XML1which transforms it into an XML file. That XML file is then sent into sink outputToFile2 which saves it as c:\test_sink.xml
Pipe transform_to_XML1 also sends its XML file into pipe xslt1 which applies stylesheet test.xsl to it.
The result of the transformation is sent to sink outputToFile2 (which saves it to c:\test_sink.html) and to outputToFtpFile1 (which saves it via FTP to ftp.bogus.com in directory /E:/ADI with the name test_sink.html).

 

 

 

To launch an adaptor with the command line, you must call startAdaptor.py passing it as argument the name of the config file:

jython startAdaptor.py adaptor.xml

To launch an adaptor with a param file, just add its name at the end of the command line :

jython startAdaptor.py adaptor.xml param.xml

Adaptors can also be launched with the server through XMLRPC calls (with Retic administrator) or through JMS messages.