It appears that Block Diagram is the most characteristic one in its three types of diagram in FMC (Petri Nets and ER Diagram are the rest). It is used to depict the compositional structure of system, that is, the active structure which consists of two kinds of component: the agents (active component) and locations (passive component, including channels and storages), see Notation Reference for details. I just tried to redraw the diagram of the basic structure of MDApp, as shown
What information presented on this picture? According the FMC Reference strictly, One can read the diagram and describe it in standard FMC terms as below, where the FMC terms (corresponding to certain graphic notations) are with underline:
- Model-Driven Application System is an agent which has access to (modifying) the certain location (the Application Domain) of real world;
- it consists of three agents (Function Engine, Modeling Tool, and Model Engine) and two storages (Metamodels and Applied Models) in a Database.
- Function Engine and Modeling Tool each have a channel to achieve request / response communication with Model Engine.
- Model Engine has read access to storage Metamodel, and read / write access to Applied Model storage, and response the requests from the agents of Function Engine and Modeling Tool.
- In the Real World, the human agent Modeler has a bidirectional communication channel with Modeling Tool, she/he gets information via read access from the Application Domain which as a storage.
- The Application Domain may includes some general agent, human agent, storage, and so on.
- The Function Engine may have some different sub agents each has the respective channel or access to the (appropriate) different object in the Application Domain.
In comparison with the Figure 1: A basic structure of model-driven application (MDApp) at What Is Model-Driven Application, I feel FMC Block Diagram is quite useful and effective for clear and precise expression. Yet some important information for MDApp is missed in the diagram above, which seem not appropriate for expression in FMC Block Diagram without additional text or graph:
- The things in Application Domain is modeled (represented) with Applied Model by Modeler; this can be done when the system has deployed or is running.
- Applied Model must conform to Metamodel, especially, when Applied Model is changed.
- Model Engine does operations on Applied Model according to the Metamodel,
- Function Engine can be done right operations is depended on the right information of its target from the Applied Model.