Etiquetas e metadados
O cfourdev conhece C4 e nada mais. Time, domínio, produto, criticidade, jornada, código de rastreabilidade — nada disso tem campo próprio, e é deliberado: seriam campos de um domínio específico dentro de um formato que precisa servir a todos.
O que existe são dois eixos livres, e a diferença entre eles é uma só.
A diferença, em uma frase
Seção intitulada “A diferença, em uma frase”etiqueta (tags) | uma marca sem valor. Uma caixa pode ter várias |
metadado (meta) | um par chave e valor. Uma chave tem um valor só por caixa |
Daí decorre tudo o mais:
- agrupar exige valor único, então só metadado agrupa;
- filtrar funciona com os dois;
- colorir o desenho por uma dimensão exige valor único, então só metadado colore.
Como escrever
Seção intitulada “Como escrever”- id: api name: API de Reservas shape: api parent: reservas tags: [nucleo, pci] meta: dominio: reservas time: squad-espacos criticidade: altaOs valores de meta podem ser texto, número ou booleano. Uma estrutura mais
complexa é convertida em texto.
Onde eles podem ser escritos
Seção intitulada “Onde eles podem ser escritos”tags | meta | |
|---|---|---|
| elemento | sim | sim |
| relação | sim | sim |
| diagrama | sim | sim |
| fluxo | sim | sim |
| projeto | sim | sim |
| nota | não | sim |
O que a plataforma faz com eles
Seção intitulada “O que a plataforma faz com eles”Toda etiqueta e toda chave de metadado viram filtro automaticamente. Não há
nada a configurar: escrever time: squad-espacos numa caixa faz aparecer um
filtro “time” no leitor, com os valores encontrados e a contagem de cada um.
Um metadado cujo valor é uma URL vira um link na caixa, e não um filtro. Nenhum campo novo, nenhuma configuração:
meta: runbook: https://exemplo.interno/runbooks/api-de-reservasO leitor mostra isso como um link chamado runbook. Ele não vira filtro porque
um filtro cujos valores são todos únicos não filtra nada — só enterra os filtros
reais.
A configuração da modelagem pode dar um rótulo melhor a uma chave, e liberar uma chave para colorir o desenho. Isso é opcional; veja Aparência da modelagem.
Convenções que ajudam
Seção intitulada “Convenções que ajudam”Prefixe etiquetas quando houver mais de um eixo. camada/experiencia,
camada/dominio, conformidade/pci. O motor nunca interpreta o conteúdo de uma
etiqueta, mas quem lê a lista agradece.
Use metadado quando você quiser agrupar ou colorir por aquilo. Se a pergunta é “mostre-me isto separado por domínio”, é metadado.
Use etiqueta quando uma caixa pode ter várias marcas ao mesmo tempo. Uma API
pode ser ao mesmo tempo nucleo e pci.
Mantenha o vocabulário curto. Uma chave de metadado usada em três caixas de oitenta é ruído no filtro.
O estado atual do modelo
Seção intitulada “O estado atual do modelo”elements: - id: painel name: Painel de Reservas shape: browser parent: reservas technology: React description: Onde a pessoa procura uma sala livre e confirma a reserva. tags: [experiencia] meta: dominio: reservas time: squad-espacos
- id: api name: API de Reservas shape: api parent: reservas technology: Node.js description: Onde moram as regras — conflito de horario, limite e confirmacao. tags: [nucleo] meta: dominio: reservas time: squad-espacos criticidade: alta runbook: https://exemplo.interno/runbooks/api-de-reservas
- id: banco name: Base de Reservas shape: database parent: reservas technology: PostgreSQL description: Salas, reservas e participantes. tags: [dados] meta: dominio: reservas time: squad-espacos
- id: fila-de-sincronizacao name: Fila de Sincronizacao shape: queue parent: reservas technology: Amazon SQS description: Uma mensagem por reserva confirmada. tags: [dados] meta: dominio: integracao time: squad-espacos
- id: sincronizador name: Sincronizador de Agenda shape: container parent: reservas technology: Node.js description: Le a fila e cria o evento correspondente na agenda corporativa. tags: [integracao] meta: dominio: integracao time: squad-integracoes
relations: - from: colaborador to: painel kind: sync label: Procura e reserva
- from: painel to: api kind: sync label: Chama meta: protocolo: REST
- from: fila-de-sincronizacao to: sincronizador kind: async label: Entrega a reserva
- from: sincronizador to: agenda-corporativa kind: sync label: Cria o evento meta: protocolo: RESTDescobrir o vocabulário de uma modelagem
Seção intitulada “Descobrir o vocabulário de uma modelagem”cfour find squad-espacoscfour element list --tag nucleoE, no leitor, o painel de filtros lista toda etiqueta e toda chave de metadado encontradas, com a contagem de cada valor.
Próximo passo
Seção intitulada “Próximo passo”Notas — riscos, decisões e recados presos ao modelo.