Árvore de páginas

Importação de Regras de Negócio via MILE

Produto:Microsiga Protheus®
Ambiente:Todos
Ocorrência:

Como configurar o layout do MILE para importar Regras de Negócio?

Passo a Passo:

Para realizar a importação de Regras de Negócio utilizando o MILE, será necessário algumas configurações adicionais, pois a estrutura do MILE não permite realizar a importação utilizando simplesmente a configuração de canais.

A rotina de Regras de Negócio (FATA100) recebe os seguintes parâmetros via rotina automática:

FATA100( uAutoCab, uItensACT, uItensACX, uItensACN, nOpcAuto )


Onde:

uAutoCab - Array - Dados do cabeçalho da Regra de Negócio (ACS)

uItensACT - Array - Dados dos itens da Negociação (ACT)

uItensACX - Array - Dados dos itens da Comercialização (ACX)

uItensACN - Array - Dados dos itens de Descontos (ACN)

nOpcAuto - Numérico - Opção da rotina a ser executada


Neste caso, precisamos criar os canais MASTER (ACS) e o DETAIL com os campos de forma ordenada das tabelas ACT, ACX e ACN  para podermos enviá-los para a rotina automática do FATA100.

No importador MILE quando utilizamos o tipo de adapter "1- MSExecAuto", ele envia os dados para a rotina automática da seguinte maneira:

FUNCAOXXX(  uAutoCab, uAutoItens, nOpcAuto )


Para que o layout criado funcione corretamente na rotina automática do
FATA100, precisaremos manipular o array dos canais através de uma UserFunction que deverá ser informada no campo Pré Execução do layout.

O MILE pode ser adaptado e customizado conforme as necessidades dos clientes. Para maiores detalhes, veja a documentação:

MILE - Model Integrator Layout Engine


Exemplo da função de Pré Execução:

#INCLUDE "PROTHEUS.CH"
 
User Function FT100TST(lInterface,aInfos,aLayOut,aSaidas)
 
/*
lInterface - 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 aNewVet   := Array(4)   //Cria um array para separar os dados dos canais.
Local nX        := 0
Local nY        := 0
Local aACT      := {}
Local aACX      := {}
Local aACN      := {}

//Separa os dados dos canais (DETAIL) para serem enviados para a execauto do FATA100
For nX := 1 To Len(aSaidas[2][4])
    For nY := 1 to len(aSaidas[2][4][nX])
        If "ACT_" $ aSaidas[2][4][nX][nY][1]
            If "_ITEM" $ aSaidas[2][4][nX][nY][1]
                Aadd(aACT,{})
            EndIf
            Aadd(aACT[Len(aACT)],{ Alltrim(aSaidas[2][4][nX][nY][1]), aSaidas[2][4][nX][nY][2], aSaidas[2][4][nX][nY][3] })
        ElseIf "ACX_" $ aSaidas[2][4][nX][nY][1]
            If "_ITEM" $ aSaidas[2][4][nX][nY][1]
                Aadd(aACX,{})
            EndIf
            Aadd(aACX[Len(aACX)],{ Alltrim(aSaidas[2][4][nX][nY][1]), aSaidas[2][4][nX][nY][2], aSaidas[2][4][nX][nY][3] })
        ElseIf "ACN_" $ aSaidas[2][4][nX][nY][1]
            If "_ITEM" $ aSaidas[2][4][nX][nY][1]
                Aadd(aACN,{})
            EndIf
            Aadd(aACN[Len(aACN)],{ Alltrim(aSaidas[2][4][nX][nY][1]), aSaidas[2][4][nX][nY][2], aSaidas[2][4][nX][nY][3] })
        EndIf
    Next nY
Next nX

//Carregamos os arrays dos dados nas posições corretas da execauto
aNewVet[1] := aSaidas[1][4][1]  //uAutoCab (MASTER)
aNewVet[2] := aACT              //uItensACT
aNewVet[3] := aACX              //uItensACX
aNewVet[4] := aACN              //uItensACN
 
//O parâmetro nOpcAuto será enviado de forma automática pelo importador MILE
 
Return aNewVet

A função acima deverá ser compilada no repositório antes da configuração do layout.


Configuração do Layout:

1) Informações gerais;

2) Formatação do arquivo;

3) Tratamentos e Validações;
Atente-se para o campo Pré Execução, onde deverá ser informado o nome da função U_FT100TST que irá mudar a posição dos parâmetros, antes da chamada da rotina automática do FATA100.

4) Adapters de Rotina Automática;
Neste caso iremos utilizar o Modelo 3. Como a rotina não está em MVC, não será necessário a configuração dos Adapters em MVC.

5) Definição dos Canais;
Criar o canal A (MASTER) para receber os dados principais da Regra de Negócio (ACS).


Criar o canal B (DETAIL) para receber os itens da Negociação (ACT), da Comercialização (ACX) e dos itens de Descontos (ACN). 



Exemplo do Arquivo de Importação:

Neste exemplo iremos importar uma Regra de Negociação, conforme a customização do rdmake de exemplo.
Lembrando que conforme a configuração do layout, a primeira posição de cada registro se refere ao canal.

|A|TST MILE IMPORT|
|B|001|013|
|B|002|014|
|B|||001|FAT000000000000000000000000187|
|B|||002|FAT000000000000000000000000188|
|B|||||001|FAT000000000000000000000000187|5|
|B|||||002|FAT000000000000000000000000188|5|

Download do exemplo do layout (XML) e do arquivo de importação:

FATA100_Mile.zip


Pode lhe interessar:Para maiores detalhes sobre o MILE, veja a documentação: MILE - Model Integrator Layout Engine