Processing Model

At the f2f, Stuart asked me to write down what I meant by a
'processing model' in XMLP. It seems to be relevent to current
discussions, so here's an attempt, with a number of questions
(again):

XMLP's processing model is the rules which an XMLP Procesor follows
when determining how to dispatch XMLP Blocks to Handlers. In this
description, I'll gloss over the details of the transport binding and
serialisation mechanism.

An XMLP Processor handles incoming messages in the following manner:

* Processor opens envelope, examines and dispatches blocks in message
  order:

  * Blocks which are not targetted at the processor are skipped. 

  * For each block, identify the appropriate handler by the namespace
    of the block, then

  * If a handler is not found, and block processing is required,
    generate an error, otherwise

  * If a handler is not found, and block processing is not required,
    skip.


QUESTIONS [and some thoughts towards answers]:

- What is the targetting mechanism, and how is it defined and
  extended?

  [In SOAP it's a URI. I think we'll need to define a number of
  common special cases ('next', 'all', etc.), while transport
  bindings should define transport-specific conventions.]

- Where are errors sent? 

  [Seems to rely on both the application's MEP and the transport MEP. 
  Some cases will need an in-message error destination. Also need a
  way to refer to correlated messages.]

- Should it be possible to express blocks that are targetted at
  multiple nodes and required on some but optional on others?

  [probably can be solved with block duplication. Not elegant, but I
  don't *think* this will be a common case? Alternatively with some
  sort of block referencing mechanism]

- Should there be in-message instructions on whether to delete the block
  after it is processed, or is that decision completely the domain of
  the module?

- Are there situations where block ordering is not capable of
  expressing module processing ordering (i.e., can there be a case
  where two different receivers of a message need to process the
  blocks in a different order)?

- Are there situations where the sender doesn't know the proper
  ordering of blocks in processing? How do XMLP Intermediaries now
  where to insert new blocks in the order of processing?
  
- Once a Handler takes responsibility for a Block, can any other
  XMLP-layer errors be generated by that Block? Or are they
  higher-level errors?

Cheers, 

-- 
Mark Nottingham, Research Scientist
Akamai Technologies (San Mateo, CA USA)

Received on Sunday, 18 March 2001 00:36:04 UTC