I think the Agile diagram is based on UML 1. UML 1 used state/transition thinking as the underlying metaphor and extended it into object flows in activity diagramming. UML 2 uses Petri Nets as the underlying science; a big change.
I gave that example because I have an Ambler book "Elements of UML
2.0 Style" with the same diagram. I guess the 2.0 revision used an old diagram that was not scrutinized...
I am sorry to seem obtuse, but I am still fuzzy about the use of object flows. Any examples that I have found either in text books or on the net seem trivial.
A simple real example that I am working on:
I have a read action: int wRead(void *pData, int nMaxBytes).
I have a class CMsg. It was attributes of a header structure and a pointer to the message payload.
The read is first invoked to read in a message header. The header contains the length of the payload, which is used to allocate memory for the playload and as a parameter for the second read. I am trying to capture the activity with control and object flow.
In the activity diagram, I have object flow from the first read to a CMsg object. Does the read have a "pData" action pin? Does the CMsg have a "sHeader" port?
When the header is set in CMsg, it allocates memory for the payload. Do I show the allocation on the activity diagram? If so where?
I have a data store object for the payload. I would not ordinarily model the data store on the static class diagram. It magically appears on the activity diagram. Do I care?
For the second read, where does object flow? It makes sense to me for it to flow to a data store object. Same question about action pins and ports.
When the message has been handled, do I show deallocation of the payload memory?
Am I getting close?