A informação necessária ao Controlador de Diálogo consiste na definição dos Guiões de Interacção, na descrição das instâncias existentes e nos canais de comunicação com os outros componentes de MIU. Temos então:
CD :: DEFS: GISym -> GIdef
INSTS: InstId -> InstDescr
OUTSM: CHAN
INSM: CHAN
INLX: CHAN
OUTLX: CHAN;
GIdef = DECISION | SYNTH | VALSYNTH | FFSYNTH | RELSYNTH |
SISTSYNTH | SETSYNTH | TUPSYNTH;
FFSYNTH :: DREF: TypeId;
InstDescr :: FATHER: NIL | InstId
VARS: VarId -> Value
EVSEQ: Conditions
CMDLINE: NIL | CmdLineDescr;
O seu funcionamento consiste basicamente em:
Figure 24: Composição do Controlador de Diálogo
Na fig. 24 são apresentados os ficheiros que compõem o Controlador de Diálogo. Note-se que as setas representam uma relação de inclusão textual, pelo que podem existir (e existem de facto) referências cruzadas entre os ficheiros.
O ficheiro cd.n contém o corpo principal do Controlador. Em cdcom.n estão as funções de comunicação e este por sua vez inclui msgs.n onde são definidos os protocolos de comunicação; petrinet.n é o animador de Petri Nets e mkpn.n um gerador das mesmas a partir de descrições de EVSEQ utilizando as seguintes definições:
PNDescr = NIL | SeqDescr | RepDescr | ConcSDescr | ConcADescr |
OpcDescr | EvId;
SeqDescr :: P: PNDescr /* Sequenciacao */
S: PNDescr;
RepDescr :: DREF: PNDescr; /* Repeticao */
ConcSDescr :: A: PNDescr /* Conc. Sincrona */
B: PNDescr;
ConcADescr :: A: PNDescr /* Conc. Assincrona */
B: PNDescr;
OpcDescr :: A: PNDescr /* Alternativa */
B: PNDescr;
si.n é o interpretador de instruções e cdff.n a cdtup.n são os módulos de tratamento dos modelos.
Finalmente, em share são feitas definições globais aos três componentes do MIU. Tanto este ficheiro como msgs.n são partilhados pelos três componentes do sistema.