article

Paula Carneiro Martins avatar image
5 Likes"
Paula Carneiro Martins posted Paula Carneiro Martins edited

Tutorial em Português- Como utilizar o recurso List para reduzir as conexões e direcionar as entidades(Versão 2016)

Nesse exemplo nós vamos construir um modelo que usa listas para relações básicas de roteamento de itens. Os itens serão enviados de três filas para um dos quatro processos. Nós vamos usar uma Lista de itens (item list). As filas irão empurrar os itens para a lista e os processos irão puxar os itens da lista e processa-los. Inicialmente, vamos implementar um simples puxado, mas depois iremos experimentar o puxado com restrições e priorizações.

Passo 1. Montar Layout

Para esse exemplo, criaremos um novo layout. A Figura 1 mostra quais objetos devem estar presentes nesse layout. Observe que NÃO há ligação entre as filas e os processos.

Figura 1- Layout exemplo 2

Passo 2. Configurar source

  1. Na janela de propriedades do source, em inter-Arrivaltime coloque exponential (0 ,2.5,0).

Figura 2- Inserir inter- arrival time

2.Na aba FLOW, em send to port abra a lista de opções e escolha a opção random port.

Figura 3- Sent to port

3.Na aba trigger, adicionar uma Oncreation trigger para configurar o tipo e a cor. OnCreation> Data > Set item type and color

Figura 4- Configurar tipo e cor

Passo 3. Adicionar lists

Para adicionar a lógica é preciso criar um item list. Em Toolbox> > Global list> Item list(Figura 5).

Figura 5- Adicionar item list

Ao clicar em Item list irá abrir janela de propriedades da lista (Figura 6), por agora apenas feche a aba. A sua lista está nomeada como ItemList1.

Figura 6- Janela de propriedades Itemlist

Não é necessário definir nenhuma das configurações agora. Apenas feche a janela de propriedades.

Passo 4. Configurar queue

Para configurar a queue para empurrar os itens para a lista, clique sobre cada uma das filas> Aba Flow> Send to port> abra a lista de opções> Escolha use list> Push to item list. CONFIRA se o o nome da lista corresponde ao nome da lista que você criou.

Figura 7- Push to item list

OBS: Fazer o Passo 4 para (((TODAS))) as filas

Passo 5. Configurar Processos

Para fazer com que os processos puxem da lista, nós precisamos configurar cada input de processos para todos os 4 processos. Clique em um dos processos, na aba Flow vá na parte de input, marque a opção pull strategy. Na aba de escolha da estratégia >Use list>Pull from item list. Você pode deixar o campo QUERY em branco. E confira se o nome da lista escolhida é o mesmo da lista que você criou no Passo 3.

Figura 8- Estratégia puxada

Obs: Não esqueça de fazer o passo 5 para todos os processors.

Salve seu modelo como Exemplo 2 e ele está pronto para ser executado. Mas antes de fazer isso vamos dar uma olhada no que está na lista. Para verificar se até aqui as coisas estão funcionando da maneira correta. Vamos fazer um test rápido. Nas propriedades do ItemList1, vá na aba General e clique no botão a esquerda “ Back Orders”, sua lista deve estar parecida com a da Figura 9. Mudando apenas os nomes dos processos de acordo como os seus estão nomeados.

Figura 9- Janela de pedidos pendentes

A Figura 9 representa que os processos começaram a puxar da lista, mas como não há itens que foram empurrados para a lista, eles estão aguardando para poderem puxar e se tornarem fulfilled(preenchidos). Execute o modelo e você perceberá os itens vão entrar nas filas e serão empurrados para a lista (View entries) fazendo com que os pedidos pendentes sejam atendidos e então começam a ser processados. Quando um item é empurrado para a lista e existe pedidos pendentes o item será imediatamente puxado da lista. Dessa forma o pedido pendente irá se tornar Fulfilled e será removido da lista de pedidos pendentes.

