Forum Discussion
Thanks for the insight on the Snap. I used Viktor’s Ruby delay, but have been unable to get a loop working in order to (A) Submit a load to my MDM tool and (B) check back on DB status of the load to perform the next steps in the process. Setting this process up, Snaplogic looks like it avoids “entering” the loop…sticking on the step right before the loop starts.
I posted a diagram here, you can see the last Snap it will execute in green…once it gets here it just sits and spins. This shows that section of the pipeline where (A) we check back of data submitted upstream has finished processing, (B) we check back on that value and if not found to be “DONE” yet we push the document stream back onto itself with a UNION (C).
I’ve done something like this before. I think you’re going to need a multi-pipeline design - I don’t believe there is a way to loop within a single pipeline. The below is just one high-level design idea - there are other options.
The step1 pipeline will do the initial work, then call step2 pipeline (using Pipeline Execute) which will have the delay and check status. The step2 pipeline can have a loopback-or-continue Router snap following the status check where if the status is complete, it forks to the logic to finish the process; but if status is not complete, then it recalls step1 pipeline with Pipeline Execute. You can use parameters and Router snap in the step1 pipeline to determine whether step1 skips the initial processing and simply recalls step2 again. Parameters can also be used as a counter mechanism, so that if the counter exceeds x-number retries, then step2 fails or notifies as desired.
The Pipeline Execute documentation states that it doesn’t support redundancy (even though it works in some of my attempts), otherwise, I would recommend a design within a single pipeline. But I stick with the documentation for pipeline longevity.
- brent_vanallen4 years agoNew Contributor
No luck with that approach :). Will have to just keep at it.
- rgoerwit4 years agoNew Contributor II
So did you come up with a decent solution?
BTW, any explanation for why SnapLogic doesn’t support a simple loop flow?
- brent_vanallen4 years agoNew Contributor
I was never able to get looping to work. Even with the “callback” part of the loop separated out to a separate pipeline and using Pipeline Execute, it appears that Snaplogic can look ahead and detect if the logic in the datastream will create a potential loop…and refuses to enter the loop from the entry point (that would be looped back TO). I was able to get delay working via the suggested approach with a little Ruby script though.
We have not set it up yet but I anticipate that we will end up closing the loop logically by using a REST interface.