Zum Inhalt springen

Erstellung von Citizen Integrator-Rezepten für Jitterbit Design Studio

Einführung

Ein Citizen Integrator-Rezept ist eine wiederverwendbare Integrationsvorlage, die eine schrittweise Anleitung durch Citizen Integrator bietet, die über das Harmony-Portal verfügbar ist. Citizen Integrator-Rezepte können von Mitgliedern einer Harmony-Organisation verwendet werden, damit sie eine Design Studio Integration für einen spezifischen Anwendungsfall einfach konfigurieren können.

Dieses Dokument behandelt die manuelle Erstellung von Citizen Integrator-Rezepten. Rezepte können auch über die Benutzeroberfläche des Citizen Integrators erstellt werden. Siehe Citizen Integrator - Rezept generieren oder bearbeiten für Details.

Ein Citizen Integrator-Rezept besteht aus zwei Teilen:

  • Einem Design Studio Jitterpak (Dateiendung .jpk oder .JPK).
  • Einer Citizen Integrator-Rezept-Metadaten-JSON-Datei (Dateiendung .json oder .JSON), die die Schritte bereitstellt, die ein Benutzer durchläuft, um die Integration zu konfigurieren.

Hier ist eine Zusammenfassung der Schritte, die erforderlich sind, um ein Rezept zu erstellen, das dann über die Weboberfläche des Citizen Integrators verfügbar gemacht werden kann:

Schritt 1: Erstellen eines Jitterpaks

Erstellen Sie ein Jitterpak (JPK) mit Jitterbit Design Studio. Das Jitterpak wird als Grundlage für das Rezept verwendet. Siehe Erstellen von Jitterpaks für Rezepte.

Schritt 2: Erstellen der Rezeptmetadaten

Erstellen Sie eine Rezeptmetadatendatei (eine JSON-Datei). Die Rezeptmetadaten umfassen die Schritte, die Benutzer über die Weboberfläche ausführen, und verknüpfen die vom Benutzer bereitgestellten Informationen mit dem Jitterpak. Siehe Erstellen von Rezeptmetadaten für bewährte Praktiken, eine Beispielanleitung, eine Beschreibung der Rezeptschrittarten und die Dokumentation der Komponenten einer Rezeptmetadatendatei.

Schritt 3: Validieren der Rezeptmetadaten

Validieren Sie Ihre Rezeptmetadatendatei mit jbcli. Siehe Validieren eines Rezepts der Jitterbit-Befehlszeilenschnittstelle.

Schritt 4: Laden Sie die Jitterpak- und Rezeptmetadaten hoch

Laden Sie Ihre Jitterpak- und Rezeptmetadatendatei in Ihr Rezept-Repository hoch. Siehe Laden Sie ein neues Rezept und Jitterpak hoch der Jitterbit-Befehlszeilenschnittstelle. Sie können Rezepte auch über die Weboberfläche des Citizen Integrators hochladen, wie auf den Seiten Citizen Integrator - Dashboard oder Citizen Integrator - Meine Rezepte beschrieben.

Schritt 5: Konfigurieren und Bereitstellen des Rezepts

Ihr neues Rezept steht jetzt Mitgliedern Ihrer Organisation über die Weboberfläche des Citizen Integrators zur Verfügung. Siehe Citizen Integrator - Rezept konfigurieren für Benutzeranweisungen zur Konfiguration und Bereitstellung von Rezepten.

Jitterpaks für Rezepte erstellen

Beim Erstellen eines neuen Citizen Integrator-Rezepts empfehlen wir, zunächst ein Design Studio Jitterpak zu erstellen, das die Projektstruktur für Ihre Rezeptvorlage enthält.

Jitterpaks sind nicht spezifisch für die Rezeptfunktionalität; sie sind eine Kernfunktion der vollständigen Design Studio-Anwendung. Benutzer, die neue Rezepte erstellen möchten, sollten bereits mit Design Studio vertraut sein. Für weitere Informationen verweisen Sie bitte auf die Materialien unter Design Studio und Jitterpaks.

Hinweis

Citizen Integrator-Rezepte werden aus Design Studio Projekten erstellt. Für Integration Studio verwenden Sie stattdessen Integrationsrezepte oder Prozessvorlagen, die im Jitterbit Marketplace verfügbar sind.

Jitterpak-Best Practices

Beim Erstellen eines Jitterpaks zur Verwendung mit Citizen Integrator-Rezepten empfehlen wir diese Best Practices für die Rezeptentwicklung:

  • Definieren Sie Ihren typischen Anwendungsfall

    Bevor Sie mit einem Jitterpak oder Rezept beginnen, sollten Sie eine gute Vorstellung davon haben, was Ihre Benutzer durch die Verwendung des Rezepts erreichen können. Bedenken Sie, dass Sie bei Bedarf mehrere Rezepte erstellen können. Der Anwendungsfall hilft Ihnen zu entscheiden, was Sie in Ihr Jitterpak einbauen und welche Schritte ein Benutzer über die Citizen Integrator-Oberfläche ausfüllen soll.

  • Referenzbeispiele zur Unterstützung beim Einstieg

    Schauen Sie sich unsere öffentlichen Jitterpaks zur Referenz an, oder wenn Sie eines finden, das Ihrem Anwendungsfall ähnlich ist, möchten Sie vielleicht sogar damit beginnen. Um eines der Jitterpaks, die für unsere öffentlichen Rezepte erstellt wurden, herunterzuladen, folgen Sie Get a Specific Recipe and Save the Jitterpak Locally unter Jitterbit Command Line Interface. Oder beziehen Sie sich auf unsere Jitterpak-Bibliothek.

  • Erstellen Sie Projektvariablen, wo immer möglich

    Projektvariablen sind entscheidend für die Erstellung von Rezepten, die von einem Benutzer über die Weboberfläche des Citizen Integrators einfach ausgefüllt werden können. Denken Sie an Projektvariablen als Felder mit spezifischen Informationen, die Sie von Benutzern verlangen möchten, wenn sie Ihr Rezept verwenden. Erstellen Sie diese Elemente dann als Projektvariablen in Ihrem Jitterpak. Zum Beispiel Verbindungsinformationen für neue Endpunkte.

  • Namespace-Projektvariablen zur späteren Referenz

    Wenn Sie Projektvariablen erstellen, ist es eine gute Praxis, sie zu namespace. Zum Beispiel könnte eine Projektvariable für den Host "db.host" genannt werden, um anzuzeigen, dass sie sich auf einen Datenbank-Host bezieht. Dies erleichtert das Lesen der Projektvariablen beim Erstellen Ihrer Rezeptmetadaten.

  • Platzieren Sie Operationen auf der Root-Ebene, wenn Sie sie über einen Rezeptschritt ausführen möchten

    Jede Operation, die Sie über einen RunOperation-Schritt in Ihrem Rezept ausführen möchten, muss auf der Root-Ebene des Operationsordners innerhalb des Design Studios platziert werden. Das heißt, wenn Sie Operationen in Unterordnern unter Ihrem Operationsbaum haben, werden diese nicht ausgeführt, wenn sie über einen RunOperation-Schritt exponiert werden. Diese Einschränkung gilt nur für Operationen, die in einem bestimmten Schritt des Rezepts ausgeführt werden. Wenn sich Ihre Operationen in Unterordnern befinden, werden diese weiterhin ausgeführt, wenn das Rezept gespeichert und bereitgestellt wird.

  • Fügen Sie WriteToOperationLog bei Operationen hinzu, die Sie über einen Rezeptschritt ausführen möchten

    Fügen Sie WriteToOperationLog bei Operationen hinzu, die Sie über einen RunOperation-Schritt in Ihrem Rezept ausführen möchten (siehe Protokollierungs- und Fehlerfunktionen). Die WriteToOperationLog-Nachrichten werden im Panel unter dem RunOperation-Button in der Citizen Integrator-Oberfläche angezeigt und geben dem Rezeptbenutzer Feedback zur ausgeführten Operation.

  • Verwenden Sie Projektvariablenwerte zum Testen, entfernen Sie jedoch die Werte beim Exportieren als Jitterpak

    Wo immer Sie Projektvariablen in Ihrem Jitterpak verwenden, stellen Sie sicher, dass Sie beim Exportieren des Jitterpaks keine spezifischen Werte einfügen. Denken Sie daran, dass die Werte normalerweise leer sind, damit sie vom Benutzer beim Konfigurieren des Rezepts ausgefüllt werden können. Es ist immer eine gute Idee, Ihr Design Studio-Projekt mit spezifischen Werten zu testen, aber stellen Sie sicher, dass Sie diese vor dem Export entfernen. Hier sind einige Optionen zum Entfernen von Werten:

    • Alle Werte: Um alle Projektvariablenwerte zu entfernen, deaktivieren Sie beim Exportieren als Jitterpak das Kontrollkästchen "Projektvariablenwerte einbeziehen". Dies ist die Standard- und empfohlene Methode, um Projektvariablenwerte zu entfernen.

    • Einige Werte: Um nur spezifische Projektvariablen zu entfernen, entfernen Sie einfach den Standardwert der Projektvariablen. Diese Option kann geeigneter sein als die oben beschriebene Checkbox, wenn Sie absichtlich einige Projektvariablenwerte beibehalten möchten. Wenn Ihr Rezept beispielsweise privat innerhalb Ihrer Organisation ist, könnten Sie Informationen wie eine URL einfügen, die sich nicht pro Benutzer ändert, der das Rezept ausfüllt.

  • Beachten Sie die integrierten Zeitpläne

    Wenn Sie einen Zeitplan innerhalb des Jitterpaks einfügen, beachten Sie, wann die Operation geplant ist, und dokumentieren Sie dies in den Rezeptmetadaten. Andernfalls sind die Benutzer sich des Zeitplans, der im Jitterpak integriert ist, nicht bewusst. Zeitpläne können derzeit nicht innerhalb eines Rezepts konfiguriert werden.

