# Modelos e pastas

> A raiz Modelos e os cartões dela, a página do próprio modelo com a identidade e a estrutura, Copiar modelo e Excluir modelo, e as pastas em que modelos, relatórios e etiquetas são arquivados.

Um **modelo** é o tipo: os canais abstratos, o catálogo de metadados, a automação, as regras de produtividade e as impressoras pelas quais um processo é definido, mais as bibliotecas e os procedimentos que um produto exige dele. Ele é realizado em **unidades**, as estações físicas, e toda unidade roda a definição inteira contra origens próprias. Esta página cobre a raiz Modelos, a página do próprio modelo, copiar e excluir um modelo, e as pastas da coluna Espaço de trabalho. A tabela de unidades da página do modelo tem página própria: [Unidades](process-units).

Os modelos são lidos por todo nível do Process; criar, renomear, copiar, arquivar e excluir um exige Gerenciar o Process.

## A raiz Modelos {#the-models-root}

Selecionar **Modelos** abre uma parede de cartões sob a frase "Cada modelo declara os canais abstratos uma vez, depois os concretiza em unidades para executar ensaios registrados e avaliados." Um cartão por modelo ou pasta, com o glifo e o nome da linha; clicar num cartão o abre. O cartão de um modelo carrega um ícone **Remover** na tinta de perigo, que executa Excluir modelo (abaixo); o cartão de uma pasta não carrega nenhum, porque uma pasta não é uma linha que se possa excluir daqui. Sem nenhum modelo, a parede diz "Nenhum modelo ainda. Adicione um."

| Comando | O que faz | Fica cinza quando | Não é desenhado quando |
| --- | --- | --- | --- |
| **Modelo** (barra) | Cria "Novo modelo 1" (ou o próximo número livre) na raiz Modelos, destacado nesta parede e rolado até ficar à vista; o modelo não é aberto. | A estação está travada ("A configuração está travada enquanto uma Unidade está em execução." ou "Runtime parado"). | O papel não tem Gerenciar o Process. |
| **Novo modelo** (menu Novo…; clique direito na raiz) | O mesmo, a partir do rodapé da coluna ou do menu da raiz; a tela vai para a raiz Modelos. | O mesmo. | O mesmo. |

Um modelo nasce vazio: sem canal, sem unidade, sem biblioteca, sem procedimento. Os quatro grupos dele e as linhas deles existem desde já, então a coluna já mostra onde cada coisa vai; só a linha Painéis já se lê como um painel padrão, até você declarar um seu.

## A página de um modelo {#a-models-page}

Selecionar um modelo abre a página que diz o que ele é e onde ele roda, sob a frase "Um modelo de procedimento: canais abstratos declarados uma vez, o que um produto na bancada pede deles, e as unidades em que ele é executado." O cabeçalho carrega duas pílulas: `rev <revision>` e a contagem de unidades.

### Identidade {#identity}

| Campo | O que é | Valores / padrão | Efeito |
| --- | --- | --- | --- |
| **Nome** | O prefixo público do endereço: toda unidade do modelo responde em `Process.<Model>.<Unit>`. | Texto livre; "Novo modelo 1" na criação (ou o próximo número livre). O segmento do endereço mantém letras e dígitos, transforma o resto em `_` e põe `_` na frente de um dígito inicial. | Confirmar (Enter, ou deixar o campo) é uma renomeação coordenada: toda referência textual viva ao endereço antigo é reescrita junto. Enquanto você digita, a frase sob o campo prevê o alcance: "Verificando as referências…", depois "Renomear atualiza os 3 locais que leem este endereço.", "Nenhuma referência usa o endereço atual." ou "O endereço efetivo não muda; nenhuma referência precisa ser atualizada." Um nome cujo segmento outro modelo já mapeia é recusado no campo: "O nome 'X' mapeia para o segmento de endereço 'Y', já usado por 'Z'." |
| **Revisão** | Texto livre levado a todo snapshot de execução, para rastreabilidade. | Qualquer texto; em branco. | Mostrado na pílula `rev` e congelado em toda execução iniciada depois. Nada o obriga nem o incrementa. |
| **Observações** | Texto livre, para pessoas. | Qualquer texto; em branco. | Nada o lê. |

O campo Nome fica desabilitado sem Gerenciar o Process e enquanto a estação está travada; Revisão e Notas salvam sozinhos quando você deixa o campo.

### Unidades {#units}

O cartão **Unidades** fica entre Identidade e Estrutura e é desenhado apenas para Gerenciar o Process: as estações em que o modelo é realizado, cada uma com o seu nome, código, notas e cobertura de canais. Ele é descrito em [Unidades](process-units).

