I have some old insane experience writing a huge WDE customization where an agent may be a part of one push preview campaign, and if he received a record from a customer (who happened to have records in other campaigns), the customization would show the agent the records from all of the campaigns. Agent could even disposition/handle the records for the campaign he was not actively in. Thought process was, lets contact the customer once and handle all reasons to speak with the customer at one time.
I am sharing this because I learned many good and bad lessons along the way. I went as far as to write a backend server component which I would let WDE communicate with. Then that backend component would decide if it needed to issue PSDK requests to other components (OCS, IXN) or if it could just safely write things to OCS database tables directly (in the case where a record was not in Retrieved state for example).
This leads me to one important clarifying question, the record you are wanting to issue a RecordProcessed for, is it on the agent desktop already as part of normal outbound activity, or are you wanting to update some record not currently on the agent desktop but based on an action the agent is performing?
I will dig up the code sample tonight. The code sample is very specific to updating an outbound record that is actively on the agent desktop via outbound protocol.
One other thing I have done in the past is used advanced treatments (SCXML) for record processing post handling on an agent desktop. Although it has been so long ago, I forget a lot of the specifics and what is possible. But I wonder if looking into that would be useful for you also. Later tonight I'll dig up and post that code sample.