# Emitir etiquetas e relatórios

> O que uma execução emite no Início e na Conclusão, em que ordem, por qual fila, o que é congelado no arquivo da execução, e como toda entrega é gravada.

Uma execução emite a papelada dela pelas **ações** do modelo dela: grupos nomeados de comandos, cada
comando emitindo uma etiqueta ou um relatório no Início ou na Conclusão da execução, declarados em
Preparação > [Ações](process-actions) e escolhidos pelo [procedimento](process-procedures) como
grupos inteiros. Os modelos de documento com que os comandos renderizam são as duas bibliotecas
desta raiz: o layout de um comando de relatório vem de [Relatórios](process-reports), e o arquivo de
um comando de etiqueta vem de [Etiquetas](process-labels). Esta página é o que acontece quando uma
execução chega a uma fronteira.

## As duas fronteiras {#the-two-boundaries}

Numa fronteira, os comandos disparam na ordem da lista do modelo, ao longo dos grupos escolhidos, e
na ordem de cada grupo dentro dele, as etiquetas antes dos relatórios. Todo comando é isolado: um
modelo de documento faltando, uma composição que lança exceção ou uma fila que recusa vão para o
diário, não mudam nada da execução e nunca param os comandos atrás.

| Fronteira | Quando | O que está disponível | O que é emitido |
| --- | --- | --- | --- |
| Início | Assim que a execução se materializa, depois de os contadores sequenciais serem reservados e os metadados serem escritos; a execução já está gravando enquanto os documentos compõem, pelo arquivo aberto da própria execução. | A identidade da execução, os metadados, o instante de partida e o estado Em execução. | Todo comando de etiqueta com o gatilho Início; todo comando de relatório com o gatilho Início e um layout: uma folha de percurso em que as seções ainda sem evidência ficam de fora e a linha Receita imprime a receita planejada. |
| Conclusão | Depois que o estado terminal e o snapshot da execução são selados e a unidade é liberada; as etiquetas primeiro, os relatórios em segundo plano logo em seguida. | Tudo o que havia no Início mais o instante de término, a duração, o estado terminal, o veredito, o motivo do término e os critérios julgados. | Todo comando de etiqueta e de relatório com o gatilho Conclusão cujo filtro de veredito admite o veredito da execução. |

O filtro de veredito (OK, NOK, Indeterminada, Sem veredito) é lido apenas na Conclusão; no Início
ainda não há veredito. Uma execução que terminou Com falha não tem snapshot terminal: as etiquetas
de conclusão dela gravam um artefato falho e nenhum relatório de conclusão é publicado. Um comando
de relatório cujo layout foi excluído, e um comando de relatório sem layout, não publicam nada.
Reiniciar a aplicação nunca repete documentos de Início: uma execução retomada depois de um reinício
carrega os artefatos que já emitiu.

## Relatórios {#reports}

Um comando de relatório com layout publica o PDF dele na fronteira dele, tenha pedido o que tiver
pedido além disso. O arquivo é nomeado a partir do nome-base de exportação da execução mais o nome
do grupo (`<base> - <group>.pdf`), então a folha de percurso e o relatório de encerramento de uma
execução ficam lado a lado; dois grupos cujos nomes cairiam no mesmo arquivo são distinguidos pela
identidade do comando. Uma renderização posterior do mesmo comando substitui o documento daquele
comando e nada mais. As duas opções do comando decidem o que acontece com o documento:

| Opção | Efeito |
| --- | --- |
| Imprimir automaticamente | O PDF publicado também é submetido à fila de relatórios em vigor para a unidade naquela fronteira. Uma unidade sem fila naquele slot grava a tentativa como falha ("Nenhuma fila de impressão está configurada para esta ação na Unidade."). |
| Guardar uma cópia dentro da execução | O PDF pronto é guardado no arquivo da execução, então um reenvio posterior submete exatamente aqueles bytes, mesmo depois de o layout ser editado ou excluído, ou de o arquivo publicado ser substituído por uma renderização posterior. A execução passa então a carregar o tamanho do documento. |

