Here is something I do normally to make caching work. I usually wrap the service that I want to cache within a Java service. The java service can explicitly send only the required data as inputs to the cached serviced as opposed to exposing the entire pipeline when called within a flow. Note that the wrapper java service is not marked as a cached service in the setting.
This works well without messing up the pipeline of the output of the cached service. Any more info, please let me know.
#Flow-and-Java-services#Integration-Server-and-ESB#webMethods