I am finding that callable recipes are more trouble than they are worth. The idea is a good one and they are fine when they work but it feels like a feature that was only partially thought through and rushed into the product.
Whenever an error occurs, finding the related recipe/job is painful. The recipe and job id are given but then you need to go and hunt them down. Why can't there just be a link to the recipe/job that was called? Also, if an error occurs in the called recipe, there is no way to clear those errors. If you rerun the failed called job, the calling job remains in error and if rerun the calling job the called job remains in error as a new job is initiated. Trying to keep track of errors that have already been resolved is next to impossible.
My question is, has anyone come up with a way of dealing with these issues? Am i missing something obvious?
Sincere apologies for the delay in response. We do have best practices regarding callable recipes that we can share with you and the community.
The general idea for this is that errors must not exist in the callable recipe. All errors must be shown and managed through the job report of the calling recipe.
You can refer to the following recipe, and I will be explaining these step by step: https://www.workato.com/recipes/557418?st=38bf34#recipe
1. You must use an error monitor for the whole callable recipe. To emphasize, all the steps that you want to be executed in your callable recipe should be nested under the "Monitor for actions for error" section. You can learn more about this feature here: http://docs.workato.com/recipes/steps.html#action-with-error-handler-step
2. You will have two actions that send the response back to the calling recipe. The first must be nested under the "Monitor for actions for error section". This is the success response and will be sent if the actions succeeded. The second is in the "On error" section. The response here must be a Failure, and in the message, you can map in the Job URL from the Properties in the App data (This also resolves the issue of hunting down the failed called job).
This will already make it so that, if the callable recipe fails, there will be no error in the callable recipe job report, but the calling recipe will show the error. You should only rerun the calling recipe. This will create a separate job, correct, but you don’t have to worry about resolving a failed job in the callable recipe anymore.
Send us a ticket, we will try our best to assist you with your problem