Talend Open Studio (TOS) – Variablen und etwas Java

TOS Jobs kennen unterschiedliche Arten von Variablen

Um eine hohe Flexibilität in entwickelten Jobs zu erhalten versucht man den Job möglichst mittels Parameterübergaben zu steuern. bei TOS werden die Variablen in einem Context zusammengefaßt und in einem File gespeichert. ..  wie in alten „INI“-Files.
Beim Start des Jobs übergibt man nun nur den Namen des Context-File, … by Default lautet der Name „Default“
Somit lassen sich Variablen statisch hinterlegen.
Das Context-File Default.context liegt später im Scriptverzeichnis.

Context-Definition: hier die Variable „emails“

Context-Variablen nutzen:    .. in irgendein Feld reingehen und mal STRG+SPACE drücken. Es werden dann alle verfügbaren Variablen angeboten.

und hier eingesetzt als Variable für den tSendMail-Baustein.

 

Dynamische Variablen

kann man im Job einfach generieren, z.B. aus:

  • Spalten einer Row-Verbindung,
  • aus den Variablen eines Bausteins
  • Java und eines Bausteins „tIterateToFlow“ oder „tForEach“ passend generieren
    • tForEach kann vordefinierte Werte generieren und als Iteration verwendet werden
    • tIterateToFlow kann einen eigens definierten „MAIN“ – Output generieren. In den Component-Details kann man dazu die Spaltennamen der ROW und mittels JAVA dann die Werte definieren.

In den Jobs kann man sehr flexibel auf Variablen anderer Komponenten zurückgreifen.

Innerhalb eines Subjobs kann man dazu direkt die reine Java-Notation wie im Sourcecode verwenden. Über Subjobs hinweg muss man auf die globalMap zurück greifen.

Hier hilft bei der Wandlung von Datentypen auch etwas Java-Kenntniss:

•Object zu String
(„“+globalMap.get(„tFileExist_1_EXISTS“))
•Stringvergleich
(„“+globalMap.get(„tFileExist_1_EXISTS“)).equals(„false“)
  • Rückgriff auf Contextvariablen, einfach ohne Hochkomma!
    context.custID
  • Rückgriff auf Context-Variablen innerhalb von JAVA
    String SQL = “select * from tickets where fk_customer=“ + context.custID + “ and ticket_status != 4 “;
  • Rückgriff auf Row-Variable:
    („“+globalMap.get(„row1.Column0“))
  • Über globalMap.get(„row3.ERREICHBARKEIT“) erhält z.B. man das Objekt
    Will man überprüfen, ob dieses Objekt einen bestimmten Integer-Wert einhält, so muss man in 2 Schritten prüfen:
    A) Prüfen != null

    B) Prüfen ob der IntegerValue passt