Skip navigation
All People > TMACUL > Tiago MACUL's Blog > 2016 > January > 17

LINGUAGEM SPEL: Client REST x SDM

 

Imagine poder integrar sua SDM com outros sistemas utilizando REST da seguinte forma:

 

1) Um usuário altera um atributo em algum formulário da SDM;

 

2) Uma trigger POST_VALIDATE do respectivo objeto intercepta esta modificação e executa um Client REST que sincroniza esta informação modificada em outra base de outro sistema.

 

Para isso desenvolvi a função genérica "z_rest_exec" que através da função "z_executar", executa o client "CURL" para fazer a operação desejada em REST. Tudo funciona de forma síncrona e qualquer erro ocorrido é exibido ao usuário no formulário em edição.

 

MODO DE UTILIZAÇÃO

1) Copie o arquivo "CURL.EXE" para qualquer pasta que esteja no PATH do(s) servidor(es) SDM;

 

2) Copie o arquivo "z_executar_bridge.cmd" (que foi pra versão 1.01) para a pasta $NX_ROOT/bin;

 

3) Copie os arquivos "z_executar.spl" e "z_rest_exec.spl" para a pasta $NX_ROOT/site/mods/majic;

 

4) Crie uma trigger em um arquivo .MOD que faça a chamada de uma função de validação do objeto que por sua vez chamará a função "z_rest_exec" obedecendo a sintaxe definida no método.

 

Bom proveito.

 

SDM REST Client 1.00.zip

 

Publicado Originalmente: October 15, 2015 às 18:07

Em: CA SDM Brasil - facebook

Por: daniel-bighelini

 

CÓDIGO DO DIA: void z_help(string objeto, string metodo)

 

Desenvolvi uma função que pode ajudar a esclarecer o funcionamento dos metodos disponiveis da linguagem SPEL.

É exibido o nome, função, parâmetros e funcionamento do método.

É necessário um pouco de imaginação para interpretar as informações mas ajuda muito.

 

Exemplos de utilização:

z_help('api', 'val_by_key') // Exibe informações do metodo 'val_by_key' do objeto 'api'

z_help('api') // TODOS metodos do objeto 'api'

z_help() // IDEM acima

 

Até a próxima.

 

z_help.spl

 

Publicado Originalmente: October 09, 2015 às 14:43

Em: CA SDM Brasil - facebook

Por: daniel-bighelini

 

 

LINGUAGEM SPEL (Continuação)

 

Continuando o assunto da otimização da função "exec", vou explicar o funcionamento de uma forma bem simplista.

O código é relativamente simples mas precisa ser bem entendido antes de sua implementação. Está bem documentado, quase autoexplicativo e bem parametrizável. Se quiser aprimorá-lo e distribuí-lo, fique bem a vontade.

 

Não foi fácil construí-lo devido a algumas particularidades que descobri durante o desenvolvimento. A principal dificuldade foi constatar que qualquer chamada da função "exec" sempre será executada no servidor primário da SDM, mesmo quando disparada de um servidor secundário. Outra dificuldade se deu quando o SDM estava instalado de forma distribuída, mas felizmente tudo foi resolvido.

Caso tenham alguma dúvida, postem aqui mesmo.

 

FUNCIONAMENTO

1) É executada uma função customizada chamada "string z_executar(string zs_cmd, int zi_depurar, string zs_metodo)";

2) Em seguida, através de uma bridge batch (z_executar_bridge.cmd), o comando informado é executado e os retornos são gerados;

3) O resultado da execução retorna para a função SPEL que então processa os dados.

 

COMO UTILIZAR:

1) Copie os arquivos z_executar.spl e z_executar_bridge.cmd para a pasta $NX_ROOT/site/mods/majic;

2) Altere o valor das variáveis "batadmin" e "batpassword" no arquivo z_executar_bridge.cmd informando o nome do usuário de windows que tem permissões de leitura e gravação no compartilhamento administrativo (Ex.: D$) da unidade onde está instalada o SDM em todos os servidores (primário e secundários);

3) Para fazer a chamada da função, utilize o exemplo abaixo:

 

string zs_cmd, zs_result;

zs_cmd = 'java.exe blablablablabla xyz';

zs_result = z_executar(zs_cmd, zi_depurar, zs_metodo);

 

int zi_errorlevel, zi_pos_delim;

string zs_delim, zs_return;

zs_delim = "@;@"; // define o delimitador utilizado na string de return

 

if (!is_null(zs_result)) {

zi_pos_delim = sindex(zs_result, zs_delim);

zi_errorlevel = (int) substr(zs_result, 0, zi_pos_delim);

zs_return = substr(zs_result, zi_pos_delim + 3);

if (zi_errorlevel == 0) { // em caso de sucesso

// faz algo

} else { // em caso de falha

// faz outro algo

}

 

} else {

zi_errorlevel = -1;

zs_return = format("%s ERRO ao processar a saida da execucao do comando '%s': %d", zs_metodo, zs_cmd, zi_errorlevel);

logf(ERROR, zs_return);

}

 

Aproveitem.

Até a próxima!

 

 

z_executar.zip

 

Publicado Originalmente: september 30, 2015 às 11:54

Em: CA SDM Brasil - facebook

Por: daniel-bighelini

TMACUL

DICA DO DIA: Notepad++ & Spel

Posted by TMACUL Champion Jan 17, 2016

DICA DO DIA: Notepad++ & Spel

 

Estou catalogando no Notepad++ toda a linguagem Spel que tenho conhecimento. Vou disponibilizar aqui os procedimentos necessários para fazer o Notepad++ conhecer a linguagem.

 

1) Copie o arquivo spel.xml (anexado neste post) para dentro da pasta "C:\Program Files (x86)\Notepad++\plugins\APIs";

 

2) A partir do Notepad++, clique em "Language", "Define your language" e por último clique no botão "Import" selecionando em seguida o arquivo "userDefineLang_Spel.xml" (também anexado neste post).

 

Ainda não acabei mas já tem muita coisa documentada, Considerem esta versão inicial 1.0. Aproveitem!


spel for notepad.zip

 

Publicado Originalmente: september 23, 2015 às 21:55

Em: CA SDM Brasil - facebook

Por: daniel-bighelini