Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik GA: Multivariate Time Series in Qlik Predict: Get Details
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Creating new custom component using tESBConsumer

Hi,
I am trying to create a new custom component by extending the functionality of the tESBConsumer component. I am basically trying to create a new custom component which will have all the features of the tESBConsumer component with a self retry mechanism to loop the web service call if the call fails due to any of the specified reasons.
I am able to create the component with extra properties and it is visible on the design palette as well, but when I drag the component to the design area and double click on it or click the service configuration button (the button which pops up the web service configuration settings to specify the WSDL) nothing happens. I see the engine initialization message in the bottom right corner of the design studio but nothing happens after that. I see no errors.
The tESBConsumer Component's xml and javajet files are not located in the standard installation directory (plugins\org.talend.designer.components.localprovider_XXXXX) but are rather located in the directory plugins\org.talend.designer.esb.components.ws.consumer_XXXXXX. Does that make it any different from other components in the way it works?
It looks like this is due to some extension or plugin issue which is gives us the pop-up when we click on buttons or double click on components. But as I created this new component reusing the existing one (tESBConsumer), do I still have to create new extensions/plugins to have it working?
I am blocked with this issue since a couple of days, is there any documentation somewhere which explains the concept of Plugins, External Field Type and the Header Extension property? Any help would be highly appreciated.

Thanks,
Dhruv

Labels (2)
1 Reply
Anonymous
Not applicable
Author

Hi Dhruv
Sorry for the delay response. About your requirement, I think you can design the job as seen below to implement it without creating a custom component, using official components is more simple and robust for product migration in future. 

Main job:
tLoop--iterate--tRunJob--main--tJavaRow

tRunJob: call the child job, uncheck the 'die on error' option. 
tLoop: (while type), set the condition with a context variable (boolean type) called condition
tJavaRow: 
context.condition=input_row.isFails;

child job:
tESBConsumer--oncomponentok--tFixedFlowInput--main--tBufferOutput1
                     --oncomponenterror--tFixedFlowInput--main--tBuferOutput2
tFixedFlowInput1: define a one column called isFails, boolean type, set its value as false;
tFixedFlowInput2: define a one column called isFails, boolean type, set its value as true;

Best regards
Shong