Histórico da Página
Informações | ||
---|---|---|
| ||
|
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.
Funcionamento
...
Exportação
Para realizar a exportação de configurações do EAI, deve-se executar o programa EAI10000 (Configurador do EAI), selecionar a opção Parametrização -> Gerais e clicar no botão Exportar.
Será aberta uma janela para informar o local e nome do arquivo onde serão gravadas as configurações. O valor informado está limitado a 100 caracteres.
O arquivo será gerado no formato XML (ver exemplo abaixo). Para detalhes sobre as tags usadas no arquivo, consulte a seção Formato do Arquivo.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?>
<EaiConfiguration instance="EAI-LOGIX">
<Applications>
<Application name="EAI-LOGIX" productName="LOGIX" productVersion="12.1.6">
<AppProgram>EAIHostApplication</AppProgram>
<ChannelProgram>EAIChannelHost</ChannelProgram>
<QueueProgram>EAIMessageQueueLogix</QueueProgram>
<Transactions>
<Transaction>
<Name>accountantaccount</Name>
<Version>2.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10038</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>accountingclosingdate</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10029</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>accountingentry</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10023</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>accountpayabledocument</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10022</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>accountpayabledocumentdischarge</Name>
<Version>1.003</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10033</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>accountreceivabledocument</Name>
<Version>1.001</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10020</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>accountreceivabledocumentdischarge</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10032</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>areaandlineofbusiness</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10040</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>bank</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10031</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>banktransactions</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10024</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>cancelrequest</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERCANCELREQUEST1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>carrier</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10010</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>city</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10002</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>company</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10034</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>costcenter</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10039</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>coveragedocument</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10005</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>currencyquotation</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10004</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>financeiro</Context>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>customervendor</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10000</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>departament</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10041</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>edidocumentfortransportation</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10009</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>employee</Name>
<Version>2.001</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10043</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>employeeposition</Name>
<Version>1.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPEREMPLOYEEPOSITION1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>datasulcrm</Context>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>employeesituations</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>EAIHELPEREMPLOYEESITUATIONS1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>inputdocument</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10006</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>inventory</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10007</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>invoice</Name>
<Version>1.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10028</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>invoice</Name>
<Version>3.004</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERINVOICE3</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>item</Name>
<Version>1.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10001</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>item</Name>
<Version>3.001</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>EAIHELPERITEM3</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>itemstructure</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERITEMSTRUCTURE1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>listofaccountpayabledocument</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERLISTOFACCOUNTPAYABLEDOCUMENT1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>monthlypayroll</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>EAIHELPERMONTHLYPAYROLL1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>order</Name>
<Version>3.003</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERORDER3</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>packaging</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10025</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>packagingrelationship</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10026</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>paymentcondition</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERPAYMENTCONDITION1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>datasulcrm</Context>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>pricelistheaderitem</Name>
<Version>1.002</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERPRICELISTHEADERITEM1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>datasulcrm</Context>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>productionorder</Name>
<Version>2.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>EAIHELPERPRODUCTIONORDER2</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>productsupplierrelationship</Name>
<Version>2.003</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>EAIHELPERPRODUCTSUPPLIERRELATIONSHIP2</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>quotation</Name>
<Version>1.002</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERQUOTATION1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>request</Name>
<Version>1.007</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERREQUEST1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>reversalofaccountpayabledocumentdischarge</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10037</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>reversalofaccountreceivabledocumentdischarge</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10036</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>role</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10042</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>salesorder</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10008</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>schedulework</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>EAIHELPERSCHEDULEWORK1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>seller</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERSELLER1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>datasulcrm</Context>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>setemployeebranchtranfer</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>EAIHELPERSETEMPLOYEEBRANCHTRANFER1</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>shipmentofexportinvoice</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10030</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>sintegraregister-85-86</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
<Adapter>ADP10035</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>unitofmeasure</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP10003</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
<Routes>
<Route>
<Destination>dts11cordas8480</Destination>
<Context>padrao</Context>
</Route>
</Routes>
</Transaction>
<Transaction>
<Name>unitofmeasureconversion</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
<Adapter>ADP10027</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>user</Name>
<Version>3.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>EAIHELPERUSER3</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
<Contexts>
<Context>datasulcrm</Context>
<Context>padrao</Context>
</Contexts>
</Transaction>
<Transaction>
<Name>whois</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
<Adapter>ADP0001</Adapter>
<Anonymous>false</Anonymous>
<IncludeOriginalMsg>false</IncludeOriginalMsg>
</Transaction>
</Transactions>
</Application>
<Application name="dts11cordas8480" productName="DATASUL" productVersion="11.5.X">
<AppProgram>EAIDefaultApplication</AppProgram>
<ChannelProgram>EAIChannelDatasul</ChannelProgram>
<QueueProgram>EAIMessageQueue</QueueProgram>
<Properties>
<Property category="Channel" name="password">eai@123</Property>
<Property category="Channel" name="textformat"></Property>
<Property category="Channel" name="url">http://cordas.jv01.local:8480/eai2-ws/EAIService?wsdl</Property>
<Property category="Channel" name="user">eai</Property>
</Properties>
<Transactions>
<Transaction>
<Name>accountreceivabledocument</Name>
<Version>2.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>activity</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>carrier</Name>
<Version>2.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>city</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>company</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>customerestablishment</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>customervendor</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>customervendor</Name>
<Version>1.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>customervendor</Name>
<Version>2.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>eaienvironment</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>employeeposition</Name>
<Version>1.001</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>invoice</Name>
<Version>3.003</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>invoice</Name>
<Version>3.004</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>item</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>item</Name>
<Version>3.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>paymentcondition</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>paymentcondition</Name>
<Version>2.001</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>pricelistheaderitem</Name>
<Version>1.001</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>pricelistheaderitem</Name>
<Version>1.002</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>productionorder</Name>
<Version>2.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>request</Name>
<Version>1.007</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>seller</Name>
<Version>1.000</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>unitofmeasure</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>unitofmeasure</Name>
<Version>2.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>unitofmeasureconversion</Name>
<Version>1.000</Version>
<SupportedMode>send_enabled</SupportedMode>
<EnabledMode>send_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>user</Name>
<Version>3.001</Version>
<SupportedMode>receive_enabled</SupportedMode>
<EnabledMode>receive_enabled</EnabledMode>
</Transaction>
<Transaction>
<Name>whois</Name>
<Version>1.000</Version>
<SupportedMode>both_enabled</SupportedMode>
<EnabledMode>both_enabled</EnabledMode>
</Transaction>
</Transactions>
</Application>
</Applications>
<InternalIDs>
<InternalID id="AccountantAccount">
<Table>plano_contas</Table>
<KeyFields>cod_empresa|num_conta|num_conta_reduz</KeyFields>
</InternalID>
<InternalID id="AreaAndLineOfBusinessInternalId">
<Table>linha_prod</Table>
<KeyFields>cod_lin_prod|cod_lin_recei|cod_seg_merc|cod_cla_uso</KeyFields>
</InternalID>
<InternalID id="CompanyInternalId">
<Table>empresa</Table>
<KeyFields>cod_empresa</KeyFields>
</InternalID>
<InternalID id="DepartamentInternalId">
<Table>unidade_funcional</Table>
<KeyFields>cod_empresa|cod_uni_funcio</KeyFields>
</InternalID>
<InternalID id="InternalId">
<Table>funcionario</Table>
<KeyFields>cod_empresa|num_matricula</KeyFields>
</InternalID>
<InternalID id="RoleInternalId">
<Table>cargo</Table>
<KeyFields>cod_empresa|cod_cargo</KeyFields>
</InternalID>
<InternalID id="WorkShiftInternalId">
<Table>escala</Table>
<KeyFields>cod_empresa|cod_escala</KeyFields>
</InternalID>
</InternalIDs>
</EaiConfiguration> |
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.
A importação será realizada em duas etapas. A primeira fará a carga e validação do arquivo de configurações. As validações realizadas são as seguintes:
- 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 referência a aplicativos. Por exemplo, uma rota não pode estar vinculada a um aplicativo externo que não existe no arquivo;
- Verificação do conteúdo das tags que fazem referência 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.
Entretanto, havendo configurações de EAI no ambiente de destino, será exibida uma tela de opções, onde o usuário informará o que deseja fazer em relação as configurações existentes.
Descrição das opções de importação
- Tipo de importação: pode-se escolher entre sobrescrever as configurações existentes ou combinar (mesclar) com as novas configurações sendo importadas. Quando as configurações são sobrescritas, todo o conteúdo anterior é substituído pelo conteúdo importado, inclusive o nome do aplicativo hospedeiro. Quando as configurações são mescladas, o nome do aplicativo hospedeiro é mantido e apenas os dados de configuração novos são incluídos no ambiente.
- Backup das configurações: Marcando esta opção, será possível exportar as configurações existentes antes do processamento ser concluído. Será aberta uma tela para permitir informar o local e nome do arquivo de destino das configurações.
- Eliminar mensagens: Marcando esta opção, será possível eliminar as mensagens recebidas e enviadas usando as configurações anteriores. Recomendado nos casos onde as configurações são sobrescritas.
- Backup das mensagens: Caso a opção Eliminar mensagens seja escolhida, é possível exportar as mesmas para arquivo antes da remoção. Os arquivos de backup serão gerados no formato UNL, um padrão comum ao Logix. Caso seja necessário reimportar as mensagens para o ambiente, isso pode ser feito pelo programa LOG0002.
- Diretório de exportação mensagem: Neste campo será exibido o caminho completo onde os arquivos de backup das mensagens serão gerados. A edição do seu conteúdo não é permitida.
Combinando configurações
Ao combinar configurações de EAI existentes num ambiente com as provenientes de um arquivo de configuração, serão realizadas as seguintes operações:
- O nome do aplicativo hospedeiro existente será mantido.
- As transações do aplicativo hospedeiro existente que coincidirem com as transações do aplicativo hospedeiro importado serão mantidas.
- As transações do aplicativo hospedeiro importado que não existirem no aplicativo hospedeiro de destino serão acrescentadas.
- Os aplicativos externos cujo nome coincidir com algum aplicativo externo importado serão mantidos.
- Os aplicativos externos importados que não existirem no ambiente de destino serão acrescentados.
- As transações dos aplicativos externos que já existirem no ambiente de destino serão mantidas.
- As transações dos aplicativos externos que não existirem serão acrescentadas.
- As rotas existentes serão mantidas.
- As novas rotas serão acrescentadas.
- As informações de "de-para" que já existirem serão mantidas.
- As novas informações de "de-para" serão acrescentadas.
Relatório de importação
Ao final da importação será gerado um relatório contendo as opções feitas pelo usuário e os conteúdos importados. O mesmo é gerado em formato texto e gravado no diretório configurado no programa LOG1100, para o sistema LST e empresa do usuário que executou o EAI10000.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
Processamento das configurações de EAI
======================================
Data/hora de inicio...........: 29/12/2015 - 16:19:38
Realizar backup?..............: NÃO
Local e nome do arquivo.......:
Eliminar mensagens ?..........: NÃO
Backup das mensagens..........: NÃO
Local do backup das mensagens.:
Forma de processamento........: Assumir configurações importadas, descartando as atuais
Aplicativo hospedeiro..: LOGIX_1100
Novas transações Versão
---------------------------------------------------------------------------
accountantaccount 2.000
accountingclosingdate 1.000
accountingentry 1.000
accountpayabledocument 1.000
accountpayabledocumentdischarge 1.003
accountreceivabledocument 1.001
accountreceivabledocumentdischarge 1.000
areaandlineofbusiness 1.000
bank 1.000
banktransactions 1.000
cancelrequest 1.000
carrier 1.000
city 1.000
company 1.000
costcenter 1.000
coveragedocument 1.000
currencyquotation 1.000
customervendor 1.000
departament 1.000
edidocumentfortransportation 1.000
employee 2.001
employeeposition 1.001
employeesituations 1.000
inputdocument 1.000
inventory 1.000
invoice 1.001
invoice 3.004
item 1.001
item 3.001
itemstructure 1.000
listofaccountpayabledocument 1.000
monthlypayroll 1.000
order 3.003
packaging 1.000
packagingrelationship 1.000
paymentcondition 1.000
pricelistheaderitem 1.002
productsupplierrelationship 2.003
quotation 1.002
request 1.007
reversalofaccountpayabledocumentdischarge 1.000
reversalofaccountreceivabledocumentdischarge 1.000
role 1.000
salesorder 1.000
schedulework 1.000
seller 1.000
shipmentofexportinvoice 1.000
sintegraregister-85-86 1.000
unitofmeasure 1.000
unitofmeasureconversion 1.000
user 3.001
whois 1.000
TOTAL: 52 transações
Novos Aplicativos Externos
-------------------------------------------------------------------------------
Aplicativo
-------------------------------------------------------------------------------
dts11cordas8480
Transações Versão
---------------------------------------------------------------------------
accountreceivabledocument 2.000
activity 1.000
carrier 2.000
city 1.000
company 1.000
customerestablishment 1.000
customervendor 1.000
customervendor 1.001
customervendor 2.001
eaienvironment 1.000
employeeposition 1.001
invoice 3.003
invoice 3.004
item 1.000
item 3.001
paymentcondition 1.000
paymentcondition 2.001
pricelistheaderitem 1.001
pricelistheaderitem 1.002
productionorder 2.000
request 1.007
seller 1.000
unitofmeasure 1.000
unitofmeasure 2.000
unitofmeasureconversion 1.000
user 3.001
whois 1.000
TOTAL: 1 aplicativos 27 transações
Novas Transações em Aplicativos Existentes
-------------------------------------------------------------------------------
TOTAL: 0 aplicativos 0 transações
Novas rotas..................................: 1
Novas informações de 'de-para' (Internal IDs): 0
Data/hora de término.........................: 29/12/2015 - 16:19:38 |
Informações Técnicas
...
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> |
Objetivo
A integração com Identity usando modo "pull" é uma alternativa ao modo original como o Identity realiza a sincronização dos dados com o ERP (modo "push"). Antes desta funcionalidade, era necessário que o Datasul estivesse acessível pela World Wide Web (também conhecida como Internet), o que requer ajustes na infraestrutura de rede do cliente. Além desta complexidade adicional, essas alterações implicam numa exposição maior a riscos de segurança de acesso, que precisam ser muito bem gerenciados.
Realizando a integração com modo "pull", procura eliminar a necessidade de exposição do ERP na Internet, mitigando as eventuais fraquezas encontradas na integração com modo "push".
Informações | ||||
---|---|---|---|---|
| ||||
|
Informações | ||
---|---|---|
| ||
|
Funcionamento
Esta seção, além de descrever o funcionamento da integração utilizando o modo "pull", apresenta os pré-requisitos e os procedimentos de configuração necessários para utilização da mesma.
Nota | ||
---|---|---|
| ||
Em ambientes com load balance, onde há várias instâncias do servidor de aplicação (JBoss), deve-se realizar estas configurações em apenas uma delas. Do contrário, pode haver inconsistências nos dados salvos no ERP. |
Visão geral
A integração entre Identity e Datasul usando modo "pull" baseia-se no seguinte fluxo:
- O usuário administrador realiza ações como vincular um usuário a um aplicativo, ou ativar um item de menu num grupo de segurança (papel, na terminologia do Identity);
- As operações realizadas são encaminhadas para uma fila correspondente: fila de aplicativo, se a ação não envolver usuário; fila de usuário, quando envolver usuário;
- O Datasul consultará as filas em uma frequência determinada, buscando as operações pendentes que ali estiverem;
- As operações serão processadas, sendo gravadas no banco de dados caso estejam OK;
- O Identity será comunicado pelo Datasul das operações processadas com sucesso e estas serão removidas da fila.
As duas filas do Identity - de aplicativo e de usuário - serão consultadas com frequências distintas - 15 e 30 segundos - respectivamente, mas também serão consultadas a cada acesso feito ao Datasul a partir do Identity (consulta sob demanda). Eventuais erros de processamento das operações, quer por consulta periódica, quer por consulta sob demanda, interromperão a busca das operações, sendo necessária a intervenção do administrador para restabelecer o funcionamento normal da integração.
Pré-requisitos
O correto funcionamento do modo "pull" bem como o adequado monitoramento das situações de erro requerem alterações nos arquivos de configuração do Datasul, conforme segue:
Configuração do arquivo de log fluig-integration.log
Esta configuração é necessária para registro das ações do serviço de busca periódica das operações, bem como dos eventuais erros de processamento das mesmas e deve ser feita no arquivo jboss-log4j.xml, situado em <dir_inst_datasul>\jboss-4.3.2.GA\server\<instancia>\conf. No quadro abaixo mostra-se as principais alterações a realizar:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
(...)
<!-- A size based file rolling appender -->
<appender name="FLUIG" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/fluig-integration.log"/>
<param name="Append" value="false"/>
<param name="MaxFileSize" value="100MB"/>
<param name="MaxBackupIndex" value="5"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5r %-5p (%t:%x) [%c{1}] %m%n"/>
</layout>
</appender>
(...)
<logger name="com.totvs.fluig">
<level value="INFO" />
<appender-ref ref="FLUIG"/>
</logger>
(...)
</log4j:configuration>
|
Configuração do envio de e-mail a partir do JBoss
Esta configuração é necessária para o envio do e-mail de notificação que será disparado em caso de erro durante a inicialização do serviço de busca, consulta das filas ou processamento das operações. Na parte que trata do monitoramento será dado mais detalhes. Para o momento, demonstraremos apenas as configurações que habilitam o envio.
O arquivo de configuração a alterar é o mail-service.xml, localizado em <dir_inst_datasul>\jboss-4.2.3.GA\server\<instancia>\deploy.
Os parâmetros que devem editados neste arquivo são:
- <attribute name="User">, informando um usuário válido no servidor de e-mail (SMTP).
- <attribute name="Password">, informando a senha deste usuário.
- <property name="mail.smtp.host" value="{nome_servidor}"/>, informando o nome do servidor SMTP usado para enviar o e-mail.
- <property name="mail.smtp.port" value="{porta_servidor}"/>, informando a porta do servidor SMTP.
- <property name="mail.from" value="{e-mail_valido}"/>, informando um endereço de e-mail válido quando a autenticação for necessária no servidor SMTP.
- <property name="mail.smtp.auth" value="{true/false}"/>, informando true quando a autenticação for requerida para enviar e-mails.
Configuração
O fluxo para ativação do modo "pull" inicia-se pelo Identity, alterando-se as configurações do aplicativo e ligando-se o parâmetro "Modo Pull", na aba Provisionar.
A partir deste momento, as ações efetuadas no Identity passam a gerar operações pendentes nas filas. É necessário efetuar a próxima etapa do fluxo - configuração do Datasul - que consiste em realizar o chamado "One click Configuration" através da ferramenta Fluig Configurator.
Para acessar o Fluig Configurator, acesse o menu principal do Datasul e selecione as opções descritas abaixo, conforme o tipo de menu:
Menu Flex | Menu HTML |
---|---|
Clique no botão Ferramentas, na parte inferior da tela. | Clique no botão Configurações, na parte superior da tela. |
Selecione a opção Configurações do Fluig. | Selecione a opção Fluig Identity e clique em Abrir. |
Uma vez dentro do Fluig Configurator, informe no campo Base da URL do Fluig Identity a URL correspondente ao Identity onde está configurado o aplicativo desejado e no campo Token o valor correspondente ao token de configuração, disponível na página de configuração do aplicativo, aba Visão Geral, opção Token de Configuração. Clique no botão Configurar para efetuar a sincronização das configurações.
Após concluído o processo, o serviço de busca de operações será iniciado no Datasul. Se necessário, é possível alterar a frequência com que as filas são consultadas no Identity. Para isso, basta ir na aba Configurações, descer a tela até o botão Editar e, após clicar no mesmo, editar os campos Busca de operações de aplicativo (ms) e Busca de operações de usuário (ms). Os valores destes campos devem ser informados em milissegundos, aceitando a faixa entre 1.000 (1 segundo) e 31.536.000.000 (1 ano).
É possível também desabilitar a busca de operações (tanto periódica quando sob demanda) desmarcando o campo Modo Pull habilitado, na mesma página. Realizada as operações necessárias, clique no botão Salvar para efetivá-las.
Monitoramento
Para acompanhar o status do serviço de busca das operações o Fluig Configurator disponibiliza a aba Gerenciamento, a qual exibe o status do serviço (Executando, Parado ou Desabilitado), permitindo pará-lo e iniciá-lo a qualquer tempo. A aba também disponibiliza um link para baixar o arquivo de log da integração (fluig-integration.log).
O arquivo de log terá formato semelhante ao da imagem abaixo. As informações exibidas nele são:
- Data, no formato "ano-mês-dia";
- Hora, no formato "hora:minuto:segundo,milissegundos";
- Milissegundos desde o inicio do serviço de log;
- Tipo do registro no log, INFO, WARN, ERROR ou DEBUG;
- Nome da thread em execução no momento do registro da mensagem;
- Nome da classe Java que registrou a mensagem;
- Mensagem.
Erros relacionados ao funcionamento do modo "pull" também serão exibidos nesta aba, quando ocorrerem.
Além do registro dos erros em arquivo de log e da exibição dos mesmos na aba Gerenciamento, será disparado um e-mail para o usuário informado nas configurações do aplicativo no Identity, na aba Provisionar, campo Nome do Usuário Administrador do Domínio. Lembrando que este usuário deve existir no cadastro de usuários do Datasul e possuir e-mail informado no campo correspondente.
O e-mail enviado ao usuário terá um formato semelhante ao template abaixo.
Aviso | ||
---|---|---|
| ||
Além dos erros ocorridos na inicialização do serviço, erros no processamento das operações recebidas causam a parada do serviço de busca, de modo que operações posteriores realizadas no Identity não serão processadas até que a causa do erro seja sanada e o serviço de busca seja reiniciado. |
Componentes
Esta seção relaciona os principais componentes da funcionalidade, suas características e o relacionamento entre eles, com o objetivo de fornecer uma visão geral da arquitetura.
A integração entre Identity e Datasul usando o modo pull é composta de vários elementos, a saber:
- Filas de operações pendentes (Identity);
- APIs de consulta e alteração das filas (Identity);
- Serviço de busca das operações pendentes (Datasul);
- Processador de operações (Datasul);
- Interface de gerenciamento (Datasul);
- Processamento de login (Datasul).
Filas de operações pendentes
Neste documento já se comentou várias vezes da existência de duas filas no Identity: de operações de usuário e de aplicativo. Vamos detalhar agora quais operações cada uma delas pode conter.
Operações de usuário | Provisionar e desprovisionar usuário ao aplicativo. |
Vincular e desvincular usuário ao papel do aplicativo. | |
Vincular e desvincular usuário à empresa do aplicativo. | |
Operações de aplicativo | Incluir, alterar ou eliminar um papel no aplicativo. |
Ativar e desativar um item de menu no papel. | |
Ativar e desativar uma consulta rápida no papel. |
Em relação à fila de operações de usuário, ela é complementada por uma lista de usuários com operações pendentes. Esta lista é consultada sempre que um usuário acessa o Datasul. Se ele estiver nesta lista, então é feita a busca de todas as operações pendentes para aquele usuário. Desta forma, o "atraso" causado pelo processamento das operações é reduzido, já que abrange somente o usuário efetuando o acesso.
APIs de consulta e alteração das filas
APIs são componentes de software usados para executar uma tarefa, dos quais só se conhece o nome, os dados de entrada que espera e os dados de saida que retorna. Para integração com o Datasul via modo pull, o Identity provê APIs para consultar as filas e recuperar as operações pendentes nelas. Entretanto, as operações só serão retiradas da fila quando o Datasul executar as APIs destinadas a esta tarefa. Sinteticamente, o Identity provê as seguintes APIs, implementadas usando o padrão REST e acessíveis via Web:
- Consulta e recuperação de operações de aplicativo;
- Consulta e recuperação dos usuários com operações pendentes;
- Consulta e recuperação de operações de usuário;
- Remoção de operações de aplicativo;
- Remoção de operações de usuário.
Serviço de busca das operações pendentes
Constitui o núcleo da implementação do modo pull no Datasul. É o componente responsável por buscar as operações no Identity e encaminhá-las para processamento. O serviço executa em "background" e consulta de forma independente as filas de operações de usuário e de aplicativo.
Processador de operações
É um complemento ao serviço de busca de operações, que executa de modo independente, para evitar que o serviço de busca fique "travado", aguardando o processamento da operação caso ele seja extenso. Dependendo da natureza da operação recebida (usuário, grupo de segurança, consulta rápida, etc.) o processador de operações aciona rotinas correspondentes no Datasul para realizar o processamento. Eventuais erros no processamento são encaminhados novamente ao serviço de busca, que dará o tratamento adequado, registrando no arquivo de log e disparando o e-mail de notificação ao administrador.
Interface de gerenciamento
Trata-se do Fluig Configurator, pelo qual os usuários podem verificar o status do serviço de busca e, conforme a necessidade, podem parar e iniciar o serviço. Vários detalhes deste componente já foram demonstrados na seção Monitoramento.
Processamento de login
Este componente é responsável por acionar o serviço de busca fora do intervalo programado, para recuperar as operações pendentes para o usuário que está efetuando o acesso ao Datasul naquele momento. As operações pendentes serão encaminhadas para o processador de operações e o login será realizado após o retorno. Caso haja algum problema no processamento da operação, o processo de login não será realizado.
...