### Estrutura {#structure}

O último cartão, "Do que este modelo é feito, pela frequência com que cada parte muda: a estrutura do processo, como ele se mostra, o que o produto na bancada pede dele, e as unidades em que ele é executado. Clique em uma para abri-la.", são quatro blocos: **Definição**, **Visualização** e **Preparação** pelo nome, e **Operação** com a contagem de unidades dela. Cada bloco seleciona aquele grupo na coluna.

## Copiar modelo {#copy-model}

**Copiar modelo** fica na barra do modelo e no menu de clique direito dele (Gerenciar o Process; cinza enquanto a estação está travada). Ele faz, a partir do modelo selecionado, um modelo seu, cai na raiz Modelos com o cartão da cópia destacado e rolado até ficar à vista, sem abri-la, e informa "'X' copiado para 'Y'. Abra a cópia para editá-la."

O que viaja, toda linha sob uma identidade nova e toda referência entre linhas remapeada para as cópias:

- a linha de identidade: revisão, notas, o interruptor de Parada externa com o sinal e a polaridade padrão dele, o período móvel padrão e as quantidades nomeadas, as quatro filas de impressão padrão;
- os canais com o número, o nome, o apelido, o escopo do apelido, o papel, o tipo, a unidade de engenharia, a cor e o grupo deles;
- o catálogo de metadados com as partes de sequência dele;
- os painéis com os cartões deles, e os dashboards do modelo (cada um salvo como dashboard da cópia, com os endereços reescritos do nome do modelo antigo para o novo);
- os datalogs, as receitas com setpoints e segmentos, as avaliações com critérios, as ocorrências, os conjuntos de apelidos com as entradas deles, as ações com os comandos e os mapeamentos de marcador delas, e os procedimentos com as seleções deles;
- as unidades com os vínculos delas, as quantidades próprias delas, os slots de impressora próprios delas e a origem de intertravamento delas, e a automação delas (origens de comando, códigos de seletor, mapeamentos de metadados, retornos para o CLP).

O que não viaja: os estados dos contadores sequenciais (um campo copiado começa do valor inicial dele e nunca compartilha as reservas do original), a pasta (a cópia cai na raiz Modelos) e a marca de exemplo de um modelo que veio com o produto. Tudo o que aponta para fora do modelo (tags e variáveis vinculadas, origens de intertravamento e de automação, modelos de documento de relatório e de etiqueta, nomes de fila de impressão) mantém o seu valor, então a cópia aponta para o que o original apontava; a [Validação](validation) lista as referências que você talvez queira trocar.

A cópia toma o nome da origem enquanto ele estiver livre, depois "Nome (2)", "Nome (3)"; tanto o nome de exibição quanto o segmento de endereço dele precisam estar livres. Uma gravação recusada informa "O modelo não foi copiado: …" e não deixa nada para trás; um dashboard que falha ao salvar custa à cópia aquela superfície e informa "A tela 'S' não foi copiada: …".

## Excluir modelo {#delete-model}

**Excluir modelo** é o verbo que encerra a barra e o menu do modelo, e o ícone Remover no cartão dele na raiz Modelos ou na pasta dele (Gerenciar o Process; cinza enquanto travado). Ele confirma antes: "Excluir 'X'? Isto remove o modelo e tudo o que está definido sob ele. Um modelo em uso não pode ser excluído. Isso não pode ser desfeito."

A estação recusa, no feed de ações, com "Não é possível excluir um modelo enquanto uma das unidades dele está ocupada por uma operação de execução." e "Não é possível excluir um modelo enquanto uma das Unidades dele tem um intertravamento travado." Um modelo excluído leva junto as unidades, as bibliotecas, os procedimentos, os painéis e os dashboards dele; as execuções gravadas dele ficam intocadas nos Históricos, porque um arquivo de execução é independente da configuração que o produziu. Depois da exclusão, a tela vai para o pai do modelo, a pasta em que ele estava arquivado ou a raiz Modelos, selecionado e aberto na árvore com a parede dele à vista, e o feed diz "Excluído."

## Pastas {#folders}

Modelos, Relatórios e Etiquetas aceitam, cada um, pastas suas, com no máximo dois níveis. Uma pasta é onde as linhas são listadas e nada mais: ela nunca entra num endereço (uma unidade continua sendo `Process.<Model>.<Unit>` seja qual for a pasta em que o modelo dela esteja), e arquivar não reescreve referência nenhuma. Os nomes são comparados sem diferenciar maiúsculas, então "Bancadas" e "bancadas" são uma pasta só, desenhada com a grafia vista primeiro. As pastas são desenhadas primeiro, por nome, acima das linhas que ninguém arquivou.

