VERWENDUNG VON SALESFORCE-MASSEN-API UND APEX-CODES MIT BRIGHTCOVE

Bild von JESS R
JESS R
blog-platzhalter bild

Bei Brightcove verwenden wir Salesforce zur Verwaltung unserer Kundendaten. Unsere Vertriebs-, Account-Management-, Support- und Finanzteams verwenden es auch für verschiedene Aktivitäten wie die Kontaktaufnahme mit Vertriebsleads, die Verfolgung von Supportfällen und die Erstellung von Nutzungsberichten. Für unser Unternehmen ist es wichtig, die Kundendaten zeitnah und zuverlässig in Salesforce zu übertragen.

Das Datenmodell für unsere Produkte unterstützt eine Many-to-many-Beziehung zwischen Benutzern und Konten. Ein Account-Objekt stellt eine Organisation oder eine Abteilung innerhalb einer großen Organisation dar, und ein Benutzerobjekt stellt eine Person dar, die für eine oder mehrere Organisationen arbeitet. In Salesforce passen wir das integrierte Kontaktobjekt an, um jeden Benutzer von Brightcove-Services darzustellen, und wir definieren ein benutzerdefiniertes Objekt namens BCAccount, um ein Konto darzustellen (siehe Abbildung 1).

Abbildung 1

Abbildung 1. Datenmodell in Brightcove-Service und Salesforce

Vor einigen Jahren haben wir die Funktion zur Datensynchronisierung mithilfe der SOAP-API von Salesforce und Quarz entwickelt, und wir haben einige Probleme mit dieser Implementierung festgestellt. Es gibt zwei Hauptschwierigkeiten:

  • Es ist zu geschwätzig, was es langsam macht. Pro Stunde können nur 700 Objekte mit Salesforce synchronisiert werden.
  • Es ist sehr aufwändig, Änderungen am Datenmodell vorzunehmen. Um ein neues Feld zu einem Objekt hinzuzufügen, müssen wir eine neue WSDL-Datei aus Salesforce exportieren und Java-Klassen aus der WSDL-Datei generieren.

Angesichts dieser Schwierigkeiten haben wir uns entschlossen, ein neues Synchronisierungssystem zu entwickeln, das die Salesforce Massen-API und den Apex-Code verwendet. Die neue Implementierung besteht aus einer Daten-Pushing-Engine namens RedLine und einer Reihe von Salesforce-Apex-Klassen zur Verarbeitung von Massendaten, die von RedLine gepusht werden.

Abbildung 2

Abbildung 2. Neue Datensynchronisation

RedLine wurde mit Sinatra, einem leichtgewichtigen Ruby-Webserver, als eigenständiger Service unabhängig von den anderen Brightcove-Services entwickelt. RedLine verwendet den Rufus-Scheduler, um in regelmäßigen Abständen die Erstellung, Aktualisierung und Löschung von Objekten von Brightcove über RESTful-APIs abzufragen. Anschließend wandelt RedLine die JSON-Antwort in eine CSV-Datei um und sendet sie als Massenanforderung an Salesforce. Salesforce hat einen Grenzwert von 10.000 Objekten pro Sammelanforderung, was für unsere Zwecke ausreichend ist. Da die Sammelanforderung in Salesforce asynchron verarbeitet wird, müssen weder die Brightcove-Services noch RedLine nach dem Senden der Daten an Salesforce warten.

Wir haben einige Apex-Klassen zur Verarbeitung von Massenanforderungen geschrieben, einschließlich der Anpassung der Benutzer- und Kontenobjekte an die Salesforce-Objekte, und haben dann die Apex-Klassen in Salesforce bereitgestellt und Apex-Batch-Aufträge geplant, um diese Klassen auszuführen, sobald die Daten als Massenanforderung eintreffen. Auf diese Weise ist in den Brightcove-Services kein Code für das Salesforce-Datenmodell vorhanden, und nur der Salesforce-Apex-Code muss sich mit dem Salesforce-Datenmodell befassen. Salesforce bietet eine Reihe von Überwachungstools sowohl für Massenanforderungen als auch für Apex-Batch-Aufträge.

Wenn bei der Verarbeitung einer Massenanfrage Fehler auftreten, können wir diese leicht in der Salesforce-Web-UI sehen. Außerdem haben wir eine Apex-Klasse implementiert, die in regelmäßigen Abständen prüft, ob eine Massenanfrage in der erwarteten Häufigkeit eintrifft, und die eine Warnung ausgibt, wenn eine Anfrage eine Zeit lang nicht eingetroffen ist.

Im neuen Synchronisierungssystem müssen wir zur Freigabe einer Änderung neuer Felder des Benutzer- oder Kontoobjekts lediglich die neuen Felder im benutzerdefinierten Salesforce-Objekt hinzufügen und dann die neuen Felder in der JSON-Antwort der Brightcove-Service-API bereitstellen. Wir müssen RedLine nicht ändern oder neu starten, um das Objektformat zu ändern, da RedLine in der Lage ist, die neuen Felder in JSON als neue Spalten in CSV in Massenanforderungen zu konvertieren.

Es gab vier Änderungen an Kontenobjekten und eine Änderung an Benutzerobjekten, und wir mussten für diese Änderungen nicht eine Zeile RedLine-Code ändern. Bei dem alten, auf SOAP-API basierenden Synchronisierungssystem brauchten wir ein bis zwei Wochen, um ein neues Feld für Benutzer- oder Kontenobjekte zu synchronisieren.

Nachdem wir diese neue Synchronisierungsanwendung 8 Monate lang in der Produktion eingesetzt haben, konnten wir feststellen, dass sie einige umfangreiche Datenänderungen problemlos bewältigt. Kürzlich wurde während einer Bereitstellung eine Batch-Änderung von 900 Konten vorgenommen, und alle wurden in weniger als einer Minute mit Salesforce synchronisiert (die meiste Zeit wurde von Apex-Klassen verbraucht, die in Salesforce laufen). Mit dem alten Synchronisierungssystem dauerte die Synchronisierung der gleichen Anzahl von Objekten mehr als eine Stunde.

Teilen Sie

Tags

Brightcove half einem Hersteller von Diagnosegeräten dabei, die Unterrichtszeit und die Kosten zu reduzieren und gleichzeitig den Erfolg ...
Brightcove unterstützte den bekanntesten Automobilmarktplatz bei der Verwaltung seiner umfangreichen, älteren Videobibliothek und deren Monetarisierung...
Um die Markenintegrität zu wahren, benötigen Einzelhandelsmarken anpassbare Videoplayer, die es ihnen ermöglichen, die Farben, die Schriftart...

SIND SIE BEREIT, LOSZULEGEN?

Setzen Sie sich mit uns in Verbindung, um zu erfahren, wie wir Ihre Videomarketing-Bemühungen verbessern und Ihnen dabei helfen können, die gewünschten Ergebnisse und den gewünschten ROI zu erzielen.