Páginas filhas
  • 2. Exportação e Importação de Configurações do EAI

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações
titleMatriz de evolução
Versão / Release
Funcionalidade
12.1.9
  • Versão inicial

 

Objetivo

...

Permitir a exportação de configurações de EAI de um ambiente, e a respectiva importação em outro, possibilitando a realização de cópias de segurança (backups) de configurações realizadas, bem como a replicação de configurações em outros ambientes Logix, com o intuito de agilizar o "setup" de uma nova instalação.

...

O arquivo será gerado no formato XML. Para detalhes sobre as tags usadas no arquivo, consulte a seção Formato do Arquivo, logo abaixo.

Importação

Para realizar a importação de configurações, utiliza-se também o EAI10000. Nele, deve-se selecionar a opção Parametrização -> Gerais e clicar no botão Importar.

...

  • Verificação da estrutura do arquivo com relação ao padrão XML;
  • Verificação das tags do arquivo com relação ao XML Schema. O arquivo de XML Schema usado nesta validação pode ser visto na seção XML Schema, ao final do documento;
  • Verificação do conteúdo das tags que fazem referencia a aplicativos. Por exemplo, uma rota atribuída a um aplicativo externo que não existe no arquivo;
  • Verificação do conteúdo das tags que fazem referencia a adapters, ou seja, o adapter informado no arquivo deve existir no RPO do ambiente de destino.

Havendo alguma inconsistência no arquivo, relacionada às validações acima, a importação é cancelada e nenhuma informação é atualizada no ambiente.

Nota

Caso seja necessário atualizar o ambiente com os dados do arquivo de configuração, mesmo que parcialmente, será necessário editar o mesmo, removendo o conteúdo que gerou a inconsistência. Entretanto, esta é uma operação que requer profundo conhecimento da estrutura do arquivo de configuração e não é recomendada para usuários sem tal conhecimento.

Após estas validações, segue a segunda etapa, onde será verificado a existência de configurações de EAI no ambiente de destino. Caso o ambiente não possua configurações, os dados importados são gravados sem qualquer pergunta ao usuário.

...

Nesta seção descrevemos informações de ordem técnica, como o formato do arquivo XML e o XSD utilizado para validação do arquivo de configuração importado.

Formato do Arquivo
Âncora
fileformat
fileformat

A tabela abaixo descreve o significado de cada uma das tags usadas no arquivo de configuração de EAI.

Tag

Descrição

Obrigatória

EaiConfiguration

Tag que abrange as configurações de EAI.

Atributos:

• Instance: nome do aplicativo hospedeiro.

Sim

Applications

Agrupa os vários aplicativos da configuração.

Sim

Application

Descreve um aplicativo, que pode ser interno (hospedeiro) ou externo. O aplicativo hospedeiro será aquele cujo nome conste no atributo instance da tag EaiConfiguration.

Atributos:

• name: nome do aplicativo (obrigatório).
• productName: nome do produto do aplicativo. Pode ser: LOGIX, PROTHEUS, DATASUL, RM (obrigatório).
• productVersion: versão do produto do aplicativo (obrigatório).

Sim

AppProgram

Nome do programa ou classe que executa as funções de processamento das transações.

Sim

ChannelProgram

Nome do programa ou classe que faz o envio das mensagens de forma síncrona.

Sim

QueueProgram

Nome do programa ou classe que envia as mensagens para a fila, em caso de envio assíncrono.

Sim

Properties

Agrupa as propriedades de um aplicativo.

Sim (aplicativo externo)

Property

Descreve uma propriedade do aplicativo.

Atributos:

• Category: categoria da propriedade. Pode ser: Channel, Application, Input-Queue.
• Name: nome da propriedade.

Sim (aplicativo externo)

 

TransactionsAgrupa as transações relacionadas ao aplicativo.Sim

Transaction

Descreve uma transação relacionada a um aplicativo.

Sim

Name

Nome da transação.

Sim