Erstellen Sie Rezeptmetadaten

Sie können beginnen, die Metadaten für Citizen Integrator-Rezepte zu erstellen, während Sie Ihr Jitterpak erstellen, oder die Metadaten erstellen, wenn Sie fertig sind. Die Rezeptmetadaten bieten zwei Hauptfunktionen:

  1. Definiert die Schritte, die Benutzer durchlaufen müssen, um das Rezept über die Benutzeroberfläche des Citizen Integrators zu konfigurieren.
  2. Verbindet alle benutzereingereichten Werte mit dem zugehörigen Jitterpak des Rezepts, sodass die neu konfigurierten Operationen wie erwartet über Jitterbit ausgeführt werden.

Dieser Abschnitt ist so organisiert, dass er eine Liste von Best Practices für die Erstellung von Rezepten, eine Beispielanleitung zur Erstellung eines Rezepts, die Arten von Schritten, die im Rezept verwendet werden können, und schließlich eine umfassende Liste aller möglichen Teile der Rezeptmetadatendatei bietet.

Best Practices für Metadaten

Bei der Erstellung Ihrer Metadatendatei für Citizen Integrator-Rezepte sind diese Best Practices hilfreich für diejenigen, die neu in der Erstellung von Rezepten sind.

  • Beziehen Sie sich auf Beispiele, um die Benutzeroberfläche des Citizen Integrators mit den Rezeptmetadaten zu vergleichen

    Werfen Sie einen Blick darauf, wie unsere öffentlichen Rezepte strukturiert sind, und vergleichen Sie, was Sie in der Benutzeroberfläche des Citizen Integrators sehen, mit der tatsächlichen Metadatendatei für dieses Rezept. Wenn Sie eines finden, das Ihrem Anwendungsfall ähnlich ist, möchten Sie vielleicht sogar damit beginnen.

  • Erstellen Sie Ihr Rezept in Iterationen

    Erwarten Sie, dass Sie Anpassungen an Ihrem Jitterpak vornehmen müssen, während Sie an Ihren Rezeptmetadaten arbeiten, und umgekehrt. Sie können immer eine erste Version hochladen, überprüfen, wie sie in der Benutzeroberfläche des Citizen Integrators angezeigt wird und funktioniert, und dann Ihre Rezeptdateien von der Seite Citizen Integrator - Meine Rezepte oder durch Befolgen von Ein neues Rezept und Jitterpak hochladen und Ein bestehendes Rezept und Jitterpak aktualisieren der Jitterbit-Befehlszeilenschnittstelle weiter aktualisieren.

  • Einführung und Überprüfungsschritte in die Rezeptmetadaten einfügen

    Es wird empfohlen, mit einem Einführungsschritt zu beginnen und mit einem Überprüfungsschritt zu enden, um die Rezepte konsistent zu halten. Diese Abschnitte verwenden beide den Typ org.jitterbit.integration.data.entity.Description (beschrieben unter Schrittarten).

    • Die Einführung sollte verwendet werden, um zu erklären, wofür das Rezept verwendet wird, etwaige Einschränkungen zu beschreiben, Standardfelder aufzulisten und/oder Informationen zu Voraussetzungen bereitzustellen, die jemand, der das Rezept verwendet, beachten sollte.

    • Der Überprüfungsschritt sollte zusammenfassen und dem Benutzer das erwartete Verhalten bestätigen, wenn das konfigurierte Rezept bereitgestellt wird. Wenn Sie einen Zeitplan innerhalb des Jitterpaks einfügen, ist der Überprüfungsschritt ein guter Ort, um die Zeit zu dokumentieren, zu der die Operation geplant ist. Denken Sie daran, die Zeitzone anzugeben (UTC ist der Standard innerhalb von Design Studio, aber Sie könnten die Zeit auch in Ihre gewünschte Zeitzone innerhalb von Design Studio umrechnen und diese angeben).

  • Namen innerhalb Ihrer Rezeptmetadaten standardisieren

    Standardisieren Sie Ihren Rezeptnamen, Projektnamen, Dateinamen und Verzeichnisstruktur. Dies hilft, unbeabsichtigte Fehler bei der Bezugnahme auf Teile innerhalb des Rezepts zu vermeiden und erleichtert die Verwaltung aller Teile Ihres Rezepts.

  • Für die Migration von Endpunkt zu Endpunkt, Endpunkte richtungsbezogen anordnen

    Bei Migrationen von einem Endpunkt zu einem anderen (z. B. Migration von Salesforce-Konten zu NetSuite-Unternehmen) die Endpunkte richtungsbezogen anordnen:

    • In der JSON-Datei: "name": "Migrate Salesforce Accounts to NetSuite Companies"
    • In der JSON-Datei: "projectName": "salesforce_accounts-to-netsuite_companies"
    • Verzeichnis: salesforce-to-netsuite/accounts-to-companies/
    • Dateinamen: salesforce_accounts-to-netsuite_companies.jpk und salesforce_accounts-to-netsuite_companies.json
  • Für die Endpunktsynchronisierung, Endpunkte alphabetisch anordnen

    Bei der Synchronisierung von zwei Endpunkten (z. B. Synchronisierung von Salesforce-Konten und NetSuite-Unternehmen) die Endpunkte alphabetisch anordnen:

    • In der JSON-Datei: "name": "Synchronize NetSuite Companies and Salesforce Accounts"
    • In der JSON-Datei: "projectName": "netsuite_companies-salesforce_accounts"
    • Verzeichnis: netsuite-salesforce/companies-accounts/
    • Dateinamen: netsuite_companies-salesforce_accounts.jpk und netsuite_companies-salesforce_accounts.json
  • Definieren Sie Projektvariablen am Ende der Rezeptmetadaten

    Alle Projektvariablen, die innerhalb Ihres Jitterpaks verwendet und in den Schritten der Rezeptmetadaten referenziert werden, sollten am Ende Ihrer Rezeptmetadatendatei definiert werden.

  • Verstecken Sie Schritte, die Sie in andere Schritte einbetten möchten

    Sie können ein verstecktes Attribut für einen Schritt angeben, um ihn im Citizen Integrator-Interface auszublenden, aber dann diesen Schritt mit einem Pfad referenzieren, der auf eine Aktion mit "useStepAsRequest" zeigt. Dies ist eine gute Idee, wenn Sie beispielsweise einen Schritt für das Testen von Verbindungsinformationen eingerichtet haben, ihn jedoch als Testverbindungs-Schaltfläche innerhalb eines anderen Schrittes einfügen möchten.

  • Lassen Sie Felder weg, die beim Hochladen der Rezeptmetadaten generiert werden

    Einige Felder in der Rezeptmetadatendatei werden beim Hochladen der Datei nicht angegeben und stattdessen vom System generiert, wenn die Datei hochgeladen wird. Diese Felder befinden sich am Anfang und Ende der Rezeptmetadatendatei.

    • id: Dieses Feld wird ausgefüllt, wenn die Rezeptmetadaten in das Rezept-Repository hochgeladen werden. Nach dem Hochladen können Sie die generierte Rezept-ID mit Alle Rezepte auflisten der Jitterbit-Befehlszeilenschnittstelle herausfinden.
    • guid: Erforderlich Dieses Feld wird ausgefüllt, wenn ein zugehöriges Jitterpak in das Rezept-Repository hochgeladen wird. Die GUID (global eindeutiger Bezeichner) wird mit der des zugehörigen Jitterpaks ausgefüllt. Dieses Feld ist jedoch erforderlich, daher müssen Sie es weiterhin in der Datei angeben. Der tatsächliche Bezeichner wird beim Hochladen aktualisiert.
    • createdAt: Der Unix-Epoch-Zeitstempel in Millisekunden, wann das Rezept erstmals hochgeladen wurde.
    • updatedAt: Der Unix-Epoch-Zeitstempel in Millisekunden, wann das Rezept zuletzt aktualisiert wurde.
    • updatedBy

      • userId: Der Harmony-Benutzername der Person, die das Rezept zuletzt aktualisiert hat.
      • name: Der Name der Person, die das Rezept zuletzt aktualisiert hat.
      • orgName: Der Name der Organisation, zu der die Person gehört, die das Rezept zuletzt aktualisiert hat.
  • orgid: Die ID der Organisation, zu der die Person gehört, die das Rezept hochgeladen hat. Das Rezept gehört dieser Organisation und nur der Rezeptautor oder ein Org-Admin kann das Rezept aktualisieren oder löschen (siehe Citizen Integrator - Meine Rezepte oder die Jitterbit-Befehlszeilenschnittstelle).

  • author

    -   **userId:** Der Harmony-Benutzername der Person, die das Rezept hochgeladen hat.
    -   **name:** Der Name der Person, die das Rezept hochgeladen hat.
    -   **orgName:** Der Name der Organisation, zu der die Person gehört, die das Rezept hochgeladen hat.
    

    Nach dem Hochladen eines Rezepts können Sie die für diese Felder generierten Werte sehen, wenn Sie Ein bestimmtes Rezept abrufen verwenden, um die Rezeptmetadaten zurückzugeben (siehe die Jitterbit-Befehlszeilenschnittstelle).

  • Verwenden Sie HTML für Rich Text

    Wenn Sie Links, Listen, Fettdruck usw. innerhalb Ihrer Rezeptschritte verwenden möchten, versuchen Sie, HTML zu verwenden. Die meisten Felder, in denen Sie diese verwenden möchten, erlauben die Verwendung von HTML, was Ihnen mehr Kontrolle über das Aussehen und die Funktionalität der Rezeptschritte gibt.

  • Vor dem Hochladen validieren

    Es ist immer eine gute Idee, sicherzustellen, dass Ihre Rezeptmetadaten vor dem Hochladen validiert werden. Tun Sie dies, indem Sie Ein Rezept validieren verwenden (siehe die Jitterbit-Befehlszeilenschnittstelle). Sie sollten keine Rezepte hochladen, die nicht validiert werden, da sie Fehler für Benutzer aufweisen, die versuchen, das Rezept zu konfigurieren.

  • Protokolle zur Fehlersuche überprüfen

    Nachdem Sie Ihr Rezept hochgeladen haben, können Sie es auch testen, indem Sie es über die Benutzeroberfläche des Citizen Integrators konfigurieren und bereitstellen. Vergessen Sie nicht, dass alle gleichen Werkzeuge zur Fehlersuche verfügbar sind, wie sie für jedes andere Jitterbit-Projekt verfügbar sind. Siehe Citizen Integrator - Meine Rezepte oder überprüfen Sie die Betriebsprotokolle, Projekte, Aktivitäten usw. innerhalb der Management-Konsole.

