Histórico da Página
...
Informações | ||||
---|---|---|---|---|
| ||||
|
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 | ||||
---|---|---|---|---|
|
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)
| ||||||||||||
Transactions | Agrupa 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:
| 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 | ||||
---|---|---|---|---|
|
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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> |
...