Como configurar o MILE para importação de Projetos
Produto: | Microsiga Protheus® |
Versões: | 12.1.33 e Superiores |
Ocorrência: | Como importar projetos utilizando o MILE. |
Passo a passo: | As ExecAuto de Projetos (PMSA200, PMSA201 e PMSA203) não estão preparadas para execução via MILE, portanto para sua utilização via MILE é necessário a criação de uma UserFunction, a qual irá receber e tratar os dados do MILE e chamar as devidas ExecAutos do PMS. Para realizar a importação dos dados de Projetos ou seja, as tabelas AF8, AFC ou AF9 utilizando o MILE, deve ser realizado o processo descrito abaixo. Exemplo: Importação da Estrutura do Projeto (AFC) através do Canal A Primeiramente é preciso criar uma UserFunction que irá receber os dados do MILE e fazer a chamada da ExecAuto, este caso da rotina PMSA201. UserFunctionXXX(Interface, aInfos, aLayOut, aSaidas) Veja que a UserFunction recebe quatro parâmetros onde:
Estes dados terão que ser tratados dentro da UserFunction antes da chamada da ExecAuto para que sejam devidamente enviados ao processo automático. Nesta caso seguindo as condições dos parâmetros da rotina PMSA201. PMSA201(nCallOpcx, aGetCpos, cNivTrf, , xAutoAFC) Onde:
Neste caso, para enviar o vetor do Canal A Master (AFC) como segundo parâmetro (aGetCpos), vamos precisar manipular o array de canais criado pelo MILE. Exemplo da função Neste exemplo o tratamento foi feito para importar a Estrutura do Projeto tabela AFC. O MILE pode ser adaptado e customizado conforme as necessidades dos clientes. Para maiores detalhes, veja a documentação: MILE - Model Integrator Layout Engine #INCLUDE "TOTVS.CH" USER FUNCTION PMS201ML(Interface, aInfos, aLayOut, aSaidas) /* Interface - Lógico - .T. se está sendo executado com interface / .F. se está sendo executado sem interface aInfos - Array - Vetor com informações adicionais como linha inicial e final lida, nome do arquivo etc. aLayOut - Array - Informações das definições do layout. aSaidas - Array - Estrutura do vetor sobre dados de saída */ Local aGetCPos := {} Local nX := 0 //Posiciona no projeto DbSelectArea("AF8") dbSetOrder(1) DbSeek(xFilial("AF8")+'0000000005' ) //Separa os dados dos canais para serem enviados para a execauto For nX := 1 To Len(aSaidas[1][4][1]) aAdd(aGetCPos ,{ aSaidas[1][4][1][nX][1], aSaidas[1][4][1][nX][2], .F. }) Next nX //Carregamos os dados para a execauto MSExecAuto({|a,b,c,d,e| PMSA201(a,b,c,d,e)},3,aGetCpos,"002",,aGetCpos) Return .T. Importante A UserFunction deverá ser compilada no repositório antes da configuração do layout. Configuração do Layout 1) Informações gerais: Tipo Adapter = 3-Função Adapter = (Função compilada acima U_PMSA201ML). 2) Formatação do arquivo. 3) Adapters de Rotina Automática. 4) Definição dos Canais. Na Sessão Campos, devem ser informados as campos obrigatórios para execução da ExecAuto e outros campos que estarão presentes no arquivo .txt Exemplo do Arquivo .txt de Importação Neste exemplo iremos importar a Estrutura do Projeto, conforme a customização do Rdmake de exemplo. Download do exemplo do layout (XML) e do arquivo de importação Informações De acordo com processo do MILE pode ser enviado mais de um agrupamento de dados em uma única chamada do MILE, através de diferentes Canais, portanto é possível realizar a chamado das três ExecAuto em um único MILE. Para isso é necessário que o MILE possua mais de um Canal configurado para cada informação enviada (Projetos, EDTs e Tarefas) exemplo Canal A, B e C dentro de um mesmo MILE, os dados de cada Canal estarão desmembrados dentro do array aSaidas o qual devera desmembrado direcionando os dados para sua devida ExecAuto. |
Observações: |
Documentação sobre as ExecAutos do PMS: PMSA200 - Cadastro de Projetos PMSA200 Cadastro de Projetos - Rotina Automática PMSA201 - Estrutura do Projeto PMSA201 Estruturas do Projeto - Rotina automática PMSA203 - Tarefas do Projeto PMSA203 Tarefas do Projeto - Rotina automática |