Beispiel-Walkthrough

Dieser Abschnitt bietet eine Anleitung zur Erstellung eines Rezepts für die Verwendung mit der Citizen Integrator-Weboberfläche. Dieses Beispiel verwendet einige der häufigeren Elemente von Rezepten, die Sie normalerweise antreffen könnten. Eine vollständige Liste der Optionen, die Sie in Rezepten einfügen können, finden Sie unter Rezeptmetadaten-Definitionen.

In diesem Beispiel erstellen wir ein Rezept, das Konten von Salesforce synchronisiert und sie in Zendesk aktualisiert. Sie können dieser Demonstration folgen, indem Sie das neueste Rezept für Salesforce zu Zendesk herunterladen, indem Sie Ein bestimmtes Rezept abrufen und Das Jitterpak lokal speichern der Jitterbit-Befehlszeilenschnittstelle folgen.

Schritt 1: Projekt im Design Studio erstellen

Der erste Schritt besteht darin, Ihr Projekt im Design Studio einzurichten. Beim Erstellen Ihres Projekts sollten Sie sich auf die oben genannten Jitterpak-Best Practices beziehen, die spezifisch für die Erstellung von Jitterpaks zur Verwendung mit Rezepten sind.

Diese Komponenten des Jitterpaks werden für das Rezept von Salesforce zu Zendesk verwendet:

  • Operationen: Dieses Jitterpak ist so eingerichtet, dass beim Ausführen der RunNow-Operation Jitterbit Salesforce abfragt, um Informationen über die Fälle zu erhalten (Fälle abfragen), und dann diese Salesforce-Fälle verwendet, um Tickets in Zendesk zu aktualisieren und einzufügen (Zendesk-Tickets erstellen). Wenn Sie das Jitterpak heruntergeladen haben, um mitzufolgen, können Sie auf jedes Element des Diagramms klicken, um mehr über die Komponenten der Operationen zu erfahren.

    image

  • Transformationen: Jede Transformation wurde so zugeordnet, dass die entsprechenden Standardfelder im Rezept enthalten sind. Viele Rezepte beinhalten die Zuordnung von Standardfeldern von einem Endpunkt zu einem anderen. In diesem Beispiel verwendet die Salesforce-Abfrage nur die entsprechenden Felder für dieses spezifische Rezept (d.h. Fallnummer, Ursprung, Betreff, bereitgestellte E-Mail, bereitgestellter Name). Wenn Sie Ihr eigenes Rezept für die Verwendung in einer Organisation erstellen, die benutzerdefinierte Salesforce-Felder verwendet, könnten Sie auch wählen, diese in Ihr Rezept zu integrieren, solange die Zuordnung hier definiert ist.

    image

  • Quellen & Ziele: Definieren Sie alle Quellen und Ziele, wie Sie es normalerweise für ein Design Studio-Projekt tun würden. Dieses spezielle Rezept verwendet temporären Speicher für Salesforce-Konten und Salesforce-Fälle sowie HTTP-Ziele als Verbindungsparameter für Zendesk.

    image

  • Webdienstmethoden & gehostete HTTP-Endpunkte: Dieses Jitterpak verwendet keine dieser Komponenten, aber Sie können sie genauso konfigurieren, wie Sie es für jedes andere Design Studio-Projekt tun würden.

  • Zeitpläne: Dieses Jitterpak enthält keinen Zeitplan, aber Sie können hier einen hinzufügen, wenn Sie beispielsweise möchten, dass die Operation täglich ausgeführt wird. Da der Zeitplan nicht vom Benutzer des Rezepts konfiguriert werden kann, sollten Sie sicherstellen, dass Sie in einem Textfeld des Rezepts vermerken, wann Ihre Operation geplant ist. Ein typischer Ort, um dies hinzuzufügen, ist der Überprüfungs-Schritt.

  • E-Mail-Nachrichten: Dieses Jitterpak enthält keine E-Mail-Nachrichten, aber Sie können wählen, diese mithilfe von Projektvariablen einzurichten, wenn Sie möchten, dass Ihr Rezept E-Mail-Benachrichtigungen generiert.

  • Skripte: In diesem Jitterpak werden Skripte verwendet, um Nachrichten in das Protokoll zu schreiben, einschließlich spezifischer Erfolgs- und Fehlermeldungen.

  • Projektvariablen: Projektvariablen sind entscheidend für die Erstellung konfigurierbarer Rezepte. Typischerweise werden Projektvariablen überall dort verwendet, wo Benutzer während der Rezeptkonfiguration Werte angeben sollen. In diesem Jitterpak haben wir Projektvariablen für Salesforce- und Zendesk-Anmeldeinformationen. Denken Sie daran, Ihr Design Studio-Projekt mit echten Werten zu testen und diese vor dem Export des Jitterpaks zu entfernen.

    image

  • Jitterbit Connect: Da dieses Jitterpak Salesforce verwendet, sind die Verbindungsanmeldeinformationen für die Organisation in diesem Abschnitt enthalten.

    image

  • Connectoren: Dieses Jitterpak verwendet keine Connectoren, aber viele andere öffentliche Rezepte tun dies. Wenn Sie ein neues Rezept mit einem Connector erstellen möchten, kann es eine gute Idee sein, ein anderes Beispiel herunterzuladen, das einen der Connectoren wie Autodesk verwendet.

Schritt 2: Testen Sie das Design Studio-Projekt

Nachdem Ihre Komponenten definiert sind, speichern, bereitstellen und führen Sie Ihr Design Studio-Projekt aus, um sicherzustellen, dass es erfolgreich läuft.

image

Sie können das Betriebsprotokoll auf Fehlermeldungen überprüfen.

