Wednesday, December 27, 2006
Real work...
Real Design.
1. GTL has following class hierarchy.
Info -(use)-> InfoContainer -(Inherit)-> Node -(use)-> Graph
Edge -(use)->
The InfoContainer class provides interfaces to dynamically attach/detach information
on Nodes and Edges. The information being attached or detached should be of Info type
or it's derived types.
Example>
1. Create a class "MyInfo" <-(inherit)- Info
2. Create an object "myInfoObj" of type "MyInfo".
3. Attach "myInfoObj" to specified node "NodeA" with "myinfo" key.
NodeA.attachInfo("myinfo", myInfoObj).
4. When we need to refer to the attached information, we simply get by executing
tempMyInfo = tempNode->getInfo("myinfo");
5. When the information become useless, we can simply remove it by executing
tempMyInfo = tempNode->detach("myInfo");
delete tempMyInfo;
2. The concept of control point.
The PROCESSOR has associated input and output classes. If the processor does not
consume any data or does not produce any output, they are expressed by "dummy" type.
Pure procedure may be of this form.
Example>
Normal Case.
... -> DATA(type1, type2) -[input]-> PROCESSOR -[output]-> DATA(type3, type4) -> ...
Pure procedural case.
... -> DATA(dummy) -[input]-> PROCESSOR -[output]-> DATA(dummy) -> ...
... -> DATA(type1) -[input]-> PROCESSOR -[output]-> DATA(dummy) -> ...
3. In view of the user.
User creates her/his own DATA and PROCESSORs. They are connected in proper way.
When there is a split of control flow, she/he adds DECISION. The model itself is very free
to compose.
The tools extracts control and data flow information by post-processing the Model.
Which PROCESSORs are in parallel, which PROCESSOR needs what kind of DATA and
so on..
4. Possible relationships between nodes.
"input", "output", "use", "inherit", "flowYes", "flowNo", "flow"