Use o NetSuite TBA chamando um RESTlet de uma fonte de arquivo local no Jitterbit Design Studio
Introdução
Esta página descreve como usar a autenticação baseada em token (TBA) do NetSuite chamando um RESTlet de uma fonte de arquivo local no Harmony. Antes de configurar o TBA no Harmony, veja as recomendações do Jitterbit para habilitar o TBA no NetSuite.
Para chamar um RESTlet para autenticação com o NetSuite TBA usando uma fonte de arquivo local, estas etapas são recomendadas, conforme abordado nesta página:
- Associe o plugin RunCommand
- Instalar Node.js
- Criar 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 na sua conta NetSuite.
-
Você deve estar usando o 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 agente privado Jitterbit (Linux ou Windows) e ter o Node.js e o npm instalados (abordados nas instruções abaixo).
Aviso
Este método não está disponível para uso com agentes de nuvem, pois requer o uso de arquivos locais e a capacidade de executar um comando onde o arquivo está localizado.
Associar o plugin RunCommand
O uso do Runcommand é necessário para executar um arquivo Node.js que será criado mais tarde. Para usar este plugin, você deve primeiro associá-lo ao seu grupo de agentes privados. Isso tornará o plugin disponível em todos os agentes privados dentro do grupo de agentes privados.
Para associar o plugin:
- Faça login no portal Harmony e vá para o Management Console. Em seguida, use o menu no canto superior esquerdo para navegar até Customizations > Plug-ins.
- Na tabela, localize a linha "Jitterbit - Executar comando". Na extrema direita, use o menu suspenso Ação para selecionar Associar 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 plugins está disponível em Personalizações > Plug-ins.
Instalar Node.js
O 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 do Node.js, também é necessário e geralmente é incluído com o Node.js.
Nesta etapa, verifique se o Node.js e o npm estão instalados em seus agentes privados e, caso contrário, instale-os.
Nota
O Ubuntu 18.04 é usado como exemplo abaixo, embora outros sistemas Linux e Windows suportados onde seus agentes privados são executados também possam ser usados.
-
Verifique se o Node.js está instalado.
$ node -v
-
Verifique se o npm está instalado.
$ npm -v
-
Se nenhum dos comandos 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 mais tarde como o local da chamada e resposta do NetSuite. Isso pode ser alterado para qualquer local desejado e precisará ser fornecido mais tarde no seu projeto Harmony.
$ mkdir -p /opt/Jitterbit_projects/TBA_RESTlet/
-
Navegue até o novo diretório.
$ cd /opt/Jitterbit_projects/TBA_RESTlet/
-
Instale estes pacotes Node.js necessários.
$ npm install request $ npm install oauth-1.0a@1.0.1
Crie 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 Jitterbit Script que defina variáveis TBA e chame o arquivo Node.js usando o plugin RunCommand.
-
No Design Studio, crie um novo Jitterbit Script como um item de projeto.
-
Dentro do script, cole o conteúdo abaixo no Jitterbit Script. Neste exemplo, este script é chamado
01-Call_Node.js_File
.Nota
Este script usa várias variáveis de 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 valores diretamente conforme obtidos ao habilitar 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.
Processar a resposta RESTlet
Agora que a chamada para o NetSuite foi configurada, você pode prosseguir com a configuração do restante do seu projeto usando a resposta que receber da chamada.
-
Crie uma fonte de arquivo local com o local em seu agente particular onde você especificou que a resposta deveria ser 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 à mostrada abaixo. -
Na transformação, você pode usar a resposta do NetSuite como quiser, concluindo o mapeamento normalmente.
Solução de problemas
Se a chamada do Node.js não parece estar funcionando no Harmony, ou se os arquivos não estão gravando no agente, talvez seja 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 do Jitterbit acesse para ler e gravar na pasta criada.
Se o plugin RunCommand retornar erros, certifique-se de ter preenchido todas as variáveis do projeto com as informações necessárias do NetSuite.