Ir para o conteúdo

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:

  1. Associe o plugin RunCommand
  2. Instalar Node.js
  3. Criar o arquivo Node.js
  4. Chame o arquivo Node.js em um script
  5. Processar a resposta RESTlet
  6. 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:

  1. Você deve ter a papel de permissões apropriada na sua conta NetSuite.

  2. Você deve estar usando o SuiteTalk versão 2015.2 ou superior.

  3. 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).

  4. 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:

  1. 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.
  2. Na tabela, localize a linha "Jitterbit - Executar comando". Na extrema direita, use o menu suspenso Ação para selecionar Associar Grupo de agentes.
  3. 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.

  1. Verifique se o Node.js está instalado.

    $ node -v
    
  2. Verifique se o npm está instalado.

    $ npm -v
    
  3. 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
    
  4. 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/
    
  5. Navegue até o novo diretório.

    $ cd /opt/Jitterbit_projects/TBA_RESTlet/
    
  6. 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:

request.js
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.

  1. No Design Studio, crie um novo Jitterbit Script como um item de projeto.

  2. 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>
    
  3. Crie uma operação de script e coloque o Jitterbit Script dentro dela. Neste exemplo, a operação é chamada 01-Call_Node.js_File.

  4. 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.

  1. Crie uma fonte de arquivo local com o local em seu agente particular onde você especificou que a resposta deveria ser escrita.

  2. 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.

    anexo

  3. 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.