Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Arquivos Compartilhados - Shared Files

Recurso para disponibilização de arquivos/documentos de forma pública.

Ativação do recurso

Para habilitar o recurso deve-se ter o seguinte entry point ativo:

INSERT INTO nfs_homol_transpotech_smartos.nfs_entry_point (FILE_OR_DOMAIN, `ACTION`, XMOVA_INSTALLCODE, XMOVA_INSTALLCODE_VERSION, EMPRESA, FILIAL, `LOCAL`, TABELA, ENTRY_NUM, CODE, VERSION, BUILD, ATIVO, CODETYPE, FIELD, DESCRIPTION, INS_DH, UPD_DH, NFS_USER, DB_USER) VALUES('CONFIG', 'SHARED_FILES', NULL, NULL, 9999, 9999, 9999, 'FUNCIONARIO', NULL, '{
	"doc_table":"DOC_FUNCIONARIO",
	"doc_type_table":"DOC_TIPO",
	"doc_relationship_field": "FUNCIONARIO_SEQ_DB",
	"doc_field": "ARQUIVO",
	"title": "Documentos",
	"subtitle": "Download de arquivos",
	"logo": "LOGO_EMPRESA_HEADER",
	"columns": {
 		"name": "enable",
		"type": "enable",
		"validity": "enable"
	}
}', 1, 6, 1, 'JSON', NULL, NULL, '2019-11-22 11:08:25', '2025-03-11 14:30:50', NULL, 'nfs.fabio@189.127.15.246');

O campo CODE é onde setamos a configuração, é um JSON.

{
	"doc_table":"DOC_FUNCIONARIO",
	"doc_type_table":"DOC_TIPO",
	"doc_relationship_field": "FUNCIONARIO_SEQ_DB",
	"doc_field": "ARQUIVO",
	"title": "Documentos",
	"subtitle": "Download de arquivos",
	"logo": "LOGO_EMPRESA_HEADER",
	"columns": {
 		"name": "enable",
		"type": "enable",
		"validity": "enable"
	}
}

doc_table ➡️ Tabela dos documentos.

doc_type_table ➡️ Tabela que classifica o tipo do documento.

doc_relationship_field ➡️ Campo que representa o relacionamento com a entidade.

doc_field ➡️ Campo que guarda a url do documento.

title ➡️ Título que é apresentado no topo da tela de acesso aos documentos.

subtitle ➡️ Subtítulo, aparece abaixo do título.

logo ➡️ Deixar "LOGO_EMPRESA_HEADER" para usar o logo configurado para o cabeçalho.

columns ➡️ Ativa/desativa exibição de colunas.

Shared Files

--

A tabela FUNCIONARIO que é a entidade que agrupa os documentos recebe um novo campo, para armazenar a chave única que será a forma de identificação do funcionário, no caso.

O campo será o SHARED_FILES_KEY.

Exemplo:

insert
    into
    nfs_homol_transpotech_smartos.nfs_core_ds_tabela_campo (TABELA_NOME,
    NOME,
    SEQ,
    SYS,
    SEND_XMOVA,
    GRID,
    GRID_MOBILE,
    DESCRICAO,
    DESCRICAO_RESUMIDA,
    TIPO,
    OBRIGATORIO,
    TAMANHO,
    TAMANHO_DECIMAL,
    MASCARA,
    INSERT_UPDATE,
    DISABLED,
    HINT,
    LINK,
    VALIDACAO,
    OPCOES,
    VALOR_DEFAULT,
    VALIDACAO_VIEW,
    FILTRO_VIEW,
    TOOLTIP_MESSAGE,
    PROPERTIES,
    CONFIG)
values('FUNCIONARIO',
'SHARED_FILES_KEY',
null,
0,
1,
3,
1,
'Chave para acesso a documentos',
'Key',
'TXT',
0,
50,
null,
null,
'IU',
'1',
'',
null,
'UNQ',
null,
null,
null,
null,
null,
null,
null);

Na criação de um novo funcionário essa chave será gerada automaticamente, também será exibido um botão para gerar uma nova chave para o funcionário, e um botão que leva para a tela de documentos compartilhados no formulário do usuário.

Gerador de chave no formulário de funcionários

Na implantação do recurso em uma base de dados com registros já existentes pode-se usar o seguinte modelo de script para fazer a geração manualmente. Ele vai gerar a chave para todos registros que não tem a chave (null), ou os que tem uma chave inválida (vazio).

UPDATE app_funcionario
SET SHARED_FILES_KEY = LOWER(HEX(RANDOM_BYTES(16)))
WHERE SHARED_FILES_KEY IS NULL OR SHARED_FILES_KEY = '';

--

O recurso utiliza o armazenamento no S3, então para o correto funcionamento o campo que guarda a URL do documento precisa ser do tipo FILE.

Utils

Para a geração dessa key também pode ser usado o método Utils::generateSharedFileKey(). Ele vai gerar uma chave única no mesmo padrão das que são geradas automaticamente.

URL Example

https://<domain>/shared/<entity_table>/<SHARED_FILES_KEY> https://transpotech.h.simova.cloud/shared/FUNCIONARIO/6e829564e20c5cfa9c67f36912a9ec89

A partir dessa chave o usuário é localizado e tem seus documentos listados para download.

Cliente

O recurso foi desenvolvido e implementado usando o cliente TranspoTech. transpotech.h.simova.cloud.