Thank you for your response.
Let me try to explain our architecture a little clearer and what we are experiencing.
Our software involves sending data via EDI messages to a third party. So to achieve this we have a front end application that the user will use to enter data which is persisted to the SQL database via BOS. We then call InvokeServerMethod to request our workflow engine to send the EDI message to said third party with a workflow process that gets instantiated new each time.
We pass a parameter object to the workflow which contains simply the business object type, it's ID and the primary key name. The workflow then gets a persistence manager and requests the data from the BOS by passing an RDBQuery constructed from the type, id and primary key name to the PM to fetch the records.
The problem is that this will work first time, we can use TraceViewer and/or SQL Server Profiler to see the calls being made to the DB. If the response to the EDI message suggests that there is a problem with the data we sent, then the user will amend the content and send it again in the same way described above. This will create a new workflow.
The problem is that both the TraceViewer and Sql Server Profiler do not show any request to the DB to refetch the data. The EDI message goes out with the original content even though the DB has changed. The EDI message is not cached anywhere and gets instantiated anew every time.