tWaitForFile
Iterates on a directory and triggers the next component when the defined condition
is met.
This component is used to put the component connected
with it in waiting state. It then triggers that component when the defined file operation
occurs in the specified directory.
tWaitForFile Standard properties
These properties are used to configure tWaitForFile running in the Standard Job framework.
The Standard
tWaitForFile component belongs to the Orchestration family.
The component in this framework is available in all Talend
products.
Basic settings
Time (in seconds) |
Set the time interval in seconds between each two |
Max. number of iterations (infinite loop if |
Set the maximum number of iterations on the specified |
Directory to scan |
Specify the directory to iterate on. |
File mask |
Type in the file mask to filter the files to be monitored. To |
Include subdirectories |
Select this check box to iterate also on the |
Case sensitive |
Select this check box to activate case sensitivity. |
Include present file |
Select this check box to include the file in use. |
Trigger action when |
Select one of the following trigger conditions:
a file is created: triggers the
a file is deleted: triggers the
a file is updated: triggers the
a file is created or updated or |
Then |
Select what to do with the iteration loop after the next component
continue loop: continues
exit loop: stops iterating |
Schema and Edit |
A schema is a row description, it defines the number of fields |
Advanced Settings
Wait for file to be released Every (in |
Select this check box so that the next component is triggered only |
Global Variables
Global Variables |
ERROR_MESSAGE: the error message generated by the
CURRENT_ITERATION: the sequence number of the current
PRESENT_FILE: the path and name of the present file. This
DELETED_FILE: the path and name of the deleted file. This
CREATED_FILE: the path and name of the created file. This
UPDATED_FILE: the path and name of the updated file. This
FILENAME: the name of the file being processed. This is a
NOT_UPDATED_FILE: the path and name of the file that has A Flow variable functions during the execution of a component while an After variable To fill up a field or expression with a variable, press Ctrl + For further information about variables, see |
Usage
Usage rule |
This component plays the role of triggering the next component |
Connections |
Outgoing links (from this component to another): Row: Main; Iterate.
Trigger: On Subjob Ok; Run if; On Incoming links (from one component to this one): Row: Iterate.
Trigger: On Subjob Ok; Run if; On For further information regarding connections, see |
Waiting for a file to be created and stopping the iteration loop after a
message is triggered
This scenario describes a Job that scans a directory and triggers a message showing
file creation information on the console when a text file is created in that directory.
Immediately after this, the scanning is ended, followed by another message showing the
number of iterations finished.
Dropping and linking the components
-
Drop three components from the Palette
onto the design workspace: one tWaitForFile
and two tJava components. -
Connect tWaitForFile to the first
tJava using a Row > Iterate
connection. -
Connect tWaitForFile to the second
tJava using a Trigger > On Subjob Ok
connection.
Configuring the components
-
Double-click tWaitForFile to open its
Basic settings view. -
In the Directory to scan field, enter the
directory to be scanned. - In the File mask field, enter “*.txt” to scan only text files.
-
From the Trigger action when drop-down
list, select a file is created to trigger
the first tJava when a text file is
created. -
From the Then drop-down list, select
exit loop to stop the iteration loop
immediately after the first tJava is
triggered. -
Double-click the first tJava to open its
Basic settings view. -
In the code area, type in the following
code:System.out.println("A file was created at " + TalendDate.getCurrentDate());
System.out.println("Name of the created file: " + ((String)globalMap.get("tWaitForFile_1_CREATED_FILE")));
-
Double-click the second tJava to open its
Basic settings view. -
In the code area, type in the following
code:System.out.println("
Iteration loop ended at " + TalendDate.getCurrentDate());
System.out.println("Number of iterations finished: " + ((Integer)globalMap.get("tWaitForFile_1_CURRENT_ITERATION")));
Saving and executing the Job
- Press Ctrl+S to save the Job.
- Press F6 to execute the Job.
-
Create a text file exit.txt in the
defined directory.When a text file is created, a message about file creation is displayed on
the Run console. The iteration loop is
ended immediately after that, followed by another message showing the time
the iteration loop is ended and the number of iterations executed.
Waiting for a file to be created and continuing the iteration loop after
a message is triggered
the console when a text file is created in the directory being scanned, without ending
the scanning process immediately. The Job continues scanning the directory until the
number of iterations reaches the defined maximum value.
Procedure
-
Double-click tWaitForFile to open its
Basic settings view. -
In the Time (in seconds) between iterations
field, enter the time interval in seconds between each two iterations. In this
example, it is set to 5. -
In the Max. number of iterations (infinite loop if
empty) field, enter the maximum number of iterations. In this
example, it is set to 10. -
From the Then drop-down list, select
continue loop to continue the iteration
loop after the message is triggered. - Press Ctrl+S to save the Job.
- Press F6 to execute the Job.
-
Create a text file continue.txt in the
defined directory.When a text file is created, a message about file creation is displayed on the
Run console. The iteration loop is ended
until the number of iterations reaches ten, followed by another message showing
the time the iteration loop is ended and the number of iterations
executed.