O acesso aos dados 

Princípio

O servidor XTEND não acede diretamente à base de dados X3 via um conector de base de dados (tipo JDBC) não acede directamente à base de dados X3 via um conector de base de dados (tipo JDBC) mas através da chamada de web services especializados de tipo "Acesso" (para "acesso aos dados").

Estes web services de tipo "Acesso" funcionam como a chamada de pedidos SQL, quer dizer que dispõem de parãmetros em entrada permitindo de passar os critérios de seleção e de parâmetros em saída para reenviar o resultado do pedido.

Estes web services resultam então da publicação de sub-programas L4G que apresenam todos os mesmos interfaces (ou parãmetros) Os tratametos 4G que lhe estão associados efectuam as operações seguintes :

  • construção do pedido SQL
  • execução do pedido SQL
  • valorização dos parâmetros em retorno

Os web services de tipo "Acesso" permitem aceder em leitura a todas as tabelas e vistas X3.

É possível personalizar os tratamentos L4G para acrescentar os que reenviam os dados calculados como stock ou o preço de um artigo.

Interface "Acesso gerado"

A colocação em obra dos web services "Acesso gerado tabela" e "Acesso gerado vista" está inteiramente automatizado via a função XTEND Interface.

a escrita do tratamento L4G e a publicação do sub-programa são gerados após que o programador tenha escolhido a tabela ou a vista X3 na qual pode aceder e seleciona os campos que se desejam ler.

Interface sub-programa "Acesso"

Tratamento L4G

Um sub-programa "Acesso" deve sempre verificar o interface seguinte :

  • 10 parâmetros em entrada cujos nomes são fixados (AX*) e que contêm os citérios do pedido SQL
  • tantos parâmetros em saidas que contêm os registos resultado de execução do pedido.

Subprog ACCTAB( AXPARCOD,AXPARVAL,AXWHRLFTBRK,AXWHRCOD,AXWHROPE,
                AXWHRCODVAL,AXWHRRGTBRK,AXWHRANDOR,AXORDCOD,AXORDTYP,
                FIELD1,FIELD2,FIELD2...
)
#Parâmetros do pedido SQL
    Value Char    AXPARCOD()(1..20)
    Variável Char AXPARVAL()(1..20)
    Value Integer AXWHRLFTBRK(1..14)
    Value Char    AXWHRCOD()(1..14)
    Value Integer AXWHROPE(1..14)
    Value Char    AXWHRCODVAL()(1..14)
    Value Integer AXWHRRGTBRK(1..14)
    Value Integer AXWHRANDOR(1..14)
    Value Char    AXORDCOD()(1..10)
    Value Integer AXORDTYP(1..10)
# Dados reenviados
    Variável Char FIELD1()(1..)
    Variável Char    FIELD2()(1..)
    Variável ClbFile FIELD3()(1..)
...
$LOADLINE
#Esta etiqueta está chamada para cada registos e afim de valiorizar os parãmetros em retorno
#Ela está utilizada em personalização para acrescentar os campos específicos (calculados)
      FIELD1(WROWPOS) = [F]FIELD1
      FIELD2(WROWPOS) = [F]FIELD2
      FIELD3(WROWPOS) = [F]FIELD3
Return

Ficha sub-programa

A ficha sob-programa descreve os parâmetros do sub-programa, a sua dimensão e seu atributo dos grupos de publicação.

Os grupos de publicação para os parãmetros e o resultado são fixas

Parâmetro

Grupo

Descrição

AXPARCOD

AX_PAR

Código variável contexto X3

AXPARVAL

AX_PAR

Valor variável contexto X3

AXWHRLFTBRK

AX_WHR

Nível de parênteses abertos

AXWHRCOD

AX_WHR

Nome do critério de seleção

AXWHROPE

AX_WHR

Operador de comparação.

AXWHRCODVAL

AX_WHR

Valor do critério de seleção

AXWHRRGTBRK

AX_WHR

Nível de parênteses fechados

AXWHRANDOR

AX_WHR

Operador lógico de encadeamento

AXORDCOD

AX_ORD

Nome do critério de ordenação

AXORDTYP

AX_ORD

Valor do critério de seleção

FIELD1

RES 

Campos dos registos devolvidos pelo web service

FIELD2

RES 

Campos dos registos devolvidos pelo web service

FIELD3

RES 

Campos dos registos devolvidos pelo web service

Interface "Acesso lista esquerda"

Esta interface permite ver o web service lista esquerda de um objeto X3 como um fornecedor de dados XTEND

No caso os critérios de seleção a registar são aqueles utilizados para as listas esquerdas.

Acrescentar os campos calculados ("Acesso sub-programa")

A personificação das interfaces de tipo "Acesso" é necessário desde logo que se deseja reenviar os dados calculados como por exemplo o preço e a disponibilidade de um artigo.

Criação 

O método para realizar este tipo de web service é a seguinte :

1. Criar uma interface de tipo {"Acesso gerado tabela/vista"}

Interface que aponta sobre a tabela/vista da sua escolha.

2. Gerar o acesso

As etapas seguintes são feitas aautomaticamente :

1. Geração tratamento e sub-programa

2. Geração do web service + publicação

3. Duplicar a interface e uma interface de tipo "Acesso sub-programa"

1. Duplicar o tratamento e o sub-programa gerado e os renomear à sua conveniência.

2. Acrescentar os parâmetros a calcular

3. Valorizar os parâmetros na etiqueta $LOADLINE

4. Gerar o acesso desta nova interface

!!Respeitar os nomes dos grupos de publicação