Temos uma área de BI dentro da empresa e gostariam de gerar alguns dashboards para acompanhamento e medição dos fluxos.
A ferramenta que utilizam é o Power BI, foi solicitando para minha coordenação a extração dos dados do formulário via Linked Server (SQL Server) para um base intermediária que será consumida pelo Power BI.
Localizei uma tabela que contém algumas informações do processo, sendo ela a PROCES_WORKFLOW, porém serão necessárias mais informações sobre os processos, exemplo:
Lista de campos;
Histórico da atividades (executor, quando assimiu a atividade, quando finalizou a atividade);
Alguém alguma vez já precisou extrair essas informações? Ou alguma outra similar direto da base de dados?
Tentei gerar um diagrama do banco, mas pelo visto a base do Fluig não trabalha com chaves estrageiras entre as tabelas, o que impossibilitou a geração.
Sem saber a forma que as tabelas se relacionam eu não consigo evoluir com a demanda.
Poderiam me ajudar?
FROM DEF_PROCES p – Tabela principal de configuração dos processos
LEFT JOIN VERS_DEF_PROCES vp ON vp.COD_DEF_PROCES = p.COD_DEF_PROCES – Tabela auxiliar de versões do processo
AND vp.LOG_ATIV = 1
LEFT JOIN DOCUMENTO d ON d.NR_DOCUMENTO = vp.NUM_PASTA_FORM – Tabela de formulários/documentos ECM
AND d.VERSAO_ATIVA = 1
LEFT JOIN SERV_DATASET ds ON ds.COD_DATASET = d.NM_DATASET – Tabela de datasets dos formulários/documentos
LEFT JOIN META_LISTA_REL l ON l.COD_LISTA_PAI = d.COD_LISTA – Tabela de referência das tabelas de dados dos formulários
WHERE p.COD_DEF_PROCES = ‘NOME DO SEU PROCESSO’ OR ds.COD_DATASET = ‘NOME SEU DATASET’
ORDER BY vp.NUM_VERS DESC;
Com o código de retorno você faz uma consulta tipo essa aqui para ter retorno dos dados do processo e do formulário.
SELECT * FROM ML00XXXX s
INNER JOIN PROCES_WORKFLOW W ON s.cardid = W.NR_DOCUMENTO_CARD_INDEX AND s.documentid = W.NR_DOCUMENTO_CARD AND W.status != 1
E outra assim, para ter dados das pai e filhos relacionadas ao formulário.
SELECT * FROM ML00XXXX
INNER JOIN ML00YYYY ON ML00XXXX.documentid=ML00YYYY.documentid AND ML00YYYY.version=(SELECT max(version) FROM ML00YYYY TB2 WHERE TB2.documentid = ML00YYYY.documentid )
WHERE ML00XXXX.version=(SELECT max(version) FROM ML00XXXX TB WHERE TB.documentid = ML00XXXX.documentid )
Entenda o ML00XXXX como sendo o X o código de retorno da primeira consulta informada.
A query foi feita em Oracle, talvez precise adaptar.