Rationale
Send a data flow from Petals into a Talend job, that will insert these data into a database.
In the scope of this use case, we could imagine, even if it is not shown, that these data are transformed before being inserted.
The input message provides the data flow.
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 data flow coming from Petals.
- The job connects to a database and writes the data flow in this database.
This job has no context variable.
| 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
To test this service, you can use a tool like SoapUI.
This way, you can see what the XML messages look like.
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.
Now, your input message (in SoapUI) should look like this:
TODO
Notice the XML shape.
The in-data-rows will be passed in raw mode to the job, and loaded into the job's flow by the tPetalsInput component.
Every in-data-row has the same list of children, each child being a column in the schema of the tPetalsInput.
Thus, the expected data schema is defined by the job, and not by the service's contract.
In fact, the service's contract is partially generated from this schema.
As said in the other use cases, it is the job's content which define what the service contract will be.
The returned message, when everything works, is:
TODO
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.