Version

Versão da transação.

Sim

SupportedMode

Modo de operação suportado pela transação. Pode ser: not_enabled, send_enabled, receive_enabled e both_enabled.

Sim

EnabledMode

Modo de operação habilitado para a transação. Pode ser: not_enabled, send_enabled, receive_enabled e both_enabled.

O valor desta tag deve estar de acordo com a tag supportedMode conforme segue:

SupportedModeEnabledMode
both_enabled

both_enabled

send_enabled

receive_enabled

not_enabled

send_enabledsend_enabled
 not_enabled
receive_enabled

receive_enabled

not_enabled

not_enablednot_enabled
Sim

Adapter

Nome do programa ou classe que processa a mensagem recebida para a transação.

Sim (aplicativo hospedeiro)

Anonymous

Indica se a transação pode ser recebida de um aplicativo não conhecido.

Sim (aplicativo hospedeiro)

IncludeOriginalMsg

Indica se a mensagem original será incluída no corpo da mensagem de resposta para aquela transação.

Sim (aplicativo hospedeiro)

Contexts

Agrupa os contextos relacionadas com a transação.

Sim (aplicativo hospedeiro)

   

Context (em Contexts)

Descreve o contexto associado à transação.

Sim, se houver Contexts

   

Routes

Agrupa as rotas relacionadas com a transação.

Sim (aplicativo hospedeiro)

Route

Descreve a rota da transação.

Sim, se houver Routes

Destination

Aplicativo externo para o qual a mensagem da transação será enviada.

Sim, se houver Route

Context (em Route)

Indica o contexto que deve estar na mensagem para que esta seja enviada ao aplicativo externo.

Sim, se houver Route

InternalIDs

Agrupa os registros de de-para.

Não

InternalID

Descreve um registro de de-para.

Atributos:

• Id: Identificador (nome) do de-para.

Sim, se houver InternalIDs

Table

Tabela do ERP contendo o registro referenciado pela parte "interna" do de-para.

Sim, se houver InternalID

KeyFields

Campos chaves da tabela que são usados na composição da parte "interna" do de-para.

Sim, se houver InternalID

ValueMappings

Agrupa os valores de um de-para.

Não

ValueMapping

Valores de de-para para um aplicativo externo.

Atributo:

• App: Identificador do aplicativo externo ao qual se refere o de-para.

Sim, se houver ValueMappings

ExternalValue

Valor no aplicativo externo.

Sim

InternalValue

Valor no aplicativo hospedeiro (interno).

Sim

XML Schema
Âncora
xmlschema
xmlschema

O XML abaixo define a estrutura do arquivo de configuração e é usado no processo de importação para validar o arquivo de configuração utilizado.

