DET - Documento de Especificação Técnica de integração entre TCE-Docs e plugin Word
1. Informações Gerais sobre o Levantamento
RESPONSÁVEL PELA ELABORAÇÃO
| Unidade | Nome | Fone | |
| GER-TI | Leonardo Ferreira Reis | lfreis@tce.go.gov.br |
1. Descrição das Necessidades
Com a funcionalidade de criação de documentos e modelos de documento no sistema TCE-Docs, no momento da edição de arquivos docx/dotx dentro do Microsoft Word, existe a necessidade de garantir a identidade do usuário que deseja manipular um documento ou modelo de documento controlado pelo TCE-Docs, esteja devidamente identificado no ambiente Microsoft Word.
2. Premissas e Restrições
- O Usuário deve estar autenticado no sistema TCE-Docs;
- O Registro de modelo ou documento deve ter sido inserido no banco;
3. Estórias de Usuário
Com base na necessidade acima apresentada, foi identificada a seguintes Estória de Usuário, a qual é identificada pelo prefixo EU (Estória de Usuário) seguida de um número, como apresentado abaixo:
| Código | Descrição |
|---|---|
| EU.27 | Como usuário do TCE-GO, QUERO documentar o meio de comunicação entre o portal do TCE-Docs e o plugin do TCE-Docs (Middleware) , PARA que no futuro algumas possíveis melhorias, ou evoluções sirva-se de referência para o desenvolvimento do mesmo. |
2. Proposta de Solução
A proposta de solução descrita neste escopo é uma sugestão e poderá sofrer mudanças durante o processo de desenvolvimento, caso se identifique a necessidade.
Em alinhamento com a necessidade acima apresentada, foi definido como solução a identificação do usuário através de uma tela de login, onde o usuário responsável pelo documento deverá informar seu usuário e senha, sendo estes os mesmos utilizados no sistema TCE-Docs.
O MSWord enviará as informações via AJAX para um WebApi que fará a validação e identificação do usuário. Detalhes dos serviços WebApi, como tipos de resposta e dados de retorno, estão especificados em .
Segue abaixo, protótipo da tela de login a ser exibida no momento da abertura do arquivo:
2.1. Inclusão de Informações no arquivo DOC
No momento em que o sistema disponibiliza o arquivo para download, deve ser incluso informações necessárias à identificação do arquivo pelo sistema e que serão extraídas e usadas pelo Plugin MSWord:
- Id: Sequencial que identifica o registro em banco de dados referente ao arquivo em questão
- TipoDocumento: Identifica se o arquivo é um Modelo de Documento ou Documento
Após prova de conceito, foi definido que a inclusão de dados dentro do arquivo será feita manipulando o arquivo MSWord como se vê abaixo:
using Microsoft.Office.Core; using Microsoft.Office.Interop.Word; string id = "99"; string tipoArquivo = "Modelo"; Application wordApp = new Application(); Document documento = wordApp.Documents.Open("caminhoCompletoDoArquivoDOC"); string Hash = Seguranca.ObtenhaHashMd5("Informação que deve estar no TOKEN"); var xml = string.Format( "<tcedocs xmlns=\"internals\">" + "<arquivo>" + "<id>{0}</id>" + "<tipo>{1}</tipo>" + "</arquivo>" + "</tcedocs>" , id, tipoArquivo); var part = documentoWord.CustomXMLParts.Add(xml); ...
2.2. Extração de dados do arquivo DOC
No momento da abertura do arquivo MSWord, o Plugin deverá extrair os dados previamente inclusos, que serão utilizados no momento do login. Após prova de conceito, foi definido que a extração de dados do arquivo será feita manipulando o arquivo MSWord como se vê abaixo:
Office.context.document.customXmlParts.getByNamespaceAsync("internals", function (eventArgs) { if (eventArgs.status !== Office.AsyncResultStatus.Succeeded) { showNotification('Error:', result.error.message); return; } if (eventArgs.value.length > 0) { var parts = eventArgs.value[0]; parts.getNodesAsync('*', function (nodeResults) { var node = nodeResults.value[0]; node.getNodesAsync('*', function (nodeResults) { var node = nodeResults.value[0];//id node.getTextAsync(function (asyncResult) { var id = asyncResult.value; }); node = nodeResults.value[1];//tipoDocumento node.getTextAsync(function (asyncResult) { var tipoDocumento = asyncResult.value; }); }); }); } else { showNotification('Error:', "Não encontrou o token"); } });
2.3. Obtenção de dados do Modelo de documento/Documento
A definir
Detalhes dos serviços WebApi, como tipos de resposta e dados de retorno, estão especificados em .

