Execute only if all the previous components are executed successfully

One Star DmB
One Star

Execute only if all the previous components are executed successfully

Hello,
I want to execute a component3 only if two previous components (component1, component2) are executed. In the beginning I've thought to use a link "On Component Ok", but if the component1 is executed the following component3 will be executed even if component2 is failed.
What can be a solution ?
Moderator

Re: Execute only if all the previous components are executed successfully

Hi,
I think can use onsubjobOk trigger. such as component1-->onsubjobok-->component2-->onsubjobok-->component3
The main difference between OnSubjobOK and OnComponentOK lies in the execution order of the linked subjob. With OnSubjobOK, the linked subjob starts only when the previous subjob completely finishes. With OnComponentOK, the linked subjob starts when the previous component finishes.

Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star DmB
One Star

Re: Execute only if all the previous components are executed successfully

Yes, It' so! I've forgotten to say that I want to execute componnt1 & component2 in parallel because they are independent of each other. I'm using free version of Talend and I've read that that there are more possibility of parallelism in commercial version.
Moderator

Re: Execute only if all the previous components are executed successfully

Hi,
I think you mentioned the component tParallelize, however, it is only available in talend enterprise subscription version.
Could you give more information about your requirement so that we may have a good solution on talend open studio.
Actually, talend open studio has "Parallelize" functionality.
Such as 'enable parallel execution' and 'Multi thread execution'.
Best regards
Sabrina
--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
One Star DmB
One Star

Re: Execute only if all the previous components are executed successfully

Yes, yes, this is why I want to use parallelism.
I have 3 tables: t1, t2, t3.
In t3 I have foreign keys from t1, t2.
t1 and t2 are independent of each other.
I want to fill out these three tables in one job. So, t1 and t2 can be filed in parallel. But t3 should be filled out only after t1 and t2.
In my case parallelism is not indispensable, however, it would interesting if I can use it.

Re: Execute only if all the previous components are executed successfully

you can do this in the free version by wrapping your jobs in other jobs:
Master Job will contain two jobs connected by onSubJobOK
1) parallel wrapper job for your two tables in parallel
2) job you want to run after your two tables.
the parallel wrapper job will contain the two table jobs you want to run in parallel. If you do not connect them with any connectors and make sure "enable parallel execution" is checked in the job tab for the wrapper they should run in parallel.
One Star DmB
One Star

Re: Execute only if all the previous components are executed successfully

This is a good solution, JohnGarrettMartin! Thank you