Schritt 3: Exportieren Sie das Design Studio-Projekt

Entfernen Sie alle Projektvariablenwerte oder andere Anmeldeinformationen, die Sie in Ihr Rezept einbauen werden, und exportieren Sie Ihr Design Studio-Projekt als Jitterpak.

In diesem Beispiel entfernen wir Projektvariablen und Anmeldeinformationen in der Exportphase. Sie können es vorerst an jedem gewünschten Ort speichern, da Sie das Jitterpak später hochladen werden (siehe Citizen Integrator - Meine Rezepte oder die Jitterbit-Befehlszeilenschnittstelle).

image

Schritt 4: Erstellen Sie Rezeptmetadaten

Jetzt, da Sie ein Jitterpak erstellt haben, können Sie Ihre Rezeptmetadaten anpassen, damit sie mit den Komponenten in Ihrem Jitterpak übereinstimmen.

Beziehen Sie sich auf die Best Practices für Metadaten oben, um Ihre Rezeptmetadatendatei zu erstellen, sowie auf die Schrittarten, wenn Sie ein neues Rezept beginnen. Eine vollständige Liste der Rezeptdefinitionen finden Sie in den Rezeptmetadaten-Definitionen unten zur Referenz.

Die vollständige JSON-Datei, die zur Definition der Rezeptmetadaten von Salesforce zu Zendesk verwendet wird, ist unten angegeben, gefolgt von einer Aufschlüsselung jedes Abschnitts der Rezeptmetadatendatei.