Eventualmente, todos os processos irão puxar os itens e dessa forma a lista de pedidos pendentes se tornará vazia, já que todos estão em operação. Então a lista de entradas vai crescendo(Figura 10) até que um dos processos termine o processamento e requisite puxar um item da lista.

Figura 10- Entradas na lista aguardando serem puxadas

Quando os itens são empurrados para a lista, eles são adicionados no fim da lista. Assim se o sistema puxado não utilizar prioridades como parte da sua tomada de decisão, os itens irão ser puxados como FIFO( first-in-first-out), ou seja, seguindo uma ordem de quem chegou primeiro sai primeiro. O mesmo acontece com os pedidos pendentes pendentes. A primeira máquina que ficar disponível irá puxar o primeiro item que entrar na lista.

exemplo2.fsm

Experimentos

Agora vamos experimentar diferentes configurações das operações puxadas.

Cenário 1- Filtrar por tipo de item

Vamos considerar que um dos processos pode apenas processar o tipo de item 2. Nós podemos vincular essa lógica na simulação utilizando uma simples Query nesse processo. Clique sobre o processo que deseja restringir a entrada ao tipo 2 de item, na janela de propriedades, vá em FLOW >

>Pull strategy >em Query digite a restrição WHERE itemtype == 2 (Figura 11).

Figura 11- Adicionar query para tipo de item

Salve o modelo como Exemplo2_cenario1. Reset seu modelo e execute.

exemplo2-cenario1.fsm

Cenário 2- Puxar pelo LIFO

Vamos supor que agora queremos que todos os processos puxem seguindo a ordem último a chegar primeiro a sair (LIFO) ao invés do padrão FIFO, o que significa que o item mais recentemente adicionado na lista deve ser o primento a ser puxado da lista. Nós podemos criar essa lógica na simulação, implementando uma simples puxada Query.

Abra o arquivo do exemplo 2, e salve como exemplo2_cenario2. Para cada um dos 4 processos faça o seguinte:

1)Clique no processo >vá em FLOW > Pull strategy > em Query digite a restrição ORDER BY age ASC (Figura 12).

Figura 12- Lógica LIFO

Repita 1) para TODOS os processos.

Salve o modelo e coloque para executar.

exemplo2-cenario2.fsm

Use a ferramenta avançada view entry

Nessa ferramenta você pode verificar se o seu modelo está rodando de acordo com a lógica planejada. Por exemplo, se você quiser testar o seu query de order by age asc para você ter certeza de o que você quer antes de implementar no modelo. Você pode usar a ferramenta avançada para fazer isso.

Execute o modelo até que tenha um número significativo de itens na lista. Nas propriedades do ItemList1, vá na aba General e clique no botão a esquerda “ View entries”. Pressione botão para mostra as ferramentas avançadas (Figura 13).

Figura 13- Ferramentas avançadas view entry

Agora teste colocar a Query por ORDER BY age ASC e pressione enter (Figura 14).

Figura 14- Itens ordenados por tempo

Na Figura 14 você pode notar que os itens na lista estão agora reorganizados com as idades ascendentes. A ordem puxada que usa a query order by age asc, vai puxar do topo dessa lista. No caso o primeiro a ser puxado seria o Queue5/Box~3 com itemtype de 3 e age de 0. 18, o último a entrar na fila.

flexsim users manuallistsconnectionstutorial em portugues
fig1.png (106.5 KiB)
fig2.png (39.9 KiB)
fig2.png (39.9 KiB)
fig3.png (63.0 KiB)
fig4.png (59.4 KiB)
fig5.png (82.4 KiB)
fig6.png (48.3 KiB)
fig7.png (33.5 KiB)
fig8.png (17.4 KiB)
fig9.png (32.8 KiB)
fig10.png (56.7 KiB)
fig11.png (25.8 KiB)
d1.png (7.2 KiB)
d1.png (7.2 KiB)
fig12.png (30.8 KiB)
fig13.png (26.7 KiB)
fig14.png (47.9 KiB)
d2.png (2.0 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Article

Contributors

paula.carneiro_martins contributed to this article