Do we need to
a) hard code the output in the adapter service with Manual mapping
or can we
b) not hard code the ouput and just work with the data as it comes into the flow service?
The service automatically maps because it picks it up from the signature of the adapter service - the ‘results’ output was copied from the structure at runtime when adapter service was tested.
The pro’s to point 2 is no data entry but could break if the output of the adapter service changes - the flow service would possibly not map data or empty data.
This argument seems to not help point one. If the data into the adapter service changes column names/positions then it would do break but at the adapter service level.
Is point 2’s method of transparently allowing the data to flow through to the flow service a loophole/workaround in webMethods or is it supported mechanism?
Per Systems engineer at software ag:
It is not mandated that you hardcode the output in an adapter service but it is advisable to do so if you want the other services to discover this more appropriately based on signature. Technically, if the output is not specified and the output is coming in from an SP, then the service signature will have 1 or more input fields but no output fields even though it is actually returning something. Now, you did the right thing by copying and pasting the service results into the composite service to enable auto-mapping. On the other hand, if you were to create a SOAP request from this adapter service as it is, you will not find this approach useful as the service signature is different than what the service actually does. It is not an oversight of the product but actually a feature to create such extensibility in such situations. The best practice is to create the actual fields but based on needs, the not-so-best practice might be more quick and easy.
Sr. Systems Engineer, BPM / BAM Practice, Software AG