Zum Inhalt springen

Verwenden Sie NetSuite TBA, indem Sie ein RESTlet aus einer lokalen Dateiquelle in Jitterbit Design Studio aufrufen

Einführung

Auf dieser Seite wird beschrieben, wie Sie die tokenbasierte Authentifizierung (TBA) von NetSuite durch den Aufruf eines RESTlets aus einer lokalen Dateiquelle verwenden in Harmony. Bevor Sie TBA in Harmony konfigurieren, lesen Sie die Empfehlungen von Jitterbit zum Aktivieren von TBA in NetSuite.

Um ein RESTlet zur Authentifizierung mit NetSuite TBA unter Verwendung einer lokalen Dateiquelle aufzurufen, werden die folgenden Schritte empfohlen, wie auf dieser Seite beschrieben:

  1. Verknüpfen Sie das RunCommand-Plugin
  2. Node.js installieren
  3. Erstellen Sie die Node.js-Datei
  4. Rufen Sie die Node.js-Datei in einem Script auf
  5. RESTlet-Antwort verarbeiten
  6. Fehlerbehebung

Voraussetzungen

Um NetSuite TBA durch Aufrufen eines RESTlets aus einer lokalen Dateiquelle in Harmony zu verwenden, müssen diese Kriterien erfüllt sein:

  1. Sie müssen über die entsprechende Rolle für Ihr NetSuite-Konto verfügen.

  2. Sie müssen SuiteTalk Version 2015.2 oder höher verwenden.

  3. Sie müssen TBA für Ihr NetSuite-Konto aktiviert haben.

    Tipp

    Weitere Informationen finden Sie in der NetSuite Dokumentation unter Erste Schritte mit der tokenbasierten Authentifizierung (Anmeldung bei NetSuite erforderlich).

  4. Sie müssen einen privaten Jitterbit-Agenten (Linux oder Windows) verwenden und Node.js und npm installiert haben (siehe Anweisungen unten).

    Warnung

    Diese Methode ist für die Verwendung mit Cloud-Agenten nicht verfügbar, da hierfür lokale Dateien verwendet werden müssen und ein Befehl dort ausgeführt werden muss, wo sich die Datei befindet.

Verknüpfen Sie das RunCommand-Plugin

Die Verwendung des Runcommand-Plugin ist erforderlich, um eine später erstellte Node.js-Datei auszuführen. Um dieses Plugin verwenden zu können, müssen Sie es zunächst Ihrer privaten Agentengruppe zuordnen. Dadurch wird das Plugin auf allen privaten Agenten innerhalb der privaten Agentengruppe verfügbar.

So verknüpfen Sie das Plugin:

  1. Melden Sie sich beim Harmony-Portal an und gehen Sie zur Management Console. Navigieren Sie dann über das Menü oben links zu Anpassungen > Plug-ins.
  2. Suchen Sie in der Tabelle nach der Zeile „Jitterbit - Befehl ausführen“. Wählen Sie ganz rechts im Dropdown-Menü Aktion die Option Agentengruppe zuordnen aus.
  3. Wählen Sie im Popup Ihre private Agentengruppe aus und klicken Sie auf Speichern.

Tipp

Eine ausführliche Dokumentation zum Verknüpfen von Plugins finden Sie unter Anpassungen > Plugins.

Installieren Sie Node.js

Node.js muss installiert sein, um eine später erstellte Datei zum Aufrufen des RESTlets von Harmony ausführen zu können. Das npm-Programm, das zur Verwaltung von Node.js-Paketen verwendet wird, wird ebenfalls benötigt und ist normalerweise in Node.js enthalten.

Überprüfen Sie in diesem Schritt, ob Node.js und npm auf Ihrem/Ihren privaten Agenten installiert sind, und installieren Sie sie, wenn nicht.

Notiz

