+ Start a Discussion

how to prevent recursion

I am interested in using streaming to replace my trigger/future or outbound messaging integration with another system.


but the soql says select x,y,z from object where flag=true


the remote system will update object whenever there are returning changes.. this will cause the soql to fire I think,

and then the streaming client will be notified of changes.   but I don't want THESE changes sent back to the remote,

as the remote is the one that made them.  .


in my trigger I compare a flag set ONLY on the remote update to cancel the trigger.


in my outbound message I use workflow rules to check the same flag set only by the remote system.


how do I prevent this loop with the streaming api? or does the callback get fired and I have t check the flag in the

client system, and hope that the notification time interval doesn't mask a SF UI sourced change.(as compared to the incoming web service api sourced change)




maybe its the same approach


select id, field1, field2 from object__c where remote_update__c ==false


remote_update__c is only true from the remote system posting updates.


still requires a trigger to clear the flag on UI generated changes.



I guess your integration runs on a user of it own, so something like this might work:


select x, y, z from object where LastModifiedById <> '005XXXXXX'


being 005XXXXXX the integration user's id.