O jeito recomendado: o Construtor
Na tela Ontologia, clique em Abrir o Construtor. Ele pergunta sobre o seu negócio, olha as tabelas dos seus conectores e propõe a ontologia pronta. Você revisa a proposta, aceita e aplica. O Construtor aparece quando está habilitado na sua instalação. Se o painel disser que ele está indisponível, fale com quem administra a Strattum, ou monte a ontologia à mão, como explicado abaixo.Fazer à mão
A ontologia é um arquivo YAML com três partes:nodes: os tipos de coisa que existem, como cliente, empresa ou chamado. Cada um vem de uma tabela.edges: as ligações entre eles, como “o chamado foi aberto pelo cliente”.timeline: eventos com data, que aparecem na linha do tempo de uma entidade.
Um exemplo completo
Imagine um CRM, com as tabelas de contatos e de atividades, e um sistema de suporte, com as tabelas de solicitantes e de chamados. A mesma pessoa está cadastrada nos dois sistemas. A ontologia abaixo:- junta o contato do CRM e o solicitante do suporte num cliente só, pelo e-mail;
- cria os chamados e liga cada um a quem o abriu;
- coloca as atividades do CRM na linha do tempo do cliente.
Como o cliente das duas fontes vira um só
Os dois itens denodes têm o mesmo label, Customer, e cada um lê uma tabela. Quando uma linha do CRM e uma do suporte têm o mesmo e-mail, a Strattum as reconhece como a mesma pessoa e cria uma entidade só, com as informações das duas:
O e-mail com maiúsculas no suporte não atrapalha, porque a Strattum normaliza os identificadores antes de comparar.
Para juntar fontes de um mesmo tipo:
- Repita o
labele mude osource. Cada fonte tem o próprioid_fielde as própriasproperties. - As fontes precisam ter um identificador em comum em
er_fields. Ele pode ser direto (as duas têmemail) ou em cadeia: o CRM compartilhacpfcom o ERP, e o ERP compartilhaemailcom o suporte. - Se as fontes não têm nenhum identificador em comum, a validação recusa a ontologia, porque os clientes de uma nunca se encontrariam com os da outra.
sourcecomeça comclean/, seguido do nome da tabela tratada do conector. Se a tabela vem de uma fonte federada, o prefixo éfed/.- Toda coluna citada em
id_field,er_fieldsouindexed_fieldsprecisa estar emproperties. - Use
er_fieldssó para colunas que identificam a pessoa ou empresa sozinhas, como e-mail, telefone, CPF ou CNPJ. É por elas que a Strattum reconhece que o cliente do CRM e o do suporte são a mesma pessoa. Nunca coloque ali uma coluna que se repete, como status ou cidade.
join_key quando a tabela já traz o identificador do outro lado, e match_field quando a ligação é por um valor como o e-mail.
Aplicar
- Na tela Ontologia, aba YAML, clique em Editar e cole ou altere o YAML. O Console valida enquanto você edita.
- Clique em Verificar schema para conferir se as tabelas e colunas existem.
- Clique em Salvar rascunho. Nada muda no grafo ainda.
- Clique em Aplicar e confirme em Aplicar agora.
Os campos
O arquivo tem um campo opcional no topo,version, que você pode usar para numerar as suas versões. Os demais campos ficam dentro de nodes, edges e timeline.
Campos de um tipo (nodes)
Cada item de nodes descreve um tipo de coisa e a tabela de onde ele vem.
Identificadores: id_field e er_fields
O id_field diz qual é a linha. O er_fields diz quem é a entidade. Um chamado só existe no sistema de suporte, então basta o id_field. Um cliente aparece no CRM, no suporte e no ERP, então ganha também er_fields, para que a Strattum reconheça que é a mesma pessoa.
Coloque em er_fields só colunas que identificam a entidade sozinhas: e-mail, telefone, CPF, CNPJ, placa, matrícula. Uma coluna que se repete entre entidades diferentes, como status, cidade ou cor, juntaria todas elas numa só. Para filtrar por essas colunas, use indexed_fields.
Toda coluna citada em id_field, er_fields e indexed_fields precisa estar também em properties.
Normalizadores
Antes de comparar identificadores, a Strattum limpa os valores, para que(11) 99999-9999 e 11999999999 sejam o mesmo telefone. Quando a coluna se chama email, phone, telefone, cpf ou cnpj, a limpeza certa é escolhida pelo nome. Para outro nome, declare em normalizers, usando o nome que está em er_fields.
Exemplo de um cadastro de funcionários em que o CPF está numa coluna chamada
documento e a matrícula tem letras:
Campos de uma ligação (edges)
Cada item de edges liga dois tipos. Cada linha da tabela indicada vira uma ligação.
Cada lado (
from e to) diz qual tipo procurar e como achar a entidade certa:
Cada lado usa
join_key ou match_field, nunca os dois. Exemplo de uma tabela que liga contatos a empresas pelos ids:
Campos de um evento (timeline)
Cada item de timeline transforma as linhas de uma tabela em eventos com data na linha do tempo de uma entidade, como reuniões, pedidos ou atividades.
Erros comuns
A validação mostra um problema por tipo de cada vez. Depois de corrigir, valide de novo para ver se há outro.