| Comando | Onde | O que faz | Recusado |
| --- | --- | --- | --- |
| **Nova pasta** > **Modelos** / **Relatórios** / **Etiquetas** | O menu Novo… da coluna | Abre uma pasta vazia naquela raiz, chamada "Nova pasta" (depois "Nova pasta 2", …), com o campo de nome aberto na linha. Esc a deixa chamada "Nova pasta". | Estação travada; falta Gerenciar o Process. |
| **Pasta** | A barra de uma pasta; **Nova pasta** no menu de clique direito dela | Abre uma subpasta dentro da pasta selecionada. | "Esta pasta já está no nível mais profundo em que pastas se aninham." numa pasta de segundo nível. |
| **Modelo** / **Relatório** / **Etiqueta** | A barra de uma pasta; **Novo modelo** / **Novo relatório** / **Nova etiqueta** no menu dela | Cria a linha dentro daquela pasta: a parede da pasta a destaca e a rola até ficar à vista, e a linha não é aberta. | Estação travada. |
| **Mover para** | O menu de clique direito de um modelo, de um relatório ou de uma etiqueta | Um submenu: **Uma pasta nova** (nascida com a linha dentro), **Uma subpasta nova aqui** (só de dentro de uma pasta de primeiro nível), **Raiz de Modelos** / **Raiz de Relatórios** / **Raiz de Etiquetas** (cinza enquanto a linha já está ali) e, em seguida, toda pasta existente da categoria menos a atual. | "Essa pasta está mais aninhada do que as pastas descem aqui." |
| **Renomear a pasta** | A barra e o menu de uma pasta | Abre o nome na linha; toda linha de dentro, subpastas incluídas, é rearquivada sob o nome novo, e o que você tinha aberto continua aberto. | "Uma pasta precisa de um nome, e um nome não pode conter '/'."; "Já existe aqui uma pasta chamada 'X'." (juntar duas pastas é uma mudança, não uma renomeação). Reescrever o mesmo nome é permitido. |
| **Remover a pasta** | A barra (grupo de perigo) e o menu de uma pasta | Confirma "Remover a pasta 'X'?", ou "Remover a pasta 'X'? Os 3 modelos que estão nela voltam para a raiz de Modelos. Nada é excluído.", e depois devolve toda linha de dentro à raiz da categoria e retira a pasta. | Estação travada. |

A página de uma pasta lista como cartões o que está arquivado nela, sob "Os modelos arquivados aqui. Uma pasta organiza a coluna e nada mais." (ou os relatórios, ou as etiquetas). Uma pasta vazia diz "Esta pasta ainda não guarda nada. Acrescente algo a ela, ou traga uma linha da coluna." Cada cartão abre a sua linha; um cartão de modelo, relatório ou etiqueta carrega o ícone Remover, que exclui aquela linha (Excluir modelo, "Excluir relatório", "Excluir etiqueta", cada um com a sua confirmação).

Um papel no nível Editar receitas e avaliações mantém as pastas pelas quais vê os modelos, mas não pode criar, renomear, mover nem remover uma.

## As quatro páginas de grupo {#the-four-group-pages}

Definição, Visualização e Preparação abrem o mesmo painel: o nome do grupo, a descrição de uma linha dele (citada em [Process](process#a-models-four-groups)) e um cartão **Conteúdo**, "O que este grupo guarda. Clique em um item para ir direto a ele.", com um bloco por linha. Um bloco que representa uma lista mostra a contagem dela (Canais, Metadados, Dashboards, Painéis, Ocorrências, Apelidos, Datalogs, Receitas, Avaliações, Ações, Procedimentos); Automação, Produtividade e Impressoras mostram o nome delas, porque cada uma é uma configuração e não um número de linhas. A Operação abre um painel diferente, as unidades com a situação ao vivo delas, descrito em [Unidades](process-units#the-unit-under-operate).

Nenhuma das quatro páginas carrega barra nem edita coisa alguma.

## O que esta página não faz {#what-this-page-does-not-do}

- Nada de uma unidade é configurado aqui além do nome, do código e das notas dela: vínculos, contadores, intertravamento, automação, produtividade e impressoras são configurados nas cinco telas de [Definição](process-definition), cada uma mostrando todas as unidades de uma vez.
- Um modelo não é reordenado, e o nome dele não é editado pela árvore.
- Um modelo dentro de uma pasta não é endereçado através da pasta, e movê-lo não muda nada que o leia.
- Nada é desfeito: Copiar modelo é o jeito de guardar uma versão, e uma execução gravada mantém a configuração que a produziu aconteça o que acontecer com o modelo.