Ubuntu 18.04 wird unten als Beispiel verwendet, obwohl auch andere unterstützte Linux und Windows-Systeme verwendet werden können, auf denen Ihre privaten Agenten ausgeführt werden.

  1. Überprüfen Sie, ob Node.js installiert ist.

    $ node -v
    
  2. Überprüfen Sie, ob npm installiert ist.

    $ npm -v
    
  3. Wenn einer der Befehle keine Versionsnummer liefert, verwenden Sie diese Befehle, um die benötigte Anwendung zu installieren:

    $ sudo apt install nodejs
    $ sudo apt install npm
    
  4. Erstellen Sie ein neues Verzeichnis, das später als Speicherort für den NetSuite-Anruf und die NetSuite-Antwort verwendet wird. Dieser kann in jeden gewünschten Speicherort geändert werden und muss später in Ihrem Harmony-Projekt angegeben werden.

    $ mkdir -p /opt/Jitterbit_projects/TBA_RESTlet/
    
  5. Navigieren Sie zum neuen Verzeichnis.

    $ cd /opt/Jitterbit_projects/TBA_RESTlet/
    
  6. Installieren Sie diese erforderlichen Node.js-Pakete.

    $ npm install request
    $ npm install oauth-1.0a@1.0.1
    

Erstellen der Node.js-Datei

Dies ist die Datei, die Sie benötigen, um das RESTlet von Harmony aufzurufen.

In diesem Schritt erstellen Sie ein neues JavaScript außerhalb von Harmony. Um beispielsweise eine neue Datei in Ubuntu 18.04 zu erstellen, verwenden Sie den Namen request.js:

$ nano request.js

Fügen Sie in das neue JavaScript den unten angegebenen Inhalt ein:

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;}
  });
});

Rufen Sie die Node.js-Datei in einem Script auf

Um die im vorherigen Schritt erstellte Node.js-Datei zu verwenden, richten Sie ein Jitterbit Script ein, das TBA-Variablen festlegt und die Node.js-Datei mit dem RunCommand-Plugin aufruft.

  1. Erstellen Sie in Design Studio ein neues Jitterbit Script als Projektelement.

  2. Fügen Sie innerhalb des Script den folgenden Inhalt in das Jitterbit Script ein. In diesem Beispiel heißt das Script 01-Call_Node.js_File.

    Notiz

    Dieses Script verwendet mehrere Projektvariablen, die im Beispiel vordefiniert sind, um die für TBA benötigten Werte festzulegen und den lokalen Dateispeicherort der Node.js-Datei und der RESTlet-Antwort anzugeben. Verwenden Sie diese Variablen oder geben Sie die Werte direkt an, wie sie beim Aktivieren von TBA in NetSuite erhalten wurden.

    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. Erstellen Operation und platzieren Sie das Jitterbit Script darin. In diesem Beispiel heißt die Operation 01-Call_Node.js_File.

  4. Um zu überprüfen, ob die Verbindung zu NetSuite erfolgreich war, testen Sie den Operation, um sicherzustellen, dass Sie etwas vom RESTlet zurückerhalten.

Verarbeiten der RESTlet-Antwort

Nachdem der Anruf bei NetSuite eingerichtet ist, können Sie mithilfe der Antwort, die Sie auf den Anruf erhalten, mit der Einrichtung des restlichen Projekts fortfahren.

  1. Erstellen Sie eine lokale Dateiquelle durch den Speicherort auf Ihrem privaten Agenten, an dem Sie die Antwort angegeben haben.

  2. Erstellen Sie eine Transformation, die die soeben erstellte lokale Dateiquelle verwendet, die die Antwort von NetSuite enthält. In diesem Beispiel heißt die Operation 02-Process_RESTlet_Response. Die Einrichtung des Operation sollte ungefähr wie unten aussehen.

    Anhang

  3. In der Transformation können Sie die NetSuite-Antwort dann beliebig verwenden und die Zuordnung wie gewohnt abschließen.

Fehlerbehebung

Wenn der Node.js-Aufruf von Harmony aus nicht zu funktionieren scheint oder die Dateien nicht auf den Agenten geschrieben werden, müssen Sie möglicherweise die Berechtigungen des Ordners mit dem NetSuite-Aufruf und der NetSuite-Antwort anpassen. Ein einfacher Test besteht darin, allen Benutzern vollen Zugriff zu gewähren und den Operation erneut zu testen. Wenn das Problem dadurch gelöst wird, müssen Sie die Verzeichnisberechtigungen anpassen, um dem Jitterbit-Benutzer/der Jitterbit-Gruppe Lese- und Schreibzugriff im erstellten Ordner zu gewähren.

Wenn das RunCommand-Plugin Fehler zurückgibt, stellen Sie sicher, dass Sie alle Projektvariablen mit den erforderlichen NetSuite Informationen ausgefüllt haben.