Use o NetSuite TBA Chamando um RESTlet de uma Fonte de Arquivo Local¶
Introdução¶
Esta página descreve como usar a autenticação baseada em token NetSuite (TBA) chamando um RESTlet de uma fonte de arquivo local em Harmony. Antes de configurar o TBA no Harmony, consulte as recomendações do Jitterbit para ativar o TBA no NetSuite.
Para chamar um RESTlet para autenticação com NetSuite TBA usando uma fonte de arquivo local, estas etapas são recomendadas, conforme abordadas nesta página:
- Associar o plug-in RunCommand
- Instalar Node.js
- Crie o arquivo Node.js
- Chame o arquivo Node.js em um Script
- Processar a resposta RESTlet
- Solução de problemas
Pré-requisitos¶
Para usar o NetSuite TBA chamando um RESTlet de uma fonte de arquivo local no Harmony, estes critérios devem ser atendidos:
-
Você deve ter a papel de permissões apropriada em sua conta NetSuite.
-
Você deve estar usando SuiteTalk versão 2015.2 ou superior.
-
Você deve ter TBA habilitado para sua conta NetSuite.
Dica
Para obter informações adicionais, consulte a documentação do NetSuite em Introdução à autenticação baseada em token (é necessário fazer login no NetSuite).
-
Você deve estar usando um Harmony Agente Privado (Linux ou Windows) e ter Node.js e npm instalados (abordados nas instruções abaixo).
Aviso
Este método não está disponível para uso com Agentes em Nuvem, pois requer o uso de arquivos locais e a capacidade de executar um comando onde o arquivo está localizado.
Associar o Plug-in RunCommand¶
O uso do RunCommand plugin é necessário para executar um arquivo Node.js que será criado posteriormente. Para usar este plug-in, você deve primeiro associá-lo ao seu Grupo de Agentes Privados. Isso tornará o plugin disponível para todos os Agentes Privados dentro do Grupo de Agentes Privados.
Para associar o plug-in:
- Faça login no Portal Harmony e vá para o Management Console. Em seguida, use o menu no canto superior esquerdo para navegar até Personalizações > Plug-ins.
- Na tabela, localize a linha "Jitterbit - Executar comando". À direita, use o menu suspenso Action para selecionar Associate Grupo de Agentes.
- No pop-up, selecione seu Grupo de Agentes Privados e clique em Salvar.
Dica
A documentação detalhada sobre a associação de plug-ins está disponível em Customizações > Plug-ins.
Instale o Node.js¶
Node.js deve ser instalado para executar um arquivo que será criado posteriormente para chamar o RESTlet do Harmony. O programa npm, que é usado para gerenciar pacotes Node.js, também é necessário e geralmente está incluído no Node.js.
Nesta etapa, verifique se o Node.js e o npm estão instalados no(s) seu(s) Agente Privado(s) e, caso não estejam, instale-os.
Nota
Ubuntu 18.04 é usado como exemplo abaixo, embora outros sistemas Linux e Windows suportados onde seu(s) Agente Privado(s) também possam ser usados.
-
Verifique se o Node.js está instalado.
$ node -v
-
Verifique se o npm está instalado.
$ npm -v
-
Se algum dos comandos não responder com uma versão, use estes comandos para instalar o aplicativo necessário:
$ sudo apt install nodejs $ sudo apt install npm
-
Crie um novo diretório que será usado posteriormente como o local da chamada e resposta do NetSuite. Isso pode ser alterado para qualquer local desejado e precisará ser fornecido posteriormente em seu projeto Harmony.
$ mkdir -p /opt/Jitterbit_projects/TBA_RESTlet/
-
Navegue até o novo diretório.
$ cd /opt/Jitterbit_projects/TBA_RESTlet/
-
Instale esses pacotes Node.js necessários.
$ npm install request $ npm install oauth-1.0a@1.0.1
Criar o Arquivo Node.js¶
Este é o arquivo que você precisará para chamar o RESTlet do Harmony.
Nesta etapa, crie um novo JavaScript fora do Harmony. Para criar um novo arquivo no Ubuntu 18.04, por exemplo, usando o nome request.js
:
$ nano request.js
Dentro do novo JavaScript, cole o conteúdo fornecido abaixo:
const request=require('request');
const OAuth=require('oauth-1.0a');
const fs=require('fs');
var args=process.argv;
var outputFile=args[2];
var accountID=args[3];
var token={
public:args[6],
secret:args[7]
};
var consumer={
public:args[8],
secret:args[9]
};
var restlet_url=args[4];
var oauth=OAuth({
consumer:consumer,
signature_method:'HMAC-SHA256',
hash_function(base_string,key){
return crypto.createHmac('sha256',key).update(base_string).digest('base64');
}
});
var request_data={
url:restlet_url,
method:args[5],
};
var authorization=oauth.authorize(request_data,token);
var header=oauth.toHeader(authorization);
header.Authorization+=', realm="'+accountID+'"';
header['content-type']='application/json';
request({
url:request_data.url,
method:request_data.method,
headers:header,
json:{message:"this is the payload"}
},function(error,response,body){
if(error){
console.log(error);
}else{
console.log(body);
}
fs.writeFile(outputFile,body,function(err){
if(err){return err;}
});
});
Chame o Arquivo Node.js em um Script¶
Para usar o arquivo Node.js criado na etapa anterior, configure um Script Jitterbit que defina variáveis TBA e chame o arquivo Node.js usando o plug-in RunCommand.
-
No Design Studio, crie um novo Jitterbit Script como um item de projeto.
-
Dentro do script, cole o conteúdo abaixo no Script Jitterbit. Neste exemplo, este script é nomeado
01-Call_Node.js_File
.Nota
Este script usa várias variáveis do projeto que são predefinidos no exemplo para definir os valores necessários para TBA e fornecer o local do arquivo local do arquivo Node.js e a resposta RESTlet. Use essas variáveis ou forneça os valores diretamente obtidos ao ativar o TBA no NetSuite.
01-Call_Node.js_File<trans> $nsAccountID=$NS_OrgID; $RESTletURL='https://'+$nsAccountID+'.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=999999&deploy=1'; $httpMethod='GET'; $tokenKey=$NS_tokenKey; $tokenSecret=$NS_tokenSecret; $consumerKey=$NS_consumerKey; $consumerSecret=$NS_consumerSecret; $nodeRESTletFile=$NS_RESTlet_Node_File; $nodeResponseFile=$NS_RESTlet_Node_Response; $Command='node'; $Arguments=$nodeRESTletFile // arg[1] +" "+$nodeResponseFile // arg[2] +" "+$nsAccountID // arg[3] +" "+$RESTletURL // arg[4] +" "+$httpMethod // arg[5] +" "+$tokenKey // arg[6] +" "+$tokenSecret // arg[7] +" "+$consumerKey // arg[8] +" "+$consumerSecret; // arg[9] $response=RunPlugin("<TAG>plugin:http://www.jitterbit.com/plugins/pipeline/user/RunCommand</TAG>"); if($response==1, WriteToOperationLog('success'); RunOperation("<TAG>Operations/NS_Node_RESTlet_TBA/02-Process_RESTlet_Response</TAG>",true); ); </trans>
-
Crie uma operação de script e coloque o Jitterbit Script dentro dela. Neste exemplo, a operação é chamada
01-Call_Node.js_File
. -
Para verificar se você se conectou com sucesso ao NetSuite, teste a operação para garantir que você receba algo de volta do RESTlet.
Processe a Resposta RESTlet¶
Agora que a chamada para o NetSuite está configurada, você pode prosseguir com a configuração do restante do projeto usando a resposta recebida da chamada.
-
Crie uma fonte de arquivo local com a localização em seu Agente Privado onde você especificou para que a resposta seja escrita.
-
Crie uma operação de transformação que use a fonte de arquivo local que você acabou de criar contendo a resposta do NetSuite. Neste exemplo, a operação é chamada
02-Process_RESTlet_Response
. A configuração da operação deve ser semelhante à abaixo. -
Na transformação, você pode usar a resposta NetSuite como quiser, completando o mapeamento como de costume.
Solução de Problemas¶
Se a chamada Node.js não parece estar funcionando a partir do Harmony, ou se os arquivos não estão sendo gravados no Agente, pode ser necessário ajustar as permissões da pasta com a chamada e resposta do NetSuite. Um teste simples é fornecer acesso total a todos e testar a operação novamente. Se isso resolver o problema, você precisará ajustar as permissões do diretório para permitir que o usuário/grupo Jitterbit acesse ler e gravar na pasta criada.
Se o plug-in RunCommand retornar erros, verifique se você preencheu todas as variáveis do projeto com as informações necessárias do NetSuite.