signature mismatch between caller/callee flow

My caller flow invokes a callee. The signature of the output result returned by the callee is shown below:

docA (document)
…docListB (document list)
…strC (string)

Unfortunately, the callee returns data with a different signature, e.g.

docA (document)
…docB (document)
…strC (string)

How can my caller access the returned data when its signature contains a list, but the actual data does not?

I tried mapping with index=0

I tried mapping the formal signature to the actual signature

I tried accessing the result with queryXmlNode (after converting documentToXMLString, xmlStringToXMLNode)

The callee needs to return the data that matches its output signature. To do otherwise is a bug.

Rob is right - the best thing to do is to fix the callee service.

If you cannot change the callee, one of these things may work:

  1. Use variable substitution to access %docA/docB/strC% to access the data at design time. (Note, not %docA/docB[0]/strC%)

  2. Copy/paste the callee’s actual output data structure into the caller’s design-time pipeline. When you save this change, webMethods has a habit of ‘disappearing’ the new data structure. To work around this, either paste the data stucture into caller service signature as a junk input, or hardcode some junk data to the variables you want to retain.