Rationale
Send a file as an attachment through Petals to a Talend job.
The job loads the content of the attached file and inserts its content into a database.
In the scope of this use case, we could imagine, even if it is not shown, that the file's content is transformed before being inserted.
The input message provides the attachment file.
Only the job's result is expected in the response.
Creating and exporting the job
The job to be executed performs the following actions:
- The job is passed the file whose content must be inserted. The file is passed as an attachment to the message.
- The job loads the file's content.
- The job connects to a database and writes the data in this database.
This job has one context variable, pointing to the location of the file whose content must be loaded.
| In the scope of this use case, it is assumed there is a database formationtalend on the localhost, having a table named customers. The schema of the customers table includes two columns named CustomerName and CustomerAddress, both being of type varchar(255). |
Creating the job
Exporting the job
Select the job and right-click it. Select Export to Petals ESB.
Update the target destination.
Let the job be exposed as a singleton.
Click Edit the exposed contexts.
A dialog shows up. Export the outputLocation context as an Out-Attachment.
You should have the following dialog:
Click the Export mode column, and select Parameter in the combo box. Click OK.
The link label should be updated and indicate the number of exported contexts.
Click Finish.
Deploying and testing in Petals
Looking at the generated WSDL
In the created Petals service assembly, the most interesting thing to look at is the WSDL.
Indeed, the WSDL will determine the way the exported service will be called.
The input message's description requires empty parameters.
And the output message includes the job's result and the output attachment.
Deploying and testing this new service
Since we use attachments, we will prefer using a Java client instead of SoapUI.
However, it is possible to use SoapUI to send or receive messages with attachments. Just make sure the MTOM property is activated.
The first thing to do is to create a service-unit for the Petals-BC-SOAP component, that exposes (consumes) our Talend job as a service outside the bus.
This step is not described here. You can take a look at the Petals-BC-SOAP documentation and the Petals Studio documentation.
Just make sure the SOAP configuration uses the InOut MEP.
Then, to generate a client from the WSDL, you can use Apache CXF or Axis2.
In the scope of this use case, Apache CXF is used. Only the client class is shown here.
The client's coe is the following:
TODO
Notice that the MTOM-mode was activated. Not enabling it will result in errors.
The execution output is:
If the job execution fails, the 0 is replaced by another integer, e.g. 1.
One failure reason can be, as an example, that the database is not started.
To determine the act cause of a problem, you would have to use logging features available in the Talend palet.
However, let's make it clear, the job's logs are managed independently of Petals and its monitoring capabilities.