Pontos de Entrada

Pontos de Entrada em regras de Negócio – Webservice

A ferramenta Next BP possui pontos de entrada que interceptam processos de regras de negócio no momento de sua execução.

Para obter a lista completa de pontos de entrada, acesse o diretório [Diretório Next BP]/webservice/pe/ e verifique os arquivos .pe.php.sample. Estes arquivos são uma amostra de uso do ponto de entrada. Para que um ponto de entrada seja reconhecido pelo Next BP, copie o [arquivo].pe.php.sample e renomeie para [arquivo].pe.php.

Atenção: após criar o arquivo de ponto de entrada sua disponibilidade para funcionamento será imediato, portanto, esteja ciente que um script PHP com códigos inadequados poderá causar impactos no comportamento ferramenta.

Regra: Todo arquivo php deve ser UTF-8 (Sem BOM)

Com o objetivo de deixar o código dos pontos de entrada mais organizados, recomendamos que sejam criados scripts PHP específicos com as regras de negócio que deverão ser executadas pelo ponto de entrada. Estes scripts específicos deverão ser armazenados em [Diretório Next BP]/webservice/especificos/.

A estrutura de suas pastas dispõe-se da seguinte forma:

especificosDiretório raiz das customizações, sem ele os demais diretórios/arquivos não são localizados

especificos -> controllerTodos os arquivos responsáveis por conter a lógica da aplicação, bem como direcionamento das rotas

especificos -> daoTodos os arquivos responsáveis por manipular/gerenciar informações do banco de dados

especificos -> modelTodos os arquivos responsáveis por conter as estruturas de campos do BD bem como suas validações

especificos -> viewResponsável por conter os arquivos visuais

especificos ->routesResponsável por gerenciar todas as rotas de arquivos customizados, fazendo com que conversem entre si e com os arquivos padrões do BP

Dica 1: Sempre que for necessário realizar um require ou include, utilize as funções require_once ou include_once, pois se por ventura dois pontos de entrada forem executados em um mesmo processamento e ambos possuírem “require” ou “include”, sem “_once”, apontando para o mesmo script, fará com que o script seja carregado mais que uma vezes, podendo causar erros de execução como por exemplo duplicidade de classes, funções e constantes.

Dica 2: Para maiores detalhes, segue o link para o tutorial de como criar uma rotina MVC customizada:

Rotinas Customizadas – Backend

Exemplo de uso do PE – Ao Salvar Mensagem do Chamado

Ponto de entrada executado ao salvar uma mensagem do chamado.

Ações como abertura, reclassificação e encerramento do chamado também disparam este evento, pois a mensagem é obrigatória em todas as ações.

Arquivo
[Diretório Next BP]/webservice/pe/Chamado_Mensagem_Salvar.pe.php

Exemplo

<?php

require_once('especificos/meu_script.php');

function chamado_mensagem_salvar_antes($mensagem_model, $chamado_model) {
	// ação antes de salvar uma mensagem de chamado

	// visualizar estrutura dos objetos:
	print_r($mensagem_model);
	print_r($chamado_model);

	// adiciono no final da mensagem um texto
	$mensagem_model->mensagem .= ' Código de exemplo';
};

function chamado_mensagem_salvar_depois($mensagem_model, $chamado_model) {
	// ação depois de salvar uma mensagem de chamado
	
	// visualizar estrutura dos objetos:
	print_r($mensagem_model);
	print_r($chamado_model);
};

Pontos de entrada em telas – Frontend

Através de pontos de entrada em JavaScript, podemos criar variáveis e funções genéricas, além de incluir novos itens no menu.

Os pontos de entrada em javascript se encontram na pasta [Diretório Next BP]/webservice/peJS/. Mas porque eles ficam na pasta webservice? O webservice hospeda os pontos de entrada javascript que são específicos. Dessa forma o App instalado em dispositivos móveis podem “baixar” do webservice (remoto) para seu frontend (local) os arquivos de PE javascript.

Para utilizar um PE é necessário carregá-lo antes em em uma rotina padrão do BP, conforme o código de exemplo abaixo:

View.loadPE('Oportunidade_Detalhes_Novo', main);

Um exemplo de uso destes pontos de entrada podem ser visto na documentação de Customizações de formulário (confira neste link)

Outro exemplo é a criação de menus personalizados, através do arquivo menu.pe.js. No exemplo abaixo vamos adicionar no módulo de Chamados um menu e um submenu com evento de click para abrir o site da Next SI:

function manutencao_menu() {

    // menu "Exemplo Menu"
    App.menu_add(
        "modulo_chamados",          // módulo id
        null,                       // menu pai id (opcional)
        {
            click: null,            // click do menu
            id: "mc_exemplo_menu",  // id do menu
            nome: "Exemplo Menu",   // nome do menu
            permissao: null         // chave de permissao para não exibir o menu
        }
    );

    // submenu "Site da Next"
    App.menu_add(
        "modulo_chamados",
        "mc_exemplo_menu",
        {
            click: function() {
                // evento que será executado ao clicar no menu
                View.navegador('http://www.nextsi.com.br', 'Site Next', View.ABA.SIM);
            },
            nome: "Site da Next",
            permissao: null
        }
    );
    
}

Obtemos este resultado: