In an earlier posting, I characterized one axis of the debate as robustness versus agility, and wondered how we can have our cake and eat it too. Sam Ruby pointed to WS-Transaction, to which Patrick Logan replied "I think we need a rethinking of databases, messages, and coordination." I'm sure that's true. Meanwhile, what to do?
Exactly the right question to ask. Here is the kernel of my response.
- Design collaborative business processes with partners (internal or external) for exchanging (secured) XML documents independent of connection technology.
- Emphasize exception processing and failure recovery in those designs. Again independent of connection technology.
- Apply the simplest technology that could possibly work for connecting and exchanging those documents. Keep the documents independent of the connection technology.
- Apply the simples technology, or whatever you have available, for processing those documents internally. Keep this technology independent of the connection technology and keep the documents independent of this internal technology. (i.e. your partner should not know or care that you are using MySQL, J2EE, dotNET, Python, etc.)
Something further. Consider passing documents using the following grammar in an XML namespace as a header to the exchanged document.
- "put document D in shared space S with time to live T"
- "take one document matching pattern P from shared space S or return special document N if no match"
- "peek at shared space S for all documents matching pattern P and return copies of those documents or special document N if no match"
- "put copy of document D in space S1 (local) when D is added to space S2 and D matches pattern P"