Um comando que pediu qualquer uma das duas registra o documento na execução (o registro que os
Históricos listam sob **Relatório**); um comando que não pediu nenhuma das duas publica o arquivo e
não registra nada, porque gerar é uma exportação do arquivo da execução e nunca uma escrita nele.

## Etiquetas {#labels}

Um comando de etiqueta renderiza o modelo dele com uma origem por marcador. No Início só resolvem as
origens confirmadas num Início aceito: os metadados, o nome e a revisão do modelo, o nome e o código
da unidade, o nome e o código do procedimento, o identificador da execução, o instante de partida e
o estado da execução; um marcador mapeado para qualquer outra coisa recusa a etiqueta de Início ("O
marcador '{{RESULT}}' não está disponível quando uma execução começa."). Na Conclusão o catálogo
inteiro resolve, um resultado de critério pela identidade estável dele e por um ciclo explícito (um
ciclo faltando nunca significa "o último").

Toda geração primeiro acrescenta um **artefato** imutável ao arquivo da execução: os bytes finais de
comando, o nome, o arquivo de origem e o hash de conteúdo do modelo, o nome do grupo, o gatilho, os
valores resolvidos com as origens deles, ou o motivo de nenhum comando ter podido ser gerado. Em
seguida, os bytes vão para a fila de etiquetas em vigor para a unidade naquela fronteira, como um
documento RAW chamado `Ganter Lab · <group>`. Uma unidade sem fila naquele slot grava uma tentativa
falha ("Nenhuma fila de impressão está configurada para esta etiqueta na Unidade."); um modelo que
sumiu grava "O modelo de etiqueta configurado está faltando.". Toda tentativa de entrega é
acrescentada ao artefato: **Enviando** antes de o spooler ser chamado e, em seguida, **Enviado para
a fila** ou **Falhou**; uma tentativa que a aplicação interrompeu no meio fica em **Envio incerto** e
nunca é repetida automaticamente, porque a impressora pode já ter produzido a etiqueta. "Enviado
para a fila" confirma que o Windows aceitou a carga, não que saiu papel.

## Impressoras {#printers}

Em qual fila um documento cai é decidido em Definição > [Impressoras](process-printers): o modelo
declara quatro slots padrão, um por combinação do que é emitido e quando (etiqueta ou relatório, no
Início ou na Conclusão), e cada unidade segue os quatro do modelo ou mantém quatro próprios. Um
comando resolve o destino dele pelo tipo e pelo gatilho dele, pelo modelo numa unidade que segue e
pelos slots da unidade numa desprendida, então um grupo que dois procedimentos compartilham imprime
por um destino escolhido uma vez. As filas são as filas de impressão do Windows instaladas para o
usuário sob o qual a estação roda; uma etiqueta sai como bytes RAW, um relatório é rasterizado e
desenhado no dispositivo, então uma impressora comum de documentos serve os relatórios e uma
impressora de etiquetas serve as etiquetas.

## Depois {#afterwards}

Tudo o que uma execução emitiu é lido no registro dela nos Históricos ([Etiquetas e
relatórios](histories-documents)): os artefatos, os registros e toda tentativa com a situação dela.
Lá o par de gestos é o mesmo para os dois meios: um documento **novo** a partir da evidência
congelada da execução (uma etiqueta nova com um comando configurado ou com um modelo mapeado à mão,
um PDF novo com qualquer layout), e a **reemissão** de um gravado (uma reimpressão dos bytes
congelados de um artefato, um reenvio do PDF registrado), que não resolve nada de novo.

## O que a emissão não faz {#what-emission-does-not-do}

Ela nunca lê um valor ao vivo: uma etiqueta resolve apenas o que o arquivo da execução congelou, e
um relatório renderiza apenas a partir do arquivo. Ela nunca muda uma execução: uma falha de
documento deixa o veredito, o estado e o arquivo exatamente como estavam. Ela nunca confirma
impressão. E ela nunca emite para uma amostra ou uma execução de avaliar agora, que não carregam
procedimento nem ações.
