Questo testo è stato tradotto utilizzando il sistema di traduzione automatica di Salesforce. Partecipa al nostro sondaggio per fornire un feedback su questo contenuto e dirci cosa vorresti vedere dopo.
In genere, quando si implementa Salesforce è necessario integrarlo con altre applicazioni. Sebbene ogni scenario di integrazione sia univoco, esistono requisiti e problemi comuni che sviluppatori e architetti devono risolvere.
Questo documento descrive le strategie (sotto forma di schemi) per questi scenari di integrazione comuni. Ogni schema descrive la progettazione e l'approccio per uno scenario particolare anziché descrivere in dettaglio un'implementazione specifica. In questo documento troverai:
- Una serie di schemi che affrontano scenari chiave di integrazione "archetipo"
- Una matrice di selezione per determinare quale schema si adatta meglio al proprio scenario
- Suggerimenti e procedure consigliate per l'integrazione
Scopo e ambito
Questo documento è destinato ai progettisti e agli architetti che necessitano di integrare Salesforce Platform con altre applicazioni aziendali. Questo contenuto è un distillato di molte implementazioni di successo degli architetti e dei partner Salesforce.
Per acquisire familiarità con le funzionalità e le opzioni di integrazione disponibili per l'adozione su larga scala di applicazioni basate su Salesforce, vedere Riepilogo degli schemi e Guida alla selezione degli schemi. Gli architetti e gli sviluppatori devono tenere presenti i dettagli dello schema e le procedure consigliate durante la fase di progettazione e implementazione di un progetto di integrazione Salesforce.
Se implementati correttamente, questi schemi consentono di arrivare in produzione il più velocemente possibile e di avere la serie di applicazioni più stabile, scalabile ed esente da manutenzione possibile. Gli architetti consulenti Salesforce utilizzano questi schemi come punti di riferimento durante le revisioni architettoniche e li gestiscono e migliorano attivamente.
Come per tutti gli schemi, questo contenuto copre la maggior parte degli scenari di integrazione, ma non tutti. Benché Salesforce consenta l'integrazione dell'interfaccia utente, i mashup, ad esempio, esulano dall'ambito di questo documento.
Modello schema
Ogni schema di integrazione segue una struttura coerente. Ciò offre coerenza nelle informazioni fornite in ogni schema e semplifica anche il confronto degli schemi.
Nome
Identificatore dello schema che indica anche il tipo di integrazione contenuto nello schema.
Context
Scenario di integrazione generale affrontato dallo schema. Il contesto fornisce informazioni su ciò che gli utenti stanno cercando di ottenere e su come si comporterà l'applicazione per supportare i requisiti.
Problema
Lo scenario o il problema (espresso come domanda) che lo schema è progettato per risolvere. Quando si rivedono gli schemi, leggere questa sezione per capire rapidamente se lo schema è appropriato per il proprio scenario di integrazione.
Forze
I vincoli e le circostanze che rendono lo scenario dichiarato difficile da risolvere.
Soluzione
Il modo consigliato per risolvere lo scenario di integrazione.
Sketch
Diagramma di sequenza UML che mostra come la soluzione affronta lo scenario.
Risultati
Spiega i dettagli di come applicare la soluzione allo scenario di integrazione e come risolvere le forze associate a quello scenario. Questa sezione contiene anche nuove sfide che possono sorgere in seguito all'applicazione dello schema.
Intestazioni laterali
Sezioni aggiuntive correlate allo schema che contengono problemi tecnici chiave, variazioni dello schema, problemi specifici dello schema e così via.
Esempio
Uno scenario completo che descrive come viene utilizzato lo schema di progettazione in uno scenario Salesforce reale. L'esempio spiega gli obiettivi di integrazione e come implementare lo schema per raggiungere tali obiettivi.
Riepilogo schema
La tabella seguente elenca gli schemi di integrazione contenuti in questo documento.
Elenco degli schemi remote-process-invocation--request-and-reply
| Schemi | Scenario |
|---|---|
| Invocazione processo remoto: richiesta e risposta | Salesforce invoca un processo in un sistema remoto, attende il completamento del processo e quindi tiene traccia dello stato in base alla risposta dal sistema remoto. |
| Invocazione processo remoto: attivazione e dimenticanza | Salesforce invoca un processo in un sistema remoto ma non attende il completamento del processo. Il processo remoto riceve e conferma la richiesta e quindi passa il controllo a Salesforce. |
| Sincronizzazione dati batch | I dati memorizzati in Lightning Platform vengono creati o aggiornati in modo da riflettere gli aggiornamenti di un sistema esterno e quando le modifiche di Lightning Platform vengono inviate a un sistema esterno. Gli aggiornamenti in entrambe le direzioni vengono eseguiti in modo batch. |
| Chiamata remota | I dati memorizzati in Salesforce Platform vengono creati, recuperati, aggiornati o eliminati da un sistema remoto. |
| Aggiornamento dell'interfaccia utente in base alle modifiche dei dati | L'interfaccia utente di Salesforce deve essere aggiornata automaticamente in seguito alle modifiche apportate ai dati Salesforce. |
| Virtualizzazione dei dati | Salesforce accede ai dati esterni in tempo reale. Ciò elimina la necessità di mantenere i dati in Salesforce e quindi di riconciliare i dati tra Salesforce e il sistema esterno. |
Approccio schematico
Gli schemi di integrazione di questo documento sono classificati in tre categorie:
-
Integrazione dei dati: questi schemi soddisfano l'esigenza di sincronizzare i dati che risiedono in due o più sistemi in modo che entrambi i sistemi contengano sempre dati puntuali e significativi. L'integrazione dei dati è spesso il tipo di integrazione più semplice da implementare, ma richiede tecniche di gestione delle informazioni adeguate per rendere la soluzione sostenibile e conveniente. Tali tecniche spesso includono aspetti di gestione dei dati master (MDM), governance dei dati, mastering, deduplicazione, progettazione del flusso di dati e altri.
-
Integrazione dei processi: gli schemi di questa categoria rispondono alla necessità che un processo aziendale utilizzi due o più applicazioni per completare la propria operazione. Quando si implementa una soluzione per questo tipo di integrazione, l'applicazione di attivazione deve effettuare chiamate oltre i confini del processo ad altre applicazioni. Di solito, questi schemi includono anche sia l'orchestrazione (dove un'applicazione è il "controller" centrale) che la coreografia (dove le applicazioni sono multi-partecipanti e non esiste un "controller" centrale). Queste integrazioni spesso richiedono requisiti complessi di progettazione, test e gestione delle eccezioni. Inoltre, tali applicazioni composite sono in genere più impegnative per i sistemi sottostanti perché spesso supportano transazioni di lunga durata e la possibilità di generare rapporti o gestire lo stato dei processi.
-
Integrazione virtuale: gli schemi di questa categoria rispondono alla necessità per un utente di visualizzare, cercare e modificare i dati memorizzati in un sistema esterno. Quando si implementa una soluzione per questo tipo di integrazione, l'applicazione di attivazione deve effettuare una chiamata ad altre applicazioni e interagire con i loro dati in tempo reale. Questo tipo di integrazione elimina la necessità di replicare i dati tra i sistemi e consente agli utenti di interagire sempre con i dati più aggiornati.
Scegliere la strategia di integrazione migliore per il proprio sistema non è banale. Ci sono molti aspetti da considerare e molti strumenti che possono essere utilizzati, con alcuni strumenti più appropriati di altri per determinate operazioni. Ogni schema affronta specifiche aree critiche, tra cui le funzionalità di ogni sistema, il volume dei dati, la gestione dei guasti e la transazionalità.
Guida alla selezione degli schemi
Le tabelle a matrice di selezione elencano gli schemi e i relativi aspetti chiave per consentire di determinare quale schema si adatta meglio alle proprie esigenze di integrazione. Gli schemi vengono classificati utilizzando le seguenti dimensioni.
| Aspetto | Descrizione |
|---|---|
| Tipo | Specifica lo stile dell'integrazione: Processo, Dati o Virtuale.
|
| Tempistica | Specifica lo stile dell'integrazione: Processo, Dati o Virtuale.
|
Integrazione di Salesforce con un altro sistema
In questa tabella sono elencati gli schemi e i relativi aspetti chiave per consentire di determinare quale schema si adatta meglio alle proprie esigenze quando l'integrazione passa da Salesforce a un altro sistema.
| Tipo | Tempistica | Schema chiave da considerare |
|---|---|---|
| Integrazione dei processi | Synchronous | Invocazione processo remoto: richiesta e risposta |
| Integrazione dei processi | Asynchronous | Invocazione processo remoto: attivazione e dimenticanza |
| Integrazione dei dati | Synchronous | Invocazione processo remoto: richiesta e risposta |
| Integrazione dei dati | Asynchronous | Aggiornamento dell'interfaccia utente in base alle modifiche dei dati |
| Integrazione virtuale | Synchronous | Virtualizzazione dei dati |
Integrazione di un altro sistema con Salesforce
In questa tabella sono elencati gli schemi e i relativi aspetti chiave per consentire di determinare lo schema più adatto alle proprie esigenze quando l'integrazione avviene da un altro sistema a Salesforce.
| Tipo | Tempistica | Schema chiave da considerare |
|---|---|---|
| Integrazione dei processi | Synchronous | Chiamata remota |
| Integrazione dei processi | Asynchronous | Chiamata remota |
| Integrazione dei dati | Synchronous | Chiamata remota |
| Integrazione dei dati | Asynchronous | Sincronizzazione dati batch |
Termini e definizioni middleware
In questa tabella sono elencati alcuni termini chiave relativi al middleware e le relative definizioni in relazione a questi schemi.
| Termine | Definizione |
|---|---|
| Gestione degli eventi | La gestione degli eventi è la ricezione di un evento identificabile presso un destinatario designato ("handler"). I processi chiave coinvolti nella gestione degli eventi includono:
Tenere presente che l'handler evento può in ultima analisi inoltrare l'evento a un consumatore evento. Gli usi comuni di questa funzione con middleware possono essere estesi per includere la popolare funzionalità "pubblica/abbonati" o "pub/sub". In uno scenario di pubblicazione/abbonamento, il middleware instrada le richieste o i messaggi agli abbonati agli eventi dati attivi dai publisher di eventi dati attivi. Questi consumatori con ascoltatori attivi possono quindi recuperare gli eventi man mano che vengono pubblicati. Nelle integrazioni Salesforce che utilizzano middleware, il livello middleware assume il controllo della gestione degli eventi. Raccoglie tutti gli eventi pertinenti, sincroni o asincroni, e gestisce la distribuzione a tutti gli endpoint, incluso Salesforce. In alternativa, questa funzionalità può essere raggiunta con la piattaforma di messaggistica aziendale Salesforce utilizzando il bus degli eventi con gli eventi piattaforma. |
| Conversione protocollo | La conversione di protocollo è in genere un'applicazione software che converte il protocollo standard o proprietario di un dispositivo nel protocollo adatto a un altro dispositivo per ottenere l'interoperabilità. Nel contesto del middleware, la connettività a un particolare sistema di destinazione può essere limitata dal protocollo. In questi casi, il formato del messaggio deve essere convertito o incapsulato nel formato del sistema di destinazione in cui è possibile estrarre il payload. Questo è anche noto come tunneling. Salesforce non supporta la conversione del protocollo nativo, quindi si presume che tali requisiti siano soddisfatti dal livello middleware o dall'endpoint. |
| Traduzione e trasformazione | La trasformazione è la capacità di mappare un formato di dati a un altro per garantire l'interoperabilità tra i vari sistemi integrati. In genere, il processo prevede la riformattazione dei messaggi in arrivo per soddisfare i requisiti del mittente o del destinatario. In casi più complessi, un'applicazione può inviare un messaggio nel proprio formato nativo e altre due o più applicazioni possono ricevere una copia del messaggio nel proprio formato nativo. Gli strumenti di traduzione e trasformazione middleware spesso includono la possibilità di creare facciate di servizio per endpoint legacy o altri endpoint non standard. Queste facciate di servizio consentono a tali endpoint di apparire indirizzabili al servizio. Con le integrazioni Salesforce, si presuppone che tali requisiti siano soddisfatti dal livello middleware o dall'endpoint. La trasformazione dei dati può essere codificata in Apex, ma non è consigliabile per motivi di manutenzione e prestazioni. |
| Messa in attesa e buffering | L'area di attesa e il buffering in genere si basano sul passaggio di messaggi asincroni, anziché su un'architettura richiesta-risposta. Nei sistemi asincroni, le aree di attesa dei messaggi forniscono memoria temporanea quando il programma di destinazione è occupato o la connettività è compromessa. Inoltre, la maggior parte dei sistemi middleware asincroni fornisce memoria permanente per il backup dell'area di attesa dei messaggi. Il vantaggio principale di un processo di messaggio asincrono è che se l'applicazione del destinatario non riesce per qualsiasi motivo, i mittenti possono continuare senza alcun effetto. I messaggi inviati vengono semplicemente accumulati nell'area di attesa per essere elaborati in seguito quando il destinatario viene riavviato. Salesforce fornisce solo funzionalità di area di attesa esplicita sotto forma di messaggistica in uscita basata sul flusso di lavoro. Per fornire vera area di attesa dei messaggi per altri scenari di integrazione, tra cui orchestrazione, coreografia del processo e qualità del servizio, è necessaria una soluzione middleware. |
| Protocolli di trasporto sincrono | I protocolli di trasporto sincrono si riferiscono a protocolli che supportano attività in cui un "singolo thread del chiamante invia il messaggio di richiesta, blocca l'attesa del messaggio di risposta e quindi elabora la risposta... Il thread di richiesta in attesa della risposta implica che vi sia solo una richiesta in sospeso o che il canale di risposta per questa richiesta sia privato per questo thread". |
| Protocolli di trasporto asincrono | I protocolli di trasporto asincrono si riferiscono ai protocolli che supportano le attività in cui "un thread del chiamante invia il messaggio di richiesta e imposta una richiamata per la risposta. Un thread separato ascolta i messaggi di risposta. Quando arriva un messaggio di risposta, il thread di risposta richiama la richiamata appropriata, che ristabilisce il contesto del chiamante ed elabora la risposta. Questo approccio consente a più richieste in sospeso di condividere un unico thread di risposta". |
| Instradamento della mediazione | L'instradamento della mediazione è la specifica di un "flusso" complesso di messaggi da componente a componente. Ad esempio, molte soluzioni basate su middleware dipendono da un sistema di area di attesa messaggi. Mentre alcune implementazioni consentono di fornire la logica di instradamento dal livello di messaggistica stesso, altre dipendono dalle applicazioni client per fornire informazioni di instradamento o consentire un mix di entrambi i paradigmi. In questi casi complessi, la mediazione da parte del middleware semplifica lo sviluppo, l'integrazione e la convalida. L'ordinatore [Mediatore] può assicurarsi che il messaggio giusto arrivi al consumatore giusto." |
| Coreografia del processo e orchestrazione del servizio | La coreografia del processo e l'orchestrazione del servizio sono tutte forme di "composizione del servizio" in cui vengono coordinati un numero qualsiasi di endpoint e funzionalità.
La differenza tra coreografia e orchestrazione di servizio è:
Porzioni delle coreografie dei processi aziendali possono essere create nei flussi di lavoro Salesforce o utilizzando Apex. Si consiglia di implementare tutte le orchestrazioni complesse nel livello middleware a causa dei valori di timeout di Salesforce e dei limiti del governor, soprattutto nelle soluzioni che richiedono una vera gestione delle transazioni. |
| Transazionalità (crittografia, firma, consegna affidabile, gestione delle transazioni) | La transazionalità può essere definita come la capacità di supportare transazioni globali che comprendono tutte le operazioni necessarie per ogni risorsa richiesta. La transazionalità implica il supporto di tutte e quattro le proprietà ACID, atomicità, coerenza, isolamento, durata, dove l'atomicità garantisce risultati "tutto o niente" per l'unità di lavoro (transazione).
Benché Salesforce sia transazionale di per sé, non è in grado di partecipare a transazioni distribuite o avviate all'esterno di Salesforce. Pertanto, si presume che per le soluzioni che richiedono transazioni multi-sistema complesse, la transazionalità e i meccanismi di ritiro/compensazione associati siano implementati a livello middleware. |
| Instradamento | L'instradamento può essere definito come la specifica del flusso complesso di messaggi da componente a componente. Nelle moderne soluzioni basate sui servizi, tali flussi di messaggi possono essere basati su una serie di criteri, tra cui intestazione, tipo di contenuto, regola e priorità.
Con le integrazioni Salesforce, si presuppone che tali requisiti siano soddisfatti dal livello middleware o dall'endpoint. L'instradamento dei messaggi può essere codificato in Apex, ma non è consigliabile per motivi di manutenzione e prestazioni. |
| Estrazione, trasformazione e caricamento | Estrazione, trasformazione e caricamento (ETL) si riferisce a un processo che prevede:
Salesforce ora supporta anche Acquisizione dati di modifica, ovvero la pubblicazione di eventi di modifica che rappresentano modifiche ai record Salesforce. Con Acquisizione dati di modifica, il sistema client o esterno riceve le modifiche quasi in tempo reale dei record Salesforce. Con queste informazioni, il client o il sistema esterno può sincronizzare i record corrispondenti in un archivio dati esterno. |
| Sondaggio lungo | Il long polling, detto anche programmazione Comet, emula un push di informazioni da un server a un client. Come in un normale sondaggio, il client si connette e richiede informazioni al server. Tuttavia, anziché inviare una risposta vuota se le informazioni non sono disponibili, il server mantiene la richiesta e attende che le informazioni siano disponibili (si verifica un evento). Il server invia quindi una risposta completa al client. Il cliente richiede immediatamente le informazioni. Il client mantiene continuamente una connessione al server, quindi è sempre in attesa di ricevere una risposta. Se il server scade, il client si connette di nuovo e ricomincia. L'API Streaming Salesforce utilizza il protocollo Bayeux e CometD per il polling lungo.
|
Context
Salesforce si utilizza per tenere traccia dei lead, gestire le opportunità in corso di realizzazione, creare opportunità e acquisire i dettagli degli ordini che convertono i lead in clienti. Tuttavia, il sistema Salesforce non contiene né elabora gli ordini. Dopo aver acquisito i dettagli dell'ordine in Salesforce, l'ordine viene creato nel sistema remoto, che gestisce l'ordine fino alla conclusione.
Quando si implementa questo schema, Salesforce chiama il sistema remoto per creare l'ordine e quindi attende il completamento corretto. In caso di esito positivo, il sistema remoto risponde in modo sincronizzato con lo stato e il numero dell'ordine. Nell'ambito della stessa transazione, Salesforce aggiorna internamente il numero e lo stato dell'ordine. Il numero d'ordine viene utilizzato come chiave esterna per gli aggiornamenti successivi del sistema remoto.
Problema
Quando si verifica un evento in Salesforce, come si avvia un processo in un sistema remoto, si passano le informazioni richieste a quel processo, si riceve una risposta dal sistema remoto e quindi si utilizzano i dati della risposta per eseguire aggiornamenti in Salesforce?
Forze
Considerare le forze seguenti quando si applicano soluzioni basate su questo schema.
- La chiamata al sistema remoto richiede che Salesforce attenda una risposta prima di continuare l'elaborazione? La chiamata al sistema remoto è una richiesta-risposta sincrona o una richiesta asincrona?
- Se la chiamata al sistema remoto è sincrona, Salesforce deve elaborare la risposta nell'ambito della stessa transazione della chiamata iniziale?
- Le dimensioni del messaggio sono piccole o grandi?
- L'integrazione si basa sul verificarsi di un evento specifico, ad esempio un clic su un pulsante nell'interfaccia utente di Salesforce, o di eventi basati su DML?
- L'endpoint remoto è in grado di rispondere alla richiesta con bassa latenza? Quanti utenti probabilmente eseguiranno questa transazione in un periodo di picco?
Soluzione
Questa tabella contiene le soluzioni a questo problema di integrazione.
| Soluzione | Adatta | Commenti |
|---|---|---|
| Servizi esterni invoca una chiamata API REST | Best | Servizi esterni consente di invocare un servizio ospitato esternamente in modo dichiarativo (non è richiesto alcun codice). Questa funzione è particolarmente indicata quando sono soddisfatte le seguenti condizioni:
|
| Salesforce Lightning: il componente o la pagina Lightning avvia una chiamata Apex REST o SOAP sincrona.</ Se l'endpoint remoto presenta un rischio di risposta con latenza elevata (vedere la documentazione sui limiti più recenti per i limiti applicabili qui), si consiglia di eseguire una chiamata asincrona, detta anche continuazione, per evitare di superare i limiti del regolatore di transazioni Apex sincrono. |
Best | Salesforce consente di utilizzare un WSDL e generare una classe Apex proxy risultante. Questa classe fornisce la logica necessaria per chiamare il servizio remoto. Salesforce consente anche di invocare i servizi HTTP (REST) utilizzando i metodi GET, POST, PUT e DELETE standard. Un'azione avviata dall'utente in una pagina Lightning chiama quindi un'azione del controller Apex che esegue questa classe Apex proxy per eseguire la chiamata remota. Le pagine Lightning richiedono la personalizzazione dell'applicazione Salesforce. |
| Un trigger sincrono richiamato dalle modifiche dei dati Salesforce esegue una chiamata Apex SOAP o HTTP asincrona. | Non ottimale | È possibile utilizzare i trigger Apex per eseguire l'automazione in base alle modifiche dei dati dei record. Una classe proxy Apex può essere eseguita come risultato di un'operazione DML utilizzando un trigger Apex. Tuttavia, tutte le chiamate effettuate dal contesto trigger devono essere eseguite in modo asincrono dall'evento di avvio. Pertanto, questa soluzione non è consigliata per questo problema di integrazione. Questa soluzione è più adatta per lo schema Remote Process Invocation — Fire and Forget. |
| Un processo batch Apex esegue una chiamata Apex SOAP o HTTP sincrona. | Non ottimale | È possibile effettuare chiamate a un sistema remoto da un processo batch. Questa soluzione consente l'esecuzione e l'elaborazione in batch della risposta dal sistema remoto in Salesforce. Tuttavia, un determinato batch ha dei limiti al numero di chiamate. Per ulteriori informazioni, vedere Limitazioni dei governanti. Una determinata esecuzione batch può eseguire più contesti di transazione (in genere a intervalli di 200 record). I limiti del governor vengono reimpostati in base al contesto della transazione. |
Sketch
Questo diagramma illustra una chiamata di processo remoto sincrono che utilizza chiamate Apex.
Chiamata Salesforce a un sistema remoto
In questo scenario:
- Viene avviata un'azione nella pagina Lightning (ad esempio, un clic su un pulsante).
- Il browser (tramite un controller lato client nel caso di un componente Lightning) esegue un POST HTTP che a sua volta esegue un'azione sul controller Apex corrispondente.
- Il controller richiama la chiamata effettiva al servizio Web remoto.
- La risposta dal sistema remoto viene restituita al controller Apex. Il controller elabora la risposta, aggiorna i dati in Salesforce in base alle esigenze e visualizza nuovamente la pagina.
Nei casi in cui è necessario tenere traccia dello stato successivo, il sistema remoto restituisce un identificatore univoco memorizzato nel record Salesforce.
Risultati
L'applicazione delle soluzioni correlate a questo schema consente le invocazioni di processi remoti avviate da eventi in cui Salesforce gestisce l'elaborazione.
Meccanismi di chiamata
Il meccanismo di chiamata dipende dalla soluzione scelta per implementare questo schema.
| Meccanismo di chiamata | Descrizione |
|---|---|
| Servizio esterno ottimizzato incorporato in un flusso o Componente Lightning o Controller Apex |
Utilizzato quando il processo remoto viene attivato nell'ambito di un processo end-to-end che coinvolge l'interfaccia utente e il risultato deve essere visualizzato o aggiornato in un record Salesforce. Ad esempio, l'invio di un pagamento con carta di credito a un gateway di pagamento esterno e i risultati del pagamento vengono immediatamente restituiti e visualizzati all'utente. |
| Trigger Apex | Utilizzato principalmente per invocare processi remoti utilizzando chiamate Apex da eventi avviati da DML. Per ulteriori informazioni su questo meccanismo di chiamata, vedere Schema Remote Process Invocation — Fire and Forget. |
| Classi batch Apex | Utilizzato per invocare processi remoti in batch. Per ulteriori informazioni su questo meccanismo di chiamata, vedere Schema Remote Process Invocation — Fire and Forget. |
Gestione e ripristino degli errori
È importante includere una strategia di gestione e ripristino degli errori come parte della soluzione complessiva.
-
Gestione degli errori: quando si verifica un errore (vengono restituiti al chiamante codici di eccezioni o di errore), il chiamante gestisce la gestione degli errori. Ad esempio, un messaggio di errore visualizzato nella pagina dell'utente finale o registrato in una tabella che richiede ulteriori azioni.
-
Ripristino: le modifiche non vengono confermate in Salesforce finché il chiamante non riceve una risposta corretta. Ad esempio, lo stato dell'ordine non viene aggiornato nel database finché non viene ricevuta una risposta che indica che è stato completato correttamente. Se necessario, il chiamante può riprovare l'operazione.
Considerazioni sulla progettazione idempotente
Le funzionalità idempotenti garantiscono che le chiamate ripetute siano sicure. Se non viene implementata l'impotenza, le chiamate ripetute dello stesso messaggio possono avere risultati diversi, potenzialmente causando problemi di integrità dei dati. I problemi potenziali includono la creazione di record duplicati o l'elaborazione di transazioni duplicate.
È importante assicurarsi che la procedura remota chiamata sia idempotente. Se la chiamata viene effettuata dall'interfaccia utente, è necessario prestare attenzione all'impotenza a livello di integrazione, soprattutto se non è garantito che Salesforce chiami una sola volta.
Il metodo più tipico per creare un ricevitore idempotente consiste nel tenere traccia dei duplicati in base a identificatori univoci dei messaggi inviati dal consumatore. Il servizio Web Apex o le chiamate REST devono essere personalizzati per inviare un ID messaggio univoco.
Inoltre, le operazioni che creano record nel sistema remoto devono verificare la presenza di duplicati prima dell'inserimento. Controllare passando un ID record univoco da Salesforce. Se il record esiste nel sistema remoto, aggiornare il record. Nella maggior parte dei sistemi, questa operazione viene definita operazione di inserimento con aggiornamento.
Considerazioni sulla sicurezza
Qualsiasi chiamata a un sistema remoto deve mantenere la riservatezza, l'integrità e la disponibilità della richiesta. Le seguenti considerazioni sulla sicurezza riguardano specificamente l'utilizzo di chiamate Apex SOAP e HTTP in questo schema.
-
SSL unidirezionale è abilitato per impostazione predefinita, ma SSL bidirezionale è supportato con certificati autofirmati e firmati da CA per mantenere l'autenticità sia del client che del server.
-
Per semplificare l'Apex Code e l'impostazione delle chiamate autenticate, specificare una credenziale denominata nell'endpoint di chiamata.
-
Considerare l'uso di OAUTH 2.0 come meccanismo di autenticazione per l'integrazione con sistemi esterni.
-
Se necessario, valutare la possibilità di utilizzare hash unidirezionali o firme digitali utilizzando i metodi della classe Apex Crypto per garantire l'integrità della richiesta.
-
Il sistema remoto deve essere protetto implementando gli opportuni meccanismi di firewall. Vedere Considerazioni sulla sicurezza.
-
Attualmente Salesforce non supporta WS-Security. Benché non generi in modo nativo queste intestazioni WS-Security complesse o le applichi automaticamente da un WSDL in entrata, è possibile crearle e implementarle manualmente creando classi Apex personalizzate per gestire le intestazioni SOAP e i token di protezione per le richieste in entrata.
Intestazioni laterali
Nessuno.
Tempestività
La tempestività è di importanza significativa in questo schema. Di solito:
- La richiesta viene in genere richiamata dall'interfaccia utente, quindi il processo non deve far attendere l'utente.
- Salesforce ha un timeout configurabile fino a 120 secondi per le chiamate da Apex.
- Il completamento del processo remoto viene eseguito in modo tempestivo per concludersi entro il limite di timeout di Salesforce e nel rispetto delle aspettative degli utenti.
- Poiché le chiamate esterne sono soggette ai limiti del governor di transazioni sincrono Apex, assicurarsi di ridurre il rischio di istanziare più di 50 transazioni che durano più di cinque secondi ciascuna. Oltre a garantire che l'endpoint esterno sia performante, le opzioni per ridurre il rischio di timeout includono:
- Impostazione del timeout della chiamata esterna su cinque secondi.
- Utilizzo di una continuazione nei componenti Lightning per gestire transazioni di lunga durata
Volumi di dati
Questo schema viene utilizzato principalmente per le attività in tempo reale a volume ridotto, a causa dei piccoli valori di timeout e della dimensione massima della richiesta o della risposta per la soluzione di chiamata Apex. Non utilizzare questo schema nelle attività di elaborazione batch in cui il payload di dati è contenuto nel messaggio.
Supporto della capacità endpoint e degli standard
La funzionalità e il supporto standard per l'endpoint dipendono dalla soluzione scelta.
| Soluzione | Considerazioni sugli endpoint |
|---|---|
| Chiamate HTTP Apex | L'endpoint deve essere in grado di ricevere chiamate HTTP. Salesforce deve essere in grado di accedere all'endpoint tramite Internet pubblico. Per le comunicazioni private e protette, Salesforce ha ora iniziato a supportare anche Salesforce Private Connect tramite la piattaforma Hyperforce in modo sicuro. Per ulteriori dettagli, vedere Salesforce Private Connect.
È possibile utilizzare le chiamate HTTP Apex per chiamare i servizi REST utilizzando i metodi GET, POST, PUT, DELETE e PATCH standard. |
| Chiamate SOAP Apex | L'endpoint deve essere in grado di ricevere chiamate HTTP. Salesforce deve essere in grado di accedere all'endpoint tramite Internet pubblico. Per le comunicazioni private e protette, Salesforce ha ora iniziato a supportare anche Salesforce Private Connect tramite la piattaforma Hyperforce in modo sicuro. Per ulteriori dettagli, vedere Salesforce Private Connect.
Questa soluzione richiede che il sistema remoto sia compatibile con gli standard supportati da Salesforce. Al momento della scrittura, gli standard dei servizi Web supportati da Salesforce per le chiamate SOAP Apex sono:
|
Gestione statale
Quando si integrano i sistemi, le chiavi sono importanti per il tracciamento continuo dello stato. Esistono due opzioni.
- Salesforce memorizza la chiave surrogata principale o univoca del sistema remoto per il record remoto.
- Il sistema remoto memorizza l'ID record univoco Salesforce o un'altra chiave surrogata univoca.
Esistono considerazioni specifiche per la gestione delle chiavi di integrazione, a seconda del sistema che contiene il record principale, come indicato nella tabella seguente.
| Master | Sistema Descrizione |
|---|---|
| Salesforce | Il sistema remoto memorizza il RecordId Salesforce o un'altra chiave surrogata univoca del record. |
| Sistema remoto | La chiamata al processo remoto restituisce la chiave univoca dell'applicazione e Salesforce memorizza il valore della chiave in un campo record univoco. |
Scenari di integrazione complessi
In alcuni casi, la soluzione prescritta da questo schema può richiedere l'implementazione di diversi scenari di integrazione complessi. Questo è il modo migliore per utilizzare middleware o fare in modo che Salesforce chiami un servizio composito. Questi scenari includono:
- Orchestrazione di processi aziendali e regole che comportano una logica di flusso complessa
- Aggregazione delle chiamate e dei relativi risultati nelle chiamate a più sistemi
- Trasformazione dei messaggi in entrata e in uscita
- Mantenere l'integrità delle transazioni tra le chiamate a più sistemi
Limitazioni del governatore
Per informazioni sui limiti Apex, vedere Execution Governors and Limits nella Apex Developer Guide.
Funzioni middleware
La tabella seguente evidenzia le proprietà desiderate di un sistema middleware che partecipa a questo schema.
| Proprietà | Obbligatorio | Auspicabile | Non richiesto |
|---|---|---|---|
| Gestione degli eventi | X | ||
| Conversione protocollo | X | ||
| Traduzione e trasformazione | X | ||
| Messa in attesa e buffering | X | ||
| Protocolli di trasporto sincrono | X | ||
| Protocolli di trasporto asincrono | X | ||
| Instradamento della mediazione | X | ||
| Coreografia del processo e orchestrazione del servizio | X | ||
| Transazionalità (crittografia, firma, consegna affidabile, gestione delle transazioni) | X | ||
| Instradamento | X | ||
| Estrazione, trasformazione e caricamento | X | ||
| polling lungo | X |
Esempio
Una società di servizi utilizza Salesforce e dispone di un sistema separato che contiene le informazioni di fatturazione dei clienti. Come parte del processo di ordinazione è necessario creare nuovi account di fatturazione nel sistema di fatturazione e Salesforce deve riflettere il numero di account di fatturazione all'interno del processo di attivazione dell'ordine. Hanno un servizio Web esistente che consente la creazione di un account di fatturazione e restituisce il numero dell'account di fatturazione come risposta.
Questo requisito può essere soddisfatto con il seguente approccio.
- Salesforce utilizza il servizio account di fatturazione WSDL da una classe proxy Apex.
- Eseguire la classe proxy Apex con le informazioni sul cliente passate al servizio Web esterno da un controller Apex personalizzato o da un servizio esterno.
- Il controller personalizzato analizza quindi i valori restituiti dalla chiamata Apex e memorizza tali informazioni nell'oggetto Salesforce.
Questo esempio dimostra che:
- Lo stato del cliente viene tracciato con un numero di account memorizzato nell'oggetto account Salesforce.
- Elaborazione successiva del messaggio di risposta da parte del chiamante
Context
Salesforce si utilizza per tenere traccia dei lead, gestire le opportunità in corso di realizzazione, creare opportunità e acquisire i dettagli degli ordini che convertono i lead in clienti. Tuttavia, nell'ambito dei processi di gestione degli ordini, è necessario creare un account di fatturazione nel sistema di fatturazione per l'ordine.
Quando si implementa questo schema, Salesforce chiama il sistema remoto per creare l'account di fatturazione, ma non attende il completamento della chiamata. Se si desidera, il sistema remoto può aggiornare Salesforce con il nuovo account di fatturazione creato in una transazione separata.
Problema
Quando si verifica un evento in Salesforce, come si avvia un processo in un sistema remoto e si trasmettono le informazioni richieste a quel processo senza attendere una risposta dal sistema remoto?
Forze
Considerare le forze seguenti quando si applicano soluzioni basate su questo schema.
- La chiamata al sistema remoto richiede che Salesforce attenda una risposta prima di continuare l'elaborazione? La chiamata al sistema remoto è sincrona o asincrona?
- Se la chiamata al sistema remoto è sincrona, la risposta deve essere elaborata da Salesforce nell'ambito della stessa transazione della chiamata?
- Le dimensioni del messaggio sono piccole?
- L'integrazione si basa sul verificarsi di un evento specifico, ad esempio un clic su un pulsante nell'interfaccia utente di Salesforce, o di eventi basati su DML?
- La consegna garantita dei messaggi da Salesforce al sistema remoto è un requisito?
- Il sistema remoto è in grado di partecipare a un'integrazione contract-first in cui Salesforce specifica il contratto? In alcune varianti di soluzione (ad esempio, messaggistica in uscita), Salesforce specifica un contratto implementato dall'endpoint di sistema remoto.
- L'endpoint o l'Enterprise Service Bus (ESB) supporta il polling lungo?
- I metodi di configurazione dichiarativi sono preferiti allo sviluppo Apex personalizzato? In questo caso, soluzioni come gli eventi piattaforma sono preferite alle chiamate Apex.
Soluzione
La tabella seguente contiene le soluzioni a questo problema di integrazione.
| Soluzione | Adatta | Commenti |
|---|---|---|
| Eventi piattaforma basati sui flussi | Best | Creare flussi in modo dichiarativo per implementare gli eventi piattaforma. La soluzione consigliata è quando il processo remoto viene richiamato da un evento di inserimento o aggiornamento. Gli eventi piattaforma sono i messaggi di evento (o notifiche) che le app inviano e ricevono per intraprendere ulteriori azioni. Gli eventi piattaforma semplificano il processo di comunicazione delle modifiche e di risposta senza scrivere logica complessa. Uno o più abbonati possono ascoltare lo stesso evento ed eseguire azioni. Ad esempio, un sistema software può inviare eventi contenenti informazioni sulle cartucce di inchiostro della stampante. Gli abbonati possono abbonarsi agli eventi per monitorare i livelli di inchiostro della stampante ed effettuare ordini per sostituire le cartucce con bassi livelli di inchiostro. Le app esterne possono ascoltare i messaggi degli eventi abbonandosi a un canale tramite CometD. Le app piattaforma, ad esempio i componenti Lightning, possono abbonarsi ai messaggi di evento anche con CometD. L'API Salesforce PubSub basata su gRPC e HTTP/2 può essere utilizzata anche qui. Salesforce supporta anche i flussi attivati da eventi piattaforma, che consentono di creare un listener utilizzando l'interfaccia di Flow Builder. Questo tipo di flusso viene avviato automaticamente quando viene pubblicato un messaggio evento piattaforma specifico in Salesforce Event Bus. |
| API Pub/Sub | Best | L'API Pub/Sub è il modo consigliato per i consumatori esterni di utilizzare gli eventi sul bus degli eventi. API Pub/Sub basata su gRPC:
Una volta definito in Salesforce, un evento piattaforma diventa disponibile sia per i consumatori interni che esterni. |
| Modifica acquisizione dati | Best | Acquisizione dati di modifica (CDC) pubblica gli eventi per le modifiche nei record Salesforce corrispondenti alle operazioni di creazione, aggiornamento, eliminazione e annullamento dell'eliminazione. L'abilitazione dell'acquisizione dati di modifica (CDC) in Salesforce è un processo puramente dichiarativo che non richiede Apex Code. I messaggi di notifica vengono inviati al bus degli eventi a cui i client possono abbonarsi utilizzando l'API Pub/Sub o i trigger Apex. I sistemi basati sugli eventi semplificano la comunicazione tra i sistemi aziendali distribuiti, aumentano la scalabilità e forniscono dati in tempo reale. Ad esempio, se le informazioni sull'ordine si trovano sia nel sistema ERP che in Salesforce, è possibile trasmettere gli eventi di modifica ordine da Salesforce a un'app di integrazione. L'app sincronizza quindi le modifiche nel sistema ERP |
| Procedure di integrazione OmniStudio | Bene | Utilizzare le procedure di integrazione OmniStudio per automatizzare in modo dichiarativo le interazioni dei dati tra Salesforce e le applicazioni esterne di terze parti. Le procedure di integrazione gestiscono trasformazioni dati complesse, chiamate API e automazione basata sugli eventi e possono eseguire più azioni in una singola chiamata al server. Utilizzare le procedure di integrazione quando non è richiesta alcuna interazione dell'utente durante l'esecuzione e si desidera:
Ulteriori dettagli sulle procedure di integrazione sono disponibili qui. |
| Eventi piattaforma basati sulla personalizzazione | Bene | Simile agli eventi piattaforma basati sui flussi, ma gli eventi vengono creati da trigger Apex o classi. È possibile pubblicare e utilizzare gli eventi piattaforma utilizzando Apex o un'API. Gli eventi piattaforma si integrano con Salesforce Platform tramite trigger Apex. I trigger sono i consumatori di eventi della piattaforma Salesforce che ascoltano i messaggi degli eventi. Quando un'applicazione esterna utilizza l'API o un'applicazione Salesforce nativa utilizza Apex per pubblicare il messaggio di evento, viene attivato un trigger per quell'evento. I trigger eseguono le azioni in risposta alle notifiche degli eventi. |
| Messaggistica in uscita basata sui flussi | Adatta | La soluzione consigliata per questo tipo di integrazione è quando il processo remoto viene richiamato da un evento di inserimento o aggiornamento. Salesforce fornisce una funzionalità di messaggistica in uscita basata sul flusso che consente di inviare messaggi SOAP a sistemi remoti attivati da un'operazione di inserimento o aggiornamento in Salesforce. Questi messaggi vengono inviati in modo asincrono e sono indipendenti dall'interfaccia utente di Salesforce. Il messaggio in uscita viene inviato a un endpoint remoto specifico. Il servizio remoto deve essere in grado di partecipare a un'integrazione contract-first in cui Salesforce fornisce il contratto. Al ricevimento del messaggio, se il servizio remoto non risponde con una conferma positiva, Salesforce tenta nuovamente di inviare il messaggio, fornendo una forma di consegna garantita. |
| Componente Lightning personalizzato che avvia una chiamata asincrona Apex SOAP o HTTP | Non ottimale | Questa soluzione viene in genere utilizzata negli scenari basati sull'interfaccia utente, ma richiede una personalizzazione. Inoltre, la soluzione deve gestire la consegna garantita del messaggio nel codice. Analogamente alla soluzione per lo schema Remote Process Invocation — Request and Reply che specifica l'utilizzo di un componente Lightning, insieme a una chiamata Apex. La differenza è che in questo schema Salesforce non attende il completamento della richiesta prima di passare il controllo all'utente. Dopo aver ricevuto il messaggio, il sistema remoto risponde e indica la ricezione del messaggio, quindi elabora il messaggio in modo asincrono. Il sistema remoto controlla di nuovo Salesforce prima di iniziare a elaborare il messaggio; pertanto, Salesforce non deve attendere il completamento dell'elaborazione. |
| Trigger Apex per effettuare chiamate asincrone Apex SOAP o HTTP | Non ottimale | È possibile utilizzare i trigger Apex per eseguire l'automazione in base alle modifiche dei dati dei record. Una classe proxy Apex può essere eseguita come risultato di un'operazione DML utilizzando un trigger Apex. Tuttavia, tutte le chiamate effettuate dal contesto del trigger devono essere eseguite in modo asincrono. |
| Trigger Apex per effettuare chiamate asincrone Apex SOAP o HTTP | Non ottimale | Le chiamate a un sistema remoto possono essere eseguite da un processo batch. Questa soluzione consente l'esecuzione di processi batch remoti e l'elaborazione della risposta dal sistema remoto in Salesforce. Tuttavia, esistono limiti al numero di chiamate per un determinato contesto batch. Per ulteriori informazioni, vedere il Riferimento rapido Salesforce Developer Limits and Allocations.
|
Sketch
Lo schema riportato sotto illustra una chiamata da Salesforce a un sistema remoto in cui la creazione o l'aggiornamento di operazioni su un record attiva la chiamata.
In questo scenario:
- Un sistema remoto si abbona all'evento piattaforma.
- Viene eseguito un aggiornamento o un inserimento in un determinato insieme di record in Salesforce.
- Un flusso Salesforce viene attivato quando viene soddisfatta una serie di condizioni.
- Questo flusso crea un evento piattaforma.
- L'ascoltatore remoto riceve il messaggio di evento e lo inserisce in un'area di attesa locale.
- L'applicazione di area di attesa inoltra il messaggio all'applicazione remota per l'elaborazione.
Nel caso in cui il sistema remoto debba eseguire operazioni contro Salesforce, è possibile implementare un'operazione di richiamata facoltativa.
Risultati
L'applicazione delle soluzioni correlate a questo schema consente di:
- Interfaccia utente: chiamate a processi remoti avviate dall'interfaccia utente in cui il risultato della transazione può essere visualizzato all'utente finale
- Chiamate a processi remoti avviate da eventi DML in cui il risultato della transazione può essere elaborato dal processo chiamante
Meccanismi di chiamata
Il meccanismo di chiamata dipende dalla soluzione scelta per implementare questo schema.
| Meccanismo di chiamata | Descrizione |
|---|---|
| Flusso | Utilizzato sia dalle soluzioni basate sui processi che sulle personalizzazioni. Gli eventi attivano il processo Salesforce, che può quindi pubblicare un evento piattaforma per l'abbonamento da un sistema remoto. |
| API Pub / Sub | L'API Pub/Sub offre un'unica interfaccia per la pubblicazione e l'abbonamento agli eventi piattaforma, inclusi gli eventi di monitoraggio degli eventi in tempo reale e gli eventi di acquisizione dati di modifica. Basata su gRPC e HTTP/2, l'API Pub/Sub pubblica e fornisce in modo efficiente messaggi di eventi binari nel formato Apache Avro. |
| Modifica acquisizione dati | Acquisizione dati di modifica Salesforce pubblica gli eventi di modifica, che rappresentano le modifiche ai record Salesforce. Le modifiche includono la creazione di un nuovo record, gli aggiornamenti di un record esistente, l'eliminazione di un record e l'annullamento dell'eliminazione di un record. |
| Componente Lightning e controller Apex | Utilizzato per invocare un processo remoto in modo asincrono utilizzando una chiamata Apex. |
| Messaggistica in uscita basata sul flusso | Utilizzato solo per la soluzione di messaggistica in uscita. Gli eventi DML di creazione e aggiornamento attivano le regole di flusso di lavoro di Salesforce, che possono quindi inviare un messaggio a un sistema remoto. |
| Trigger Apex | Utilizzato per eventi piattaforma basati su trigger e invocazione di processi remoti, utilizzando chiamate Apex da eventi avviati da DML. |
| Classi batch Apex | Utilizzato per invocare processi remoti in modalità batch. |
Gestione e ripristino degli errori
Una strategia di gestione e ripristino degli errori deve essere considerata parte della soluzione complessiva. Il metodo migliore dipende dalla soluzione scelta.
| Soluzione | Gestione degli errori e strategia di ripristino |
|---|---|
| Flusso |
|
| Chiamate Apex |
|
| Acquisizione dati di modifica (CDC) / Eventi piattaforma |
|
Considerazioni sulla progettazione idempotente
Gli eventi piattaforma vengono pubblicati sul bus una sola volta. Non sono previsti nuovi tentativi sul lato Salesforce. Spetta all'ESB richiedere che gli eventi vengano riprodotti. In un replay, l'ID replay dell'evento piattaforma rimane lo stesso e l'ESB può provare a duplicare i messaggi in base all'ID replay.
L'impotenza è importante per la messaggistica in uscita perché è asincrona e i nuovi tentativi vengono avviati quando non viene ricevuta alcuna conferma positiva. Pertanto, il servizio remoto deve essere in grado di gestire i messaggi di Salesforce in modo idempotente.
La messaggistica in uscita invia un ID univoco per messaggio e questo ID rimane lo stesso per tutti i tentativi. Il sistema remoto può tenere traccia dei messaggi duplicati in base a questo ID univoco. Viene inviato anche l'ID record univoco di ogni record in aggiornamento, che può essere utilizzato per evitare la creazione di record duplicati.
Le considerazioni sulla progettazione dello schema Remote Process Invocation — Request and Reply si applicano anche a questo schema.
Considerazioni sulla sicurezza
Qualsiasi chiamata a un sistema remoto deve mantenere la riservatezza, l'integrità e la disponibilità della richiesta. Vengono applicate diverse considerazioni sulla sicurezza, a seconda della soluzione scelta.
| Soluzione | Considerazioni sulla sicurezza |
|---|---|
| Chiamate Apex | Una chiamata a un sistema remoto deve mantenere la riservatezza, l'integrità e la disponibilità della richiesta. Di seguito sono riportate considerazioni sulla sicurezza specifiche per l'utilizzo di chiamate Apex SOAP e HTTP in questo schema.
|
| Acquisizione dati di modifica (CDC) / Eventi piattaforma | Per gli eventi piattaforma, il sistema esterno abbonato deve essere in grado di eseguire l'autenticazione in Salesforce Streaming API. Gli eventi piattaforma sono conformi al modello di sicurezza esistente configurato nell'organizzazione Salesforce. Per abbonarsi a un evento, l'utente deve disporre dell'accesso in lettura all'entità evento. Per pubblicare un evento, l'utente deve disporre dell'autorizzazione "Crea" per l'entità evento. |
Vedere Considerazioni sulla sicurezza.
Intestazioni laterali
Nessuno.
Tempestività
La tempestività è meno un fattore con lo schema fuoco-e-dimentica. Il controllo viene restituito al cliente immediatamente o dopo la conferma positiva di una consegna riuscita al sistema remoto. Con la messaggistica in uscita di Salesforce, la conferma deve avvenire entro 24 ore (prolungabile fino a sette giorni), altrimenti il messaggio scade. Per gli eventi piattaforma, Salesforce invia gli eventi al bus degli eventi e non attende una conferma o una conferma da parte dell'abbonato. Se l'abbonato non risponde al messaggio, può richiedere di riprodurre l'evento utilizzando l'ID risposta dell'evento. I messaggi degli eventi a volume elevato vengono memorizzati per 72 ore (tre giorni). Per recuperare i messaggi degli eventi passati, utilizzare i client CometD per abbonarsi a un canale.
Volumi di dati
Le considerazioni sul volume dei dati dipendono dalla soluzione scelta. Per i limiti di ogni soluzione, vedere il Riferimento rapido Limiti Salesforce.
Supporto della capacità endpoint e degli standard
La funzionalità e il supporto standard per l'endpoint dipendono dalla soluzione scelta.
| Soluzione | Considerazioni sugli endpoint |
|---|---|
| Chiamate SOAP Apex | L'endpoint deve essere in grado di elaborare una chiamata al servizio Web tramite HTTP. Salesforce deve essere in grado di accedere all'endpoint tramite Internet pubblico. Questa soluzione richiede che il sistema remoto sia compatibile con gli standard supportati da Salesforce. Al momento della scrittura, gli standard dei servizi Web supportati da Salesforce per le chiamate SOAP Apex sono:
|
| Chiamate HTTP Apex | L'endpoint deve essere in grado di ricevere chiamate HTTP ed essere accessibile su Internet pubblico da Salesforce. Le chiamate HTTP Apex possono essere utilizzate per chiamare servizi RESTful utilizzando i metodi GET, POST, PUT e DELETE standard. |
| Acquisizione dati di modifica (CDC) / Eventi piattaforma |
|
Gestione statale
Quando si integrano i sistemi, gli identificatori univoci dei record sono importanti per il tracciamento dello stato in corso. Ad esempio, se viene creato un record nel sistema remoto, sono disponibili due opzioni.
- Salesforce memorizza la chiave surrogata principale o univoca del sistema remoto per il record remoto.
- Il sistema remoto memorizza l'ID record univoco Salesforce o un'altra chiave surrogata univoca.
La tabella seguente elenca le considerazioni relative alla gestione dello stato in questo schema.
| Master | Sistema Descrizione |
|---|---|
| Salesforce | Il sistema remoto deve memorizzare Salesforce RecordId o un'altra chiave surrogata univoca nel record Salesforce. |
| Sistema remoto | Salesforce deve memorizzare un riferimento all'identificatore univoco nel sistema remoto. Poiché il processo è asincrono, la memorizzazione di questo identificatore univoco non può far parte della transazione originale. Salesforce deve fornire un ID univoco nella chiamata al processo remoto. Il sistema remoto deve quindi richiamare Salesforce per aggiornare il record in Salesforce con l'identificatore univoco del sistema remoto, utilizzando l'ID univoco Salesforce. La richiamata implica una gestione specifica dello stato nell'applicazione remota per memorizzare l'identificatore univoco Salesforce per quella transazione da utilizzare per la richiamata al termine dell'elaborazione, oppure l'identificatore univoco Salesforce viene memorizzato nel record del sistema remoto. |
Scenari di integrazione complessi
Ogni soluzione in questo schema ha considerazioni diverse per scenari di integrazione complessi come la trasformazione e l'orchestrazione dei processi.
| Soluzione | Considerazioni |
|---|---|
| Chiamate Apex | In alcuni casi, le soluzioni prescritte da questo schema richiedono l'implementazione di diversi scenari di integrazione complessi meglio serviti utilizzando middleware o facendo in modo che Salesforce chiami un servizio composito. Questi scenari includono:
|
| Acquisizione dati di modifica (CDC) / Eventi piattaforma | Data la natura statica e dichiarativa degli eventi, in Salesforce non è possibile eseguire scenari di integrazione complessi come aggregazione, orchestrazione o trasformazione. Il sistema remoto o il middleware deve gestire questi tipi di operazioni. |
| Procedure di integrazione OmniStudio | Le procedure di integrazione (OmniStudio) offrono un'orchestrazione stateless lato server per coordinare più servizi di back-end durante l'esecuzione di trasformazioni dati complesse e dichiarative. Procedure di integrazione concatena fasi come Azioni HTTP, Estrazione/Trasformazione/Caricamento di DataRaptor, Imposta valori, Loop/If e ricerche a matrice per normalizzare, arricchire, aggregare e mappare i payload tra i contratti dell'interfaccia utente e le diverse API. Supportano controlli di runtime efficaci come la ramificazione condizionale, la paginazione, i timeout, i tentativi, la gestione parziale degli errori e il continuo errore, nonché ottimizzazioni delle prestazioni come il caching lato server e la definizione della risposta. Gli IP possono essere richiamati in modo sincrono da OmniScript o headless tramite REST, abilitando "facciate di integrazione" riutilizzabili e con versione che nascondono la complessità back-end dai canali. |
Limitazioni del governatore
A causa della natura multi-tenant della piattaforma Salesforce, esistono limiti per le chiamate in uscita. I limiti dipendono dal tipo di chiamata in uscita e dall'orario della chiamata.
Per i limiti e le allocazioni che si applicano agli eventi piattaforma, vedere il documento Platforms Events Developer Guide.
Messaggistica affidabile
Messaggistica affidabile tenta di risolvere il problema di garantire la consegna di un messaggio a un sistema remoto in cui i singoli componenti non sono affidabili. Il metodo per garantire la ricezione di un messaggio dal sistema remoto dipende dalla soluzione scelta.
In caso di Acquisizione dati di modifica Salesforce vengono forniti tipi di eventi di modifica per gestire situazioni speciali, ad esempio l'acquisizione di modifiche non rilevate nei server delle applicazioni Salesforce o la gestione di carichi elevati di modifiche.
In alcuni casi, Salesforce invia eventi gap anziché eventi di modifica per informare gli abbonati in caso di errori o se non è possibile generare eventi di modifica. Un evento gap contiene informazioni sulla modifica nell'intestazione, ad esempio il tipo di modifica e l'ID record. Non include dettagli sulla modifica, ad esempio i campi dei record. Per acquisire le modifiche in modo più efficiente, vengono generati eventi Overflow per le transazioni singole che superano una soglia. Per ulteriori informazioni vedere qui.
| Soluzione | Considerazioni sulla messaggistica affidabile |
|---|---|
| Chiamate Apex | Salesforce non fornisce un supporto esplicito per protocolli di messaggistica affidabili (ad esempio, WS-ReliableMessaging). È consigliabile che l'endpoint remoto che riceve il messaggio Salesforce implementi un sistema di messaggistica affidabile, ad esempio JMS o MQ. Questo sistema garantisce la consegna completa end-to-end garantita al sistema remoto che elabora il messaggio. Tuttavia, questo sistema non garantisce la consegna garantita da Salesforce all'endpoint remoto che chiama. La consegna garantita deve essere gestita tramite le personalizzazioni in Salesforce. Devono essere implementate tecniche specifiche, ad esempio l'elaborazione di una conferma positiva dall'endpoint remoto, oltre alla logica di tentativo personalizzata. |
| Acquisizione dati di modifica (CDC) / Eventi piattaforma | Eventi piattaforma tenta di fornire una messaggistica affidabile mantenendo temporaneamente i messaggi di evento nel bus degli eventi. Gli abbonati possono recuperare i messaggi degli eventi mancati riproducendo i messaggi dal bus degli eventi utilizzando il Replay ID dei messaggi degli eventi. Il bus degli eventi è un sistema distribuito e non offre le stesse garanzie di un database transazionale. Di conseguenza, Salesforce non è in grado di fornire una risposta sincrona per una richiesta di pubblicazione evento. Gli eventi vengono inseriti in area di attesa e bufferizzati e Salesforce tenta di pubblicarli in modo asincrono. In rari casi, il messaggio di evento potrebbe non essere mantenuto nel sistema distribuito durante i tentativi iniziali o successivi. Ciò significa che gli eventi non vengono consegnati agli abbonati e non sono recuperabili. |
Funzioni middleware
La tabella seguente evidenzia le proprietà desiderate di un sistema middleware che partecipa a questo schema.
| Proprietà | Obbligatorio | Auspicabile | Non richiesto |
|---|---|---|---|
| Gestione degli eventi | X | ||
| Conversione protocollo | X | ||
| Traduzione e trasformazione | X | ||
| Messa in attesa e buffering | X | ||
| Protocolli di trasporto sincrono | X | ||
| Protocolli di trasporto asincrono | X | ||
| Instradamento della mediazione | X | ||
| Coreografia del processo e orchestrazione del servizio | X | ||
| Transazionalità (crittografia, firma, consegna affidabile, gestione delle transazioni) | X | ||
| Instradamento | X | ||
| Estrazione, trasformazione e caricamento | X | ||
| polling lungo | X (obbligatorio per gli eventi piattaforma) |
Variante della soluzione - Eventi piattaforma: Comportamento di pubblicazione e transazioni
Quando i messaggi degli eventi piattaforma vengono pubblicati immediatamente, la pubblicazione degli eventi non rispetta i confini delle transazioni del processo di pubblicazione. I messaggi degli eventi possono essere pubblicati prima del completamento della transazione o anche se la transazione non riesce. Questo comportamento può causare problemi quando un abbonato prevede di trovare i dati che la transazione di pubblicazione conferma. I dati potrebbero non essere presenti quando l'abbonato riceve il messaggio di evento. Per risolvere questo problema, impostare il comportamento di pubblicazione dell'evento piattaforma su Pubblica dopo l'impegno nella definizione dell'evento. I comportamenti di pubblicazione che è possibile impostare in una definizione evento piattaforma sono:
- Pubblica dopo l'impegno per fare in modo che il messaggio dell'evento venga pubblicato solo dopo che una transazione è stata confermata correttamente. Selezionare questa opzione se gli abbonati si basano sui dati confermati dalla transazione di pubblicazione. Ad esempio, un processo pubblica un messaggio di evento e crea un record operazione. Viene attivato un secondo processo abbonato all'evento che prevede di trovare il record operazione. Un altro motivo per scegliere questo comportamento è quando non si desidera che il messaggio di evento venga pubblicato se la transazione non riesce.
- Pubblica immediatamente per fare in modo che il messaggio di evento venga pubblicato quando viene eseguita la chiamata di pubblicazione. Selezionare questa opzione se si desidera che il messaggio dell'evento venga pubblicato indipendentemente dal fatto che la transazione abbia esito positivo. Scegliere anche questa opzione se il publisher e gli abbonati sono indipendenti e gli abbonati non si basano sui dati confermati dal publisher. Ad esempio, il comportamento di pubblicazione immediata è adatto a un evento utilizzato per la registrazione. Con questa opzione, un abbonato potrebbe ricevere il messaggio di evento prima che i dati vengano confermati dalla transazione publisher.
Esempio
Una società di telecomunicazioni desidera utilizzare Salesforce come front-end per la creazione di account utilizzando il processo lead-to-opportunity. Un ordine viene creato in Salesforce quando l'opportunità viene chiusa e conseguita, ma il sistema ERP di back-end è il master dei dati. L'ordine deve essere salvato nel record opportunità Salesforce e lo stato dell'opportunità modificato per indicare che l'ordine è stato creato.
Si applicano i seguenti vincoli.
- Solo lo sviluppo dichiarativo può essere implementato.
- Non è necessaria una notifica immediata del numero d'ordine dopo che l'opportunità è stata convertita in ordine.
- L'organizzazione dispone di un ESB che supporta il protocollo CometD ed è in grado di abbonarsi agli eventi piattaforma.
Questo esempio è implementato al meglio utilizzando gli eventi piattaforma Salesforce, ma richiede che l'ESB si abboni all'evento piattaforma.
Sul lato Salesforce:
- Creare un flusso per avviare l'evento piattaforma (ad esempio, quando lo stato dell'opportunità diventa Chiusa-conseguita).
- Creare un nuovo evento piattaforma che pubblica i dettagli dell'opportunità.
Sul lato del sistema remoto:
- L'ESB si abbona all'evento piattaforma Salesforce utilizzando il protocollo CometD.
- L'ESB riceve una o più notifiche che indicano che l'opportunità deve essere convertita in ordine.
- L'ESB inoltra il messaggio al sistema ERP di back-end in modo che l'ordine possa essere creato.
- Dopo che l'ordine è stato creato nel sistema ERP, un thread separato richiama Salesforce utilizzando SessionId come token di autenticazione. La richiamata aggiorna l'opportunità con il numero d'ordine e lo stato. È possibile eseguire questa richiamata utilizzando soluzioni basate su schemi documentati, ad esempio eventi piattaforma Salesforce, API SOAP Salesforce, API REST o un servizio Web Apex.
Questo esempio dimostra quanto segue.
- Implementazione di un processo remoto invocato in modo asincrono
- Consegna garantita end-to-end
- Richiamata successiva a Salesforce per aggiornare lo stato del record
Context
Si sta spostando l'implementazione CRM in Salesforce e si desidera:
- Estrarre e trasformare account, referenti e opportunità dal sistema CRM corrente e caricare i dati in Salesforce (importazione dati iniziale).
- Estrarre, trasformare e caricare i dati di fatturazione dei clienti in Salesforce da un sistema remoto su base settimanale (in corso).
- Estrarre le informazioni sulle attività dei clienti da Salesforce e importarle in un data warehouse locale su base settimanale (in corso).
Problema
Come si importano i dati in Salesforce ed esportano i dati da Salesforce, tenendo presente che queste importazioni ed esportazioni possono interferire con le operazioni degli utenti finali durante l'orario di ufficio e coinvolgere grandi quantità di dati?
Forze
Quando si applicano soluzioni basate su questo schema, è necessario considerare diversi fattori:
- I dati devono essere memorizzati in Salesforce? In caso contrario, esistono altre opzioni di integrazione che un architetto può e deve considerare (ad esempio, i mashup).
- Se i dati devono essere archiviati in Salesforce, è necessario aggiornarli in risposta a un evento nel sistema remoto?
- I dati devono essere aggiornati su base pianificata?
- I dati supportano i processi aziendali principali?
- Esistono requisiti di analisi (reportistica) che risentono della disponibilità di questi dati in Salesforce?
Soluzione
La tabella seguente contiene varie soluzioni a questo problema di integrazione.
| Soluzione | Adatta | Master di dati | Commenti |
|---|---|---|---|
| Replica tramite strumento ETL di terze parti | Best | Sistema remoto | Quando un sistema esterno deve inviare una grande quantità di dati a Salesforce, utilizzare uno strumento ETL di terze parti che consente di eseguire l'acquisizione dati di modifica rispetto ai dati di origine. Lo strumento reagisce alle modifiche nella serie di dati di origine, trasforma i dati e quindi chiama l'API in blocco Salesforce per emettere istruzioni DML. Questo può essere implementato anche utilizzando le API REST Salesforce se il numero di record è inferiore. |
| Replica tramite strumento ETL di terze parti | Bene | Salesforce | Sfruttare uno strumento ETL di terze parti che consente di eseguire acquisizione dati di modifica con le serie di dati ERP e Salesforce. In questa soluzione, Salesforce è la fonte di dati ed è possibile utilizzare le informazioni sull'ora/lo stato sulle singole righe per eseguire query sui dati e filtrare l'insieme di risultati di destinazione. Questo può essere implementato utilizzando l'API in blocco 2.0 o le API REST standard (se il numero di record è minore). |
| Importazione guidata dati e Data Loader | Adatta | Salesforce / Sistema esterno | Importazione guidata dati e Data Loader possono essere utilizzati per importare, esportare e migrare i dati. Benché i comandi di Data Loader possano anche essere scriptati per automatizzare l'importazione e l'esportazione dei dati, l'interfaccia della riga di comando è solo per Windows. Nessuno di questi due strumenti è una base consigliata per una strategia di integrazione dei dati. Dovrebbero invece integrare la strategia di gestione e manutenzione dei dati. Per ulteriori informazioni su Data Loader, vedere qui. |
| Chiamata remota | Non ottimale | Sistema remoto | È possibile che un sistema remoto chiami in Salesforce utilizzando una delle API ed esegua aggiornamenti ai dati non appena si verificano. Tuttavia, ciò causa un notevole traffico continuo tra i due sistemi. È opportuno porre maggiore enfasi sulla gestione e il blocco degli errori. Questo schema può causare aggiornamenti continui, con possibili conseguenze sulle prestazioni per gli utenti finali. |
| Chiamata processo remoto | Non ottimale | Salesforce | È possibile che Salesforce chiami in un sistema remoto ed esegua aggiornamenti ai dati non appena si verificano. Tuttavia, ciò causa un notevole traffico continuo tra i due sistemi. È opportuno porre maggiore enfasi sulla gestione e il blocco degli errori. Questo schema può causare aggiornamenti continui, con possibili conseguenze sulle prestazioni per gli utenti finali. |
Sketch
Il diagramma seguente illustra la sequenza degli eventi in questo schema, in cui Salesforce è il master dei dati.
Il diagramma seguente illustra la successiva sincronizzazione degli eventi quasi in tempo reale, in cui Salesforce è il master dei dati.
Risultati
È possibile integrare i dati provenienti dall'esterno con Salesforce nei seguenti scenari:
- Il sistema esterno è il master dei dati: Salesforce è un consumatore di dati forniti da un singolo sistema di origine o da più sistemi. In questo scenario, è comune avere un data warehouse o un data mart che aggrega i dati prima che i dati vengano importati in Salesforce.
- Salesforce è il master dei dati: Salesforce è il sistema di registrazione di determinate entità e le applicazioni client Acquisizione dati di modifica Salesforce possono essere informate delle modifiche ai dati Salesforce.
In un tipico scenario di integrazione Salesforce, il team di implementazione esegue una delle seguenti operazioni:
- Implementare l'acquisizione dati di modifica nella serie di dati di origine.
- Implementare una serie di strutture di database di supporto, dette tabelle di controllo, in un database locale intermedio.
Lo strumento ETL viene quindi utilizzato per creare programmi che:
- Leggere una tabella di controllo per determinare l'ultimo tempo di esecuzione del processo ed estrarre eventuali altri valori di controllo necessari.
- Utilizzare i valori di controllo indicati sopra come filtri ed eseguire query sulla serie di dati di origine.
- Applicare regole di elaborazione predefinite, tra cui convalida, arricchimento e così via.
- Utilizzare i connettori/le funzionalità di trasformazione disponibili dello strumento ETL per creare la serie di dati di destinazione.
- Scrivere la serie di dati negli oggetti Salesforce.
- Se l'elaborazione ha esito positivo, aggiornare i valori di controllo nella tabella di controllo.
- Se l'elaborazione non riesce, aggiornare le tabelle di controllo con valori che consentono il riavvio e l'uscita.
Nota: Si consiglia di creare le tabelle di controllo e le strutture di dati associate in un ambiente a cui lo strumento ETL ha accesso anche se l'accesso a Salesforce non è disponibile. Ciò fornisce livelli adeguati di resilienza. Salesforce deve essere considerato un punto saliente in questo processo e l'infrastruttura ETL è l'hub.
Per uno strumento ETL per sfruttare al massimo le funzionalità di sincronizzazione dei dati, tenere presente quanto segue:
- Concatenare e mettere in sequenza i processi ETL per offrire un processo coerente.
- Utilizzare le chiavi principali di entrambi i sistemi per abbinare i dati in entrata.
- Utilizzare metodi API specifici per estrarre solo i dati aggiornati.
- Se si importano record controllati in una relazione record principale-record dettaglio o di ricerca, raggruppare i dati importati utilizzando la chiave controllante all'origine per evitare il blocco. Ad esempio, se si importano i dati dei referenti, assicurarsi di raggruppare i dati dei referenti in base alla chiave account controllante in modo che sia possibile caricare il numero massimo di referenti per un singolo account in una sola chiamata API. Se non si raggruppano i dati importati, in genere il primo record referente viene caricato e i successivi record referente di quell'account non vengono visualizzati nel contesto della chiamata API.
- Qualsiasi elaborazione post-importazione, ad esempio i trigger, deve elaborare i dati solo in modo selettivo.
- Se lo scenario prevede grandi volumi di dati, seguire le procedure consigliate di questo modulo Trailhead Best Practices for Deployments with Large Data Volumes (Migliori pratiche per le distribuzioni con grandi volumi di dati) .
Gestione e ripristino degli errori
Una strategia di gestione e ripristino degli errori deve essere considerata parte della soluzione complessiva. Il metodo migliore dipende dalla soluzione scelta.
| Posizione errore | Strategia di gestione e ripristino degli errori |
|---|---|
| Lettura da Salesforce con Acquisizione dati modifica |
|
| Lettura da Salesforce utilizzando un sistema ETL di terze parti |
|
| Scrivi a Salesforce |
|
| Sistema master esterno | Gli errori devono essere gestiti in conformità alle procedure consigliate del sistema principale. |
Considerazioni sulla sicurezza
Qualsiasi chiamata a un sistema remoto deve mantenere la riservatezza, l'integrità e la disponibilità della richiesta. Vengono applicate diverse considerazioni sulla sicurezza, a seconda della soluzione scelta.
- Per consentire l'accesso API autenticato all'API Salesforce è necessaria una licenza Lightning Platform con almeno le autorizzazioni utente "Solo API".
- Si consiglia di utilizzare la crittografia standard per garantire la sicurezza dell'accesso con password.
- Utilizzare il protocollo HTTPS quando si effettuano chiamate alle API Salesforce. Se necessario, è anche possibile delegare il traffico alle API Salesforce tramite una soluzione di sicurezza locale.
Vedere Considerazioni sulla sicurezza.
Intestazioni laterali
Nessuno.
Tempestività
La tempestività non è importante in questo schema. Tuttavia, è necessario fare attenzione a progettare le interfacce in modo che tutti i processi batch vengano completati in una finestra batch designata.
Come per tutte le operazioni orientate ai batch, si consiglia vivamente di prestare attenzione a isolare i sistemi di origine e di destinazione durante le finestre di elaborazione batch. Il caricamento dei batch durante l'orario di ufficio può causare controversie, con il risultato che l'aggiornamento di un utente non riesce o, più significativamente, un caricamento batch (o caricamento batch parziale) non riesce.
Per le organizzazioni con operazioni globali, potrebbe non essere possibile eseguire tutti i processi batch contemporaneamente poiché il sistema potrebbe essere continuamente in uso. È possibile utilizzare tecniche di segmentazione dei dati che utilizzano tipi di record e altri criteri di filtro per evitare contenziosi sui dati in questi casi.
Gestione statale
È possibile implementare la gestione dello stato utilizzando chiavi surrogate tra i due sistemi. Se è necessario gestire qualsiasi tipo di transazione tra entità Salesforce, si consiglia di utilizzare lo schema di chiamata remota utilizzando Apex.
Il blocco dei record ottimistico standard si verifica nella piattaforma e tutti gli aggiornamenti effettuati utilizzando l'API richiedono all'utente che sta modificando il record di aggiornare il record e avviare la transazione. Nel contesto dell'API Salesforce, il blocco ottimistico si riferisce a un processo in cui:
- Salesforce non mantiene lo stato di un record modificato da un utente specifico.
- Durante la lettura, registra l'ora in cui i dati sono stati estratti.
- Se l'utente aggiorna il record e lo salva, Salesforce verifica se un altro utente ha aggiornato il record nel frattempo.
- Se il record è stato aggiornato, il sistema notifica all'utente che è stato eseguito un aggiornamento e l'utente deve recuperare la versione più recente del record prima di procedere con gli aggiornamenti.
Funzioni middleware
Le tecnologie esterne più efficaci utilizzate per implementare questo schema sono gli strumenti ETL tradizionali. È importante che gli strumenti middleware scelti supportino l'API in blocco Salesforce.
È utile, ma non fondamentale, che gli strumenti middleware supportino la funzione getUpdated(). Questa funzione offre l'implementazione più vicina alla funzionalità di acquisizione dati di modifica standard nella piattaforma Salesforce.
La tabella seguente evidenzia le proprietà desiderate di un sistema middleware che partecipa a questo schema.
| Proprietà | Obbligatorio | Auspicabile | Non richiesto |
|---|---|---|---|
| Gestione degli eventi | X | ||
| Conversione protocollo | X | ||
| Traduzione e trasformazione | X | ||
| Messa in attesa e buffering | X | ||
| Protocolli di trasporto sincrono | X | ||
| Protocolli di trasporto asincrono | X | ||
| Instradamento della mediazione | X | ||
| Coreografia del processo e orchestrazione del servizio | X | ||
| Transazionalità (crittografia, firma, consegna affidabile, gestione delle transazioni) | X | ||
| Instradamento | X | ||
| Estrazione, trasformazione e caricamento | X | ||
| Sondaggio lungo | X (obbligatorio per Acquisizione dati di modifica Salesforce) |
Esempio
Una società di servizi utilizza un processo batch basato su mainframe che assegna i clienti potenziali a singoli agenti di vendita e team. Queste informazioni devono essere importate in Salesforce ogni notte.
Il cliente ha deciso di implementare l'acquisizione dati di modifica nelle tabelle di origine utilizzando uno strumento ETL disponibile in commercio. La soluzione funziona come segue:
- Uno strumento di pianificazione simile a una cronologia esegue un processo batch che assegna clienti potenziali a utenti e team.
- Dopo l'esecuzione del processo batch e l'aggiornamento dei dati, lo strumento ETL riconosce queste modifiche utilizzando l'acquisizione dati di modifica. Lo strumento ETL confronta le modifiche dall'archivio dati.
- Il connettore ETL utilizza l'API REST Salesforce per caricare le modifiche in Salesforce.
Context
Salesforce si utilizza per tenere traccia dei lead, gestire le opportunità in corso di realizzazione, creare opportunità e acquisire i dettagli degli ordini che convertono i lead in clienti. Il sistema Salesforce crea gli ordini internamente e quindi invia i dati al sistema di fatturazione esterno per il provisioning e l'attivazione. Gli ordini di fatturazione sono gestiti da un sistema esterno (remoto). Il sistema remoto deve aggiornare lo stato dell'ordine in Salesforce quando l'ordine o l'entità di fatturazione sullo stato del sistema di fatturazione cambia.
Problema
In che modo un sistema remoto si connette e si autentica con Salesforce per informare Salesforce di eventi esterni, creare record e aggiornare record esistenti?
Forze
Quando si applicano soluzioni basate su questo schema, è necessario considerare diversi fattori:
- Lo scopo della chiamata remota a Salesforce è informare Salesforce di un evento che si è verificato esternamente utilizzando un'architettura basata sugli eventi? Oppure lo scopo è eseguire operazioni CRUD su record specifici? Se si utilizza un'architettura basata sugli eventi, il produttore dell'evento (il processo remoto) viene disaccoppiato dal consumatore dell'evento Salesforce.
- La chiamata a Salesforce richiede che il processo remoto attenda una risposta prima di continuare l'elaborazione? Le chiamate remote a Salesforce sono sempre richieste-risposte sincrone, anche se il processo remoto può scartare la risposta se non è necessario simulare una chiamata asincrona.
- Ogni transazione funziona per un singolo oggetto Salesforce o per più oggetti correlati?
- Qual è il formato del messaggio (ad esempio, SOAP o REST o entrambi su HTTP)?
- Le dimensioni del messaggio sono relativamente piccole o grandi?
- Se il sistema remoto è compatibile con SOAP, è in grado di partecipare a un approccio basato sul contratto, in cui Salesforce detta il contratto? Questo è necessario dove viene utilizzata la nostra API SOAP, per la quale viene fornito un WSDL predefinito.
- È necessaria l'elaborazione delle transazioni?
- Qual è la misura in cui si tollera la personalizzazione in Salesforce?
Soluzione
Questa tabella contiene varie soluzioni a questo problema di integrazione.
| Soluzione | Adatta | Commenti |
|---|---|---|
| API composta | Best | Salesforce fornisce un'API composta che è fondamentalmente un'API REST e supporta le richieste composte. Può essere utilizzato dai sistemi remoti per:
API sincrona: dopo aver effettuato la chiamata API, l'applicazione client remota attende di ricevere una risposta dal servizio. Transaction/Commit Behavior (Comportamento transazione/impegno): per impostazione predefinita, l'API composta non consente un esito positivo parziale se alcuni record sono contrassegnati da errori. Questo può essere modificato contrassegnando il flag “tutto o niente” come false, il che consentirà un successo parziale. Gestione errori: Una corretta gestione degli errori deve esaminare il corpo della risposta, non solo i codici di stato HTTP. Un endpoint composito risponde con 200 codice di stato HTTP anche se all'interno del corpo della risposta indica che una delle sottorichieste non è riuscita e che la transazione è stata ritirata. |
| API REST | Best | Accessibilità: Salesforce fornisce un'API REST che i sistemi remoti possono utilizzare per:
API sincrona: dopo aver effettuato la chiamata API, l'applicazione client remota attende di ricevere una risposta dal servizio. L'API REST rispetta la protezione a livello di oggetto e a livello di campo configurata in Salesforce in base al profilo dell'utente connesso. REST espone le risorse (entità/oggetti) come URI e utilizza i verbi HTTP per definire le operazioni CRUD su queste risorse. A differenza di SOAP, l'API REST non richiede alcun contratto predefinito, utilizza XML e JSON per le risposte e ha tipizzazioni non definite. L'API REST è leggera e offre un metodo semplice per interagire con Salesforce. I suoi vantaggi includono la facilità di integrazione e sviluppo ed è una scelta eccellente per l'uso con app mobili e app Web. Comportamento transazione/impegno: per impostazione predefinita, ogni record viene trattato come una transazione separata e confermato separatamente. L'errore di una modifica del record non causa il ritiro di altre modifiche del record. Questo comportamento può essere modificato in un comportamento "tutto o niente". Utilizzare le risorse composite dell'API REST per eseguire una serie di aggiornamenti in una sola chiamata API. Dati in blocco: qualsiasi operazione sui dati che include più di 2.000 record è un buon candidato per l'API in blocco 2.0 per preparare, eseguire e gestire correttamente un flusso di lavoro asincrono che utilizza il framework in blocco. |
| API in blocco 2.0 | Ideale per le operazioni in blocco | L'API in blocco 2.0 è l'API moderna e semplificata di Salesforce per la gestione di operazioni sui dati su larga scala. L'API in blocco 2.0 basata su REST offre un'opzione di programmazione per inserire, inserire con aggiornamento, eseguire query o eliminare in modo asincrono serie di dati di grandi dimensioni nell'organizzazione Salesforce. È progettato per garantire l'efficienza quando è necessario caricare grandi quantità di dati in Salesforce o eseguire query in blocco sui dati dell'organizzazione. A differenza dell'API in blocco 1.0, l'API in blocco 2.0 elabora sempre i batch in parallelo e non supporta la modalità seriale. Ciò significa che:
Ogni batch nell'API in blocco 2.0 viene elaborato come transazione separata. Ciò significa:
Sebbene l'API SOAP possa essere utilizzata anche per l'elaborazione di un numero elevato di record, diventa meno ottimale quando le serie di dati contengono da centinaia di migliaia a milioni di record. Ciò è dovuto al suo sovraccarico relativamente elevato e alle sue caratteristiche di prestazioni inferiori.
|
| API Pub/Sub | Best |
L'API Pub/Sub è il modo consigliato per i publisher esterni per pubblicare gli eventi sul bus degli eventi. L'API Pub/Sub è un'API basata su gRPC che consente ai sistemi esterni di pubblicare eventi piattaforma. API Pub/Sub:
Una volta definito in Salesforce, un evento piattaforma diventa disponibile sia per i consumatori interni che esterni. |
| Eventi piattaforma | Best |
Gli eventi piattaforma vengono definiti nello stesso modo in cui si definiscono gli oggetti Salesforce. Gli eventi piattaforma possono essere pubblicati utilizzando diversi meccanismi come le API REST, l'API in blocco e le API SOAP.
Pubblicare un evento tramite l'API REST equivale a creare un record Salesforce. Formato endpoint: POST /services/data/vXX.X/sobjects/EventName__e/
Con l'API in blocco sono supportate solo le operazioni di creazione e inserimento. Gli eventi all'interno di un batch vengono pubblicati nel bus degli eventi Salesforce in modo asincrono durante l'elaborazione del processo batch. Poiché gli eventi piattaforma sono SObject, sono supportate le operazioni API SOAP standard. |
| API SOAP | Adatta |
Accessibilità: Salesforce fornisce un'API SOAP che i sistemi remoti possono utilizzare per:
API sincrona: dopo aver effettuato la chiamata API, l'applicazione client remota attende di ricevere una risposta dal servizio. Le chiamate asincrone a Salesforce non sono supportate. WSDL generato: Salesforce fornisce due WSDL per i sistemi remoti:
Sicurezza: il client che esegue l'API SOAP deve disporre di un accesso valido e ottenere una sessione per eseguire eventuali chiamate API. L'API rispetta la protezione a livello di oggetto e a livello di campo configurata in Salesforce in base al profilo dell'utente connesso. Transaction/Commit Behavior (Comportamento transazione/impegno): per impostazione predefinita, ogni chiamata API consente una riuscita parziale se alcuni record sono contrassegnati da errori. Questo può essere modificato in un comportamento "tutto o niente" in cui tutti i risultati vengono ritirati se si verifica un errore. Non è possibile estendere una transazione a più chiamate API. Per superare questa limitazione, è possibile che una singola chiamata API abbia effetto su più oggetti. |
| Servizi Web Apex | Non ottimale |
I metodi delle classi Apex possono essere esposti come metodi di servizi Web ad applicazioni esterne. Questo metodo è un'alternativa all'API SOAP e viene in genere utilizzato solo dove devono essere soddisfatti i seguenti requisiti aggiuntivi.
I vantaggi dell'utilizzo di un servizio Web Apex devono essere confrontati con il codice aggiuntivo che deve essere mantenuto in Salesforce. Non applicabile agli eventi piattaforma perché la logica di preinserimento delle transazioni presso il consumatore non si applica in un architettura basata sugli eventi. Per informare un'organizzazione Salesforce che si è verificato un evento, utilizzare l'API SOAP, l'API REST o l'API in blocco 2.0. |
| Servizi REST Apex | Non ottimale |
Una classe Apex può essere esposta come risorse REST mappate a URI specifici con un verbo HTTP definito (ad esempio, POST o GET).
È possibile utilizzare le risorse composite API REST per eseguire più aggiornamenti in una singola transazione. A differenza di SOAP, non è necessario che il client utilizzi una definizione/contratto di servizio (WSDL) e generi stub client. Il sistema remoto richiede solo la capacità di formare una richiesta HTTP ed elaborare i risultati restituiti (XML o JSON). Non applicabile agli eventi piattaforma perché la logica di preinserimento delle transazioni presso il consumatore non si applica in un architettura basata sugli eventi. Per informare un'organizzazione Salesforce che si è verificato un evento, utilizzare l'API SOAP, l'API REST o l'API in blocco 2.0. |
Sketch
I diagrammi seguenti illustrano la sequenza degli eventi quando si implementa questo schema utilizzando l'API REST per le notifiche da eventi esterni o l'API SOAP per eseguire query su un oggetto Salesforce. La sequenza degli eventi è la stessa quando si utilizza l'API REST.
Esecuzione remota di query di sistema in Salesforce tramite API SOAP
Notifica del sistema remoto a Salesforce con gli eventi tramite l'API REST
Risultati
In un'architettura basata sugli eventi, il sistema remoto chiama Salesforce utilizzando l'API SOAP, l'API REST o l'API in blocco 2.0 per pubblicare un evento nel bus degli eventi Salesforce. La pubblicazione di un evento invia una notifica a tutti gli abbonati. Gli abbonati agli eventi possono trovarsi in Salesforce Platform, ad esempio Flussi o Componenti Lightning, trigger Apex. Gli abbonati agli eventi possono anche essere esterni a Salesforce Platform, ad esempio gli abbonati CometD.
Quando si lavora direttamente con gli oggetti Salesforce, le soluzioni correlate a questo schema consentono di:
- Il sistema remoto chiama le API Salesforce per eseguire query sul database ed eseguire operazioni su singoli oggetti (creazione, aggiornamento, eliminazione e così via).
- Sistema remoto per chiamare le risorse composite dell'API REST Salesforce per eseguire una serie di operazioni sugli oggetti.
- Sistema remoto per chiamare API Salesforce personalizzate (servizi) che possono supportare operazioni transazionali multi-oggetto e logica di pre/post-elaborazione personalizzata.
Meccanismi di chiamata
Il meccanismo di chiamata dipende dalla soluzione scelta per implementare questo schema.
| Meccanismo di chiamata | Descrizione |
|---|---|
| API SOAP | Il sistema remoto utilizza Salesforce Enterprise o Partner WSDL per generare stub client che a loro volta vengono utilizzati per invocare l'API SOAP standard. |
| API REST | Il sistema remoto deve eseguire l'autenticazione prima di accedere a qualsiasi servizio REST Apex. Il sistema remoto può utilizzare OAuth 2.0 o l'autenticazione con nome utente e password. In entrambi i casi, il client deve impostare l'intestazione HTTP di autorizzazione con il valore appropriato (è possibile acquisire un token di accesso OAuth o un ID sessione tramite una chiamata di accesso all'API SOAP). Il sistema remoto genera quindi invocazioni REST (richieste HTTP) con i verbi appropriati ed elabora i risultati restituiti (sono supportati i formati di dati JSON e XML). |
| Servizio Web Apex | Il sistema remoto utilizza il servizio Web Apex personalizzato WSDL per generare stub client che a loro volta vengono utilizzati per invocare il servizio Web Apex personalizzato. |
| Servizio REST Apex | Secondo l'API REST, l'URI della risorsa e i verbi applicabili vengono definiti utilizzando le annotazioni @RestResource, @HttpGet e @HttpPost. |
| API in blocco 2.0 | Poiché l'API in blocco 2.0 è un'API basata su REST, si applicano gli stessi meccanismi di chiamata dell'API REST. |
| API REST per invocare Flusso | Utilizzare l'API REST per chiamare un endpoint azioni invocabili personalizzate per invocare un flusso AutoLaunched. |
Gestione e ripristino degli errori
Una strategia di gestione e ripristino degli errori deve essere considerata parte della soluzione complessiva.
- Gestione degli errori: tutti i metodi di chiamata remota, API standard o personalizzate, richiedono che il sistema remoto gestisca eventuali errori successivi, ad esempio i timeout e la gestione dei tentativi. Middleware può essere utilizzato per fornire la logica per la gestione e il ripristino degli errori.
- Ripristino: è necessario creare un meccanismo di tentativo personalizzato se richiesto dai requisiti di qualità del servizio. In questo caso, è importante garantire caratteristiche di progettazione idempotenti. L'evento piattaforma consente agli abbonati di utilizzare il replay ID per recuperare i messaggi entro un determinato periodo di tempo dopo la pubblicazione di tali messaggi.
Considerazioni sulla progettazione idempotente
Le funzionalità idempotenti garantiscono che le chiamate ripetute siano sicure e non abbiano un effetto negativo. Se non viene implementata l'impotenza, le invocazioni ripetute dello stesso messaggio possono avere risultati diversi, causando potenzialmente problemi di integrità dei dati, ad esempio la creazione di record duplicati, l'elaborazione di transazioni duplicate e così via.
Il sistema remoto deve gestire più chiamate (duplicate), in caso di errori o timeout, per evitare inserimenti duplicati e aggiornamenti ridondanti (soprattutto se vengono attivati trigger a valle e regole di flusso di lavoro). Benché sia possibile gestire alcune di queste situazioni all'interno di Salesforce (in particolare nel caso di servizi SOAP e REST personalizzati), si consiglia al sistema remoto (o middleware) di gestire la gestione degli errori e la progettazione idempotente.
Considerazioni sulla sicurezza
Vengono applicate diverse considerazioni sulla sicurezza, a seconda della soluzione di schema scelta. In tutti i casi, la piattaforma utilizza i diritti di accesso dell'utente connesso (ad esempio, impostazioni del profilo, regole di condivisione, insiemi di autorizzazioni e così via). Inoltre, le restrizioni IP del profilo possono essere utilizzate per limitare l'accesso all'API per un intervallo di indirizzi IP specifico.
| Soluzione | Considerazioni sulla sicurezza |
|---|---|
| API SOAP | alesforce supporta i protocolli Secure Sockets Layer v3 (SSL) e Transport Layer Security (TLS). I cifrari devono avere una lunghezza della chiave di almeno 128 bit. Il sistema remoto deve eseguire l'accesso utilizzando credenziali valide per ottenere un ID sessione. Se il sistema remoto ha già un ID sessione valido, può chiamare l'API senza un accesso esplicito. Questo è utilizzato negli schemi di richiamata descritti in precedenza in questo documento, dove un messaggio in uscita Salesforce precedente conteneva un ID sessione e un ID record per un uso successivo. Si consiglia ai client che chiamano l'API SOAP di memorizzare nella cache e riutilizzare l'ID sessione per ottimizzare le prestazioni, anziché ottenere un nuovo ID sessione per ogni chiamata. |
| API REST | Si consiglia al sistema remoto di stabilire un Trust OAuth per l'autorizzazione. Le chiamate REST possono quindi essere effettuate su risorse specifiche utilizzando verbi HTTP. È anche possibile effettuare chiamate REST con un ID sessione valido che potrebbe essere stato ottenuto con altri mezzi (ad esempio, recuperato chiamando l'API SOAP o fornito tramite un messaggio in uscita). Si consiglia ai client che chiamano la cache dell'API REST e riutilizzano l'ID sessione per ottimizzare le prestazioni, anziché ottenere un nuovo ID sessione per ogni chiamata. |
| Servizio Web Apex | Si consiglia al sistema remoto di stabilire un Trust OAuth per l'autorizzazione. |
| Servizio REST Apex | Si consiglia al sistema remoto di stabilire un Trust OAuth per l'autorizzazione. |
| API in blocco 2.0 | Si consiglia al sistema remoto di stabilire un Trust OAuth per l'autorizzazione. |
Vedere Considerazioni sulla sicurezza.
Intestazioni laterali
Nessuno.
Tempestività
L'API SOAP e l'API servizio Web Apex sono sincrone. Si applicano i seguenti timeout:
- Timeout sessione: la sessione scade se non è presente alcuna attività in base all'impostazione di timeout sessione dell'organizzazione Salesforce.
- Timeout della query: ogni query SOQL ha un limite di timeout individuale di 120 secondi.
Volumi di dati
Le considerazioni sul volume di dati dipendono dalla soluzione e dal tipo di comunicazione scelti.
| Soluzione | Tipo di comunicazione | Limiti |
|---|---|---|
| API SOAP o API REST | Synchronous |
|
| API in blocco 2.0 | Asynchronous | L'API in blocco 2.0 è ottimizzata per l'importazione e l'esportazione asincrona di grandi serie di dati. Qualsiasi operazione sui dati che include più di 2.000 record è un buon candidato per l'API in blocco 2.0 per preparare, eseguire e gestire correttamente un flusso di lavoro asincrono che utilizza il framework in blocco. I processi con meno di 2.000 record devono includere chiamate sincrone "in blocco" in REST (ad esempio, Composite) o SOAP. L'API in blocco 2.0 è sincrona quando si invia la richiesta batch e i dati associati. Il trattamento effettivo dei dati avviene in modo asincrono. Per ulteriori informazioni sui limiti dell'API e dell'elaborazione batch, vedere Limiti. |
Supporto della capacità endpoint e degli standard
La funzionalità e il supporto standard per l'endpoint dipendono dalla soluzione scelta.
| Soluzione | Considerazioni sugli endpoint |
|---|---|
| API SOAP | Il sistema remoto deve essere in grado di implementare un client in grado di chiamare l'API SOAP Salesforce, in base a un formato di messaggio predefinito da Salesforce. Il sistema remoto (client) deve partecipare a un'implementazione contract-first in cui il contratto è fornito da Salesforce (ad esempio, Enterprise o WSDL partner). |
| API REST | Il sistema remoto deve essere in grado di implementare un client REST che invoca i servizi REST definiti da Salesforce ed elabora i risultati XML o JSON. |
| Servizio Web Apex | Il sistema remoto deve essere in grado di implementare un client in grado di invocare messaggi SOAP di un formato predefinito, definito da Salesforce. Il sistema remoto deve partecipare a un'implementazione code-first, in cui il contratto viene fornito da Salesforce dopo l'implementazione del servizio Web Apex. Ogni servizio Web Apex ha il proprio WSDL. |
| Servizio REST Apex | Valgono le stesse considerazioni sull'endpoint dell'API REST. |
Gestione statale
Quando si integrano i sistemi, le chiavi sono importanti per il tracciamento continuo dello stato, ad esempio se viene creato un record nel sistema remoto, per supportare gli aggiornamenti continui di quel record. Sono disponibili due opzioni:
- Salesforce memorizza la chiave surrogata principale o univoca del sistema remoto per il record remoto.
- Il sistema remoto memorizza l'ID record univoco Salesforce o un'altra chiave surrogata univoca. Esistono considerazioni specifiche sulla gestione delle chiavi di integrazione in questo schema sincrono.
| Master | sistema Descrizione |
|---|---|
| Salesforce | In questo scenario, il sistema remoto memorizza Salesforce RecordId o un'altra chiave surrogata univoca del record. |
| Sistema remoto | In questo scenario, Salesforce memorizza un riferimento all'identificatore univoco nel sistema remoto. Poiché il processo è sincrono, la chiave può essere fornita nell'ambito della stessa transazione utilizzando campi ID esterni. |
Scenari di integrazione complessi
Ogni soluzione in questo schema ha considerazioni diverse quando si gestiscono scenari di integrazione complessi come la trasformazione e l'orchestrazione dei processi.
| Soluzione | Considerazioni |
|---|---|
| API SOAP o API REST | L'API SOAP e l'API REST consentono transazioni semplici sugli oggetti. Scenari di integrazione complessi come aggregazione, orchestrazione e trasformazione non possono essere eseguiti in Salesforce. Questi scenari devono essere gestiti dal sistema remoto o middleware, con middleware come metodo preferito. |
| Servizio Web Apex o servizio REST Apex | I servizi Web personalizzati possono fornire funzionalità oggetti incrociate, logica personalizzata e supporto delle transazioni più complesso. Questa soluzione deve essere usata con attenzione e si dovrebbe sempre considerare l'idoneità del middleware per qualsiasi trasformazione, orchestrazione e gestione degli errori. |
Limitazioni del governatore
A causa della natura multi-tenant della piattaforma Salesforce, esistono dei limiti quando si utilizzano le API.
| Soluzione | Limiti |
|---|---|
| API SOAP, API REST e API Apex personalizzate |
|
| API in blocco 2.0 | Per ulteriori informazioni, vedere Intestazione laterale Volumi di dati. |
| Eventi piattaforma |
|
Messaggistica affidabile
Messaggistica affidabile tenta di risolvere il problema di garantire la consegna di un messaggio a un sistema remoto in cui i singoli componenti potrebbero non essere affidabili. L'API SOAP Salesforce e l'API REST sono sincrone e non forniscono supporto esplicito per protocolli di messaggistica affidabili, di per sé (ad esempio, WS-ReliableMessaging).
Si consiglia al sistema remoto di implementare un sistema di messaggistica affidabile per garantire che gli scenari di errore e timeout vengano gestiti correttamente. La pubblicazione di eventi piattaforma da sistemi esterni si basa sulle API Salesforce, pertanto valgono le stesse considerazioni per l'API SOAP e l'API REST.
Funzioni middleware
Questa tabella evidenzia le proprietà desiderate di un sistema middleware che partecipa a questo schema:
| Proprietà | Obbligatorio | Auspicabile | Non richiesto |
|---|---|---|---|
| Gestione degli eventi | X | ||
| Conversione protocollo | X | ||
| Traduzione e trasformazione | X | ||
| Messa in attesa e buffering | X | ||
| Protocolli di trasporto sincrono | X | ||
| Protocolli di trasporto asincrono | X | ||
| Instradamento della mediazione | X | ||
| Coreografia del processo e orchestrazione del servizio | X | ||
| Transazionalità (crittografia, firma, consegna affidabile, gestione delle transazioni) | X | ||
| Instradamento | X | ||
| Estrazione, trasformazione e caricamento | X (per rinfuse/batch) |
Esempio
Una società di forniture e servizi di stampa utilizza Salesforce come front-end per creare e gestire le forniture e gli ordini di stampanti. I record asset Salesforce che rappresentano le stampanti vengono periodicamente aggiornati con le statistiche di utilizzo della stampa (stato dell'inchiostro, livello della carta) dal sistema di gestione stampanti (PMS) locale, che monitora regolarmente le stampanti nelle sedi dei clienti. Quando si raggiunge un valore di soglia impostato (ad esempio, un livello di inchiostro basso o un livello di carta basso/vuoto inferiore al 30%), vengono inviate notifiche a più app/processi (variabili) interessati all'evento, email o Chatter e viene creato un record Ordine. Il PMS memorizza l'ID Salesforce (Salesforce è il record principale asset).
Si applicano i seguenti vincoli:
- Il PMS può partecipare a un'integrazione contract-first, in cui Salesforce fornisce il contratto e il PMS agisce come cliente (consumatore) del servizio Salesforce (definito tramite il WSDL Enterprise o Partner).
- Non dovrebbe esserci sviluppo personalizzato in Salesforce.
Questo esempio è implementato al meglio utilizzando l'API SOAP Salesforce o l'API REST per pubblicare gli eventi e l'automazione dichiarativa (Flusso) in Salesforce. Il motivo principale per utilizzare gli eventi piattaforma è la variabile e il numero non finito di abbonati; tuttavia, per i semplici aggiornamenti a un elenco finito di record, ad esempio gli ordini, utilizzare SOAP o l'API REST per aggiornare i record.
In Salesforce:
- Definire un evento piattaforma in Salesforce per contenere i dati di notifica provenienti dal PMS.
- Creare un flusso attivato dalla notifica dell'evento stampante. Il processo aggiorna l'asset stampante e crea un ordine (utilizzando un flusso AutoLaunched).
- Scaricare il WSDL Enterprise o Partner e fornirlo al sistema remoto.
Nel sistema remoto:
- Creare uno stub client dal WSDL Enterprise o Partner.
- Eseguire l'autenticazione in Salesforce (tramite server Web OAuth o flusso token bearer) utilizzando le credenziali dell'utente integrazione.
- All'evento stato stampante, il PMS chiama l'API per creare l'evento piattaforma stato stampante (con statistiche di utilizzo della stampante). Il bus degli eventi Salesforce invia una notifica all'abbonato Flusso e a tutti gli altri abbonati.
Quando si utilizzano gli eventi piattaforma, il bus degli eventi consente di riprodurre gli eventi per 72 ore per gli eventi piattaforma a volume elevato. La pubblicazione di tali eventi utilizzando una soluzione middleware può aiutare a incorporare la gestione degli errori sul lato pubblicazione. Tuttavia, è possibile implementare la gestione degli errori sul lato abbonamento se si necessita di una maggiore affidabilità.
Questo esempio dimostra quanto segue:
- Implementazione di un client API sincrono Salesforce (consumer).
- Una richiamata a Salesforce per pubblicare un evento piattaforma (in linea con gli schemi di evento piattaforma richiesta/risposta descritti in precedenza).
Context
Salesforce viene utilizzato per gestire i casi dei clienti. Un agente dell'assistenza clienti è al telefono con un cliente che sta lavorando su un caso. Il cliente effettua un pagamento e l'agente dell'assistenza clienti deve visualizzare un aggiornamento in tempo reale nell'applicazione Salesforce dall'applicazione di elaborazione del pagamento, che indica che il cliente ha pagato correttamente l'importo in sospeso dell'ordine.
Problema
Quando si verifica un evento in Salesforce, come si può ricevere una notifica nell'interfaccia utente di Salesforce senza dover aggiornare la schermata e potenzialmente perdere lavoro?
Forze
Quando si applicano soluzioni basate su questo schema, è necessario considerare diversi fattori:
- I dati su cui si agisce devono essere archiviati in Salesforce?
- È possibile creare un livello di interfaccia utente personalizzato per visualizzare questi dati?
- L'utente avrà accesso per invocare l'interfaccia utente personalizzata?
Soluzione
La soluzione consigliata a questo problema di integrazione è utilizzare gli eventi piattaforma che garantiscono eventi quasi in tempo reale in Salesforce. Gli eventi piattaforma offrono un payload strutturato e flessibile indipendentemente da qualsiasi oggetto Salesforce. Garantisce inoltre argomenti durevoli con una finestra di replay di 72 ore. Ciò garantisce che gli eventi siano disponibili anche se un consumatore offline diventa disponibile in un secondo momento. Questa soluzione è costituita dai seguenti elementi:
- Trigger Apex o flussi con una logica per pubblicare un evento piattaforma su un argomento
- Argomento che consente di pubblicare un evento da trigger Apex o flusso
- Un'implementazione basata su JavaScript del protocollo Bayeux (attualmente CometD) che può essere utilizzata dall'interfaccia utente
- Un componente Lightning
- Libreria JavaScript inclusa come risorsa statica
Sketch
Lo schema riportato di seguito illustra come implementare Streaming API per inviare notifiche in streaming all'interfaccia utente di Salesforce. Queste notifiche vengono attivate dalle modifiche dei record in Salesforce.
Aggiornamento dell'interfaccia utente in Salesforce attivato da una modifica dei dati
Risultati
Vantaggi
L'applicazione della soluzione correlata a questo schema presenta i seguenti vantaggi:
- Elimina la necessità di scrivere meccanismi di polling personalizzati
- Elimina la necessità di un loop di feedback avviato dall'utente
Requisiti non supportati
La soluzione presenta le seguenti limitazioni:
- La consegna delle notifiche non è garantita.
- L'ordine delle notifiche non è garantito.
- Le notifiche non vengono generate dalle modifiche ai record apportate dall'API in blocco.
Considerazioni sulla sicurezza
Viene rispettata la protezione standard a livello di organizzazione Salesforce. Si consiglia di utilizzare il protocollo HTTPS per connettersi alla Streaming API. Vedere Considerazioni sulla sicurezza
Intestazioni laterali
La soluzione ottimale prevede la creazione di un'interfaccia utente personalizzata in Salesforce. È imperativo tenere presente un contenitore dell'interfaccia utente appropriato che può essere utilizzato per visualizzare l'interfaccia utente personalizzata. I browser supportati sono elencati nella Streaming API Developer Guide
Esempio
Una società di telecomunicazioni utilizza Salesforce per gestire i casi dei clienti. I responsabili dell'assistenza clienti desiderano ricevere una notifica quando un caso viene chiuso correttamente da uno degli agenti dell'assistenza clienti.
Implementando la soluzione prescritta da questo schema, il cliente deve:
- Creare un PushTopic Trigger Apex che invia un evento piattaforma quando un caso viene salvato con stato "Chiuso" e risoluzione "Riuscito".
- Creare un'interfaccia utente personalizzata disponibile per i responsabili dell'assistenza clienti. Questa interfaccia utente si abbona al bus degli eventi per utilizzare gli eventi piattaforma.
- Implementare la logica nell'interfaccia utente personalizzata che mostra gli avvisi generati dagli agenti dell'assistenza clienti del responsabile.
Context
Salesforce si utilizza per tenere traccia dei lead, gestire le opportunità in corso di realizzazione, creare opportunità e acquisire i dettagli degli ordini che convertono i lead in clienti. Tuttavia, Salesforce non è il sistema che contiene o elabora gli ordini. Gli ordini sono gestiti da un sistema esterno (remoto). Tuttavia, gli agenti di vendita desiderano visualizzare e aggiornare le informazioni sugli ordini in tempo reale in Salesforce senza dover imparare o utilizzare il sistema esterno.
Problema
In Salesforce, come visualizzare, cercare e modificare i dati archiviati all'esterno di Salesforce, senza spostare i dati dal sistema esterno in Salesforce?
Forze
Quando si applicano soluzioni basate su questo schema, è necessario considerare diversi fattori:
- Si desidera creare un'integrazione dichiarativa/point-and-click in uscita o un mashup dell'interfaccia utente in Salesforce?
- Si dispone di una grande quantità di dati che non si desidera copiare nell'organizzazione Salesforce?
- È necessario accedere contemporaneamente a piccole quantità di dati di sistema remoti?
- È necessario accedere in tempo reale ai dati più recenti?
- I dati vengono archiviati nel cloud o in un sistema di back-office ma si desidera visualizzare o elaborare i dati nell'organizzazione Salesforce?
- Si hanno problemi di residenza dei dati per l'archiviazione di alcuni tipi di dati in Salesforce?
Soluzione
La tabella seguente contiene varie soluzioni a questo problema di integrazione.
| Soluzione | Adatta | Commenti |
|---|---|---|
| Salesforce Connect | Best | Utilizzare Salesforce Connect per accedere ai dati da fonti esterne, insieme ai dati Salesforce. Estrarre i dati da sistemi come SAP, Microsoft, Oracle e altri sistemi basati su cloud come Snowflake in tempo reale senza creare una copia dei dati in Salesforce. Salesforce Connect mappa le tabelle di dati nei sistemi esterni agli oggetti esterni dell'organizzazione. Gli oggetti esterni sono simili agli oggetti personalizzati, tranne per il fatto che vengono mappati a dati situati all'esterno dell'organizzazione Salesforce. Salesforce Connect utilizza una connessione live ai dati esterni per mantenere sempre aggiornati gli oggetti esterni. L'accesso a un oggetto esterno recupera i dati dal sistema esterno in tempo reale. Salesforce Connect consente di:
Per accedere ai dati memorizzati su un sistema esterno utilizzando Salesforce Connect, è possibile utilizzare uno dei seguenti adattatori:
|
| Richiesta e risposta | Non ottimale |
Utilizzare le API dei servizi Web Salesforce per effettuare richieste di dati ad hoc per accedere e aggiornare i dati di sistema esterni. Questa soluzione include i seguenti approcci:
Utilizzare l'API SOAP Salesforce. Una pagina o un pulsante personalizzato avvia una chiamata Apex REST/SOAP in modo sincrono. In Salesforce è possibile utilizzare un WSDL e generare una classe Apex proxy risultante. Questa classe fornisce la logica necessaria per chiamare il servizio remoto. Un'azione avviata dall'utente in una pagina chiama quindi un'azione del controller Apex che esegue questa classe Apex proxy per eseguire la chiamata remota. Le pagine richiedono la personalizzazione dell'app Salesforce. Utilizzare l'API REST Salesforce. Una pagina o un pulsante personalizzato avvia una chiamata HTTP Apex (servizio REST) in modo sincrono. In Salesforce, è possibile invocare i servizi HTTP utilizzando i metodi GET, POST, PUT e DELETE standard. Per ulteriori informazioni su questa soluzione, vedere Remote Process Invocation — Request and Reply (Richiesta e risposta processo remoto). |
Sketch
Lo schema seguente illustra come utilizzare Salesforce Connect per estrarre i dati da un sistema esterno utilizzando un adattatore OData.
In questo scenario:
- Il browser esegue una chiamata AJAX che a sua volta esegue un'azione sull'adattatore oggetto esterno corrispondente.
- L'adattatore traduce l'azione in una richiesta OData ed effettua una richiesta GET HTTP al sistema remoto tramite i livelli Integrazione e Servizi.
- Il sistema remoto restituisce una risposta JSON a Salesforce tramite i livelli Integrazione e Servizi.
- La risposta viene tradotta da OData in un oggetto esterno e ripresentata al browser.
Risultati
L'applicazione delle soluzioni correlate a questo schema consente le chiamate avviate dall'interfaccia utente in cui il risultato della transazione può essere visualizzato all'utente finale.
Meccanismi di chiamata
Il meccanismo di chiamata dipende dalla soluzione scelta per implementare questo schema.
| Meccanismo di chiamata | Descrizione |
|---|---|
| Oggetti esterni | Salesforce Connect mappa gli oggetti esterni Salesforce alle tabelle di dati nei sistemi esterni. Anziché copiare i dati nell'organizzazione, Salesforce Connect accede ai dati su richiesta e in tempo reale. Anche se i dati sono memorizzati all'esterno dell'organizzazione, Salesforce Connect offre un'integrazione perfetta con Lightning Platform. Gli oggetti esterni sono disponibili per gli strumenti Salesforce, ad esempio la ricerca globale, le relazioni di ricerca, i feed dei record e l'app mobile Salesforce. Gli oggetti esterni sono disponibili anche per Apex, SOSL, query SOQL, API Salesforce e distribuzione tramite l'API dei metadati, le serie di modifiche e i pacchetti. |
| Componenti di illuminazione | Utilizzato quando il processo remoto viene attivato nell'ambito di un processo end-to-end che coinvolge l'interfaccia utente e il risultato deve essere visualizzato o aggiornato in un record Salesforce. Ad esempio, un processo che invia i pagamenti con carta di credito a un gateway di pagamento esterno e restituisce immediatamente i risultati dei pagamenti visualizzati all'utente. L'integrazione attivata da eventi dell'interfaccia utente richiede in genere la creazione di componenti Lightning personalizzati. |
Gestione errori
È importante includere la gestione degli errori nella soluzione generale. Quando si verifica un errore (vengono restituiti al chiamante codici di eccezioni o di errore), il chiamante gestisce la gestione degli errori. Salesforce Connect Validator è uno strumento gratuito per eseguire alcune query comuni e rilevare tipi di errore e cause di errore.
Vantaggi
Alcuni dei vantaggi offerti dall'utilizzo di una soluzione Salesforce Connect sono:
- Questa soluzione non consuma memoria dati in Salesforce.
- Gli utenti non devono preoccuparsi di sincronizzare regolarmente i dati tra il sistema esterno e Salesforce.
- Un'impostazione dichiarativa che può essere eseguita rapidamente con OData o un adattatore tra organizzazioni o utilizzando codice minimo con un adattatore Apex personalizzato.
- Gli utenti possono accedere ai dati esterni con molte delle stesse funzionalità degli oggetti personalizzati sotto forma di oggetti esterni.
- Possibilità di effettuare una ricerca federata nel sistema esterno connesso utilizzando la ricerca globale.
- Possibilità di eseguire rapporti che accedono a dati esterni da fonti cloud e locali. Fare riferimento alle considerazioni sui rapporti riportate di seguito.
Considerazioni su Salesforce Connect
La soluzione Salesforce Connect ha le seguenti considerazioni:
- Gli oggetti esterni si comportano come oggetti personalizzati, ma alcune funzioni non sono disponibili per gli oggetti esterni. Per ulteriori informazioni, vedere Considerazioni sulla compatibilità.
- Gli oggetti esterni possono influire sulle prestazioni dei rapporti. Per ulteriori informazioni, vedere Considerazioni sui rapporti per Salesforce Connect.
- Per ulteriori considerazioni sull'utilizzo degli adattatori Salesforce Connect, vedere Considerazioni per Salesforce Connect — Tutti gli adattatori.
- Se si sta pensando di utilizzare un adattatore tra organizzazioni, vedere Considerazioni per Salesforce Connect — Adattatore tra organizzazioni.
- Se si sta pensando di utilizzare un adattatore OData, vedere Considerazioni per Salesforce Connect — Adattatori OData 2.0 e 4.0.
- Se si sta pensando di utilizzare un adattatore Apex personalizzato, vedere Considerazioni per Salesforce Connect — Adattatore personalizzato.
Considerazioni sulla sicurezza
Le soluzioni per questo schema devono rispettare la protezione standard a livello di organizzazione Salesforce. Si consiglia di utilizzare il protocollo HTTPS per connettersi a qualsiasi sistema remoto. Per ulteriori dettagli, vedere Considerazioni sulla sicurezza
Se si utilizza un connettore OData, assicurarsi di aver compreso i comportamenti speciali, le limitazioni e i consigli per Cross-Site Request Forgery (CSRF) sulle fonti di dati esterne OData. Per ulteriori informazioni, vedere Considerazioni CSRF per Salesforce Connect — Adattatori OData 2.0 e 4.0.
Intestazioni laterali
Nessuno.
Tempestività
La tempestività è di importanza significativa in questo schema. Tenere presenti i seguenti punti:
- La richiesta viene in genere richiamata dall'interfaccia utente, quindi il processo non deve far attendere l'utente.
- A seconda della disponibilità e della connessione al sistema esterno, il recupero dei dati esterni può richiedere molto tempo. Salesforce ha un valore di timeout massimo configurabile di 120 secondi per attendere una risposta dal sistema esterno.
- Il completamento del processo remoto deve essere eseguito in modo tempestivo ed entro il limite di timeout di Salesforce e nel rispetto delle aspettative degli utenti.
Volumi di dati
Questo schema viene utilizzato principalmente per le attività in tempo reale a volume ridotto, a causa dei piccoli valori di timeout e della dimensione massima della richiesta o della risposta per la soluzione di chiamata Apex. Non utilizzare questo schema nelle attività di elaborazione batch in cui il payload di dati è contenuto nel messaggio.
Supporto della capacità endpoint e degli standard
La funzionalità e il supporto degli standard per l'endpoint dipendono dalla soluzione scelta.
| Soluzione | Considerazioni sugli endpoint |
|---|---|
| Salesforce Connect | API OData: utilizzare il protocollo Open Data per accedere ai dati archiviati all'esterno di Salesforce. I dati esterni devono essere esposti tramite i produttori OData. Altre API: utilizzare Apex Connector Framework per sviluppare il proprio adattatore personalizzato quando gli altri adattatori disponibili non sono adatti alle proprie esigenze. Un adattatore personalizzato può ottenere dati da qualsiasi fonte. Ad esempio, alcuni dati possono essere recuperati da Internet tramite chiamate, mentre altri dati possono essere manipolati o addirittura generati a livello di programmazione. Connetti a Salesforce: utilizza l'API REST Lightning Platform per accedere ai dati archiviati in altre organizzazioni Salesforce. Connessione tramite Middleware Connessione tramite Middleware — L'ecosistema di partner Salesforce Connect ha lavorato a stretto contatto con Salesforce per assicurarsi che i gateway middleware espongano gli endpoint OData del servizio in modo che Salesforce possa connettersi con loro senza scrivere codice aggiuntivo. |
| Richiesta e risposta | Chiamate SOAP Apex - L'endpoint deve essere in grado di ricevere una chiamata al servizio Web tramite HTTP. Chiamate HTTP Apex - L'endpoint deve essere in grado di ricevere chiamate HTTP. È possibile utilizzare chiamate HTTP Apex per chiamare servizi RESTful utilizzando i metodi GET, POST, PUT e DELETE standard |
Gestione statale
Quando si integrano i sistemi, le chiavi sono importanti per il tracciamento continuo dello stato. Ad esempio, se un record viene creato nel sistema remoto, in genere il record necessita di una sorta di chiave identificativa per supportare gli aggiornamenti in corso. Per memorizzare le chiavi sono disponibili due opzioni.
- Salesforce memorizza la chiave surrogata principale o univoca per il record remoto.
- Il sistema remoto memorizza l'ID record univoco Salesforce o un'altra chiave surrogata univoca. Esistono considerazioni specifiche sulla gestione delle chiavi di integrazione in questo schema sincrono.
| Sistema principale | Descrizione |
|---|---|
| Salesforce | Il sistema remoto memorizza l'ID record Salesforce o un'altra chiave surrogata univoca del record. |
| Sistema remoto | La chiamata al processo remoto restituisce la chiave univoca dell'applicazione e Salesforce memorizza il valore della chiave in un campo record univoco. |
Integrazioni complesse
In alcuni casi, la soluzione prescritta da questo schema può richiedere l'implementazione di uno scenario di integrazione complesso. Questi scenari vengono spesso risolti utilizzando middleware.
- Aggregazione delle chiamate e dei relativi risultati nelle chiamate a più sistemi
- Trasformazione dei messaggi in entrata e in uscita
- Mantenere l'integrità delle transazioni tra le chiamate a più sistemi
- Altre attività di orchestrazione dei processi tra Salesforce e il sistema esterno
Limite governativo
Si applicano limiti diversi per adattatori diversi. Per ulteriori dettagli, vedere Limiti generali per Salesforce Connect.
Funzioni middleware
La tabella seguente evidenzia le proprietà desiderate di un sistema middleware che partecipa a questo schema.
| Proprietà | Obbligatorio | Auspicabile | Non richiesto |
|---|---|---|---|
| Gestione degli eventi | X | ||
| Conversione protocollo | X | ||
| Traduzione e trasformazione | X | ||
| Messa in attesa e buffering | X | ||
| Protocolli di trasporto sincrono | X | ||
| Protocolli di trasporto asincrono | X | ||
| Instradamento della mediazione | X | ||
| Coreografia del processo e orchestrazione del servizio | X | ||
| Transazionalità (crittografia, firma, consegna affidabile, gestione delle transazioni) | X | ||
| Instradamento | X | ||
| Estrazione, trasformazione e caricamento | X | ||
| Sondaggio lungo | X |
Relazioni tra oggetti esterni
Gli oggetti esterni supportano le relazioni di ricerca standard, che utilizzano l'ID record Salesforce di 18 caratteri per associare i record correlati. Tuttavia, i dati archiviati all'esterno dell'organizzazione Salesforce spesso non contengono tali ID record. Pertanto, per gli oggetti esterni sono disponibili due tipi speciali di relazioni di ricerca: ricerche esterne e ricerche indirette.
Questa tabella riepiloga i tipi di relazioni disponibili per gli oggetti esterni.
| Relazione | Oggetti secondari consentiti | Oggetti controllanti consentiti | Campo controllante per i record corrispondenti |
|---|---|---|---|
| Ricerca | Standard, personalizzato, esterno | Standard, personalizzato | ID record Salesforce di 18 caratteri |
| Ricerca esterna | Standard, personalizzato, esterno | Esterno | Campo standard ID esterno |
| Ricerca indiretta | Esterno | Standard, personalizzato | Selezionare un campo personalizzato con gli attributi ID esterno e Univoco |
Considerazioni sui volumi di dati elevati per Salesforce Connect — Adattatori OData 2.0 e 4.0
Se l'organizzazione supera i limiti di traffico quando accede agli oggetti esterni, valutare la possibilità di selezionare l'opzione Volume di dati elevato sulle fonti di dati esterne associate. In questo modo si ignorano la maggior parte dei limiti di traffico, ma si applicano alcuni comportamenti e limitazioni speciali. Per ulteriori informazioni, vedere Considerazioni sui volumi elevati
Paging gestito dal client e dal server per Salesforce Connect — Adattatori OData 2.0 e 4.0
È comune che le query Salesforce Connect di dati esterni abbiano un insieme di risultati di grandi dimensioni suddiviso in batch o pagine più piccoli. È possibile decidere se il comportamento del paging deve essere controllato dal sistema esterno (gestito dal server) o dall'adattatore OData 2.0 o 4.0 per Salesforce Connect (gestito dal client). Il campo Paginazione guidata dal server nella fonte di dati esterna specifica se utilizzare il paging gestito dal client o dal server. Se si abilita il paging gestito dal server su una fonte di dati esterna, Salesforce ignora le dimensioni della pagina richieste, inclusa la dimensione batch predefinita queryMore() di 500 righe. Le pagine restituite dal sistema esterno determinano i batch, ma ogni pagina non può superare le 2.000 righe. Tuttavia, i limiti per gli adattatori OData per Salesforce Connect rimangono validi.
Esempio
Una società di produzione utilizza Salesforce per gestire i casi dei clienti. Gli agenti dell'assistenza clienti desiderano accedere alle informazioni sugli ordini in tempo reale dal sistema ERP di back-office per avere una visione a 360 gradi del cliente senza dover apprendere ed eseguire manualmente i rapporti in ERP.
Implementando la soluzione prescritta da questo schema, è necessario:
- Configurare la fonte di dati esterna con un endpoint OData. L'applicazione remota può includere il supporto nativo per OData. Per altre applicazioni, i principali fornitori di integrazione come Dell Boomi, Informatica, Jitterbit, MuleSoft e Progress Software hanno collaborato con Salesforce su Salesforce Connect per creare adattatori.
- Puntare Salesforce Connect all'endpoint OData, direttamente o tramite una soluzione middleware.
- Sincronizzare le tabelle del database esterno con gli oggetti esterni in Salesforce. Quando un utente accede a una pagina con i dati di questi oggetti esterni, Salesforce Connect effettua chiamate in tempo reale alle applicazioni di back-end.
Documentazione per sviluppatori
-
Guida di Salesforce: Assegnazione dell'accesso solo API agli utenti integrazione
-
Guida per lo sviluppatore di API in blocco 2.0 e API in blocco
-
Apex Developer Guide (Guida per lo sviluppatore Apex): Salesforce Connect
Trailhead
Per essere membri efficaci del portafoglio aziendale, tutte le applicazioni devono essere create e integrate con i meccanismi di sicurezza pertinenti. Le moderne strategie IT utilizzano una combinazione di servizi locali e basati su cloud.
Mentre l'integrazione dei servizi cloud a cloud in genere si concentra sui servizi Web e sulle autorizzazioni associate, la connessione di servizi locali e cloud spesso introduce una maggiore complessità. Questa sezione descrive gli strumenti di sicurezza, le tecniche e le considerazioni specifiche di Salesforce.
Server proxy inverso
Un proxy inverso è un server che si trova di fronte ai server Web e inoltra le richieste client (ad esempio browser Web) a tali server Web. I proxy inversi vengono in genere implementati per migliorare la sicurezza, le prestazioni e l'affidabilità.
È un tipo di server proxy che recupera risorse per conto di un client da uno o più server. Queste risorse vengono quindi restituite al client come se provenissero dal server proxy stesso. A differenza di un proxy forward, che è un intermediario per i client associati per contattare qualsiasi server, un proxy reverse è un intermediario per i server associati per essere contattati da qualsiasi client.
Nelle implementazioni Salesforce, tale servizio viene in genere fornito tramite un prodotto gateway esterno. Ad esempio, è possibile utilizzare opzioni open source come HTTP Apache, lighttpd e nginix. I prodotti commerciali includono IBM WebSeal e Computer Associates SiteMinder. Questi prodotti possono essere facilmente configurati per la delega e la gestione di tutte le richieste Salesforce in uscita per conto del richiedente interno.
Crittografia
Alcune aziende richiedono la crittografia di transazioni o campi di dati selezionati tra una combinazione di applicazioni locali e basate su cloud. Se l'organizzazione deve rispettare ulteriori requisiti di conformità, è possibile implementare alternative, tra cui:
-
Servizi gateway di crittografia commerciale locali, inclusi Salesforce, CipherCloud, IBM DataPower, Computer Associates. Per ogni soluzione, il motore di crittografia o il gateway viene richiamato al confine della transazione inviando e ricevendo un payload crittografato o durante la crittografia o la decrittografia di campi di dati specifici prima dell'esecuzione della richiesta HTTP(S).
-
Opzioni basate su cloud, ad esempio Salesforce Shield Platform Encryption. Shield Platform Encryption offre ai dati un nuovo livello di sicurezza, preservando le funzionalità essenziali della piattaforma. I dati selezionati vengono crittografati a riposo utilizzando un sistema avanzato di derivazione delle chiavi. È possibile proteggere i dati in modo più sicuro che mai. Per ulteriori informazioni, vedere la guida in linea di Salesforce.
Supporto del protocollo WS-* specializzato
Per soddisfare i requisiti dei protocolli di sicurezza (ad esempio WS-*), si consiglia di utilizzare le seguenti alternative.
-
Gateway Security/XML: inserire le credenziali WS-Security (IBM WebSeal o Datapower, Layer7, TIBCO e così via) nello stream della transazione stessa. Questo approccio non richiede modifiche ai servizi Web a livello di applicazione o alle chiamate ai servizi Web da Salesforce. È anche possibile riutilizzare questo approccio nell'installazione di Salesforce. Tuttavia, richiede ulteriore progettazione, configurazione, test e manutenzione per gestire l'iniezione WS-Security appropriata nell'approccio gateway di protezione esistente.
-
Crittografia a livello di trasporto: crittografare il canale di comunicazione utilizzando restrizioni SSL e IP bidirezionali. Sebbene questo approccio non implementi direttamente il protocollo WS-* da solo, protegge il canale di comunicazione tra le applicazioni locali e Salesforce senza passare un nome utente e una password. Inoltre, non richiede modifiche alle classi generate da Salesforce. Tuttavia, potrebbero essere necessarie alcune modifiche ai servizi Web locali (a livello dell'applicazione stessa o a livello middleware/ESB).
-
Sviluppo personalizzato Salesforce: aggiungere intestazioni WS-Security alla richiesta SOAP in uscita tramite l'utilità WSDL2Apex. Questo genera una classe Apex simile a Java dal file WSDL utilizzato per invocare il servizio interno. Sebbene questo approccio non richieda modifiche ai servizi Web di back-end o ai componenti aggiuntivi nella DMZ, richiede:
- un maggiore sforzo di creazione e test
- un processo relativamente complesso e manuale per codificare manualmente gli attributi di WS-Security (inclusa la serializzazione XML all'interno di Apex Code)
- maggiore impegno di manutenzione a lungo termine
Nota: L'ultima opzione non è consigliata a causa della sua complessità e del rischio che tali integrazioni richiedano revisioni periodiche basate su aggiornamenti regolari di Salesforce.
Altre considerazioni sulla sicurezza
-
Credenziali denominate: Con lo scopo di proteggere e semplificare le chiamate API autenticate ai sistemi esterni, una credenziale denominata specifica l'URL di un endpoint di chiamata e i relativi parametri di autenticazione richiesti in un'unica definizione. Per semplificare l'Apex Code e l'impostazione delle chiamate autenticate, specificare una credenziale denominata come endpoint di chiamata. Per ulteriori dettagli vedere qui.
-
OAUTH 2.0: OAuth 2.0 è un framework di autorizzazione standard del settore che consente a un utente di concedere un accesso limitato alle proprie risorse protette a un'applicazione di terze parti senza condividere le proprie credenziali (ad esempio le password). Anziché uno scambio diretto di password, l'utente approva una richiesta di token di accesso, che l'applicazione utilizza quindi per accedere ai dati dell'utente da un server di risorse. Questo processo separa l'applicazione client dall'identità e dalla password dell'utente, migliorando la sicurezza fornendo una "chiave" temporanea specifica dell'ambito per l'accesso alle risorse. Per ulteriori informazioni vedere qui.
-
Private Connect: Quando si integra l'organizzazione Salesforce con applicazioni ospitate su servizi cloud di terze parti, è essenziale poter inviare e ricevere traffico HTTP/s in modo sicuro. Con Private Connect, aumentare la sicurezza delle integrazioni di Amazon Web Services (AWS) impostando una connessione di rete completamente gestita tra l'organizzazione Salesforce e AWS Virtual Private Cloud (VPC). Quindi, instradare il traffico cross-cloud attraverso la connessione anziché su Internet pubblico per ridurre l'esposizione a minacce alla sicurezza esterne. Private Connect è disponibile in collaborazione con AWS tramite una funzione denominata AWS PrivateLink. Private Connect è bidirezionale: è possibile avviare sia il traffico in entrata che quello in uscita. Con le connessioni in entrata, è possibile inviare traffico a Salesforce utilizzando le API standard. Inoltre, con le connessioni in uscita, è possibile inviare traffico da Salesforce tramite funzioni come chiamate Apex, Servizi esterni e Oggetti esterni. Per ulteriori informazioni su VPC qui.
Bus eventi Salesforce con eventi piattaforma, acquisizione dati di modifica (CDC) e API Pub/Sub consente alle aziende di creare architetture di stile basate sugli eventi (EDA).
Un'AED separa i consumatori di messaggi evento (abbonati) dai produttori di messaggi evento (editori), consentendo una maggiore scalabilità e flessibilità. Schemi specifici sono descritti in questo documento come parte della struttura di schemi esistente che confronta e contrasta le alternative o le opzioni correlate. Tuttavia, ottenere una comprensione olistica dell'architettura basata sugli eventi e di come interagiscono gli schemi può aiutare a selezionare lo schema giusto per le proprie esigenze.
Khalid Mohammed è un illustre architetto leader nei servizi professionali di Salesforce. Da quando è entrato in Salesforce nel 2015, ha sfruttato la sua vasta esperienza in applicazioni e architettura Enterprise, affinata attraverso numerose trasformazioni dei clienti prima del suo mandato in Salesforce. Khalid è a capo del Delivery Architecture Board ed è anche riconosciuto come leader Certified Technical Architect.
Gulal Kumar è un architetto di ingegneria del software presso Salesforce, con particolare attenzione all'architettura dei dati e dell'integrazione. Con oltre 20 anni di esperienza in integrazione e API, programmi di modernizzazione, sicurezza e iniziative AIML, offre una vasta gamma di competenze. Gulal si è impegnata a promuovere iniziative di trasformazione aziendale, migliorare la sicurezza e la resilienza, promuovere l'eccellenza dell'architettura e guidare iniziative AIML in vari domini.
Sushant è un architetto tecnico di Salesforce, specializzato nell'architettura delle soluzioni e nella fornitura end-to-end delle piattaforme Salesforce. Con una profonda esperienza nella governance della piattaforma, nello sviluppo di applicazioni, nell'integrazione e in DevOps, ha guidato numerosi programmi di trasformazione dei clienti in tutti i settori. Sushant si impegna a promuovere l'eccellenza delle consegne e risultati architetturali scalabili.