Ações SID
Informamos que evoluções de negócio e implementações do sistema não são repassadas às Ações SID e demais rotinas relacionadas, como, por exemplo, funções de programador e layout de importação, devido a serem artefatos descontinuados, recebendo apenas correções.
Sempre que for iniciada a implementação de uma nova customização, deve ser verificada a utilização de web service, pois esta é uma tecnologia atual, recebendo além da correção de erros, também melhorias e evoluções de negócio.
No índice de web services é possível consultar todos os web services disponíveis no
Rotinas que utilizam Ações SID, por exemplo a geração de solicitação web pelo modelo antigo, possuem características de funcionamento diferentes do ERP padrão, por isso a comparação entre as versões não deve ser feita de forma direta. No modelo web, por exemplo, muitos dos campos precisam ser informados manualmente, ou seja, não possuem sugestão, ao contrário do ERP.
Confira o menu ao lado esquerdo para acessar a lista de Ações de cada módulo.
Autenticar (Login/Registro)
O primeiro procedimento a ser efetuado é a autenticação da integração. Para tal, deve-se enviar uma ação de "login" ao Sapiens Server para que o mesmo valide as permissões do usuário que irá interagir com a base Gestão Empresarial | ERP.
Sintaxe:
http://<servidor>:<porta>/<diretório_virtual>/conector?SIS=CO&LOGIN=SID&ACAO=EXESENHA&NOMUSU=<usuário>&SENUSU=<senha>
Onde:
<servidor>:<porta> | Nome ou IP do servidor web. |
---|---|
<diretório_virtual> | Nome do diretório virtual. |
SIS=CO | Parâmetro interno: obrigatório em todas as ações. |
LOGIN=SID | Parâmetro interno: obrigatório em todas as ações. |
<usuário> | Nome do usuário. |
<senha> | Senha do usuário. |
Se a validação do usuário for efetivada, o retorno da requisição acima deverá ser um "código de conexão", que será repassado posteriormente como parâmetro para validar e garantir a autenticidade das demais ações.
Importante
Deve-se utilizar uma conta de usuário Gestão Empresarial | ERP exclusivamente para este fim.
A autenticação integrada com o Windows é suportada pelas ações SID. Porém, as ações (inclusive a ação Autenticar) utilizarão as credenciais do usuário da máquina que está chamando a ação, ignorando os valores passados em NOMUSU e SENUSU. As ações não vão considerar o usuário e senha enviados na requisição. Ações invocadas fora do domínio do servidor AD irão gerar a mensagem de credenciais inválidas.
Exemplo:
http://servidor/sapiensweb/conector?SIS=CO&LOGIN=SID&ACAO=EXESENHA&NOMUSU=USUARIO&SENUSU=SENHA
Retorno devolvido pelo Server, caso login seja bem sucedido:
38659379861527810
Retorno devolvido pelo Server, caso erro:
ERRO: Usuário ou senha inválido
Ou
<html>Time-out error...</html>
Executar ações (submeter requisições)
Nesta etapa, são enviadas as ações que interagem diretamente com a base do Gestão Empresarial | ERP. O código de conexão, retornado no login, deverá ser acrescido em todas estas ações enviadas ao Server.
Sintaxe:
http://<servidor>:<porta>/<diretório_virtual>/conector?SIS=CO&LOGIN=SID&USER=<usuário>&CONNECTION=<código_de_conexão>&ACAO=<ação>&<parâmetro>=<valor>&...
Exemplo:
http://servidor/sapiensweb/conector?SIS=CO&LOGIN=SID&USER=USUARIO&CONNECTION=38659379861527810&ACAO=SID.PED.GRAVAR&CODCLI=99
Nesse exemplo, envia-se uma requisição ao Server para que seja gerado um pedido (cabeçalho) na base Gestão Empresarial | ERP,cujo código de cliente seja “99”. A ação SID.Ped.Gravar retorna o número do pedido gerado (caso não ocorra erro).
O parâmetro opcional AcceptEmptyField indica se os campos passados sem valor ("CAMPO=") devem ser considerados ou não nas ações. Valores possíveis: "0" - não considera; "1" (padrão) - considera.
Observação
Não são usados cookies para manter a sessão, sendo exclusivamente mantidas pelos parâmetros User e Connection, obrigatórios no corpo da ação.
Autenticação embutida
É possível executar uma ação comum juntamente com a ação de autenticação EXESENHA. Este método facilita a implementação e melhora o desempenho. A forma de escrevê-la é semelhante à ação de login, acrescido do parâmetro "PROXACAO=<ação>" e mais os parâmetros da próxima ação. Recomenda-se utilizá-la apenas quando houver necessidade de executar ações isoladas.
Formato:
http://<servidor>:<porta>/<diretório_virtual>/conector?SIS=CO&LOGIN=SID&ACAO=EXESENHA&NOMUSU=<usuário>&SENUSU=<senha>&PROXACAO=<ação_a_executar_após_login>&<parâmetro>=<valor>&...
Exemplo:
http://servidor/sapiensweb/conector?SIS=CO&LOGIN=SID&ACAO=EXESENHA&NOMUSU=USUARIO&SENUSU=SENHA&PROXACAO=SID.PED.GRAVAR&CODCLI=99
Execução através de web services
Haverá cada vez mais incentivos para que os web services substituam o SID, pois são implementados sob uma arquitetura mais robusta, segura e com melhor desempenho. No entanto, para suprir a variedade reduzida Web Services disponíveis, haverá possibilidade de invocar ações SID por meio de um deles.
O benefício, neste caso, é o fato do processamento ser totalmente local a não necessitar do ambiente "Sapiens Server" instalado. No entanto, o serviço MC SID limita-se a processar apenas ações de "negócio" e dentro da empresa/filial ativa do usuário que executar a regra.
O exemplo abaixo demonstra a execução de uma ação SID através de serviço MC local. É necessário habilitar a opção “Utiliza serviços” em Recursos/Implementações/Serviços/Configurações.
@ Define o serviço e porta @
definir interno.com.senior.g5.co.ger.sid.executar vAcaoSID;
@ Adiciona os parâmetros SID -- cada parâmetro em linha distinta @
vAcaoSID.SID.CriarLinha();
vAcaoSID.SID.Param = "ACAO=SID.TCR.BAIXAR";
vAcaoSID.SID.CriarLinha();
vAcaoSID.SID.Param = "NUMTIT=TX003/A";
vAcaoSID.SID.CriarLinha();
vAcaoSID.SID.Param = "CODTPT=DM";
vAcaoSID.SID.CriarLinha();
vAcaoSID.SID.Param = "VLRMOV=7700";
vAcaoSID.SID.CriarLinha();
vAcaoSID.SID.Param = "VCTORI=20/10/2005";
vAcaoSID.SID.CriarLinha();
vAcaoSID.SID.Param = "NUMCCO=BCX C/C";
@ Executar ação @
vAcaoSID.ModoExecucao = 1;
vAcaoSID.Executar();
@ Processar resultado @
definir alfa ValStr;
ValStr = vAcaoSID.Resultado;
Notas de implementação
As notas abaixo enfatizam dicas e limitações importantes para a utilização do SID nas requisições HTTP:
- recomenda-se limpar o retorno das ações, ou seja, remover eventuais "CR+LF" e excesso de espaços;
- toda ação enviada sempre retorna alguma informação, seja ela, uma simples literal "OK" ou várias linhas de dados;
- algumas ações possuem um parâmetro opcional denominado "Delim". Sua função é determinar o caractere separador dos campos de retorno da ação. O valor padrão é ";" (ponto-e-vírgula);
- o código de conexão perde a validade após a execução da ação de LOGOFF ou quando o tempo de ociosidade expira. Quando isso ocorrer, é necessário um efetuar novo login;
- os valores de cada parâmetro devem ser sempre atribuídos diretamente sem caracteres tipo aspas, independente do tipo de dado esperado pelo parâmetro (Exemplo: NOMCLI=SENIOR, CODCLI=33, DATATU=01/01/2003, VALDSC=199.50). Não deve ser utilizado espaços antes ou depois do caractere "=" (Exemplo incorreto: CODCLI = 123 Exemplo correto: CODCLI=123);
- todas as operações serão realizadas sempre baseadas na empresa/filial ativa do usuário utilizado no login. Deve-se criar um usuário Sapiens exclusivo para o SID. Havendo necessidade de operar em múltiplas empresas/filial, deve-se criar e posicionar um usuário distinto para cada uma delas;
- o separador decimal utilizado nos parâmetros numéricos deve ser o ponto ".";
- é recomendável consistir o retorno de cada ação para certificar-se que a mesma foi executada com sucesso. Na maioria delas, basta verificar se o retorno é igual ao literal "OK". Já em outras (exemplo SID.PED.GRAVAR) é interessante verificar se o retorno é um número válido, ou seja, contendo apenas dígitos numéricos;
- o servidor (Sapiens Server) gera sempre um histórico de ações recebidas e processadas por ele. Estes arquivos são gerados no diretório de LOGs do sistema, com o nome: SAPIENSRV_DUMPLOG_<nnn>_<DATAHORA>.LOG;
- importante: o tempo máximo de processamento de uma ação é cinco minutos (limite do IIS). Depois deste tempo, a comunicação é interrompida seguida de uma mensagem de time-out. Deve-se ficar atento à esta limitação, principalmente quando utilizar o recurso SIDXML.