Bloco de código
languagexml
titleEAIConfiguration.xsd
collapsetrue
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    
    <xs:complexType name="TransactionType">
        <xs:sequence>
            <xs:element name="Name">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(\S)+"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Version" type="xs:string"></xs:element>
            <xs:element name="SupportedMode">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="not_enabled"></xs:enumeration>
                        <xs:enumeration value="send_enabled"></xs:enumeration>
                        <xs:enumeration value="receive_enabled"></xs:enumeration>
                        <xs:enumeration value="both_enabled"></xs:enumeration>
                        <xs:enumeration value="NOT_ENABLED"></xs:enumeration>
                        <xs:enumeration value="SEND_ENABLED"></xs:enumeration>
                        <xs:enumeration value="RECEIVE_ENABLED"></xs:enumeration>
                        <xs:enumeration value="BOTH_ENABLED"></xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="EnabledMode">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="not_enabled"></xs:enumeration>
                        <xs:enumeration value="send_enabled"></xs:enumeration>
                        <xs:enumeration value="receive_enabled"></xs:enumeration>
                        <xs:enumeration value="both_enabled"></xs:enumeration>
                        <xs:enumeration value="NOT_ENABLED"></xs:enumeration>
                        <xs:enumeration value="SEND_ENABLED"></xs:enumeration>
                        <xs:enumeration value="RECEIVE_ENABLED"></xs:enumeration>
                        <xs:enumeration value="BOTH_ENABLED"></xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Adapter" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Esta tag é opcional para aplicativos externos</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(\S)+"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Anonymous" type="xs:boolean" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Esta tag é opcional para aplicativos externos</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="IncludeOriginalMsg" type="xs:boolean" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Esta tag é opcional para aplicativos externos</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Contexts" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Esta tag é opcional para aplicativos externos</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Context" type="xs:string" maxOccurs="unbounded"></xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Routes" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Esta tag é opcional para aplicativos externos</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Route" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                     <xs:element name="Destination" type="xs:string"></xs:element>
                                     <xs:element name="Context" type="xs:string"></xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="ApplicationType">
        <xs:sequence>
            <xs:element name="AppProgram">
                <xs:simpleType>                
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(\S)+"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ChannelProgram">
                <xs:simpleType>                
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(\S)+"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="QueueProgram">
                <xs:simpleType>                
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(\S)+"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Properties" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>Esta tag é opcional para aplicativo interno</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Property"  maxOccurs="unbounded">                                                    
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute name="category">
                                            <xs:annotation>
                                                <xs:documentation>Categoria à qual a propriedade se refere.
- Channel: propriedade relativa ao canal de comunicação com o aplicativo ao qual ela pertence.
- Application: propriedade relativa ao aplicativo.
- Input-Queue: propriedade relativa à fila de saída das mensagens.</xs:documentation>
                                            </xs:annotation>
                                            <xs:simpleType>
                                                <xs:restriction
                                                    base="xs:string">
                                                    <xs:enumeration
                                                        value="Channel">
                                                    </xs:enumeration>
                                                    <xs:enumeration
                                                        value="Application">
                                                    </xs:enumeration>
                                                    <xs:enumeration
                                                        value="Input-Queue">
                                                    </xs:enumeration>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="name" type="xs:string"></xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>                                
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Transactions">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Transaction" type="TransactionType" maxOccurs="unbounded"></xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="name" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value="(\S)+"></xs:pattern>
                </xs:restriction>
            </xs:simpleType>        
        </xs:attribute>
        <xs:attribute name="productName" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="logix"></xs:enumeration>
                    <xs:enumeration value="datasul"></xs:enumeration>
                    <xs:enumeration value="protheus"></xs:enumeration>
                    <xs:enumeration value="rm"></xs:enumeration>
                    <xs:enumeration value="LOGIX"></xs:enumeration>
                    <xs:enumeration value="DATASUL"></xs:enumeration>
                    <xs:enumeration value="PROTHEUS"></xs:enumeration>
                    <xs:enumeration value="RM"></xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="productVersion" type="xs:string"></xs:attribute>
    </xs:complexType>
    
    <xs:complexType name="InternalIDType">
        <xs:sequence>
            <xs:element name="Table" type="xs:string"></xs:element>
            <xs:element name="KeyFields" type="xs:string"></xs:element>
            <xs:element name="ValueMappings" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="ValueMapping" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="ExternalValue" type="xs:string"></xs:element>
                                    <xs:element name="InternalValue" type="xs:string"></xs:element>                                    
                                </xs:sequence>
                                <xs:attribute name="app" use="required">
                                    <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                            <xs:pattern value="(\S)+"></xs:pattern>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:attribute>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value="(\S)+"></xs:pattern>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    
    <xs:complexType name="EaiConfigurationType">
        <xs:sequence>
            <xs:element name="Applications">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Application" type="ApplicationType" maxOccurs="unbounded"></xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="InternalIDs" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="InternalID" type="InternalIDType" maxOccurs="unbounded"></xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="instance" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value="(\S)+"></xs:pattern>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:element name="EaiConfiguration" type="EaiConfigurationType"></xs:element>                    
</xs:schema>

 

 

...