JSON-Metadaten - Salesforce zu Zendesk
{
  "description": "Sync accounts from Salesforce and upsert to Zendesk",
  "name": "Salesforce to Zendesk",
  "guid": "8yg7df8a-b526-4d14-a49d-39090d63a426",
  "projectName": "Salesforce to Zendesk",
  "steps": [
    {
      "name": "Introduction",
      "description": "Sync accounts from Salesforce and upsert them to Zendesk",
      "label": "Introduction",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>This <b>Recipe</b> Syncs accounts from Salesforce and upserts them to Zendesk.</p></div>"
        }
      ]
    },
    {
      "name": "Salesforce Endpoint Project Variables",
      "description": "Set-up the source Salesforce endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.salesforce.username",
          "com.salesforce.password",
          "com.salesforce.token"
        ],
        "action": {
          "name": "test-endpoint-connection",
          "displayName": "Test Connection",
          "useStepAsRequest": "/Source/SalesforceEndpoint"
        }
      }
    },
    {
      "name": "Test Salesforce Connection Information",
      "description": "Test Salesforce endpoint connection information",
      "label": "Source Endpoint (Salesforce)",
      "type": "org.jitterbit.integration.data.entity.SalesforceConnector",
      "hidden": true,
      "path": "/Source/SalesforceEndpoint",
      "properties": [
        {
          "name": "version",
          "defaultValue": "37.0"
        },
        {
          "name": "host",
          "defaultValue": "https://login.salesforce.com"
        },
        {
          "name": "username",
          "defaultValue": "[com.salesforce.username]"
        },
        {
          "name": "password",
          "hidden": false,
          "defaultValue": "[com.salesforce.password]"
        },
        {
          "name": "token",
          "hidden": false,
          "defaultValue": "[com.salesforce.token]"
        },
        {
          "name": "sandbox",
          "defaultValue": "0"
        }
      ]
    },
    {
      "name": "Zendesk Endpoint Project Variables",
      "description": "Set-up the target Zendesk endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.zendesk.username",
          "com.zendesk.password"
        ]
      }
    },
    {
      "name": "RunNow",
      "description": "The Run Now operation runs the integration right now.",
      "label": "RunNow",
      "type": "org.jitterbit.integration.data.entity.RunOperation",
      "hidden": false,
      "path": "/Operations/RunNow",
      "properties": [
        {
          "name": "operationName",
          "defaultValue": "RunNow",
          "description": "Run the recipe to get Salesforce accounts and upsert them to NetSuite right now."
        }
      ]
    },
    {
      "name": "Review",
      "description": "Push this recipe to the cloud",
      "label": "Review",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>When you click <b>Save</b> this recipe will be ran daily at 3am indefinitely</p></div>"
        }
      ]
    }
  ],
  "projectVariables": [
    {
      "name": "com.salesforce.username",
      "displayName": "Salesforce Login",
      "description": "Please provide your Salesforce username or email."
    },
    {
      "name": "com.salesforce.password",
      "displayName": "Salesforce Password",
      "description": "Please provide your Salesforce password.",
      "type": "password"
    },
    {
      "name": "com.salesforce.token",
      "displayName": "Salesforce Security Token",
      "description": "Please provide your Salesforce security token.",
      "type": "password"
    },
    {
      "name": "com.zendesk.username",
      "displayName": "Zendesk Login",
      "description": "Please provide your Zendesk email."
    },
    {
      "name": "com.zendesk.password",
      "displayName": "Zendesk Password",
      "description": "Please provide your Zendesk password.",
      "type": "password"
    }
  ],
}
  • description: Erforderlich

    Dieses Feld sollte eine Beschreibung des Rezepts enthalten.

    "description": "Konten von Salesforce synchronisieren und in Zendesk upserten"
    

  • guid: Erforderlich

    Dieses Feld kann beim ersten Hochladen des Rezepts jeden Wert enthalten; beim Hochladen mit einem zugehörigen Jitterpak wird der Wert durch die GUID (global eindeutiger Bezeichner) des zugehörigen Jitterpak ersetzt.

    "guid": "8yg7df8a-b526-4d14-a49d-39090d63a426"
    

  • name: Erforderlich

    Dieses Feld sollte den Namen des Rezepts enthalten.

    "name": "Salesforce to Zendesk"
    
    Wird als Titel des Rezepts in der Rezeptliste angezeigt:

    image

    Wird als Titel des Rezepts unter den Konfigurationsschritten angezeigt:

    image

  • projectName: Erforderlich

    Dieses Feld sollte mit dem Namen der Jitterpak (JPK)-Datei übereinstimmen.

    "projectName": "Salesforce to Zendesk"
    

  • steps: Erforderlich

    Die Schritte definieren die Konfigurationsschritte in der Citizen Integrator-Oberfläche. Die Schrittattribute, die im Rezept Salesforce to Zendesk verwendet werden, sind unten aufgeführt, gefolgt von einem Vergleich der Citizen Integrator-Oberfläche und den JSON-Metadaten für den Schritt.

    • name: Erforderlich Dieses Feld ist der Name des Schrittes.
    • description: Erforderlich Dieses Feld ist eine Beschreibung des Schrittes.
    • label: Dieses Feld ist ein Label, das verwendet werden kann, um einen Schrittname darzustellen, der sich vom definierten Namen des Schrittes unterscheidet.
    • type: Erforderlich Dieses Feld ist der Typ, der mit diesem Schritt verbunden ist. Siehe Schrittarten für eine Erklärung der verschiedenen Schrittarten.
    • required: Dieser Wert kann auf true oder false gesetzt werden. Wenn true, muss der Rezeptschritt abgeschlossen werden, bevor die Aktionen Testverbindung oder Operation ausführen verwendet werden können.
    • hidden: Dieser Wert kann auf true oder false gesetzt werden. Wenn true, wird der Schritt in der Citizen Integrator-Oberfläche verborgen. Dies kann nützlich sein, wenn Sie Schritte haben, die Sie nicht anzeigen möchten, z. B. für Testverbindungsinformationen. Wenn false, wird der Schritt angezeigt. Der Standardwert ist false, was bedeutet, dass Schritte standardmäßig angezeigt werden.
    • path: Verwenden Sie dies, wenn Sie Schritte ausblenden und in anderen Schritten darauf verweisen möchten. Dieser Wert sollte definiert werden, wenn Sie planen, einen versteckten Schritt in einen anderen Schritt einzubetten. Wenn Sie beispielsweise einen Testverbindungsbutton innerhalb eines Schrittes einfügen möchten, können Sie den Schritt für Testverbindungsinformationen ausblenden und dann in einem anderen Schritt darauf verweisen. Der Weg, wie wir darauf verweisen, besteht darin, einen Pfad zu definieren.
    • properties: Kann nur verwendet werden, wenn projectVariables nicht verwendet werden. Diese umfassen Eigenschaften, die mit dem Schritt verbunden sind. In einem Schritt können entweder Eigenschaften oder projectVariables zugewiesen werden, aber nicht beides gleichzeitig.
      • name: Erforderlich Dieses Feld ist der Name der für diesen Schritt definierten Eigenschaft.
      • defaultValue: Dieses Feld kann einen Standardwert enthalten, der mit der Eigenschaft verbunden ist. Typischerweise wird dies verwendet, um Anweisungen oder Informationen in einen Schritt einzufügen.
      • description: Dieses Feld kann Standardtext enthalten, der im Textfeld angezeigt wird.
    • projectVariables: Kann nur verwendet werden, wenn Eigenschaften nicht verwendet werden. Diese umfassen eine Liste von Projektvariablen, die zusammengefasst werden und konfigurierbare Entitäten darstellen. In einem Schritt können entweder projectVariables oder Eigenschaften zugewiesen werden, aber nicht beides gleichzeitig.
      • names: Erforderlich Dieses Feld enthält eine Liste aller Projektvariablen, die in diesem Schritt verwendet werden.
      • action: Dieses Feld definiert alle Aktionen. Typischerweise werden diese als Schaltflächen innerhalb eines Schrittes verwendet, um Aktionen auszuführen, die als versteckte Schritte definiert sein können.
        • name: Erforderlich Dieses Feld ist der Name der Aktion.
        • displayName: Dieses Feld kann verwendet werden, wenn Sie einen anderen Namen anzeigen möchten, der in der Citizen Integrator-Oberfläche angezeigt wird.
        • useStepAsRequest: Erforderlich Dieses Feld wird verwendet, um den Pfad zu Eigenschaften bereitzustellen, die in einem anderen Schritt definiert sind, der nicht gerendert wird. Verwenden Sie denselben Wert, den Sie für "path" im versteckten Schritt definiert haben.

    Schritt 1: Einführung

    image

    JSON-Metadaten für Schritt 1
    {
      "name": "Introduction",
      "description": "Sync accounts from Salesforce and upsert them to Zendesk",
      "label": "Introduction",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>This <b>Recipe</b> Syncs accounts from Salesforce and upserts them to Zendesk.</p></div>"
        }
      ]
    },
    

    Schritt 2: Salesforce-Endpunkt-Projektvariablen

    image

    JSON-Metadaten für Schritt 2
    {
      "name": "Salesforce Endpoint Project Variables",
      "description": "Set-up the source Salesforce endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.salesforce.username",
          "com.salesforce.password",
          "com.salesforce.token"
        ],
        "action": {
          "name": "test-endpoint-connection",
          "displayName": "Test Connection",
          "useStepAsRequest": "/Source/SalesforceEndpoint"
        }
      }
    },
    

    Versteckter Schritt: Test Salesforce-Verbindungsinformationen

    JSON-Metadaten für den versteckten Schritt
    {
      "name": "Test Salesforce Connection Information",
      "description": "Test Salesforce endpoint connection information",
      "label": "Source Endpoint (Salesforce)",
      "type": "org.jitterbit.integration.data.entity.SalesforceConnector",
      "hidden": true,
      "path": "/Source/SalesforceEndpoint",
      "properties": [
        {
          "name": "version",
          "defaultValue": "37.0"
        },
        {
          "name": "host",
          "defaultValue": "https://login.salesforce.com"
        },
        {
          "name": "username",
          "defaultValue": "[com.salesforce.username]"
        },
        {
          "name": "password",
          "hidden": false,
          "defaultValue": "[com.salesforce.password]"
        },
        {
          "name": "token",
          "hidden": false,
          "defaultValue": "[com.salesforce.token]"
        },
        {
          "name": "sandbox",
          "defaultValue": "0"
        }
      ]
    },
    

    Schritt 3: Zendesk-Endpunkt-Projektvariablen

    image

    JSON-Metadaten für Schritt 3
    {
      "name": "Zendesk Endpoint Project Variables",
      "description": "Set-up the target Zendesk endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.zendesk.username",
          "com.zendesk.password"
        ]
      }
    },
    

    Schritt 4: RunNow

    image

    JSON-Metadaten für Schritt 4
    {
      "name": "RunNow",
      "description": "The Run Now operation runs the integration right now.",
      "label": "RunNow",
      "type": "org.jitterbit.integration.data.entity.RunOperation",
      "hidden": false,
      "path": "/Operations/RunNow",
      "properties": [
        {
          "name": "operationName",
          "defaultValue": "RunNow",
          "description": "Run the recipe to get Salesforce accounts and upsert them to NetSuite right now."
        }
      ]
    },
    

    Schritt 5: Überprüfung

    image

    JSON-Metadaten für Schritt 5
    {
      "name": "Review",
      "description": "Push this recipe to the cloud",
      "label": "Review",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>When you click <b>Save</b> this recipe will be ran daily at 3am indefinitely</p></div>"
        }
      ]
    }
    
  • projectVariables: Dieser Abschnitt definiert alle Projektvariablen, die in den Rezeptschritten verwendet werden. Beachten Sie, dass dies ein neuer Abschnitt der Rezeptmetadatendatei ist, der am Ende nach den Schritten kommt, und nicht mit den innerhalb der Schritte verwendeten projectVariables verwechselt werden sollte.

    • name: Erforderlich Dieses Feld enthält den Namen der Projektvariablen, wie er in Ihrem Jitterpak verwendet wird.
    • displayName: Dieses Feld kann verwendet werden, wenn Sie einen anderen Namen im Citizen Integrator-Interface anzeigen möchten.
    • description: Dieses Feld kann verwendet werden, um Text unter dem Feld einzufügen, um beispielsweise Anweisungen zu geben, was Benutzer eingeben sollen.
    • type: Dieses Feld kann verwendet werden, um den Typ des Wertes zu definieren, den der Benutzer bereitstellen kann. Der Standardwert ist string. Sie können auch integer, float, double, date, time, boolean, password, enum, dropdown, checkboxes oder textarea verwenden.
    • required: Dieser Wert kann auf true oder false gesetzt werden. Wenn true, muss das Projektvariablenfeld ausgefüllt werden, bevor die Aktionen Testverbindung oder Operation ausführen verwendet werden können.
    • regex: Dieses Feld kann verwendet werden, um einen regulären Ausdruck (string) bereitzustellen, der mit dem Wert der Projektvariablen übereinstimmen muss, wenn das Rezept konfiguriert wird, bevor die Aktionen Testverbindung oder Operation ausführen verwendet werden können. Zum Beispiel: .+@.+[.].+.
    • value: Dieses Feld kann verwendet werden, wenn Sie einen Standardwert für Ihre Projektvariablen zuweisen möchten. Dies kann verwendet werden, um einen Standardwert mit anderen optionalen Werten für die Projektvariablen bereitzustellen. Ein zusätzliches Beispiel für JSON-Metadaten mit Werten und Optionen wird in Beispiel 2 unten bereitgestellt.
    • options: Dieses Feld kann verwendet werden, um mögliche Werte in einem Dropdown-Menü, Textbereich oder Checkboxen anzuzeigen. Ein zusätzliches Beispiel für JSON-Metadaten mit Werten und Optionen wird in Beispiel 2 unten bereitgestellt.

    JSON-Metadatenbeispiel 1

    "projectVariables": [
      {
        "name": "com.salesforce.username",
        "displayName": "Salesforce Login",
        "description": "Please provide your Salesforce username or email."
      },
      {
        "name": "com.salesforce.password",
        "displayName": "Salesforce Password",
        "description": "Please provide your Salesforce password.",
        "type": "password"
      },
      {
        "name": "com.salesforce.token",
        "displayName": "Salesforce Security Token",
        "description": "Please provide your Salesforce security token.",
        "type": "password"
      },
      {
        "name": "com.zendesk.username",
        "displayName": "Zendesk Login",
        "description": "Please provide your Zendesk email."
      },
      {
        "name": "com.zendesk.password",
        "displayName": "Zendesk Password",
        "description": "Please provide your Zendesk password.",
        "type": "password"
      }
    ]
    

    JSON-Metadatenbeispiel 2

    "projectVariables": [
      {
        "name": "myDropdown",
        "displayName": "Dropdown Test",
        "value": "ProdOperation",
        "type": "dropdown",
        "description": "A field to test the dropdown feature",
        "options": [
          {
            "name": "Development",
            "value": "DevOperation"
          },
          {
            "name": "Production",
            "value": "ProdOperation"
          }
        ]
      },
      {
        "name": "myCheckboxes",
        "displayName": "Checkbox Test",
        "value": "ProdOperation",
        "type": "checkboxes",
        "description": "A field to test the checkbox feature",
        "options": [
          {
            "name": "Development",
            "value": "DevOperation"
          },
          {
            "name": "Production",
            "value": "ProdOperation"
          }
        ]
      },
      {
        "name": "myTextarea",
        "displayName": "Comments",
        "type": "textarea",
        "value": "This is a comment for the textarea",
        "description": "SAP Language"
      }
    ]
    

Schrittarten

