Daniel Lopes Ferreira |
Gisela Miranda Difini |
Vítor Kehl Matter |
Maxwell Frank Barbosa |
-
lugar = círculo
-
conexao = linha
-
transicao = retângulo
-
token = marca (marcação)
void criaLugar(id: number)
Lugar getLugar(id: number)
void removeLugar(id: number)
void criaTransicao(id: number)
Transicao getTransicao(id: number)
void removeTransicao(id: number)
void criaConexao(lugar: Lugar, transicao: Transicao, peso: number, ehEntrada: boolean, ehConexaoInibidora: boolean, ehConexaoReset: boolean)
void removeConexao(lugar: Lugar, transicao: Transicao)
Lugar getLugarDeConexao(conexao: Conexao)
Transicao getTransicaoDeConexao(conexao: Conexao)
Conexao[] getConexoesEntrada(idTransicao: number)
Conexao[] getConexoesSaida(idTransicao: number)
void insereTokenEmLugar(qtdTokens: number, lugar: Lugar)
void removeTokenDeLugar(qtdTokens: number, lugar: Lugar)
void clearLugar(lugar: Lugar) // remove todos tokens do lugar
Token[] getTokens(lugar: Lugar)
number quantosTokens(idLugar: number)
boolean getStatusTransicao (id: number) // retona True se Transição habilitada e False caso contrário
void setTransicaoInativa(id: number)
void setTransicaoAtiva(id: number)
boolean isTransicaoAtiva(id: number)
void executaCiclo() // varre toda a rede, identificando todas transições habilitadas e executando cada uma destas transições habilitadas; a movimentação de tokens e o disparo de transições podem acarretar a chamada
de métodos de callback para a camada de visualização/interação.
boolean insereCallbackTokenEntrandoLugar(lugar: Lugar, ponteiroPara Método/Função, qtdTokens: number) // método da aplicação é invocado (enviando a quantidade de tokens como argumento) se um token é inserido em um lugar;
boolean insereCallbackTokenSaindoLugar(lugar: Lugar, ponteiroPara Método/Função, qtdTokens: number) // método da aplicação é invocado (enviando a quantidade de tokens como argumento) se token é removido de um lugar;
boolean insereCallbackTransicao(transicao: Transicao, ponteiroPara Método/Função) // método da aplicação é invocado se transição é disparada.
Rodar o comando:
npm run test nomeArquivo.pflow
Arquivos de teste devem estar na pasta /test/files
Rodar o comando:
npm run start
-
Quantos lugares: 3
-
Quantas transições: 2
-
Quais são os lugares de entrada de T1? 1
-
Quais são os lugares de saída de T1? 3
-
Quais são os lugares de entrada de T2? 2
-
Quais são os lugares de saída de T2? 3
-
Quantas marcas em L1 ? 4
-
Quantas marcas em L2 ? 2
-
Quantas marcas em L3 ? 0
-
Qual o peso do arco de L1 para T1 ? 1
-
Qual o peso do arco de L3 para T1 ? 2
-
Qual o peso do arco de L2 para T2 ? 4
-
Qual o peso do arco de L3 para T2 ? 2
- Executar ciclo
- Exibir lugares
- Exibir transições
- Exibir rede
- Sair
Exibir lugares:
┌──────────┬───┬───┬───┐
│ Lugar │ 1 │ 2 │ 3 │
├──────────┼───┼───┼───┤
│ Marcação │ 4 │ 2 │ 0 │
└──────────┴───┴───┴───┘
Exibir transições:
┌──────────────┬───┬───┐
│ Transição │ 1 │ 2 │
├──────────────┼───┼───┤
│ Habilitada ? │ S │ N │
└──────────────┴───┴───┘
Exibir rede:
┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial) │ 4 │ 2 │ 0 │ S │ N │
└───────────────┴────┴────┴────┴────┴────┘
Após execucação do cliclo 1:
┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial) │ 4 │ 2 │ 0 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 1 │ 3 │ 2 │ 2 │ S │ N │
└───────────────┴────┴────┴────┴────┴────┘
Após execucação do cliclo 2:
┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial) │ 4 │ 2 │ 0 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 1 │ 3 │ 2 │ 2 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 2 │ 2 │ 2 │ 4 │ S │ N │
└───────────────┴────┴────┴────┴────┴────┘
Após execucação do cliclo 3:
┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial) │ 4 │ 2 │ 0 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 1 │ 3 │ 2 │ 2 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 2 │ 2 │ 2 │ 4 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 3 │ 1 │ 2 │ 6 │ S │ N │
└───────────────┴────┴────┴────┴────┴────┘
Após execucação do cliclo 4:
┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial) │ 4 │ 2 │ 0 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 1 │ 3 │ 2 │ 2 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 2 │ 2 │ 2 │ 4 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 3 │ 1 │ 2 │ 6 │ S │ N │
├───────────────┼────┼────┼────┼────┼────┤
│ 4 │ 0 │ 2 │ 8 │ N │ N │
└───────────────┴────┴────┴────┴────┴────┘