“If flow service A makes a call to flow service B using wm.b2b.edi.util:invoke will flow service B have access to A’s pipeline? Based on my testing I think the answer is no.”
You are correct. Only the variables supplied in the input parameter are passed to the service. You can write your own equivalent Java service, however, using the appropriate Service.doInvoke to pass the entire pipeline if desired. I think there is code on the forum for this. Also, PSUtilities has a service you could use as a pattern to make your own service.
“I don’t want to add the object I want to access in B to the “Input” parameter for the wm.b2b.edi.util:invoke service, because that means changing the signature for a lot of B type flow services.”
I assume that the parameter isn’t declared as an input on service B. If not, I’d offer that structured programming practices would indicate that you should in fact “fix” the signatrue for all the B type flow services. A service should never (in my opinion) refer to a variable that is not declared as an input or that the service did not create. Referring to undeclared variables is the same as using global variables in C, Java, etc. and carries all the same maintenance implications. There is an old saying that may be applicable here: “No matter how far down the wrong path you’ve travelled, turn around.”