Jeder Schritt innerhalb der Metadaten des Citizen Integrator-Rezepts hat ein Attribut "type", das den Typ des Schrittes angibt. Diese Schritte entsprechen direkt denjenigen, die Benutzer in der Benutzeroberfläche des Citizen Integrators sehen, und die Typen dieser Schritte entsprechen direkt dem Design Studio.

Dies sind die verfügbaren Schrittarten. Zusätzliche Informationen zu jeder Schrittart sind in den folgenden Abschnitten enthalten.

Beschreibung

org.jitterbit.integration.data.entity.Description

Dieser Schrittstyp sollte verwendet werden, wenn detaillierte Informationen über ein Rezept oder einen Schritt bereitgestellt werden müssen, oder kann am Ende des Rezepts als Überprüfung verwendet werden.

  • Zum Beispiel:

    {
    "name": "Introduction",
    "description": "Insert accounts into a postgres database",
    "label": "Introduction",
    "type": "org.jitterbit.integration.data.entity.Description",
    "properties": [
      {
        "name": "template",
        "defaultValue": "<div>...</div>"
      }
    
  • Wenn dieser Schritt der letzte Schritt innerhalb eines Rezepts ist (definiert als Überprüfungsschritt) und er die Eigenschaft "submitOperationsToRun" enthält, dann wird die Schaltfläche Speichern & Beenden diese Logik bezüglich der Operationen anwenden, die zur Ausführung eingereicht werden müssen. Beachten Sie, dass, wenn diese Optionen nicht gesetzt sind, die Schaltfläche Speichern & Beenden keine Operationen zur Ausführung einreichen wird.

    • Es werden keine Operationen zur Ausführung eingereicht, wenn:

      {
        "name": "submitOperationsToRun",
        "value": ""
      }
      
    • Nur die angegebenen Operationen werden zur Ausführung eingereicht, wenn:

      {
      "name": "submitOperationsToRun",
      "value": "Operation1;Operation2"
      }
      
    • Alle Operationen werden zur Ausführung eingereicht, wenn die Eigenschaft nicht vorhanden ist:

      {
      "name": "submitOperationsToRun",
      "value": "*"
      }
      

Projektvariable

org.jitterbit.integration.data.entity.ProjectVariable

Dieser Schrittstyp wird verwendet, um eine Gruppe von Projektvariablen zusammenzufassen. Er kann auch verwendet werden, um eine Endpunktdefinition neu zu definieren. Eine optionale "Aktion" kann daran angehängt werden.

  • Zum Beispiel:

       {
        "name": "Ftp Endpoint",
        "description": "Set-up the Source FTP Endpoint project variables",
        "type": "org.jitterbit.integration.data.entity.ProjectVariable",
        "projectVariables": {
          "names": [
            "acme.org.ftp.host",
            "acme.org.ftp.username",
            "acme.org.ftp.password",
            "acme.org.ftp.path",
            "acme.org.ftp.filename"
          ],
          "action": {
            "name": "test-endpoint-connection",
            "displayName": "Test Connection",
            "useStepAsRequest": "/Source/FtpSite"
          }
        }
      }
    
  • Diese "Aktionen" werden unterstützt:

    • "test-endpoint-connection": Dies wird verwendet, um eine Endpunktverbindung zu testen. Es muss zusammen mit einem Endpunkt verwendet werden.
    • "submit-http-form": Dies muss zusammen mit einem HTTP-Formular verwendet werden (siehe unten).

Ausführungsoperation

org.jitterbit.integration.data.entity.RunOperation

Dieser Schrittstyp wird verwendet, um eine Operation auszuführen, um dem Benutzer das Testen zu ermöglichen.

  • Zum Beispiel:

       {
        "name": "Run Now",
        "description": "Run Now operation - fetch the csv file, parse and insert into database",
        "label": "Run Now",
        "type": "org.jitterbit.integration.data.entity.RunOperation",
        "path": "/Operation/SyncAccounts",
        "properties": [
          {
            "name": "operationName",
            "defaultValue": "SyncAccounts",
            "description": "Synchronize Accounts"
          }
        ]
      }
    

ApiBinding

org.jitterbit.integration.data.entity.ApiBinding

Dieser Schrittstyp wird verwendet, wenn es notwendig ist, Operationen als APIs zu externalisieren.

  • "assignTo": Dies ermöglicht es Ihnen, die URI in einer Projektvariablen zu speichern, die innerhalb des Jitterpak verwendet werden kann. Zum Beispiel:

    {
        "name": "Review the WebHooks associated to this recipe",
        "description": "The following Web API will be registered as webhooks to your system",
        "type": "org.jitterbit.integration.data.entity.ApiBinding",
        "bindings": {
          "apis": [
            {
              "apiName": "FetchAccounts",
              "publicName": "citizen-fetchaccounts",
              "version": "v1",
              "sslOnly": "True",
              "timeout": "30",
              "enableCORS": "False",
              "assignTo": "acme.com.myservice.fetchaccounts.uri",
              "methods": [
                {
                  "method": "GET",
                  "operationName": "RunNow",
                  "responseType": "FINAL_TARGET" // possible - values "NO_RESPONSE", "FINAL_TARGET", "VARIABLE"
                }
              ]
            }
          ],
          "action": {
            "name": "import-api-packs",
            "displayName": "Bind API(s)",
            "useStepAsRequest": ""
          }
        }
      }
    

HttpForm

org.jitterbit.integration.data.entity.HttpForm

Dieser Schrittstyp wird verwendet, wenn eine Interaktion mit einem HTTP-Endpunkt erforderlich ist. Projektvariablen können als Eingaben für Anfragen/Kopfzeilen verwendet werden.

  • Zum Beispiel:

      {
        "name": "ConstantContact Endpoint Project Variables",
        "description": "Set up the target Constant Contact endpoint project variable. Enter one of com.constantcontact.listid or com.constantcontact.listname.",
        "type": "org.jitterbit.integration.data.entity.ProjectVariable",
        "projectVariables": {
          "names": [
            "com.constantcontact.apikey",
            "com.constantcontact.accesstoken",
            "com.constantcontact.listid",
            "com.constantcontact.listname"
          ],
          "action": {
            "name": "submit-http-form",
            "displayName": "Test Connection",
            "useStepAsRequest": "/Target/ConstantContactEndpoint"
          }
        }
       },
       ...
       {
        "name": "Test ConstantContact Connection Information",
        "description": "Test ConstantContact endpoint connection information",
        "label": "Target Endpoint (ConstantContact)",
        "type": "org.jitterbit.integration.data.entity.HttpForm",
        "hidden": true,
        "path": "/Target/ConstantContactEndpoint",
        "properties": [
          { "name": "verb", "defaultValue": "GET" },
          { "name": "url", "defaultValue": "https://api.constantcontact.com/v2/lists?api_key=[com.constantcontact.apikey]" },
          { "name": "headers", "defaultValue": "Authorization: Bearer [com.constantcontact.accesstoken]" },
          { "name": "httpRequest", "defaultValue": "" },
          { "name": "httpResponse", "defaultValue": "" }
        ]
       }
    

Connector

org.jitterbit.integration.data.connector.*

Diese werden für die jeweiligen aufgeführten Endpunkte verwendet:

  • org.jitterbit.integration.data.connector.FTPEndpoint
  • org.jitterbit.integration.data.connector.DBEndpoint
  • org.jitterbit.integration.data.connector.AutoDeskEndpoint
  • org.jitterbit.integration.data.connector.NetSuiteEndpoint
  • org.jitterbit.integration.data.connector.SapEndpoint
  • org.jitterbit.integration.data.connector.JMSEndpoint
  • org.jitterbit.integration.data.connector.MSAXEndpoint
  • org.jitterbit.integration.data.connector.Four51Endpoint
  • org.jitterbit.integration.data.connector.ClarizenEndpoint
  • org.jitterbit.integration.data.connector.QuickBooksEndpoint

Rezept-Metadaten-Definitionen

Diese Unterabschnitte behandeln die vollständigen Metadaten-Definitionen für Rezepte, wie sie innerhalb von Jitterbit definiert sind. Diese Abschnitte beschreiben alle möglichen Teile der JSON-Metadatendatei. Alle erforderlichen Felder sind am Ende jedes Abschnitts aufgeführt.

Rezept

  Recipe:
    type: object
    properties:
      id:
        type: string
        description: "The numerical ID of the recipe"
      guid:
        type: string
        description: "Unique identifier representing a recipe"
      author:
        See separate definition for Author
      orgId:
         type: string
         description: "The Organization ID"
      description:
        type: string
        description: "Description of Recipe"
      name:
        type: string
        description: "Name of Recipe"
      projectName:
        type: string
        description: "Name of the Jitterbit Project (or Jitterpak)"
      displayName:
        type: string
        description: "Display name of Recipe"
      summary:
        type: string
        description: "Short description of Recipe"
      tags:
        type: array
        items:
          See separate definition for Tag
        description: List of tags
      steps:
        type: array
        items:
          See separate definition for Step
      projectVariables:
         type: array
         items:
           See separate definition for property
      createdAt:
         type: number
         description: "Number of milliseconds since the UNIX epoch (Jan 1 1970 12am UTC)"
      updatedAt:
         type: number
         description: "Number of milliseconds since the UNIX epoch (Jan 1 1970 12am UTC)"
      updatedBy:
         See separate definition for Author
      version:
         type: string
         description: "Version of the recipe. Incremented when updated."
    required:
      - guid
      - description
      - name
      - projectName
      - steps

Schritt

  Step:
    properties:
      name:
       type: string
       description: "Name of step"
      description:
        type: string
        description: "Description of the step"
      guid:
        type: string
        description: "A unique id associated to the step"
      label:
        type: string
        description: "A label that can be used for rendering instead of the name property"
      type:
        type: string
        enum:
         - org.jitterbit.integration.data.entity.Description
         - org.jitterbit.integration.data.entity.ProjectVariable
         - org.jitterbit.integration.data.entity.RunOperation
         - org.jitterbit.integration.data.connector.FTPEndpoint
         - org.jitterbit.integration.data.connector.DBEndpoint
         - org.jitterbit.integration.data.connector.AutoDeskEndpoint
         - org.jitterbit.integration.data.connector.NetSuiteEndpoint
         - org.jitterbit.integration.data.connector.SapEndpoint
         - org.jitterbit.integration.data.connector.JMSEndpoint
         - org.jitterbit.integration.data.entity.SalesforceConnector
         - org.jitterbit.integration.data.entity.GenericProperties
         - org.jitterbit.integration.data.entity.Schedule
         - org.jitterbit.integration.data.entity.ApiBinding
         - org.jitterbit.integration.data.entity.HttpForm
         - org.jitterbit.integration.data.entity.TemporaryStorage
         - org.jitterbit.integration.data.entity.FileShare
         - org.jitterbit.integration.data.connector.MSAXEndpoint
         - org.jitterbit.integration.data.connector.QuickBooksEndpoint
         - org.jitterbit.integration.data.connector.ClarizenEndpoint
         - org.jitterbit.integration.data.connector.Four51Endpoint
        description: |
           "Type associated with this step; these are possible values:
                    org.jitterbit.integration.data.entity.Description
                    org.jitterbit.integration.data.entity.ProjectVariable,
                    org.jitterbit.integration.data.entity.RunOperation,
                    org.jitterbit.integration.data.connector.FTPEndpoint,
                    org.jitterbit.integration.data.connector.DBEndpoint,
                    org.jitterbit.integration.data.connector.AutoDeskEndpoint,
                    org.jitterbit.integration.data.connector.NetSuiteEndpoint,
                    org.jitterbit.integration.data.connector.SapEndpoint,
                    org.jitterbit.integration.data.connector.JMSEndpoint,
                    org.jitterbit.integration.data.entity.SalesforceConnector,
                    org.jitterbit.integration.data.entity.GenericProperties,
                    org.jitterbit.integration.data.entity.ApiBinding,
                    org.jitterbit.integration.data.entity.Schedule,
                    org.jitterbit.integration.data.entity.HttpForm,
                    org.jitterbit.integration.data.entity.FileShare,
                    org.jitterbit.integration.data.entity.TemporaryStorage,
                    org.jitterbit.integration.data.connector.MSAXEndpoint,
                    org.jitterbit.integration.data.connector.QuickBooksEndpoint,
                    org.jitterbit.integration.data.connector.ClarizenEndpoint,
                    org.jitterbit.integration.data.connector.Four51Endpoint"
      hidden:
        type: boolean
        description: "Indicate if this step should be renderable or not"
      required:
        type: boolean
        description: "Whether the step requires validation or not"
      properties:
        type: array
        description: "Properties associated with this step; in a step you can have either properties or projectVariables but not both at the same time"
        items:
          See separate definition for property
      path:
        type: string
        description: "If this step maps to an entry in Jitterpak provide the path to; in general, this is valid for endpoints"
      projectVariables:
        type: object
        description: "A list of project variables grouped together to represent a configurable entities; this cannot be used if properties are defined"
        properties:
          names:
            type: array
            items:
             type: string
          action:
            See separate definition for Action
            description: "Describe an action that can be invoked using properties from specified step; example: test connection endpoint"
        required:
          - names
      bindings:
        type: object
        properties:
          apis:
            type: array
            items:
              See separate definition for API
          action:
            See separate definition for Action
    required:
      - name
      - description
      - type

Aktion

  Action:
    properties:
      name:
        type: string
      displayName:
        type: string
      useStepAsRequest:
        type: string
        description: "Use properties from a specified steps within the recipe; usually such a step is defined as a hidden step that is not rendered"
    required:
      - name
      - useStepAsRequest

API

  API:
    properties:
      apiName:
        type: string
        description: "Name of the API"
      publicName:
        type: string
        description: "The public name of the API; this name would be part of the URI that will be public"
      description:
        type: string
        description: "A short description of the api"
      version:
        type: string
        description: "Version of the API"
      sslOnly:
        type: boolean
        description: "Indicate if should only listen over HTTPS only - defaults to true"
      timeout:
        type: number
        description: "Indicate after how many seconds to timeout; default is 30s"
      enableCORS:
        type: boolean
        description: "Indicate if the cors should be enabled or not; defaults to false"
      assignTo:
        type: string
        description: "Assign the API URL to a project variable defined within the associated JPK"
      methods:
        type: array
        items:
          See separate definition for API Method
    required:
      - apiName
      - publicName
      - description
      - version
      - methods

API-Methode

  APIMethod:
    properties:
      method:
        type: string
        description: "Indicate the HTTP verb for to use for this APIMethod (PUT|POST|DELETE|GET)"
        enum:
          - GET
          - DELETE
          - POST
          - PUT
      operationName:
        type: string
        description: "Name of operation that will be invoked when this APIMethod is invoked"
      responseType:
        type: string
        description: "Response type returned by the operation; defaults to NO_RESPONSE"
        enum:
          - VARIABLE
          - FINAL_TARGET
          - NO_RESPONSE
    required:
      - method
      - operationName

Eigenschaft

  Property:
    properties:
      name:
        type: string
        description: "Property name"
      defaultValue:
        type: string
        description: "Default value associated to this property"
      value:
        type: string
        description: "A value assigned by the user; if no value is provided by default the defaultValue will be assigned"
      type:
        type: string
        description: "Indicate the type of the value; integer, float, double, date, time, boolean, string, password, textarea, enum; default string"
      description:
        type: string
        description: "Provide a description of this property"
      hidden:
        type: boolean
        description: "Default value will be false"
      displayName:
        type: string
        description: "Name used for displaying; if not defined then the name property will be used"
      required:
        type: boolean
        description: "Whether the property requires a value or not"
      regex:
        type: boolean
        description: "Regex that the value should match"
    required:
      - name

Jitterpak-Details bereitstellen

  DeployJpkDetails:
    type: object
    properties:
      envId:
        type: string
        description: "Environment ID of the deployed recipe."
      envName:
        type: string
        description: "Environment name"
      projectId:
        type: string
        description: "Deployed recipe ID"
      projectGuid:
        type: string
        description: "Deployed project GUID"
      projectName:
        type: string
        description: "Deployed project name"
      oldProjectVariables:
        type: array
        items:
          See separate definition for property

Operation

  Operation:
    type: object
    properties:
      operationGuid:
        type: string
        description: "The GUID of the operation"
      operationName:
        type: string
        description: "The name of the operation"

Bereitstellungsantwort

  DeployResponse:
    properties:
      deployJpkDetails:
        type: array
        items:
          See separate definition for Deploy JPK Details
      operations:
        type: array
        items:
          See separate definition for Operation

Rezeptintegration

  RecipeIntegration:
    allOf:
      - See separate definition for Recipe
      - properties:
         deployedRecipeId:
           description: "ID of the deployed configured recipe (this is the same as the ID of a Jitterbit project that is deployed to an environment)"
           type: string

Tag

  Tag:
    type: object
    properties:
      key:
        type: string
        description: "A key that can be used for searching the recipe later; possible values: source, target, search"
      value:
        type: string
        description: "A value that can be in a search to match a recipe"
    required:
      - key
      - value

Autor

  Author:
    type: object
    properties:
      userId:
         type: string
         description: "ID of the recipe's author"
      name:
          type: string
          description: "Name of the recipe's author"
      orgName:
          type: string
          description: "Name of the organization that this user is part of"
    required:
      - userId
      - name

Umgebung

  Environment:
    type: object
    properties:
      id:
        type: string
        description: "A unique ID associated to environment"
      orgId:
        type: string
        description: "The ID of the org that this environment is part of"
      name:
        type: string
        description: "Name of the environment"
      agentGroupName:
        type: string
        description: "The agent group associated with this environment"
      agentGroupId:
        type: string
        description: "The ID of the agent group"
      urlPrefix:
         type: string
         description: "Prefix URL associated to environment"

Agent

  Agent:
    type: object
    properties:
      id:
        type: string
        description: "Unique ID of the agent"
      name:
        type: string
        description: "Name of the agent"
      os:
        type: string
        description: "Type of operating system where agent is running"
      osVersion:
        type: string
        description: "Type of operating system where agent is running"
      jitterbitVersion:
        type: string
        description: "Version of the Jitterbit agent"
      hostname:
        type: string
        description: "Name of the host"
      ipv4Address:
        type: string
        description: "IPV4 Address"
      ipv6Address:
        type: string
        description: "IPV6 Address"
      agentGroupName:
        type: string
        description: "Associate the agent with the named agent group"
      status:
        type: string
        description: "Indicates if the agent is running"
      agentGroupId:
        type: string
        description: "Id of the agent group that this agent is part of"

Agentengruppe

  AgentGroup:
    type: object
    properties:
      id:
        type: string
        description: "ID of the agent group"
      name:
        type: string
        description: "Name of the agent group"
      description:
        type: string
        description: "Description of the agent group"

Anmeldeantwort

  LoginResponse:
    type: object
    properties:
      authenticationToken:
        type: string
        description: "Token that is used for authentication/authorizing client's REST requests"
      status:
        type: boolean
        description: "Indicate if the user is active or not"
      defaultOrgId:
        type: string
        description: "Default organization id that the user has logged into"
      orgs:
        type: array
        description: "Organizations that the user is part of"
        items:
          See separate definition for Organization

Organisation

  Org:
     type: object
     properties:
       orgId:
         type: string
         description: "ID of the organization"
       orgName:
         type: string
         description: "Name of the organization"
       orgZoneUrl:
         type: string
         description: "Zone URL associated to this organization"
       urlPrefix:
         type: string
         description: "The URL prefix used for the API gateway for this organization"
       apiHost:
         type: string
         description: "The DNS hostname used by this organization when exposing APIs"

Organisationsdetails

  OrgDetail:
    allOf:
      - See separate definition for Recipe
      - properties:
          orgType:
            description: "Type of org"
            type: number
          active:
            description: "Indicate if this org is active or not"
            type: boolean
          legalName:
            description: "The legal name of the org"
            type: string
          environments:
            type: array
            items:
              See separate definition for Environment

Verbindungsinformationen für Endpunkte

  EndpointConnectionInfo:
    type: object
    description: "Object that defines the properties associated to a connection endpoint"
    properties:
      keyValues:
        type: array
        items:
          See separate definition for KeyValue

HTTP-Verbindungsparameter

  HttpConnectionParams:
    type: object
    properties:
      verb:
        type: array
        items:
          See separate definition for property
      url:
        type: array
        items:
          See separate definition for property
      headers:
        type: array
        items:
          See separate definition for property
      httpRequest:
        type: array
        items:
          See separate definition for property
      httpResponse:
        type: array
        items:
          See separate definition for property
      username:
        type: array
        items:
          See separate definition for property
      password:
        type: array
        items:
          See separate definition for property
      errorIfRegexMatch:
        type: array
        items:
          See separate definition for property
      errorMessageRegexSearch:
        type: array
        items:
          See separate definition for property

Schlüsselwert

  KeyValue:
    type: object
    properties:
      key:
       type: string
      value:
       type: string

Fehler

  Error:
    type: object
    properties:
      code:
        type: integer
        description: "Code associated with this error; in general, maps to an HTTP Code"
      message:
        type: string
        description: "A description of the error"
      fields:
        type: string
        description: "Fields that report the error (optional)"

Betriebsprotokoll

  OperationLog:
    type: object
    properties:
      records:
        type: array
        items:
          See separate definition for Operation Log Record

Protokolleintrag der Operation

  OperationLogRecord:
    type: object
    properties:
      attributes:
        See separate definition for Record
      childRecords:
        See separate definition for Operation Log

Protokolldetails der Operation

  OperationLogDetails:
    type: object
    properties:
      operationName:
        type: string
      mainMessage:
        type: string
      sourceRecords:
        type: integer
        description: Number of source records
      targetRecords:
        type: integer
        description: Number of target records
      failedRecords:
        type: integer
        description: Number of failed records
      successRecords:
        type: integer
        description: Number of success records
      filesProcessed:
        type: integer
        description: Number of files processed
      messageAndFieldName:
        type: array
        items:
          See separate definition for Message and Field Name
      resultFileCategoryAndGuid:
        type: array
        items:
          See separate definition for Result File Category and GUID

Nachricht und Feldname

  MessageAndFieldName:
    type: object
    properties:
      message:
        type: string
      fieldName:
        type: string

Ergebnisdateikategorie und GUID

  ResultFileCategoryAndGuid:
    type: object
    properties:
      category:
        type: number
      fileGuid:
        type: number

Ausführungsoperation Antwort

  RunOperationResponse:
    type: object
    properties:
      orgId:
        type: string
        description: "ID of the organization associated with the environment where the operation has been deployed and executed"
      environmentId:
        type: string
        description: "ID of the environment where the operation has been deployed and executed"
      operationInstanceGuid:
        type: string
        description: "GUID of the operation instance"
      operationGuid:
        type: string
        description: "GUID of the operation"
      submittedAt:
        type: string
        description: "Date when the operation was submitted for execution"

Datensatz

  Record:
    type: object
    properties:
      operationInstanceGuid:
        type: string
        description: "GUID of an instance of an operation; represents an execution of an operation"
      parentInstanceGuid:
        type: string
        description: "GUID associated to the parent operation; an operation that has been triggered/executed this operation instance"
      operationGuid:
        type: string
        description: "GUID associated to this operation"
      operationName:
        type: string
        description: "Name of the operation"
      operationStatusId:
        type: number
        description: "Possible value for the operation statusId: SUBMITTED(0), PENDING(1), CANCELED(2), RUNNING(3), SUCCESS(4), SUCCESS_WITH_INFO(5), SUCCESS_WITH_WARNING(6), ERROR(7), CANCEL_REQUESTED(8), SUCCESS_WITH_CHILD_ERROR(9), RECEIVED(10), UNKNOWN(-1)"
      operationStatus:
        type: string
        description: "Status of the operation - see operationStatusId for possible values"
      environmentId:
        type: string
        description: "ID of the  environment where operation has been deployed and running"
      environmentName:
        type: string
        description: "Name of the environment where operation has been deployed and running"
      agentId:
        type: string
        description: "ID of the agent where operation has been running"
      agentName:
        type: string
        description: "Name of the agent where operation has been running"
      projectName:
        type: string
        description: "Name of the Jitterbit pack associated to the recipe"
      message:
        type: string
        description: "The message associated with this operation indicating the status of it"
      operationEnteredTimestamp:
        type: number
        description: "Timestamp when the operation was entered"
      operationStartedTimestamp:
        type: number
        description: "Timestamp when the operation was started"
      operationStatusTimestamp:
        type: number
        description: "Timestamp of the operation status"
      debugModeEnabled:
        type: boolean
        description: "Indicate if the debug mode is enabled or not"
      debugFilePresent:
        type: boolean
        description: "Indicate if there is a debug file present for downloading"

Benutzerinformationen

  UserInfo:
    type: object
    properties:
      title:
        type: string
      phone:
       type: string
      company:
        type: string
      postalCode:
        type: string
      subscription:
        type: string
      signUpSource:
        type: string
      offeringEnumId:
        type: string
      active:
        type: string
      timezone:
        type: string

Bereitgestellter Status

  DeployedStatus:
    type: object
    properties:
      good:
        type: integer
      warn:
        type: integer
      error:
        type: integer

Endpunktinformationen

  EndpointInfo:
    type: object
    properties:
      name:
        type: string
        description: "Name of the endpoint"
      category:
        type: string
        description: "Indicates the category this endpoint is part of; examples: crm, database"
      icon:
        type: string
        description: "Path to fetch the icon associated with this endpoint"
    required:
      - name
      - icon

AWS-Fehler

  AWSError:
    type: object
    properties:
      code:
        type: string
      message:
        type: string
      retryable:
        type: boolean
      statusCode:
        type: number
      hostname:
        type: string
      region:
        type: string
      retryDelay:
        type: number
      requestId:
        type: string
      extendedRequestId:
        type: string
      cfId:
        type: string