Når du implementerer Salesforce, må du vanligvis integrere den med andre programmer. Selv om hvert integrasjonsscenarium er unikt, er det vanlige krav og problemer som utviklere og arkitekter må løse.
Dette dokumentet beskriver strategier (i form av mønstre) for disse vanlige integrasjonsscenariene. Hvert mønster beskriver utformingen og tilnærmingen for et bestemt scenario i stedet for å detaljere en bestemt implementering. I dette dokumentet finner du følgende:
- En rekke mønstre som håndterer viktige "arketype"-integreringsscenarier
- En valgmatrise for å finne ut hvilket mønster som passer best til scenariet ditt
- Integreringstips og gode fremgangsmåter
Formål og omfang
Dette dokumentet er for designere og arkitekter som trenger å integrere Salesforce Platform med andre programmer i virksomheten. Dette innholdet er en destillasjon av mange vellykkede implementeringer av Salesforce-arkitekter og -partnere.
Hvis du vil gjøre deg kjent med integrasjonsfunksjoner og alternativer som er tilgjengelig for omfattende bruk av Salesforce-baserte programmer, kan du lese Mønstersammendrag og Veiledning for mønstervalg. Arkitekter og utviklere bør vurdere disse mønsterdetaljene og gode fremgangsmåter under utformings- og implementeringsfasen av et Salesforce-integrasjonsprosjekt.
Hvis de implementeres riktig, gir disse mønstrene deg mulighet til å komme i produksjon så raskt som mulig og ha det mest stabile, skalerbare og vedlikeholdsfrie settet av programmer som er mulig. Salesforces egne rådgivningsarkitekter bruker disse mønstrene som referansepunkter under arkitektoniske gjennomganger, og vedlikeholder og forbedrer dem aktivt.
Som med alle mønstre dekker dette innholdet de fleste integrasjonsscenarier, men ikke alle. Salesforce tillater for eksempel brukergrensesnittintegrering, men slike integrasjoner er utenfor omfanget av dette dokumentet.
Mønstermal
Hvert integrasjonsmønster følger en konsistent struktur. Dette gir konsistens i informasjonen som gis i hvert mønster, og gjør det også enklere å sammenligne mønstre.
Navn
Mønsteridentifikatoren som også angir typen integrasjon som finnes i mønsteret.
Context
Det generelle integreringsscenarie, som mønsteret håndterer. Kontekst gir informasjon om hva brukere prøver å oppnå og hvordan programmet vil oppføre seg for å oppfylle kravene.
Problem
Scenariet eller problemet (uttrykt som et spørsmål) som mønsteret er utformet for å løse. Når du går gjennom mønstrene, leser du denne delen for å raskt forstå om mønsteret er riktig for integreringsscenariet.
Forces
Begrensningene og omstendighetene som gjør det angitte scenariet vanskelig å løse.
Løsning
Den anbefalte måten å løse integrasjonsscenariet på.
Skiss
Et UML-sekvensdiagram som viser deg hvordan løsningen håndterer scenariet.
Resultater
Forklarer detaljene om hvordan du bruker løsningen på integrasjonsscenariet og hvordan den løser kreftene knyttet til dette scenariet. Denne delen inneholder også nye utfordringer som kan oppstå som et resultat av å bruke mønsteret.
Sidefelt
Andre deler relatert til mønsteret som inneholder viktige tekniske problemer, variasjoner av mønsteret, mønsterspesifikke bekymringer og så videre.
Eksempel
Et ende-til-ende-scenarium som beskriver hvordan utformingsmønsteret brukes i et virkelig Salesforce-scenarium. Eksempelet forklarer integrasjonsmålene og hvordan du implementerer mønsteret for å oppnå disse målene.
Mønsteroppsummering
Følgende tabell viser integrasjonsmønstrene i dette dokumentet.
Liste over mønstre remote-process-invocation--forespørsel-og-svar
| Mønstre | Scenario |
|---|---|
| Fjernprosessoppkall – Forespørsel og svar | Salesforce kaller opp en prosess i et eksternt system, venter på at prosessen fullføres, og sporer deretter statusen basert på svaret fra det eksterne systemet. |
| Fjernprosessoppkall – brann og glem | Salesforce kaller opp en prosess i et eksternt system, men venter ikke på at prosessen skal fullføres. I stedet mottar og bekrefter den eksterne prosessen forespørselen og overgir deretter kontrollen tilbake til Salesforce. |
| Batchdatasynkronisering | Data som er lagret i Lightning Platform, opprettes eller oppdateres for å gjenspeile oppdateringer fra et eksternt system og når endringer fra Lightning Platform sendes til et eksternt system. Oppdateringer i begge retninger utføres gruppebasert. |
| Fjerninnkall | Data som er lagret i Salesforce Platform, opprettes, hentes, oppdateres eller slettes av et eksternt system. |
| Grensesnittoppdatering basert på dataendringer | Salesforce-brukergrensesnittet må oppdateres automatisk som et resultat av endringer i Salesforce-data. |
| Data Virtualization | Salesforce får tilgang til eksterne data i sanntid. Dette fjerner behovet for å beholde data i Salesforce og deretter avstemme dataene mellom Salesforce og det eksterne systemet. |
Mønstertilnærming
Integrasjonsmønstrene i dette dokumentet er klassifisert i tre kategorier:
-
Dataintegrering: Disse mønstrene tar hånd om kravet om å synkronisere data som befinner seg i to eller flere systemer, slik at begge systemene alltid inneholder tidsriktige og meningsfylte data. Dataintegrering er ofte den enkleste typen integrasjon som kan implementeres, men krever riktige informasjonsbehandlingsteknikker for å gjøre løsningen bærekraftig og kostnadseffektiv. Slike teknikker inkluderer ofte aspekter ved overordnet databehandling (MDM), datastyring, overføring, fjerning av duplikater, dataflytutforming og andre.
-
Prosessintegrering: Mønstrene i denne kategorien tar for seg behovet for at en forretningsprosess kan bruke to eller flere programmer til å utføre oppgaven sin. Når du implementerer en løsning for denne typen integrasjon, må det utløsende programmet kalle opp på tvers av prosessgrenser til andre programmer. Vanligvis inkluderer disse mønstrene også både orkestrering (der ett program er den sentrale "kontrolleren") og koreografi (der programmer er flerdeltakere og det ikke er noen sentral "kontroller"). Disse integrasjonene krever ofte komplekse krav til utforming, testing og håndtering av unntak. Slike sammensatte programmer er vanligvis mer krevende for de underliggende systemene fordi de ofte støtter transaksjoner som kjører lenge, og muligheten til å rapportere om eller behandle prosessstatus.
-
Virtuell integrering: Mønstrene i denne kategorien tar hensyn til at en bruker trenger å vise, søke etter og endre data som er lagret i et eksternt system. Når du implementerer en løsning for denne typen integrasjon, må det utløsende programmet kalle opp andre programmer og samhandle med deres data i sanntid. Denne typen integrasjon fjerner behovet for datareplikering på tvers av systemer, og betyr at brukere alltid samhandler med de nyeste dataene.
Å velge den beste integreringsstrategien for systemet er ikke noe trivielt. Det er mange aspekter å vurdere og mange verktøy som kan brukes, med noen verktøy som er mer passende enn andre for bestemte oppgaver. Hvert mønster tar seg av bestemte kritiske områder, inkludert funksjonaliteten til hvert av systemene, datavolumet, feilhåndtering og transaksjonalitet.
Mønsterutvalg guide
Valgmatrisetabellene viser mønstrene og deres viktige aspekter for å hjelpe deg med å finne ut hvilket mønster som passer best til integrasjonskravene dine. Mønstrene kategoriseres med disse dimensjonene.
| Aspekt | Beskrivelse |
|---|---|
| Type | Angir integreringstypen: Prosess, Data eller Virtuelt.
|
| Tidsplan | Angir integreringstypen: Prosess, Data eller Virtuelt.
|
Integrere Salesforce med et annet system
Denne tabellen viser mønstrene og deres viktige aspekter for å hjelpe deg med å finne ut hvilket mønster som passer best til behovene dine når integrasjonen er fra Salesforce til et annet system.
| Type | Tidsplan | Nøkkelmønster som bør vurderes |
|---|---|---|
| Prosessintegrering | Synkron | Fjernprosessoppkall – Forespørsel og svar |
| Prosessintegrering | Asynkron | Fjernprosessoppkall – brann og glem |
| Dataintegrering | Synkron | Fjernprosessoppkall – Forespørsel og svar |
| Dataintegrering | Asynkron | Grensesnittoppdatering basert på dataendringer |
| Virtuell integrasjon | Synkron | Data Virtualization |
Integrere et annet system med Salesforce
Denne tabellen viser mønstrene og deres viktige aspekter for å hjelpe deg med å finne det mønsteret som passer best til behovene dine når integrasjonen er fra et annet system til Salesforce.
| Type | Tidsplan | Nøkkelmønster som bør vurderes |
|---|---|---|
| Prosessintegrering | Synkron | Fjerninnkall |
| Prosessintegrering | Asynkron | Fjerninnkall |
| Dataintegrering | Synkron | Fjerninnkall |
| Dataintegrering | Asynkron | Batchdatasynkronisering |
Termer og definisjoner for mellomprodukter
Denne tabellen viser noen viktige termer relatert til mellomprodukter og deres definisjoner med hensyn til disse mønstrene.
| Term | Definisjon |
|---|---|
| Hendelsesbehandling | Hendelsesbehandling er mottak av en identifiserbar forekomst hos en utpekt mottaker (behandler). Nøkkelprosessene som er involvert i hendelsesbehandling, inkluderer følgende:
Husk at hendelsesbehandleren til slutt kan videresende hendelsen til en hendelsesforbruker. Vanlige bruk av denne funksjonen med mellomprogramvare kan utvides til å inkludere den populære publiserings-/abonnementsfunksjonen eller funksjonen Pub/sub. I et publiserings- eller abonnementsscenarium ruter mellomprogramvaren forespørsler eller meldinger til aktive datahendelsesabonnenter fra aktive datahendelsespubliseringer. Disse forbrukerne med aktive lytter kan deretter hente hendelsene etter hvert som de publiseres. I Salesforce-integrasjoner som bruker mellomprogramvare, forutsetter mellomprogramlaget kontroll over hendelsesbehandling. Den samler inn alle relevante hendelser, synkrone eller asynkrone, og administrerer distribusjon til alle endepunkter, inkludert Salesforce. Alternativt kan denne funksjonaliteten oppnås med Salesforce-foretaksmeldingsplattformen ved å bruke hendelsesbussen med plattformhendelser. |
| Protokollkonvertering | Protokolkonvertering er vanligvis et programvareprogram som konverterer standard eller proprietær protokoll for én enhet til protokollen som er egnet for en annen enhet for å oppnå interoperabilitet. I kontekst av mellomprogramvare kan tilkobling til et bestemt målsystem være begrenset av protokoll. I slike tilfeller må meldingsformatet konverteres til eller innkapsles i formatet til målsystemet, der belastningen kan trekkes ut. Dette kalles også tunneling. Salesforce støtter ikke konvertering av innebygd protokoll, så det antas at slike krav oppfylles av middleware-laget eller endepunktet. |
| Oversettelse og transformasjon | Transformasjon er muligheten til å tilordne ett dataformat til et annet for å sikre interoperabilitet mellom de ulike systemene som integreres. Vanligvis innebærer prosessen omformatering av meldinger underveis for å samsvare med kravene til avsenderen eller mottakeren. I mer komplekse tilfeller kan ett program sende en melding i sitt eget innebygde format, og to eller flere andre programmer kan hver motta en kopi av meldingen i sitt eget innebygde format. Verktøy for mellomprogramoversettelse og transformasjon inkluderer ofte muligheten til å opprette tjenestefasader for tidligere eller andre ikke-standardendepunkter. Disse servicefasadene gjør at disse sluttpunktene kan vises som tjenester. Med Salesforce-integrasjoner antas det at eventuelle slike krav oppfylles av middleware-laget eller endepunktet. Transformasjon av data kan kodes i Apex, men vi anbefaler det ikke på grunn av vedlikeholds- og ytelsesvurderinger. |
| Kø og bufring | Kø og bufring er generelt avhengig av asynkron meldingsoverføring i motsetning til en forespørsel-svar-arkitektur. I asynkrone systemer sørger meldingskøer for midlertidig lagring når målprogrammet er opptatt eller tilkoblingen er kompromittert. I tillegg har de fleste asynkrone mellomprogramvaresystemer fast lagringsplass for å sikkerhetskopiere meldingskøen. Den viktigste fordelen med en asynkron meldingsprosess er at hvis mottakerprogrammet mislykkes av en eller annen grunn, kan avsenderne fortsette upåvirket. De sendte meldingene akkumuleres bare i meldingskøen for senere behandling når mottakeren starter på nytt. Salesforce tilbyr bare eksplisitt køfunksjonalitet i form av arbeidsflytbaserte utgående meldinger. For å kunne sørge for sann meldingskø for andre integrasjonsscenarier, inkludert orkestrering, prosesskoreografi og tjenestenes kvalitet, kreves det en mellomprogramvareløsning. |
| Synkrone transportprotokoller | Synkrone transportprotokoller refererer til protokoller som støtter aktiviteter der en "enkelt tråd i anroperen sender forespørselsmeldingen, blokkerer for å vente på svarmeldingen, og deretter behandler svaret....Forespørselstråden som venter på svaret, innebærer at det bare er én utestående forespørsel, eller at svarkanalen for denne forespørselen er privat for denne tråden." |
| Asynkrone transportprotokoller | Asynkrone transportprotokoller refererer til protokoller som støtter aktiviteter der "én tråd i anroperen sender forespørselsmeldingen og konfigurerer et tilbakekall for svaret. En separat tråd lytter etter svarmeldinger. Når en svarmelding ankommer, kaller svartråden opp det riktige tilbakekallet, som gjenoppretter anroperens kontekst og behandler svaret. Denne tilnærmingen aktiverer flere utestående forespørsler for å dele en enkelt svartråd." |
| Medieringsruting | Medieringsruting er spesifikasjonen av en kompleks "flyt" med meldinger fra komponent til komponent. Mange mellomproduktbaserte løsninger er for eksempel avhengig av et meldingskøsystem. Enkelte implementeringer tillater at rutingslogikk leveres av selve meldingslaget, mens andre avhenger av klientprogrammer for å gi rutingsinformasjon eller tillate en blanding av begge paradigmene. I slike komplekse tilfeller forenkler formidling av mellomprogramvare utvikling, integrasjon og validering. computer [Mediator] kan sørge for at den riktige meldingen kommer til den riktige forbrukeren." |
| prosesskoreografi og serviceorkestrering | Prosess koreografi og serviceorkestrering er begge former for "tjenesteutforming" der et hvilket som helst antall endepunkter og funksjoner koordineres.
Forskjellen mellom koreografi og serviceorkestrering er:
Deler av koreografi for forretningsprosesser kan bygges inn i Salesforce-arbeidsflyter eller ved bruk av Apex. Vi anbefaler at alle komplekse orkestreringer implementeres i middleware-laget på grunn av Salesforce-tidsavbruddsverdier og styringsgrenser, spesielt i løsninger som krever sann transaksjonsbehandling. |
| Transaksjonalitet (kryptering, signering, pålitelig levering, transaksjonsbehandling) | Transaksjonalitet kan defineres som muligheten til å støtte globale transaksjoner som omfatter alle nødvendige operasjoner mot hver nødvendig ressurs. Transaksjonalitet innebærer støtte for alle fire ACID-egenskaper, atomicitet, konsistens, isolasjon og holdbarhet, der atomicitet garanterer alt eller ingenting-resultater for arbeidsenheten (transaksjon).
Salesforce er transaksjonelt i seg selv, men kan ikke delta i distribuerte transaksjoner eller transaksjoner som er startet utenfor Salesforce. Det antas derfor at for løsninger som krever komplekse, flersystemtransaksjoner, implementeres transaksjonalitet og tilknyttede tilbakestillings-/kompensasjonsmekanismer på mellomproduktsjiktet. |
| Ruting | Ruting kan defineres som å angi den komplekse flyten av meldinger fra komponent til komponent. I moderne tjenestebaserte løsninger kan slike meldingsflyter baseres på en rekke kriterier, inkludert topptekst, innholdstype, regel og prioritet.
Med Salesforce-integrasjoner antas det at eventuelle slike krav oppfylles av middleware-laget eller endepunktet. Meldingsruting kan kodes i Apex, men det anbefales ikke av hensyn til vedlikehold og ytelse. |
| Trekk ut, transformer og last inn | Trekk ut, transformer og last inn (ETL) henviser til en prosess som involverer følgende:
Salesforce støtter nå også datafangst, som er publisering av endringshendelser som representerer endringer i Salesforce-poster. Med datafangst mottar klienten eller det eksterne systemet endringer i nær sanntid for Salesforce-poster. Med denne informasjonen kan klienten eller det eksterne systemet synkronisere tilsvarende poster i et eksternt datalager. |
| Lang avspørring | Lang avspørring, også kalt kometprogrammering, emulerer en informasjon-push fra en server til en klient. På samme måte som en vanlig avstemning kobler klienten til og ber om informasjon fra serveren. Men i stedet for å sende et tomt svar hvis informasjon ikke er tilgjengelig, beholder serveren forespørselen og venter til informasjonen er tilgjengelig (en hendelse skjer). Serveren sender deretter et fullstendig svar til klienten. Klienten ber da umiddelbart om informasjon på nytt. Klienten opprettholder kontinuerlig en tilkobling til serveren, så den venter alltid på å motta et svar. Hvis serveren tidsavbrytes, kobles klienten til igjen og starter på nytt. Salesforce Streaming API bruker Bayeux-protokollen og CometD til langspørring.
|
Context
Du bruker Salesforce til å spore salgsemner, behandle pågående arbeid, opprette salgsmuligheter og fange opp bestillingsdetaljer som konverterer salgsemner til kunder. Men Salesforce-systemet inneholder eller behandler ikke bestillinger. Når bestillingsdetaljene er registrert i Salesforce, opprettes bestillingen i det eksterne systemet, som administrerer bestillingen til fullføring.
Når du implementerer dette mønsteret, kaller Salesforce opp det eksterne systemet for å opprette bestillingen og venter på vellykket fullføring. Hvis det lykkes, svarer det eksterne systemet synkront med bestillingsstatusen og bestillingsnummeret. Som en del av den samme transaksjonen oppdaterer Salesforce bestillingsnummeret og statusen internt. Bestillingsnummeret brukes som fremmednøkkel til etterfølgende oppdateringer av det eksterne systemet.
Problem
Når en hendelse skjer i Salesforce, hvordan starter du en prosess i et eksternt system, overfører den nødvendige informasjonen til den prosessen, mottar et svar fra det eksterne systemet, og deretter bruker du svardataene til å gjøre oppdateringer i Salesforce?
Forces
Ta hensyn til følgende krefter når du bruker løsninger basert på dette mønsteret.
- Krever samtalen til det eksterne systemet at Salesforce venter på et svar før prosessen fortsetter? Er samtalen til det eksterne systemet en synkron forespørselssvar eller en asynkron forespørsel?
- Hvis samtalen til det eksterne systemet er synkron, må Salesforce behandle svaret som en del av den samme transaksjonen som den første samtalen?
- Er meldingsstørrelsen liten eller stor?
- Er integrasjonen basert på forekomsten av en bestemt hendelse, som et knappeklikk i Salesforce-brukergrensesnittet eller DML-baserte hendelser?
- Er det eksterne endepunktet i stand til å svare på forespørselen med lav latens? Hvor mange brukere er sannsynlig å utføre denne transaksjonen i en periodeperiode?
Løsning
Denne tabellen inneholder løsninger på dette integrasjonsproblemet.
| Løsning | Tilpass | Kommentarer |
|---|---|---|
| Eksterne tjenester kaller opp et REST API-kall | Best | Med Eksterne tjenester kan du kalle opp en eksternt driftet tjeneste på en deklarativ måte (ingen kode kreves). Denne funksjonen brukes best når følgende betingelser er oppfylt:
|
| Salesforce Lightning: Lightning eller -side starter et synkront Apex REST- eller SOAP-oppkall.</ Hvis det eksterne endepunktet utgjør en risiko for svar med høy latens (se dokumentasjonen for siste grenser for de aktuelle grensene her), anbefales det å bruke et asynkront oppkall, også kalt en fortsettelse, for å unngå å nå synkrone Apex. |
Best | Salesforce gir deg mulighet til å bruke et WSDL og generere en resulterende Apex. Denne klassen gir den nødvendige logikken for å kalle opp den eksterne tjenesten. Salesforce gir deg også mulighet til å kalle opp HTTP-tjenester (REST) med standard GET-, POST-, PUT- og DELETE-metoder. En brukerinitiert handling på en Lightning kaller deretter opp en Apex som deretter utfører denne Apex for å utføre den eksterne samtalen. Lightning krever tilpassing av Salesforce-programmet. |
| En synkron utløser som kalles opp fra Salesforce-dataendringer, utfører et asynkront Apex SOAP- eller HTTP-oppkall. | Underoptimalt | Du kan bruke Apex til å utføre automatisering basert på endringer i postdata. En Apex kan utføres som et resultat av en DML-operasjon ved å bruke en Apex. Alle samtaler som utføres fra utløserkonteksten, må imidlertid utføres asynkront fra initieringshendelsen. Denne løsningen anbefales derfor ikke for dette integrasjonsproblemet. Denne løsningen er bedre egnet for mønsteret Eksternt prosessoppkall – Brann og Glem. |
| En Apex utfører et synkront Apex SOAP- eller HTTP-oppkall. | Underoptimalt | Du kan starte samtaler til et eksternt system fra en gruppejobb. Denne løsningen gjør det mulig å utføre og behandle svaret fra det eksterne systemet i en ekstern gruppeprosess i Salesforce. En gitt batch har imidlertid grenser for antall samtaler. Hvis du vil ha mer informasjon, kan du se Governor Limits. En gitt gruppekjøring kan utføre flere transaksjonskontekster (vanligvis med intervaller på 200 poster). Styringsgrensene tilbakestilles per transaksjonskontekst. |
Skiss
Dette diagrammet illustrerer en synkron ekstern prosessoppkall ved bruk av Apex.
Salesforce ringer ut til et eksternt system
I dette scenariet:
- En handling startes på Lightning (for eksempel et knappeklikk).
- Nettleseren (via en kontroller på klientsiden i tilfelle av en Lightning) utfører en HTTP POST som i sin tur utfører en handling på den tilhørende Apex.
- Kontrolleren kaller opp det faktiske kallet til den eksterne nettjenesten.
- Svaret fra det eksterne systemet returneres til Apex. Kontrolleren behandler svaret, oppdaterer data i Salesforce etter behov og gjengir siden på nytt.
I tilfeller der den etterfølgende tilstanden må spores, returnerer det eksterne systemet en unik identifikator som er lagret i Salesforce-posten.
Resultater
Bruk av løsningene som er relatert til dette mønsteret, tillater hendelsesinitierte eksterne prosessoppkall der Salesforce håndterer behandlingen.
Kallmekanismer
Oppkallmekanismen avhenger av løsningen som er valgt for å implementere dette mønsteret.
| Oppkallingsmekanisme | Beskrivelse |
|---|---|
| Forbedret ekstern tjeneste innebygd i en flyt eller Lightning eller Apex |
Brukes når den eksterne prosessen utløses som en del av en slutt-til-slutt-prosess som involverer brukergrensesnittet, og resultatet må vises eller oppdateres i en Salesforce-post. Sendingen av en kredittkortbetaling til en ekstern betalingsgateway og betalingsresultatet returneres for eksempel umiddelbart og vises til brukeren. |
| Apex | Brukes primært til kall til eksterne prosesser ved bruk av Apex fra DML-initierte hendelser. Hvis du vil ha mer informasjon om denne oppringingsmekanismen, kan du se mønsteret Ekstern prosessoppkall – Brann og glem. |
| Apex | Brukes til oppkall av eksterne prosesser i batcher. Hvis du vil ha mer informasjon om denne oppringingsmekanismen, kan du se mønsteret Ekstern prosessoppkall – Brann og glem. |
Feilhåndtering og gjenoppretting
Det er viktig å inkludere en feilhåndterings- og gjenopprettingsstrategi som en del av den generelle løsningen.
-
Feilhåndtering: Når det oppstår en feil (unntak eller feilkoder returneres til anroperen), håndterer anroperen feilhåndtering. For eksempel en feilmelding som vises på sluttbrukerens side eller logges på en tabell som krever ytterligere handling.
-
Gjenoppretting: Endringer bekreftes ikke til Salesforce før anroperen mottar et vellykket svar. Bestillingsstatusen oppdateres for eksempel ikke i databasen før et svar som indikerer vellykket utførelse, mottas. Om nødvendig kan anroperen prøve operasjonen på nytt.
Idempotent Design vurderinger
Idempotent-egenskaper sikrer at gjentatte kall er trygge. Hvis idempotency ikke implementeres, kan gjentatte kall av samme melding få forskjellige resultater, som potensielt fører til problemer med dataintegritet. Potensielle problemer inkluderer opprettelse av duplikatposter eller duplikatbehandling av transaksjoner.
Det er viktig å sikre at den eksterne prosedyren som kalles opp, er idempotent. Hvis samtalen utføres av brukergrensesnittet, må vi ta hånd om idempotency på integrasjonslaget spesielt hvis det ikke er noen garanti for at Salesforce ringer bare én gang.
Den mest typiske metoden for å bygge en idempotent-mottaker er å spore duplikater basert på unike meldingsidentifikatorer sendt av forbrukeren. Apex eller REST-kall må tilpasses for å sende en unik meldings-ID.
I tillegg må operasjoner som oppretter poster i det eksterne systemet, sjekke duplikater før de settes inn. Merk av ved å overføre en unik post-ID fra Salesforce. Hvis posten finnes i det eksterne systemet, oppdaterer du posten. I de fleste systemer kalles denne operasjonen en oppdateringsoperasjon.
Sikkerhetshensyn
Alle kall til et eksternt system må opprettholde konfidensialiteten, integriteten og tilgjengeligheten til forespørselen. Følgende sikkerhetshensyn er spesifikke for bruk av Apex SOAP- og HTTP-kall i dette mønsteret.
-
Enveis SSL er aktivert som standard, men toveis SSL støttes med både egensignerte og CA-signerte sertifikater for å opprettholde autentisiteten til både klienten og serveren.
-
For å effektivisere Apex og forenkle oppsettet av godkjente oppkall angir du en navngitt legitimasjon i oppkallssluttpunktet.
-
Vurder å bruke OAUTH 2.0 som godkjenningsmekanisme for integrering med eksterne systemer.
-
Vurder om nødvendig å bruke enveis hash-koder eller digitale signaturer ved bruk av Apex Crypto-klassemetoder for å sikre forespørselsintegritet.
-
Det eksterne systemet må beskyttes ved å implementere de riktige brannmurmekanismene. Se Sikkerhetsvurderinger.
-
Salesforce støtter for øyeblikket ikke WS-Security. Selv om den ikke genererer disse komplekse WS-Security-hodene som standard eller automatisk håndhever dem fra et innkommende WSDL, kan du konstruere og implementere dem manuelt ved å opprette tilpassede Apex for å håndtere SOAP-hodene og sikkerhetstokenene for innkommende forespørsler.
Sidefelt
Ingen.
Tidlighet
Tidlighet er av betydelig betydning i dette mønsteret. Vanligvis:
- Forespørselen kalles vanligvis opp fra brukergrensesnittet, så prosessen må ikke la brukeren vente.
- Salesforce har en konfigurerbar tidsavbrudd på opptil 120 sekunder for samtaler fra Apex.
- Fullføring av den eksterne prosessen utføres i rett tid for å avsluttes innenfor Salesforce-tidsavbruddsgrensen og innenfor brukerforventningene.
- Eksterne samtaler er underlagt Apex synkrone transaksjonsstyringsgrenser, så sørg for å redusere risikoen for instansiering av mer enn 50 transaksjoner som kjører i mer enn fem sekunder hver. I tillegg til å sikre at det eksterne endepunktet fungerer, inkluderer alternativer for å redusere risikoen for tidsavbrudd følgende:
- Angi tidsavbruddet for det eksterne oppkallet til fem sekunder.
- Bruke en fortsettelse i Lightning til å håndtere transaksjoner som kjører lenge
Datavolumer
Dette mønsteret brukes primært til små volumer, sanntidsaktiviteter på grunn av de små tidsavbruddsverdiene og den maksimale størrelsen på forespørselen eller svaret for Apex. Ikke bruk dette mønsteret i gruppebehandlingsaktiviteter der datalastingen finnes i meldingen.
Støtte for endepunktsfunksjonalitet og standarder
Funksjonaliteten og standardstøtten for endepunktet avhenger av løsningen du velger.
| Løsning | Viktige punkter om sluttpunkter |
|---|---|
| Apex HTTP-oppkall | Sluttpunktet må kunne motta HTTP-kall. Salesforce må ha tilgang til endepunktet via det offentlige Internett. For privat og sikker kommunikasjon har Salesforce nå også startet å støtte Salesforce Private Connect via Hyperforce plattformen sikkert. Se Salesforce Private Connect for å få mer informasjon.
Du kan bruke Apex HTTP-oppkall til å kalle REST-tjenester ved å bruke standardmetodene GET, POST, PUT, DELETE og PATCH. |
| Apex SOAP-oppkall | Sluttpunktet må kunne motta HTTP-kall. Salesforce må ha tilgang til endepunktet via det offentlige Internett. For privat og sikker kommunikasjon har Salesforce nå også startet å støtte Salesforce Private Connect via Hyperforce plattformen sikkert. Se Salesforce Private Connect for å få mer informasjon.
Denne løsningen krever at det eksterne systemet er kompatibelt med standardene som støttes av Salesforce. Nettjenestestandardene som støttes av Salesforce for Apex SOAP-kall, er:
|
Statsforvaltning
Når du integrerer systemer, er nøkler viktige for pågående statussporing. Det finnes to alternativer.
- Salesforce lagrer det eksterne systemets primære eller unike erstatningsnøkkel for den eksterne posten.
- Det eksterne systemet lagrer den unike Salesforce-post-IDen eller en annen unik erstatningsnøkkel.
Det er spesifikke vurderinger for håndtering av integrasjonsnøkler avhengig av hvilket system som inneholder den overordnede posten, som vist i tabellen nedenfor.
| Overordnet | System Beskrivelse |
|---|---|
| Salesforce | Det eksterne systemet lagrer enten Salesforce RecordId eller en annen unik erstatningsnøkkel fra posten. |
| Eksternt system | Kallet til den eksterne prosessen returnerer den unike nøkkelen fra programmet, og Salesforce lagrer denne nøkkelverdien i et unikt postfelt. |
Komplekse integrasjonsscenarier
I enkelte tilfeller kan løsningen som foreskrives av dette mønsteret, kreve implementering av flere komplekse integrasjonsscenarier. Dette betjenes best ved å bruke mellomprogramvare eller få Salesforce til å kalle opp en sammensatt tjeneste. Disse scenariene inkluderer følgende:
- orkestrering av forretningsprosesser og regler som involverer kompleks flytlogikk
- Aggregering av samtaler og deres resultater på tvers av samtaler til flere systemer
- Transformasjon av både innkommende og utgående meldinger
- Opprettholde transaksjonsintegritet på tvers av samtaler til flere systemer
Governorgrenser
Hvis du vil ha informasjon om Apex-grenser, kan du se Utførelsesstyringer og grenser i Apex Developer Guide.
Middleware-egenskaper
Følgende tabell fremhever de ønskede egenskapene for et mellomproduktsystem som deltar i dette mønsteret.
| Eiendom | Obligatorisk | Ønsket | Ikke nødvendig |
|---|---|---|---|
| Hendelsesbehandling | X | ||
| Protokollkonvertering | X | ||
| Oversettelse og transformasjon | X | ||
| Kø og bufring | X | ||
| Synkrone transportprotokoller | X | ||
| Asynkrone transportprotokoller | X | ||
| Medieringsruting | X | ||
| prosesskoreografi og serviceorkestrering | X | ||
| Transaksjonalitet (kryptering, signering, pålitelig levering, transaksjonsbehandling) | X | ||
| Ruting | X | ||
| Trekk ut, transformer og last inn | X | ||
| lang avspørring | X |
Eksempel
Et verktøyfirma bruker Salesforce og har et eget system som inneholder faktureringsinformasjon for kunder. Som en del av bestillingsprosessen må nye faktureringskontoer opprettes i faktureringssystemet, og Salesforce må gjenspeile faktureringskontonummeret i bestillingsaktiveringsprosessen. De har en eksisterende nettjeneste som tillater oppretting av en faktureringskonto og returnerer faktureringskontonummeret som et svar.
Dette kravet kan oppfylles med følgende løsning.
- Salesforce bruker faktureringskontotjenesten WSDL fra en Apex.
- Utfør Apex med kundeinformasjonen overført til den eksterne nettjenesten fra en tilpasset Apex eller ekstern tjeneste.
- Den tilpassede kontrolleren analyserer deretter returverdiene fra Apex og lagrer denne informasjonen i Salesforce-objektet.
Dette eksemplet viser at
- Statusen til kunden spores med et kontonummer lagret i Salesforce-kontoobjektet.
- Etterfølgende behandling av svarmeldingen av anroperen
Context
Du bruker Salesforce til å spore salgsemner, behandle pågående arbeid, opprette salgsmuligheter og fange opp bestillingsdetaljer som konverterer salgsemner til kunder. Som en del av bestillingsbehandlingsprosessene må det imidlertid opprettes en faktureringskonto i faktureringssystemet for bestillingen.
Når du implementerer dette mønsteret, kaller Salesforce opp det eksterne systemet for å opprette faktureringskontoen, men venter ikke på at samtalen skal fullføres. Det eksterne systemet kan eventuelt oppdatere Salesforce med den nye faktureringskontoen opprettet i en separat transaksjon.
Problem
Når en hendelse skjer i Salesforce, hvordan starter du en prosess i et eksternt system og overfører den nødvendige informasjonen til den prosessen uten å vente på svar fra det eksterne systemet?
Forces
Ta hensyn til følgende krefter når du bruker løsninger basert på dette mønsteret.
- Krever samtalen til det eksterne systemet at Salesforce venter på et svar før prosessen fortsetter? Er samtalen til det eksterne systemet synkron eller asynkron?
- Hvis samtalen til det eksterne systemet er synkron, må svaret behandles av Salesforce som en del av samme transaksjon som samtalen?
- Er meldingsstørrelsen liten?
- Er integrasjonen basert på forekomsten av en bestemt hendelse, som et knappeklikk i Salesforce-brukergrensesnittet eller DML-baserte hendelser?
- Er garantert levering av meldinger fra Salesforce til det eksterne systemet et krav?
- Er det eksterne systemet i stand til å delta i en kontraktsfør integrasjon der Salesforce spesifiserer kontrakten? I enkelte løsningsvarianter (for eksempel utgående meldinger) angir Salesforce en kontrakt som det eksterne systemendepunktet implementerer.
- Støtter endepunktet eller ESB (Enterprise Service Bus) langspørring?
- Foretrukkes deklarative konfigurasjonsmetoder fremfor tilpasset Apex? I dette tilfellet foretrekkes løsninger som plattformhendelser foran Apex.
Løsning
Følgende tabell inneholder løsninger på dette integrasjonsproblemet.
| Løsning | Tilpass | Kommentarer |
|---|---|---|
| Flytdrevne plattformhendelser | Best | Opprett flyter deklarativt for å implementere plattformhendelser. Den anbefalte løsningen er når den eksterne prosessen kalles opp fra en innsettings- eller oppdateringshendelse. Plattformhendelser er hendelsesmeldingene (eller varslene) som appene sender og mottar for å iverksette ytterligere tiltak. Plattformhendelser forenkler prosessen med å kommunisere endringer og svare på dem uten å skrive kompleks logikk. Én eller flere abonnenter kan lytte på samme hendelse og utføre handlinger. Et programvaresystem kan for eksempel sende hendelser som inneholder informasjon om skriverens blekkpatroner. Abonnenter kan abonnere på hendelsene for å overvåke skriverblekknivåer og legge inn bestillinger for å erstatte patroner med lave blekknivåer. Eksterne apper kan lytte på hendelsesmeldinger ved å abonnere på en kanal via CometD. Plattformapper, som Lightning, kan også abonnere på hendelsesmeldinger med CometD. Salesforce PubSub Api som er basert på gRPC og HTTP/2 kan også brukes her. Salesforce støtter også flyter som utløses av plattformhendelser, som effektivt gjør det mulig å opprette en lytter med Flow Builder-grensesnittet. Denne typen flyt starter automatisk når en bestemt plattformhendelsesmelding publiseres til Salesforce-hendelsesbussen. |
| Pub/Sub API | Best | Pub/Sub API er den anbefalte måten eksterne forbrukere kan bruke hendelsene på hendelsesbussen på. Den gRPC-baserte Pub/Sub API:
Når en plattformhendelse er definert i Salesforce, blir den tilgjengelig for både interne og eksterne forbrukere. |
| Endre datafangst | Best | Endringsdatafangst (CDC) publiserer hendelser for endringer i Salesforce-poster som tilsvarer opprettelses-, oppdaterings-, slette- og oppheve slette-operasjoner. Aktivering av CDC (Change datafangst) i Salesforce er en rent deklarativ prosess som ikke krever noen Apex. Varselmeldinger sendes til hendelsesbussen som klienter kan abonnere på med Pub/Sub API- eller Apex. Hendelsesdrevne systemer effektiviserer kommunikasjonen mellom distribuerte bedriftssystemer, øker skalerbarheten og leverer sanntidsdata. Hvis for eksempel bestillingsinformasjon befinner seg i både ERP-systemet og Salesforce, kan du strømme bestillingsendringshendelser fra Salesforce til en integrasjonsapp. Appen synkroniserer deretter endringene i ERP-systemet |
| OmniStudio-integreringsprosedyrer | Bra | Bruk Omnistudio-integreringsprosedyrer til å deklarativt automatisere datainteraksjoner mellom Salesforce og eksterne tredjepartsprogrammer. Integrasjonsprosedyrer håndterer komplekse datatransformasjoner, API-kall og hendelsesdrevet automatisering, og de kan utføre flere handlinger i ett enkelt serverkall. Bruk integrasjonsprosedyrer når det ikke kreves noen brukermedvirkning under utførelsen, og du vil
Se nærmere på Integrasjonsprosedyrer heri. |
| Tilpassingsdrevet plattformhendelser | Bra | På samme måte som flytdrevne plattformhendelser, men hendelsene opprettes av Apex eller -klasser. Du kan publisere og forbruke plattformhendelser ved å bruke Apex eller et API. Plattformhendelser integreres med Salesforce-plattformen via Apex. Utløsere er hendelsesforbrukerne på Salesforce-plattformen som lytter på hendelsesmeldinger. Når en ekstern app bruker APIen eller en innebygd Salesforce-app bruker Apex til å publisere hendelsesmeldingen, utløses en utløser på denne hendelsen. Utløsere kjører handlingene som svar på hendelsesvarslene. |
| Flytdrevet utgående melding | Tilpass | Den anbefalte løsningen for denne typen integrasjon er når den eksterne prosessen kalles opp fra en innsettings- eller oppdateringshendelse. Salesforce tilbyr en flytdrevet utgående meldingsfunksjonalitet som tillater sending av SOAP-meldinger til eksterne systemer utløst av en innsettings- eller oppdateringsoperasjon i Salesforce. Disse meldingene sendes asynkront og er uavhengige av Salesforce-brukergrensesnittet. Den utgående meldingen sendes til et bestemt eksternt sluttpunkt. Den eksterne tjenesten må ha mulighet til å delta i en kontraktsfør integrasjon der Salesforce leverer kontrakten. Hvis den eksterne tjenesten ikke svarer med en positiv bekreftelse ved mottak av meldingen, prøver Salesforce å sende meldingen på nytt for å gi en garanti for levering. |
| Tilpasset Lightning som starter et asynkront Apex SOAP- eller HTTP-oppkall | Underoptimalt | Denne løsningen brukes vanligvis i brukergrensesnittsbaserte scenarier, men krever tilpassing. I tillegg må løsningen håndtere garantert levering av meldingen i koden. Lignende til løsningen for mønsterløsningen Fjernprosessoppkall – forespørsel og svar som angir ved bruk av en Lightning-komponent, sammen med et Apex-oppkall. Forskjellen er at i dette mønsteret venter ikke Salesforce på at forespørselen skal fullføres før du gir kontroll til brukeren. Når du har mottatt meldingen, svarer det eksterne systemet og angir mottak av meldingen, og deretter behandles meldingen asynkront. Det eksterne systemet tar kontroll tilbake til Salesforce før den begynner å behandle meldingen. Salesforce trenger derfor ikke å vente på at behandlingen skal være fullført. |
| Apex for å gjøre Apex SOAP eller HTTP asynkront oppkall | Underoptimalt | Du kan bruke Apex til å utføre automatisering basert på endringer i postdata. En Apex kan utføres som et resultat av en DML-operasjon ved å bruke en Apex. Alle samtaler som utføres fra utløserkonteksten, må imidlertid utføres asynkront. |
| Apex for å gjøre Apex SOAP eller HTTP asynkront oppkall | Underoptimalt | Kall til et eksternt system kan utføres fra en gruppejobb. Denne løsningen tillater utføring av en ekstern gruppeprosess og behandling av svaret fra det eksterne systemet i Salesforce. Det er imidlertid grenser for antall samtaler for en gitt gruppekontekst. Hvis du vil ha mer informasjon, kan du se Salesforce Developer Limits and Allocations Quick Reference.
|
Skiss
Følgende diagram illustrerer et kall fra Salesforce til et eksternt system der opprettelse eller oppdatering av operasjoner på en post utløser samtalen.
I dette scenariet:
- Et eksternt system abonnerer på plattformhendelsen.
- En oppdatering eller innsetting skjer i et gitt sett med poster i Salesforce.
- En Salesforce-flyt utløses når et sett betingelser er oppfylt.
- Denne flyten oppretter en plattformhendelse.
- Den eksterne lytter mottar hendelsesmeldingen og plasserer meldingen i en lokal kø.
- Køprogrammet videresender meldingen til det eksterne programmet for behandling.
Hvis det eksterne systemet må utføre operasjoner mot Salesforce, kan du implementere en valgfri tilbakekalloperasjon.
Resultater
Bruk av løsningene som er relatert til dette mønsteret, gjør følgende mulig:
- Brukergrensesnittinitierte eksterne prosessoppkall der resultatet av transaksjonen kan vises til sluttbrukeren
- DML-hendelsesinitierte eksterne prosessoppkall der resultatet av transaksjonen kan behandles av samtaleprosessen
Kallmekanismer
Oppkallmekanismen avhenger av løsningen som er valgt for å implementere dette mønsteret.
| Oppkallingsmekanisme | Beskrivelse |
|---|---|
| Flyt | Brukes av både prosessdrevne og tilpassingsdrevne løsninger. Hendelser utløser Salesforce-prosessen, som deretter kan publisere en plattformhendelse for abonnement fra et eksternt system. |
| Pub / Sub API | Pub/Sub API tilbyr et enkelt grensesnitt for publisering og abonnement på plattformhendelser, inkludert hendelser for hendelsesovervåking i sanntid og hendelser for datafangst av endringer. Pub/Sub API er basert på gRPC og HTTP/2, og publiserer og leverer binære hendelsesmeldinger effektivt i Apache Avro-format. |
| Endre datafangst | Salesforce Change Datafangst publiserer endringshendelser, som representerer endringer i Salesforce-poster. Endringer inkluderer opprettelse av en ny post, oppdatering av en eksisterende post, sletting av en post og oppheving av sletting av en post. |
| Lightning og Apex | Brukes til å kalle opp en ekstern prosess asynkront ved bruk av et Apex. |
| Flytstyrte utgående meldinger | Brukes bare til den utgående meldingsløsningen. Opprette og oppdatere DML-hendelser utløser Salesforce-arbeidsflytreglene, som deretter kan sende en melding til et eksternt system. |
| Apex | Brukes til utløserdrevne plattformhendelser og kall til eksterne prosesser ved bruk av Apex fra DML-initierte hendelser. |
| Apex | Brukes til oppkall av eksterne prosesser i gruppemodus. |
Feilhåndtering og gjenoppretting
En feilhåndterings- og gjenopprettingsstrategi må vurderes som en del av den generelle løsningen. Den beste metoden avhenger av løsningen du velger.
| Løsning | Feilhåndterings- og gjenopprettingsstrategi |
|---|---|
| Flyt |
|
| Apex |
|
| datafangst (CDC) / plattformhendelser |
|
Idempotent Design vurderinger
Plattformhendelser publiseres bare til bussen én gang. Det er ingen nye forsøk på Salesforce-siden. Det er opp til ESB å be om at hendelsene spilles av igjen. I en repetisjon forblir plattformhendelsens repetisjons-ID den samme, og ESB kan prøve duplikatmeldinger basert på repetisjons-IDen.
Idempotency er viktig for utgående meldinger fordi den er asynkron, og nye forsøk startes når ingen positiv bekreftelse mottas. Den eksterne tjenesten må derfor kunne håndtere meldinger fra Salesforce på en idempotent måte.
Utgående meldinger sender en unik ID per melding, og denne IDen forblir den samme for eventuelle nye forsøk. Det eksterne systemet kan spore duplikatmeldinger basert på denne unike IDen. Den unike post-IDen for hver post som oppdateres, sendes også, og kan brukes til å hindre opprettelse av duplikatposter.
De idempotente konstruksjonsvurderingene i mønsteret Fjernprosessoppkall – Forespørsel og Svar gjelder også for dette mønsteret.
Sikkerhetshensyn
Alle kall til et eksternt system må opprettholde konfidensialiteten, integriteten og tilgjengeligheten til forespørselen. Forskjellige sikkerhetsvurderinger gjelder avhengig av hvilken løsning du velger.
| Løsning | Sikkerhetsvurderinger |
|---|---|
| Apex | En samtale til et eksternt system må opprettholde konfidensialiteten, integriteten og tilgjengeligheten til forespørselen. Følgende er sikkerhetshensyn spesifikke for bruk av Apex SOAP- og HTTP-kall i dette mønsteret.
|
| datafangst (CDC) / plattformhendelser | For plattformhendelser må det eksterne abonnementssystemet kunne godkjenne Salesforce Streaming API. Plattformhendelser samsvarer med den eksisterende sikkerhetsmodellen som er konfigurert i Salesforce-organisasjonen. For å kunne abonnere på en hendelse må brukeren ha lesetilgang til hendelsesenheten. For å kunne publisere en hendelse må brukeren ha Opprette-tillatelse for hendelsesenheten. |
Sidefelt
Ingen.
Tidlighet
Tidlighet er mindre av en faktor med mønsteret for brann og glemsel. Kontroll overføres tilbake til klienten umiddelbart eller etter positiv bekreftelse av en vellykket overføring til det eksterne systemet. Med Salesforce-utgående meldinger må bekreftelsen skje innen 24 timer (dette kan utvides til sju dager); ellers utløper meldingen. For plattformhendelser sender Salesforce hendelsene til hendelsesbussen og venter ikke på en bekreftelse eller bekreftelse fra abonnenten. Hvis abonnenten ikke henter meldingen, kan abonnenten be om å spille hendelsen på nytt med hendelsessvar-IDen. Meldinger om hendelser med stor trafikk lagres i 72 timer (tre dager). Til å hente tidligere hendelsesmeldinger bruker du CometD-klienter til å abonnere på en kanal.
Datavolumer
Viktige punkter om datavolum er avhengig av hvilken løsning du velger. Du finner grensene for hver løsning i Salesforce-hurtigreferansen for grenser.
Støtte for endepunktsfunksjonalitet og standarder
Funksjonaliteten og standardstøtten for endepunktet avhenger av løsningen du velger.
| Løsning | Viktige punkter om sluttpunkter |
|---|---|
| Apex SOAP-oppkall | Sluttpunktet må kunne behandle et nettjenestekall via HTTP. Salesforce må ha tilgang til endepunktet via det offentlige Internett. Denne løsningen krever at det eksterne systemet er kompatibelt med standardene som støttes av Salesforce. Nettjenestestandardene som støttes av Salesforce for Apex SOAP-kall, er:
|
| Apex HTTP-oppkall | Sluttpunktet må kunne motta HTTP-samtaler og være tilgjengelig via det offentlige Internett av Salesforce. Apex HTTP-oppkall kan brukes til å kalle opp RESTful-tjenester ved å bruke standardmetodene GET, POST, PUT og DELETE. |
| datafangst (CDC) / plattformhendelser |
|
Statsforvaltning
Når du integrerer systemer, er unike postidentifikatorer viktige for pågående statussporing. Hvis en post for eksempel opprettes i det eksterne systemet, har du to alternativer.
- Salesforce lagrer det eksterne systemets primære eller unike erstatningsnøkkel for den eksterne posten.
- Det eksterne systemet lagrer den unike Salesforce-post-IDen eller en annen unik erstatningsnøkkel.
Følgende tabell viser viktige punkter om delstatsbehandling i dette mønsteret.
| Overordnet | System Beskrivelse |
|---|---|
| Salesforce | Det eksterne systemet må lagre Salesforce RecordId eller en annen unik erstatningsnøkkel i Salesforce-posten. |
| Eksternt system | Salesforce må lagre en referanse til den unike identifikatoren i det eksterne systemet. I og med at prosessen er asynkron, kan ikke lagring av denne unike identifikatoren være en del av den opprinnelige transaksjonen. Salesforce må oppgi en unik ID i kallet til den eksterne prosessen. Det eksterne systemet må deretter ringe tilbake til Salesforce for å oppdatere posten i Salesforce med det eksterne systemets unike identifikator ved bruk av den unike Salesforce-IDen. Tilbakekallet innebærer spesifikk statushåndtering i det eksterne programmet for å lagre den unike Salesforce-identifikatoren for denne transaksjonen som skal brukes til tilbakekallet når behandlingen er fullført, eller den unike Salesforce-identifikatoren lagres i det eksterne systemets post. |
Komplekse integrasjonsscenarier
Hver løsning i dette mønsteret har forskjellige vurderinger for komplekse integrasjonsscenarier som transformasjon og prosessorkestrering.
| Løsning | Viktige punkter |
|---|---|
| Apex | I enkelte tilfeller krever løsninger som foreskrives av dette mønsteret, implementering av flere komplekse integrasjonsscenarier som best betjenes med mellomprogramvare eller at Salesforce kaller opp en sammensatt tjeneste. Disse scenariene inkluderer følgende:
|
| datafangst (CDC) / plattformhendelser | I og med at hendelser er statiske og deklarative, kan ingen komplekse integrasjonsscenarier, som aggregering, orkestrering eller transformasjon, utføres i Salesforce. Det eksterne systemet eller mellomprogramvaren må håndtere disse typene operasjoner. |
| OmniStudio-integreringsprosedyrer | Integrasjonsprosedyrer (OmniStudio) tilbyr orkestrering på serversiden uten status for å koordinere flere serverdeltjenester samtidig som du utfører komplekse, deklarative datatransformasjoner. Integrasjonsprosedyrer kjeder trinn som HTTP-handlinger, DataRaptor-uttrekk/transformer/innlasting, angi verdier, sløyfe/hvis og matriseoppslag for å normalisere, berike, aggregere og tilordne nyttelast mellom brukergrensesnittkontrakter og forskjellige API-er. De støtter robuste kjøretidskontroller som betinget forgrening, sideinndeling, tidsavbrudd, nye forsøk, håndtering av delvis feil og fortsett-ved-feil, i tillegg til ytelsesoptimaliseringer som bufring på serversiden og responsformatering. IP-adresser kan kalles opp synkront fra OmniScripts eller hodeløst via REST, noe som aktiverer gjenbrukbare, versjonsbaserte "integrasjonsfasader" som skjuler serverdels kompleksitet fra kanaler. |
Governorgrenser
På grunn av multitalent-karakteren til Salesforce-plattformen er det grenser for utgående oppkall. Grenser er avhengig av typen utgående samtale og tidspunktet for samtalen.
Hvis du vil vite mer om grenser og tildelinger som gjelder for plattformhendelser, kan du se Platforms Events Developer Guide.
Pålitelige meldinger
Pålitelige meldinger forsøker å løse problemet med å garantere levering av en melding til et eksternt system der de individuelle komponentene ikke er pålitelige. Metoden for å sikre mottak av en melding av det eksterne systemet avhenger av hvilken løsning du velger.
I tilfelle av Salesforce Change Datafangst er endringshendelsestyper tilgjengelig for å håndtere spesielle situasjoner, som å fange opp endringer som ikke fanges opp i Salesforce-programserverne, eller håndtere store endringer.
I noen tilfeller sender Salesforce Gap-hendelser i stedet for endringshendelser for å informere abonnenter om feil, eller hvis det ikke er mulig å generere endringshendelser. En gaphendelse inneholder informasjon om endringen i toppteksten, som endringstype og post-ID. Det inkluderer ikke detaljer om endringen, som postfelt. For å fange opp endringer mer effektivt genereres Overflyt-hendelser for enkelttransaksjoner som overskrider en terskel. Se heri for mer informasjon.
| Løsning | Viktige punkter om pålitelige meldinger |
|---|---|
| Apex | Salesforce tilbyr ikke eksplisitt støtte for pålitelige meldingsprotokoller (for eksempel WS-ReliableMessaging). Vi anbefaler at det eksterne endepunktet som mottar Salesforce-meldingen, implementerer et pålitelig meldingssystem, som JMS eller MQ. Dette systemet sikrer full ende-til-ende-garantert levering til det eksterne systemet som til slutt behandler meldingen. Dette systemet sikrer imidlertid ikke garantert levering fra Salesforce til det eksterne endepunktet det kaller opp. Garantert levering må håndteres via tilpassinger til Salesforce. Spesifikke teknikker, som å behandle en positiv bekreftelse fra det eksterne sluttpunktet i tillegg til tilpasset logikk for å prøve på nytt, må implementeres. |
| datafangst (CDC) / plattformhendelser | Plattformhendelser forsøker å levere pålitelige meldinger ved å beholde hendelsesmeldinger midlertidig i hendelsesbussen. Abonnenter kan fange opp manglende hendelsesmeldinger ved å spille av meldinger fra hendelsesbussen på nytt med Spill av-ID for hendelsesmeldinger. Hendelsesbussen er et distribuert system og har ikke de samme garantiene som en transaksjonsdatabase. Resultatet er at Salesforce ikke kan gi et synkront svar for en hendelsespubliseringsforespørsel. Hendelser legges i kø og bufres, og Salesforce forsøker å publisere hendelsene asynkront. I sjeldne tilfeller beholdes kanskje ikke hendelsesmeldingen i det distribuerte systemet under de første eller etterfølgende forsøkene. Det betyr at hendelsene ikke leveres til abonnenter, og de kan ikke gjenopprettes. |
Middleware-egenskaper
Følgende tabell fremhever de ønskede egenskapene for et mellomproduktsystem som deltar i dette mønsteret.
| Eiendom | Obligatorisk | Ønsket | Ikke nødvendig |
|---|---|---|---|
| Hendelsesbehandling | X | ||
| Protokollkonvertering | X | ||
| Oversettelse og transformasjon | X | ||
| Kø og bufring | X | ||
| Synkrone transportprotokoller | X | ||
| Asynkrone transportprotokoller | X | ||
| Medieringsruting | X | ||
| prosesskoreografi og serviceorkestrering | X | ||
| Transaksjonalitet (kryptering, signering, pålitelig levering, transaksjonsbehandling) | X | ||
| Ruting | X | ||
| Trekk ut, transformer og last inn | X | ||
| lang avspørring | X (nødvendig for plattformhendelser) |
Løsningsvariant – Plattformhendelser: Publiseringsvirkemåte og transaksjoner
Når meldinger om plattformhendelser publiseres umiddelbart, respekterer ikke hendelsespublisering transaksjonsgrensene til publiseringsprosessen. Hendelsesmeldinger kan publiseres før transaksjonen fullføres, eller også hvis en transaksjon mislykkes. Denne virkemåten kan føre til problemer når en abonnent forventer å finne data som publiseringstransaksjonen bekrefter. Dataene er kanskje ikke til stede når abonnenten mottar hendelsesmeldingen. For å løse dette problemet angir du virkemåten for publisering av plattformhendelse til Publiser etter bekreftelse i hendelsesdefinisjonen. Virkemåtene for publisering du kan angi i en plattformhendelsesdefinisjon, er:
- Publiser etter bekreftelse for å få hendelsesmeldingen publisert først etter at en transaksjon har blitt riktig bekreftet. Velg dette alternativet hvis abonnenter baserer seg på data som publiseringstransaksjonen bekrefter. En prosess publiserer for eksempel en hendelsesmelding og oppretter en oppgavepost. En andre prosess som abonnerer på hendelsen, utløses og forventer å finne oppgaveposten. En annen årsak til å velge denne virkemåten er når du ikke vil at hendelsesmeldingen skal publiseres hvis transaksjonen mislykkes.
- Publiser umiddelbart for å få hendelsesmeldingen publisert når publiseringskallet utføres. Velg dette alternativet hvis du vil at hendelsesmeldingen skal publiseres uavhengig av om transaksjonen lykkes. Velg også dette alternativet hvis utgiveren og abonnentene er uavhengige og abonnenter ikke er avhengige av data som publiseringen har forpliktet seg til. Virkemåten for umiddelbar publisering er for eksempel egnet for en hendelse som brukes til loggingsformål. Med dette alternativet kan en abonnent motta hendelsesmeldingen før data bekreftes av publiseringstransaksjonen.
Eksempel
Et telekommunikasjonsselskap ønsker å bruke Salesforce som frontlinje for å opprette kontoer ved bruk av salgsemne-til-salgsmulighet-prosessen. En bestilling opprettes i Salesforce når salgsmuligheten er avsluttet og vunnet, men serverdel-ERP-systemet er dataoverordnet. Bestillingen må lagres i Salesforce-salgsmulighetsposten, og salgsmulighetsstatusen må endres for å angi at bestillingen ble opprettet.
Følgende begrensninger gjelder.
- Bare deklarativ utvikling kan implementeres.
- Du trenger ikke umiddelbart varsel om bestillingsnummeret etter at salgsmuligheten er konvertert til en bestilling.
- Organisasjonen har et ESB som støtter CometD-protokollen og kan abonnere på plattformhendelser.
Dette eksemplet implementeres best med Salesforce-plattformhendelser, men krever at ESB abonnerer på plattformhendelsen.
På Salesforce-siden:
- Opprett en flyt for å starte plattformhendelsen (for eksempel når salgsmulighetsstatusen endres til Avsluttet vunnet).
- Opprett en ny plattformhendelse som publiserer salgsmulighetsdetaljene.
På den eksterne systemsiden:
- ESB abonnerer på Salesforce Platform-hendelsen ved bruk av CometD-protokollen.
- ESB mottar ett eller flere varsler som angir at salgsmuligheten skal konverteres til en bestilling.
- ESB videresender meldingen til serverdel-ERP-systemet slik at bestillingen kan opprettes.
- Når bestillingen er opprettet i ERP-systemet, kaller en separat tråd tilbake til Salesforce med SessionId som godkjenningstoken. Tilbakekallet oppdaterer salgsmuligheten med bestillingsnummeret og statusen. Du kan gjøre dette tilbakekallet ved å bruke dokumenterte mønsterløsninger, som Salesforce Platform-hendelser, Salesforce SOAP API, REST API eller en Apex.
Dette eksemplet viser følgende.
- Implementering av en ekstern prosess kalt opp asynkront
- Garantert slutt-til-slutt-levering
- Etterfølgende tilbakekall til Salesforce for å oppdatere statusen til posten
Context
Du flytter CRM-implementeringen til Salesforce og vil
- Trekk ut og transformer kontoer, kontakter og salgsmuligheter fra det gjeldende CRM-systemet, og last inn dataene i Salesforce (første dataimport).
- Trekk ut, transformer og last inn faktureringsdata for kunder i Salesforce fra et eksternt system ukentlig (pågår).
- Trekk ut informasjon om kundeaktivitet fra Salesforce og importer den til et datalager på stedet på ukentlig basis (fortløpende).
Problem
Hvordan importerer du data til Salesforce og eksporterer data ut av Salesforce, med tanke på at disse importene og eksportene kan påvirke sluttbrukeroperasjoner i åpningstider og involvere store mengder data?
Forces
Det er forskjellige krefter å vurdere når du bruker løsninger basert på dette mønsteret:
- Skal dataene lagres i Salesforce? Hvis ikke, er det andre integreringsalternativer en arkitekt kan og bør vurdere (for eksempel tilpassinger).
- Hvis dataene skal lagres i Salesforce, skal dataene oppdateres som svar på en hendelse i det eksterne systemet?
- Skal dataene oppdateres planlagt?
- Støtter dataene primære forretningsprosesser?
- Er det analysekrav (rapporteringskrav) som påvirkes av tilgjengeligheten av disse dataene i Salesforce?
Løsning
Følgende tabell inneholder ulike løsninger på dette integrasjonsproblemet.
| Løsning | Tilpass | Dataoverordnet | Kommentarer |
|---|---|---|---|
| Replikering via tredjeparts ETL-verktøy | Best | Eksternt system | Når et eksternt system trenger å sende en stor mengde data til Salesforce, kan du benytte et tredjeparts ETL-verktøy som lar deg kjøre datafangst for endringer mot kildedata. Verktøyet reagerer på endringer i kildedatasettet, transformerer dataene og kaller deretter opp Salesforce Bulk API for å utstede DML-setninger. Dette kan også implementeres med Salesforce REST API-er hvis antall poster er mindre. |
| Replikering via tredjeparts ETL-verktøy | Bra | Salesforce | Dra nytte av et tredjeparts ETL-verktøy som lar deg kjøre datafangst av endringer mot ERP- og Salesforce-datasett. I denne løsningen er Salesforce datakilden, og du kan bruke klokkeslett/status-informasjon på individuelle rader til å spørre dataene og filtrere målsettresultatet. Dette kan implementeres ved å bruke Bulk API 2.0 eller standard REST API-er (hvis antall poster er mindre ). |
| Veiviser for dataimport og Data Loader | Tilpass | Salesforce / eksternt system | Veiviser for dataimport og Data Loader kan brukes til å importere, eksportere og overføre data. Data Loader-kommandoer kan også skrivet for å automatisere import og eksport av data, men kommandolinjegrensesnittet er bare for Windows. Ingen av disse verktøyene er et anbefalt grunnlag for en dataintegreringsstrategi. De bør i stedet supplere datastyrings- og vedlikeholdsstrategien din. Hvis du vil ha mer informasjon om Data Loader, kan du se heri. |
| Ekstern oppkall | Underoptimalt | Eksternt system | Det er mulig for et eksternt system å kalle opp Salesforce ved å bruke en av API-ene og utføre oppdateringer av data etter hvert som de skjer. Dette fører imidlertid til betydelig pågående trafikk mellom de to systemene. Større vekt bør legges på feilhåndtering og låsing. Dette mønsteret har potensial til å forårsake kontinuerlige oppdateringer, noe som har potensial til å påvirke ytelsen for sluttbrukere. |
| Eksternt prosessoppkall | Underoptimalt | Salesforce | Det er mulig for Salesforce å kalle opp et eksternt system og utføre oppdateringer av data etter hvert som de skjer. Dette fører imidlertid til betydelig pågående trafikk mellom de to systemene. Større vekt bør legges på feilhåndtering og låsing. Dette mønsteret har potensial til å forårsake kontinuerlige oppdateringer, noe som har potensial til å påvirke ytelsen for sluttbrukere. |
Skiss
Følgende diagram illustrerer sekvensen av hendelser i dette mønsteret der Salesforce er dataoverordnet.
Følgende diagram illustrerer den etterfølgende synkroniseringen av hendelser i nær sanntid, der Salesforce er dataoverordnet.
Resultater
Du kan integrere data som er eksternt kildet, med Salesforce i følgende scenarier:
- Eksternt system er dataoverordnet – Salesforce er en forbruker av data fra et enkelt kildesystem eller flere systemer. I dette scenariet er det vanlig å ha et datalager eller en datamart som samler dataene før data importeres til Salesforce.
- Salesforce er dataoverordnet – Salesforce er postsystemet for bestemte enheter, og Salesforce-klientprogrammer for datafangst kan informeres om endringer i Salesforce-data.
I et typisk Salesforce-integreringsscenario gjør implementeringsteamet ett av følgende:
- Implementer datafangst av endringer i kildedatasettet.
- Implementer et sett støttende databasestrukturer, kalt kontrolltabeller, i en mellomliggende database på stedet.
ETL-verktøyet brukes deretter til å opprette programmer som
- Les en kontrolltabell for å bestemme siste kjøretid for jobben og trekke ut eventuelle andre nødvendige kontrollverdier.
- Bruk kontrollverdiene ovenfor som filtre, og spør kildedatasettet.
- Bruk forhåndsdefinerte behandlingsregler, inkludert validering, berikelse og så videre.
- Bruk tilgjengelige koblinger/transformasjonsfunksjoner i ETL-verktøyet til å opprette måldatasettet.
- Skriv datasettet til Salesforce-objekter.
- Hvis behandlingen er vellykket, oppdaterer du kontrollverdiene i kontrolltabellen.
- Hvis behandlingen mislykkes, oppdaterer du kontrolltabellen med verdier som aktiverer en ny start og avslutning.
Notat: Vi anbefaler at du oppretter kontrolltabellene og tilknyttede datastrukturer i et miljø som ETL-verktøyet har tilgang til, selv om tilgang til Salesforce ikke er tilgjengelig. Dette gir tilstrekkelige nivåer av fleksibilitet. Salesforce bør behandles som en bane i denne prosessen, og ETL-infrastrukturen er knutepunktet.
Vurder følgende for å få et ETL-verktøy til å få størst mulig nytte av datasynkroniseringsfunksjonalitet:
- Kjed og sekvenser ETL-jobbene for å gi en sammenhengende prosess.
- Bruk primærnøkler fra begge systemene til å samsvare med innkommende data.
- Bruk spesifikke API-metoder til å trekke ut bare oppdaterte data.
- Hvis du importerer underordnede poster i en overordnet-detalj- eller oppslagsrelasjon, grupperer du de importerte dataene med sin overordnede nøkkel ved kilden for å unngå låsing. Hvis du for eksempel importerer kontaktdata, må du passe på å gruppere kontaktdataene etter den overordnede kontonøkkelen slik at maksimalt antall kontakter for en enkelt konto kan lastes inn i ett API-kall. Mislykket gruppering av de importerte dataene fører vanligvis til at den første kontaktposten lastes inn og påfølgende kontaktposter for denne kontoen mislykkes i konteksten av API-kallet.
- Eventuell postimportbehandling, som utløsere, skal bare behandle data selektivt.
- Hvis scenariet involverer store datavolumer, følger du anbefalte fremgangsmåter fra Trailhead-modulen Beste fremgangsmåter for distribusjoner med store datavolumer .
Feilhåndtering og gjenoppretting
En feilhåndterings- og gjenopprettingsstrategi må vurderes som en del av den generelle løsningen. Den beste metoden avhenger av løsningen du velger.
| Feilsted | Feilhåndterings- og gjenopprettingsstrategi |
|---|---|
| Lese fra Salesforce med datafangst |
|
| Lese fra Salesforce ved bruk av et tredjeparts ETL-system |
|
| Skrive til Salesforce |
|
| Eksternt overordnet system | Feil skal håndteres i henhold til anbefalte fremgangsmåter for det overordnede systemet. |
Sikkerhetshensyn
Alle kall til et eksternt system må opprettholde konfidensialiteten, integriteten og tilgjengeligheten til forespørselen. Forskjellige sikkerhetsvurderinger gjelder avhengig av hvilken løsning du velger.
- En Lightning Platform-lisens med minst Bare API-brukertillatelser kreves for å tillate godkjent API-tilgang til Salesforce API.
- Vi anbefaler at standardkryptering brukes til å holde passordtilgang sikker.
- Bruk HTTPS-protokollen når du starter kall til Salesforce API-ene. Du kan også sende proxy-trafikk til Salesforce-API-ene via en sikkerhetsløsning på stedet, om nødvendig.
Sidefelt
Ingen.
Tidlighet
Tidlighet er ikke av stor betydning i dette mønsteret. Det må imidlertid være forsiktig med å utforme grensesnittene slik at alle gruppeprosessene fullføres i et utpekt gruppevindu.
Som med alle batchorienterte operasjoner anbefaler vi sterkt at du tar hensyn til å isolere kildesystemer og målsystemer under batchbehandlingsvinduer. Innlasting av batcher i åpningstider kan føre til en del tvist, noe som fører til at en brukers oppdatering mislykkes, eller mer viktig, at en batchinnlasting (eller delvis batchinnlasting) mislykkes.
For organisasjoner som har globale operasjoner, er det kanskje ikke mulig å kjøre alle gruppeprosesser samtidig fordi systemet kan være i bruk kontinuerlig. Datasegmenteringsteknikker som bruker posttyper og andre filtreringskriterier, kan brukes til å unngå datakonflikter i disse tilfellene.
Statsforvaltning
Du kan implementere delstatsbehandling ved å bruke erstatningsnøkler mellom de to systemene. Hvis du trenger en hvilken som helst type transaksjonsbehandling på tvers av Salesforce-enheter, anbefaler vi at du bruker mønsteret Fjerninnkall med Apex.
Standard optimistisk postlåsing skjer på plattformen, og eventuelle oppdateringer som gjøres med API-et, krever at brukeren som redigerer posten, oppdaterer posten og starter transaksjonen. I Salesforce API refererer optimistisk låsing til en prosess der
- Salesforce vedlikeholder ikke statusen til en post som redigeres av en bestemt bruker.
- Ved avlesing registreres tidspunktet da dataene ble trukket ut.
- Hvis brukeren oppdaterer posten og lagrer den, sjekker Salesforce om en annen bruker har oppdatert posten i mellomtiden.
- Hvis posten har blitt oppdatert, varsler systemet brukeren om at en oppdatering har blitt gjort, og brukeren må hente den nyeste versjonen av posten før brukeren fortsetter med oppdateringene.
Middleware-egenskaper
De mest effektive eksterne teknologiene som brukes til å implementere dette mønsteret, er tradisjonelle ETL-verktøy. Det er viktig at de valgte mellomprogramverktøyene støtter Salesforce Bulk API.
Det er nyttig, men ikke viktig, at middleware-verktøyene støtter getUpdated()-funksjonen. Denne funksjonen er den nærmeste implementeringen av standard datafangst av endringer på Salesforce-plattformen.
Følgende tabell fremhever de ønskede egenskapene for et mellomproduktsystem som deltar i dette mønsteret.
| Eiendom | Obligatorisk | Ønsket | Ikke nødvendig |
|---|---|---|---|
| Hendelsesbehandling | X | ||
| Protokollkonvertering | X | ||
| Oversettelse og transformasjon | X | ||
| Kø og bufring | X | ||
| Synkrone transportprotokoller | X | ||
| Asynkrone transportprotokoller | X | ||
| Medieringsruting | X | ||
| prosesskoreografi og serviceorkestrering | X | ||
| Transaksjonalitet (kryptering, signering, pålitelig levering, transaksjonsbehandling) | X | ||
| Ruting | X | ||
| Trekk ut, transformer og last inn | X | ||
| Lang avstemning | X (nødvendig for datafangst) |
Eksempel
Et verktøyfirma bruker en hoveddatamaskinbasert gruppeprosess som tildeler prospekter til individuelle selgere og team. Denne informasjonen må importeres til Salesforce hver natt.
Kunden har besluttet å implementere datafangst i kildetabellene ved bruk av et kommersielt tilgjengelig ETL-verktøy. Løsningen fungerer som følger:
- En cron-lignende planlegger utfører en gruppejobb som tildeler prospekter til brukere og team.
- Når gruppejobben har kjørt og oppdatert dataene, gjenkjenner ETL-verktøyet disse endringene ved bruk av datafangst. ETL-verktøyet samler endringene fra datalageret.
- ETL-koblingen bruker Salesforce REST API til å laste endringene inn i Salesforce.
Context
Du bruker Salesforce til å spore salgsemner, behandle pågående arbeid, opprette salgsmuligheter og fange opp bestillingsdetaljer som konverterer salgsemner til kunder. Salesforce-systemet oppretter bestillingene internt og sender deretter disse dataene til det eksterne faktureringssystemet for klargjøring og aktivering. Faktureringsbestillinger behandles av et eksternt (fjerndistribuert) system. Dette eksterne systemet må oppdatere bestillingsstatusen i Salesforce når bestillingen eller faktureringsenheten i faktureringssystemstatusen endres.
Problem
Hvordan kobler et eksternt system til og godkjenner Salesforce for å varsle Salesforce om eksterne hendelser, opprette poster og oppdatere eksisterende poster?
Forces
Det er forskjellige krefter å vurdere når du bruker løsninger basert på dette mønsteret:
- Er formålet med det eksterne kallet til Salesforce å varsle Salesforce om en hendelse som skjedde eksternt ved bruk av en hendelsesdrevet arkitektur? Eller er formålet å utføre CRUD-operasjoner på bestemte poster? Hvis du bruker en hendelsesdrevet arkitektur, kobles hendelsesprodusenten (den eksterne prosessen) fra Salesforce-hendelsesforbrukeren.
- Krever samtalen til Salesforce at den eksterne prosessen venter på et svar før prosessen fortsetter? Eksterne samtaler til Salesforce er alltid synkrone forespørselssvar, selv om den eksterne prosessen kan forkaste svaret hvis det ikke er nødvendig for å simulere en asynkron samtale.
- Opererer hver transaksjon mot ett enkelt Salesforce-objekt eller flere relaterte objekter?
- Hva er formatet på meldingen (for eksempel SOAP eller REST eller begge deler over HTTP)?
- Er meldingsstørrelsen relativt liten eller stor?
- Hvis det eksterne systemet er SOAP-kompatibelt, kan det eksterne systemet delta i en kontraktsfør tilnærming der Salesforce dikterer kontrakten? Dette kreves der SOAP API brukes, som det leveres et forhåndsdefinert WSDL for.
- Er transaksjonsbehandling nødvendig?
- Hvor tolerant er du for tilpassing i Salesforce?
Løsning
Denne tabellen inneholder ulike løsninger på dette integrasjonsproblemet.
| Løsning | Tilpass | Kommentarer |
|---|---|---|
| Sammensatt API | Best | Salesforce leverer et sammensatt API som i bunn og grunn er et REST API og støtter sammensatte forespørsler. Dette kan brukes av eksterne systemer til å
Synkron API: Etter at API-kallet er utført, venter det eksterne klientprogrammet til det mottar et svar fra tjenesten. Transaksjon/Virkemåte for forpliktelse: Som standard tillater ikke sammensatt API delvis suksess hvis noen poster er merket med feil. Dette kan endres ved å merke "alt eller ingenting"-flagget som usant, noe som vil tillate delvis suksess. Feilhåndtering: Riktig feilhåndtering bør undersøke svarteksten, ikke bare HTTP-statuskoder. Et sammensatt endepunkt svarer med statuskode 200 HTTP selv om det i svarteksten vises at en av delforespørslene mislyktes og transaksjonen måtte rulles tilbake. |
| REST API | Best | Tilgjengelighet – Salesforce tilbyr et REST API som eksterne systemer kan bruke til å
Synkron API: Etter at API-kallet er utført, venter det eksterne klientprogrammet til det mottar et svar fra tjenesten. REST API respekterer sikkerhet på objektnivå og feltnivå konfigurert i Salesforce basert på den påloggede brukerens profil. REST viser ressurser (enheter/objekter) som URI-er og bruker HTTP-verber til å definere CRUD-operasjoner på disse ressursene. Til forskjell fra SOAP krever REST API ingen forhåndsdefinert kontrakt, bruker XML og JSON til svar og har løs skrivefunksjon. REST API er lite og gir en enkel metode for å samhandle med Salesforce. Fordelene inkluderer enkel integrering og utvikling, og det er et utmerket valg for bruk med mobilapper og nettapper. Transaksjon/Virkemåte for forpliktelse: Som standard behandles hver post som en separat transaksjon og bekreftes separat. Mislykket endring av én post fører ikke til tilbakekalling av andre postendringer. Denne virkemåten kan endres til en "alt eller ingenting"-virkemåte. Bruk de sammensatte REST API-ressursene til å utføre en serie oppdateringer i ett API-kall. Massedata: Alle dataoperasjoner som inkluderer mer enn 2000 poster, er en god kandidat for at Bulk API 2.0 skal kunne klargjøre, utføre og behandle en asynkron arbeidsflyt som bruker Bulk-rammeverket. |
| Bulk API 2.0 | Best for masseoperasjoner | Bulk API 2.0 er Salesforces moderne, strømlinjeformede API for håndtering av dataoperasjoner i stor skala. Den REST-baserte Bulk API 2.0 gir et programmatisk alternativ for å sette inn, oppdatere, spørre eller slette store datasett asynkront i Salesforce-organisasjonen. Den er utformet for effektivitet når du trenger å laste inn store mengder data i Salesforce eller utføre massespørringer på organisasjonens data. I motsetning til Bulk API 1.0 behandler Bulk API 2.0 alltid batcher parallelt og støtter ikke seriemodus. Det betyr at
Hver batch i Bulk API 2.0 behandles som sin egen transaksjon. Det betyr følgende:
Selv om SOAP API også kan brukes til behandling av store antall poster, blir det mindre optimalt når datasett inneholder hundrevis av tusenvis til millioner av poster. Dette skyldes relativt høye overhead- og lavere ytelsesegenskaper.
|
| Pub/Sub API | Best |
Pub/Sub API er den anbefalte måten eksterne publiseringer kan publisere hendelser på Hendelsesbuss. Pub/Sub API er en gRPC-basert API som tillater eksterne systemer å publisere plattformhendelser. Pub/Sub API:
Når en plattformhendelse er definert i Salesforce, blir den tilgjengelig for både interne og eksterne forbrukere. |
| Plattformhendelser | Best |
Plattformhendelser defineres på samme måte som du definerer Salesforce-objekter. Plattformhendelser kan publiseres med forskjellige mekanismer som REST API-er, Bulk API og SOAP API-er.
Publisering av en hendelse via REST API er det samme som å opprette en Salesforce-post. Sluttpunktformat: POST /services/data/vXX.X/sobjects/EventName__e/
Med Bulk API støttes bare opprettelses- og innsettingsoperasjoner. Hendelser i en batch publiseres til Salesforce-hendelsesbussen asynkront etter hvert som gruppejobben behandles. I og med at plattformhendelser er SObjects, støttes standard SOAP API-operasjoner. |
| SOAP API | Tilpass |
Tilgjengelighet – Salesforce har et SOAP API som eksterne systemer kan bruke til å
Synkron API: Etter at API-kallet er utført, venter det eksterne klientprogrammet til det mottar et svar fra tjenesten. Asynkrone kall til Salesforce støttes ikke. Generert WSDL: Salesforce har to WSDL-er for eksterne systemer:
Sikkerhet: Klienten som utfører SOAP API, må ha en gyldig pålogging og skaffe seg en økt for å utføre eventuelle API-kall. API-et tar hensyn til objektnivåsikkerhet og feltnivåsikkerhet konfigurert i Salesforce basert på påloggingsbrukerens profil. Transaksjon/Virkemåte for forpliktelse: Som standard tillater hvert API-kall delvis suksess hvis noen poster er merket med feil. Dette kan endres til en "alt eller ingenting"-virkemåte der alle resultatene rulles tilbake hvis det oppstår feil. Det er ikke mulig å omfatte en transaksjon på tvers av flere API-kall. For å overvinne denne begrensningen er det mulig for et enkelt API-kall å påvirke flere objekter. |
| Apex nettjenester | Underoptimalt |
Apex kan eksponeres som nettjenestemetoder for eksterne programmer. Denne metoden er et alternativ til SOAP API, og brukes vanligvis bare der følgende tilleggskrav må oppfylles.
Fordelen med å bruke en Apex nettjeneste må veies mot den ekstra koden som må vedlikeholdes i Salesforce. Kan ikke brukes på plattformhendelser fordi transaksjonsforhåndsinnsettingslogikk hos forbrukeren ikke gjelder i en Hendelsesdrevet arkitektur. Hvis du vil varsle en Salesforce-organisasjon om at en hendelse har skjedd, bruker du SOAP API, REST API eller Bulk API 2.0. |
| Apex REST-tjenester | Underoptimalt |
En Apex kan vises som REST-ressurser tilordnet til bestemte URI-er med et definert HTTP-verb (for eksempel POST eller GET).
Du kan bruke sammensatte REST API-ressurser til å utføre flere oppdateringer i én enkelt transaksjon. Til forskjell fra SOAP er det ikke nødvendig for klienten å bruke en tjenestedefinisjon/kontrakt (WSDL) og generere kundestubber. Det eksterne systemet krever bare muligheten til å danne en HTTP-forespørsel og behandle de returnerte resultatene (XML eller JSON). Kan ikke brukes på plattformhendelser fordi transaksjonsforhåndsinnsettingslogikk hos forbrukeren ikke gjelder i en Hendelsesdrevet arkitektur. Hvis du vil varsle en Salesforce-organisasjon om at en hendelse har skjedd, bruker du SOAP API, REST API eller Bulk API 2.0. |
Skiss
Følgende diagrammer illustrerer sekvensen av hendelser når du implementerer dette mønsteret ved å bruke enten REST API for varsler fra eksterne hendelser eller SOAP API til å spørre et Salesforce-objekt. Sekvensen av hendelser er den samme når REST API brukes.
Fjernsystemspørring for Salesforce via SOAP API
Fjernsystem varsler Salesforce med hendelser via REST API
Resultater
I en hendelsesdrevet arkitektur kaller det eksterne systemet opp til Salesforce med SOAP API, REST API eller Bulk API 2.0 for å publisere en hendelse til Salesforce-hendelsesbussen. Publisering av en hendelse varsler alle abonnenter. Hendelsesabonnenter kan være i Salesforce Platforms Apex som Flyter eller Lightning. Hendelsesabonnenter kan også være eksterne for Salesforce Platform, som CometD-abonnenter.
Når du arbeider direkte med Salesforce-objekter, kan løsningene som er relatert til dette mønsteret, gjøre følgende:
- Det eksterne systemet kaller opp Salesforce-API-ene for å spørre databasen og utføre operasjoner med ett objekt (opprette, oppdatere, slette og så videre).
- Det eksterne systemet for å kalle opp Salesforce REST API-sammensatte ressurser for å utføre en serie av objektoperasjoner.
- Eksternt system for å kalle opp tilpassede Salesforce-API-er (tjenester) som kan støtte transaksjonsoperasjoner med flere objekter og tilpasset logikk for pre/post-behandling.
Kallmekanismer
Oppkallmekanismen avhenger av løsningen som er valgt for å implementere dette mønsteret.
| Oppkallmekanisme | Beskrivelse |
|---|---|
| SOAP API | Det eksterne systemet bruker Salesforce Enterprise- eller Partner WSDL til å generere klientstubber som i sin tur brukes til å kalle opp standard SOAP API. |
| REST API | Det eksterne systemet må godkjenne før du får tilgang til en Apex REST-tjeneste. Det eksterne systemet kan bruke OAuth 2.0 eller brukernavn og passordgodkjenning. I begge tilfellene må klienten angi godkjenningens HTTP-hode med den riktige verdien (et OAuth-tilgangstoken eller en økt-ID kan innhentes via et påloggingskall til SOAP API). Det eksterne systemet genererer deretter REST-kall (HTTP-forespørsler) med de riktige verbene og behandler de returnerte resultatene (JSON- og XML-dataformater støttes). |
| Apex nettjeneste | Det eksterne systemet bruker den tilpassede Apex WSDL til å generere klientstubber som i sin tur brukes til å kalle opp den tilpassede Apex. |
| Apex REST-tjeneste | I henhold til REST API defineres ressurs-URIen og aktuelle verber ved bruk av @RestResource-, @HttpGet- og @HttpPost-kommentarer. |
| Bulk API 2.0 | Bulk API 2.0 er et REST-basert API, så de samme kallmekanismene som REST API gjelder. |
| REST API for å kalle opp flyt | Bruk REST API til å kalle opp et endepunkt for tilpassede kallbare handlinger for å kalle opp en automatisk startet flyt. |
Feilhåndtering og gjenoppretting
En feilhåndterings- og gjenopprettingsstrategi må vurderes som en del av den generelle løsningen.
- Feilhåndtering – Alle eksterne oppkallmetoder, standard eller tilpassede API-er, krever at det eksterne systemet håndterer eventuelle etterfølgende feil, som tidsavbrudd og behandling av nye forsøk. Mellomprogramvare kan brukes til å gi logikk for feilhåndtering og gjenoppretting.
- Gjenoppretting: Det må opprettes en tilpasset mekanisme for å prøve på nytt hvis krav til tjenestenes kvalitet krever det. I dette tilfellet er det viktig å sikre idempotente designegenskaper. Plattformhendelse gir abonnenter mulighet til å bruke avspillings-IDen til å hente meldinger innen en bestemt tidsperiode etter at disse meldingene har blitt publisert.
Idempotent Design vurderinger
Idempotent-egenskaper garanterer at gjentatte kall er trygge og ikke vil ha noen negativ effekt. Hvis idempotens ikke implementeres, kan gjentatte kall av samme melding få forskjellige resultater, som potensielt fører til problemer med dataintegritet, for eksempel opprettelse av duplikatposter, duplikatbehandling av transaksjoner og så videre.
Det eksterne systemet må håndtere flere (duplikat) samtaler i tilfelle feil eller tidsavbrudd for å unngå duplikatinnsetting og overflødige oppdateringer (spesielt hvis nedstrømsutløsere og arbeidsflytregler utløses). Selv om det er mulig å håndtere noen av disse situasjonene i Salesforce (spesielt i tilfelle tilpassede SOAP- og REST-tjenester), anbefaler vi at det eksterne systemet (eller mellomprogramvaren) håndterer feilhåndtering og idempotent-utforming.
Sikkerhetshensyn
Forskjellige sikkerhetsvurderinger gjelder avhengig av hvilken mønsterløsning som velges. I alle tilfeller bruker plattformen den påloggede brukerens tilgangsrettigheter (for eksempel profilinnstillinger, delingsregler, tillatelsessett og så videre). I tillegg kan profil-IP-restriksjoner brukes til å begrense tilgang til APIen for et bestemt IP-adresseområde.
| Løsning | Sikkerhetsvurderinger |
|---|---|
| SOAP API | alesforce støtter protokollene Secure Sockets Layer v3 (SSL) og Transport Layer Security (TLS). Krypteringer må ha en nøkkellengde på minst 128 bits. Det eksterne systemet må logge seg på med gyldig legitimasjon for å få en økt-ID. Hvis det eksterne systemet allerede har en gyldig økt-ID, kan det kalle opp APIen uten eksplisitt pålogging. Dette brukes i tilbakekallsmønstre som dekkes tidligere i dette dokumentet, der en tidligere utgående Salesforce-melding inneholdt en økt-ID og post-ID for senere bruk. Vi anbefaler at klienter som kaller opp SOAP API, bufrer og gjenbruker økt-IDen for å maksimere ytelsen, i stedet for å skaffe seg en ny økt-ID for hver samtale. |
| REST API | Vi anbefaler at det eksterne systemet etablerer en OAuth Trust for godkjenning. REST-kall kan så utføres på bestemte ressurser ved bruk av HTTP-verb. Det er også mulig å utføre REST-kall med en gyldig økt-ID som kan ha blitt hentet på andre måter (for eksempel hentet ved å kalle opp SOAP API eller oppgitt via en utgående melding). Vi anbefaler at klienter som kaller opp REST API-bufferen, bruker økt-IDen på nytt for å maksimere ytelsen, i stedet for å skaffe seg en ny økt-ID for hver samtale. |
| Apex nettjeneste | Vi anbefaler at det eksterne systemet etablerer en OAuth Trust for godkjenning. |
| Apex REST-tjeneste | Vi anbefaler at det eksterne systemet etablerer en OAuth Trust for godkjenning. |
| Bulk API 2.0 | Vi anbefaler at det eksterne systemet etablerer en OAuth Trust for godkjenning. |
Sidefelt
Ingen.
Tidlighet
SOAP API og Apex web service API er synkrone. Følgende tidsavbrudd gjelder:
- Økttidsavbrudd – Økten tidsavbrytes hvis det ikke er noen aktivitet basert på Salesforce-organisasjonens innstilling for tidsavbrudd av økt.
- Spørringstidsavbrudd – Hver SOQL-spørring har en individuell tidsavbruddsgrense på 120 sekunder.
Datavolumer
Viktige punkter om datavolum er avhengig av hvilken løsning og hvilken kommunikasjonstype du velger.
| Løsning | Kommunikasjonstype | Grenser |
|---|---|---|
| SOAP API eller REST API | Synkron |
|
| Bulk API 2.0 | Asynkron | Bulk API 2.0 er optimalisert for å importere og eksportere store sett med data asynkront. Eventuell dataoperasjon som inkluderer mer enn 2000 poster, er en god kandidat for Bulk API 2.0 for å kunne klargjøre, utføre og behandle en asynkron arbeidsflyt som bruker Bulk-rammeverket. Jobber med færre enn 2000 poster, bør involvere "bulkified" synkrone samtaler i REST (for eksempel Composite) eller SOAP. Bulk API 2.0 er synkron når batchforespørselen og tilknyttede data sendes. Den faktiske behandlingen av dataene skjer asynkront. Hvis du vil ha mer informasjon om grenser for API- og gruppebehandling, kan du se grenser. |
Støtte for endepunktsfunksjonalitet og standarder
Funksjonaliteten og standardstøtten for endepunktet avhenger av løsningen du velger.
| Løsning | Viktige punkter om sluttpunkter |
|---|---|
| SOAP API | Det eksterne systemet må kunne implementere en klient som kan kalle opp Salesforce SOAP API, basert på et meldingsformat som er forhåndsdefinert av Salesforce. Det eksterne systemet (klienten) må delta i en kontraktsfør implementering der kontrakten leveres av Salesforce (for eksempel Enterprise eller Partner WSDL). |
| REST API | Det eksterne systemet må kunne implementere en REST-klient som kaller opp Salesforce – definerte REST-tjenester, og behandler XML- eller JSON-resultatene. |
| Apex nettjeneste | Det eksterne systemet må kunne implementere en klient som kan kalle opp SOAP-meldinger i et forhåndsdefinert format, slik det er definert av Salesforce. Det eksterne systemet må delta i en implementering med kode først, der kontrakten leveres av Salesforce etter at Apex er implementert. Hver Apex nettjeneste har sin egen WSDL. |
| Apex REST-tjeneste | De samme endepunktsvurderingene som REST API gjelder. |
Statsforvaltning
Når du integrerer systemer, er nøkler viktige for pågående statussporing, for eksempel hvis en post opprettes i det eksterne systemet, for å støtte pågående oppdateringer av denne posten. Det finnes to alternativer:
- Salesforce lagrer det eksterne systemets primære eller unike erstatningsnøkkel for den eksterne posten.
- Det eksterne systemet lagrer den unike Salesforce-post-IDen eller en annen unik erstatningsnøkkel. Det er spesifikke vurderinger for håndtering av integrasjonsnøkler i dette synkrone mønsteret.
| Overordnet | system Beskrivelse |
|---|---|
| Salesforce | I dette scenariet lagrer det eksterne systemet enten Salesforce RecordId eller en annen unik erstatningsnøkkel fra posten. |
| Eksternt system | I dette scenariet lagrer Salesforce en referanse til den unike identifikatoren i det eksterne systemet. I og med at prosessen er synkron, kan nøkkelen leveres som en del av den samme transaksjonen ved bruk av felt for ekstern ID. |
Komplekse integrasjonsscenarier
Hver løsning i dette mønsteret har forskjellige vurderinger når det gjelder å håndtere komplekse integrasjonsscenarier som transformasjon og prosessorkestrering.
| Løsning | Viktige punkter |
|---|---|
| SOAP API eller REST API | SOAP API og REST API sørger for enkle transaksjoner på objekter. Komplekse integrasjonsscenarier, som aggregering, orkestrering og transformasjon, kan ikke utføres i Salesforce. Disse scenariene må håndteres av det eksterne systemet eller mellomproduktet, med mellomproduktet som foretrukket metode. |
| Apex nettjeneste eller Apex REST-tjeneste | Tilpassede nettjenester kan tilby funksjonalitet på tvers av objekter, tilpasset logikk og mer kompleks transaksjonsstøtte. Denne løsningen bør brukes med forsiktighet, og du bør alltid vurdere om mellomprogramvare er egnet for transformasjon, orkestrering og feilhåndteringslogikk. |
Governorgrenser
På grunn av multitenant-karakteren til Salesforce-plattformen er det grenser når API-ene brukes.
| Løsning | Grenser |
|---|---|
| SOAP API, REST API og tilpassede Apex APIer |
|
| Bulk API 2.0 | Se Sidefeltet Datavolumer for å få mer informasjon. |
| Plattformhendelser |
|
Pålitelige meldinger
Pålitelige meldingsforsøk for å løse problemet med å garantere levering av en melding til et eksternt system der de individuelle komponentene i seg selv kan være upålitelige. Salesforce SOAP API og REST API er synkrone og gir ikke eksplisitt støtte for noen pålitelige meldingsprotokoller, per se (for eksempel WS-ReliableMessaging).
Vi anbefaler at det eksterne systemet implementerer et pålitelig meldingssystem for å sikre at feil- og tidsavbruddsscenarier håndteres riktig. Publisering av plattformhendelser fra eksterne systemer er avhengig av Salesforce-API-er, så de samme punktene gjelder for SOAP API og REST API.
Middleware-egenskaper
Denne tabellen fremhever de ønskede egenskapene for et mellomproduktsystem som deltar i dette mønsteret:
| Eiendom | Obligatorisk | Ønsket | Ikke nødvendig |
|---|---|---|---|
| Hendelsesbehandling | X | ||
| Protokollkonvertering | X | ||
| Oversettelse og transformasjon | X | ||
| Kø og bufring | X | ||
| Synkrone transportprotokoller | X | ||
| Asynkrone transportprotokoller | X | ||
| Medieringsruting | X | ||
| prosesskoreografi og serviceorkestrering | X | ||
| Transaksjonalitet (kryptering, signering, pålitelig levering, transaksjonsbehandling) | X | ||
| Ruting | X | ||
| Trekk ut, transformer og last inn | X (for batcher) |
Eksempel
Et firma for utskriftsutstyr og -tjenester bruker Salesforce som frontlinje til å opprette og behandle skriverutstyr og -bestillinger. Salesforce-aktivumposter som representerer skrivere, oppdateres regelmessig med utskriftsbruksstatistikk (blekkstatus, papirnivå) fra det lokale skriverbehandlingssystemet (PMS), som regelmessig overvåker skrivere på klientnettsteder. Når du når en angitt terskelverdi (for eksempel lav blekkstatus eller lav/tom papirnivå på mindre enn 30 %), varsles flere apper/prosesser (variabel) som er interessert i hendelsen, sendes e-post- eller Chatter, og en Bestilling-post opprettes. PMS lagrer Salesforce-IDen (Salesforce er den overordnede aktivumposten).
Følgende begrensninger gjelder:
- PMS kan delta i en kontraktsfør integrasjon der Salesforce leverer kontrakten og PMS fungerer som en klient (forbruker) av Salesforce-tjenesten (definert via Enterprise- eller Partner WSDL).
- Det bør ikke være noen tilpasset utvikling i Salesforce.
Dette eksemplet implementeres best ved å bruke Salesforce SOAP API eller REST API til å publisere hendelser og deklarativ automatisering (Flyt) i Salesforce. Den primære årsaken til å bruke plattformhendelser er det variable og ikke-endelige antall abonnenter. Men for enkle oppdateringer til en endelig liste med poster som bestillinger, bruker du SOAP eller REST API til å oppdatere postene.
I Salesforce:
- Definer en plattformhendelse i Salesforce til å inneholde varslingsdataene som kommer fra PMS.
- Opprett en flyt som utløses av varselet om skriverhendelsen. Prosessen oppdaterer skriveraktivumet og oppretter en bestilling (ved å bruke en automatisk startet flyt).
- Last ned Enterprise- eller Partner WSDL-et og gi det til det eksterne systemet.
I det eksterne systemet:
- Opprett en klientstub fra Enterprise- eller Partner WSDL.
- Godkend dig til Salesforce (via OAuth-webserver eller bærertokenforløb) ved brug af integrationsbrugerens legitimationsoplysninger.
- Ved skriverstatushendelse kaller PMS opp API-et for å opprette plattformhendelsen for skriverstatus (med statistikk over skriverbruk). Salesforce-hendelsesbussen varsler flytabonnenten og alle andre abonnenter.
Når du bruker plattformhendelser, lar hendelsesbussen deg spille av hendelser på nytt i 72 timer for plattformhendelser med stor trafikk. Publisering av disse hendelsene med en mellomprogramvareløsning kan bidra til å innlemme feilhåndtering på publiseringssiden. Du kan imidlertid implementere feilhåndtering på abonnentsiden hvis du trenger høyere pålitelighet.
Dette eksemplet viser følgende:
- Implementering av en Salesforce synkron API-klient (forbruker).
- Et tilbakekall til Salesforce for å publisere en plattformhendelse (justert med mønstre for tidligere dekkede forespørsels-/svarplattformhendelser).
Context
Du bruker Salesforce til å behandle kundesaker. En kundeservicerepresentant er på telefonen med en kunde som arbeider med en sak. Kunden foretar en betaling, og kundeservicerepresentanten må se en sanntidsoppdatering i Salesforce-appen fra betalingsbehandlingsappen, som angir at kunden har betalt bestillingens utestående beløp.
Problem
Hvordan kan brukeren varsles i Salesforce-brukergrensesnittet uten å måtte oppdatere skjermen og potensielt miste arbeid når en hendelse skjer i Salesforce?
Forces
Det er forskjellige krefter å vurdere når du bruker løsninger basert på dette mønsteret:
- Trenger dataene som handles på, å lagres i Salesforce?
- Kan et tilpasset brukergrensesnittlag bygges for å vise disse dataene?
- Vil brukeren ha tilgang til å kalle opp det tilpassede brukergrensesnittet?
Løsning
Den anbefalte løsningen på dette integrasjonsproblemet er å bruke plattformhendelser som sikrer nær sanntidshendelser i Salesforce. Plattformhendelser gir en strukturert, fleksibel belastning uavhengig av hvilket som helst Salesforce-objekt. Den sikrer også holdbare emner med et gjentagelsesvindu på 72 timer. Dette sikrer at hendelser er tilgjengelig selv om en offline forbruker blir tilgjengelig senere. Denne løsningen består av følgende komponenter:
- Apex eller flyter med en logikk for å publisere en plattformhendelse for et emne
- Et emne som du kan bruke til å publisere en hendelse fra Apex eller flyt
- En JavaScript-basert implementering av Bayeux protokollen (for tiden CometD) som kan brukes av brukergrensesnittet
- En Lightning
- Et JavaScript-bibliotek inkludert som en statisk ressurs
Skiss
Følgende diagram illustrerer hvordan Streaming API kan implementeres for å strømme varsler til Salesforce-brukergrensesnittet. Disse varslene utløses av postendringer i Salesforce.
Grensesnittoppdatering i Salesforce utløst av en dataendring
Resultater
Fordeler
Bruk av løsningen relatert til dette mønsteret har følgende fordeler:
- Eliminerer behovet for å skrive tilpassede avspørringsmekanismer
- Eliminerer behovet for en brukerinitiert tilbakemeldingsløyfe
Krav som ikke støttes
Løsningen har følgende begrensninger:
- Levering av varsler er ikke garantert.
- Rekkefølge av varsler garanteres ikke.
- Varsler genereres ikke fra postendringer gjort av Bulk API.
Sikkerhetshensyn
Standard Salesforce-sikkerhet på organisasjonsnivå overholdes. Det anbefales at du bruker HTTPS-protokollen til å koble til Streaming API. Se Sikkerhetsvurderinger
Sidefelt
Den optimale løsningen innebærer å opprette et tilpasset brukergrensesnitt i Salesforce. Det er viktig at du tar hensyn til en egnet brukergrensesnittbeholder som kan brukes til gjengivelse av det tilpassede brukergrensesnittet. Støttede nettlesere er oppført i Streaming API Developer Guide
Eksempel
Et telekommunikasjonsselskap bruker Salesforce til å behandle kundesaker. Kundeserviceledere ønsker å bli varslet når en sak er vellykket avsluttet av en av kundeservicerepresentantene.
Ved implementering av løsningen som er foreskrevet av dette mønsteret, skal kunden
- Opprett et Apex som sender en plattformhendelse når en sak lagres med statusen Avsluttet og Løsning vellykket.
- Opprett et tilpasset brukergrensesnitt som er tilgjengelig for kundeserviceledere. Dette brukergrensesnittet abonnerer på hendelsesbussen for å forbruke plattformhendelser.
- Implementer logikk i det tilpassede brukergrensesnittet som viser varsler generert av den lederens kundeservicerepresentanter.
Context
Du bruker Salesforce til å spore salgsemner, behandle pågående arbeid, opprette salgsmuligheter og fange opp bestillingsdetaljer som konverterer salgsemner til kunder. Salesforce er imidlertid ikke systemet som inneholder eller behandler bestillinger. Bestillinger behandles av et eksternt (fjerndistribuert) system. Men selgere ønsker å vise og oppdatere sanntids bestillingsinformasjon i Salesforce uten å måtte lære eller bruke det eksterne systemet.
Problem
Hvordan kan du i Salesforce vise, søke etter og endre data som er lagret utenfor Salesforce, uten å flytte dataene fra det eksterne systemet til Salesforce?
Forces
Det er forskjellige krefter å vurdere når du bruker løsninger basert på dette mønsteret:
- Vil du bygge en deklarativ/poeng-og-klikk-utgående integrasjon eller grensesnittmatchup i Salesforce?
- Har du en stor mengde data som du ikke vil kopiere til Salesforce-organisasjonen?
- Trenger du tilgang til små mengder eksterne systemdata samtidig?
- Trenger du sanntidstilgang til de nyeste dataene?
- Lagrer du dataene i skyen eller i et back-office-system, men vil vise eller behandle disse dataene i Salesforce-organisasjonen?
- Har du problemer med dataoppbevaring når det gjelder lagring av bestemte typer data i Salesforce?
Løsning
Følgende tabell inneholder ulike løsninger på dette integrasjonsproblemet.
| Løsning | Tilpass | Kommentarer |
|---|---|---|
| Salesforce Connect | Best | Bruk Salesforce Connect til å få tilgang til data fra eksterne kilder, sammen med Salesforce-data. Trekk ut data fra systemer som SAP, Microsoft, Oracle og andre skybaserte systemer som Snowflake i sanntid uten å lage en kopi av dataene i Salesforce. Salesforce Connect tilordner datatabeller i eksterne systemer til eksterne objekter i organisasjonen. Eksterne objekter ligner tilpassede objekter bortsett fra at de tilordnes til data som er plassert utenfor Salesforce-organisasjonen. Salesforce Connect bruker en direktetilkobling til eksterne data for alltid å holde eksterne objekter oppdatert. Tilgang til et eksternt objekt henter dataene fra det eksterne systemet i sanntid. Med Salesforce Connect kan du:
For å få tilgang til data som er lagret i et eksternt system med Salesforce Connect, kan du bruke en av følgende adaptere:
|
| Forespørsel og svar | Underoptimalt |
Bruk Salesforce-nettjeneste-API-er til å sende adhoc-forespørsler om data for å få tilgang til og oppdatere eksterne systemdata. Denne løsningen inkluderer følgende tilnærminger:
Bruk Salesforce SOAP API. En tilpasset side eller knapp starter et Apex REST/SOAP-oppkall på en synkron måte. I Salesforce kan du bruke et WSDL og generere en resulterende Apex. Denne klassen gir den nødvendige logikken for å kalle opp den eksterne tjenesten. En brukerinitiert handling på en side kaller deretter opp en Apex som utfører denne Apex for å utføre den eksterne samtalen. Sidene krever tilpassing av Salesforce-appen. Bruk Salesforce REST API. En tilpasset side eller knapp starter et Apex HTTP-oppkall (REST-tjeneste) på en synkron måte. I Salesforce kan du kalle opp HTTP-tjenester med standard GET-, POST-, PUT- og DELETE-metoder. Hvis du vil ha mer informasjon om denne løsningen, kan du se Fjernprosessoppkall – Be om og svare. |
Skiss
Følgende diagram illustrerer hvordan du kan bruke Salesforce Connect til å trekke ut data fra et eksternt system ved bruk av en Odata.
I dette scenariet:
- Nettleseren utfører et AJAX-kall som i sin tur utfører en handling på den tilhørende adapteren for det eksterne objektet.
- Adapteren oversetter handlingen til en Odata og sender en HTTP GET-forespørsel til det eksterne systemet via Integrasjon- og Tjenester-lagene.
- Det eksterne systemet returnerer et JSON-svar til Salesforce via Integrasjon- og Tjenester-lagene.
- Svaret oversettes fra OData til et eksternt objekt og presenteres tilbake til nettleseren.
Resultater
Bruk av løsningene som er relatert til dette mønsteret, tillater brukergrensesnittinitierte kall der resultatet av transaksjonen kan vises til sluttbrukeren.
Kallmekanismer
Oppkallmekanismen avhenger av løsningen som er valgt for å implementere dette mønsteret.
| Oppkallingsmekanisme | Beskrivelse |
|---|---|
| Eksterne objekter | Salesforce Connect tilordner eksterne Salesforce-objekter til datatabeller i eksterne systemer. I stedet for å kopiere dataene til organisasjonen får Salesforce Connect tilgang til dataene på forespørsel og i sanntid. Selv om dataene lagres utenfor organisasjonen, gir Salesforce Connect sømløs integrasjon med Lightning Platform. Eksterne objekter er tilgjengelig for Salesforce-verktøy, som globalt søk, oppslagsrelasjoner, postfeeder og Salesforce-mobilappen. Eksterne objekter er også tilgjengelig for Apex, SOSL, SOQL-spørringer, Salesforce API-er og distribusjon via Metadata API, endringssett og pakker. |
| Lighting-komponenter | Brukes når den eksterne prosessen utløses som en del av en slutt-til-slutt-prosess som involverer brukergrensesnittet, og resultatet må vises eller oppdateres i en Salesforce-post. For eksempel en prosess som sender kredittkortbetalinger til en ekstern betalingsgateway og umiddelbart returnerer betalingsresultatene som vises til brukeren. Integrasjon utløst fra brukergrensesnitthendelser krever vanligvis opprettelse av tilpassede Lightning. |
Feilhåndtering
Det er viktig å inkludere feilhåndtering som en del av den generelle løsningen. Når det oppstår en feil (unntak eller feilkoder returneres til anroperen), administrerer anroperen feilhåndteringen. Salesforce Connect Validator er et gratis verktøy for å kjøre noen vanlige spørringer og varseltyper og feilårsaker.
Fordeler
Noen av fordelene med å bruke en Salesforce Connect er:
- Denne løsningen bruker ikke lagringsplass i Salesforce.
- Brukere trenger ikke å bekymre seg om regelmessig synkronisering av data mellom det eksterne systemet og Salesforce.
- En deklarativ oppsett som kan oppnås raskt med OData, eller en adapter for flere organisasjoner, eller ved å bruke minimal kode med en tilpasset Apex adapter.
- Brukere kan få tilgang til eksterne data med mye av samme funksjonalitet som tilpassede objekter i form av eksterne objekter.
- Mulighet til å utføre et samlet søk i det tilkoblede eksterne systemet ved bruk av globalt søk.
- Mulighet til å kjøre rapporter som har tilgang til eksterne data fra skyen og kilder på stedet. Se viktige punkter om rapportering nedenfor.
Viktige punkter om Salesforce Connect
Salesforce Connect har følgende vurderinger:
- Eksterne objekter fungerer som tilpassede objekter, men noen funksjoner er ikke tilgjengelig for eksterne objekter. Hvis du vil ha mer informasjon, kan du se Viktige punkter om Salesforce-kompatibilitet for Salesforce Connect.
- Eksterne objekter kan påvirke rapportytelsen. Hvis du vil ha mer informasjon, kan du se Rapportvurderinger for Salesforce Connect.
- Se Vurderinger for Salesforce Connect – Alle adaptere for å få mer informasjon om bruk av Salesforce Connect-adaptere.
- Hvis du vurderer å bruke en adapter for flere organisasjoner, kan du se Viktige punkter om Salesforce Connect – adapter for flere organisasjoner.
- Hvis du vurderer å bruke en OData-adapter, kan du se Vurderinger for Salesforce Connect – OData 2.0- og 4.0-adaptere.
- Hvis du vurderer å bruke en tilpasset Apex-adapter, kan du se Viktige punkter om Salesforce Connect – tilpasset adapter.
Sikkerhetshensyn
Løsninger for dette mønsteret må overholde standard Salesforce-sikkerhet på organisasjonsnivå. Det anbefales at du bruker HTTPS-protokollen til å koble til et eksternt system. Se Sikkerhetsvurderinger for å få mer informasjon
Hvis du bruker en Odata, må du forsikre deg om at du forstår de spesielle virkemåtene, begrensningene og anbefalingene for CSRF (CSRF) på Odata eksterne datakilder. Hvis du vil ha mer informasjon, kan du se CSRF-vurderinger for Salesforce Connect – OData 2.0- og 4.0-adaptere.
Sidefelt
Ingen.
Tidlighet
Tidlighet er av betydelig betydning i dette mønsteret. Vær oppmerksom på følgende punkter:
- Forespørselen kalles vanligvis opp fra brukergrensesnittet, så prosessen må ikke la brukeren vente.
- Avhengig av tilgjengeligheten av og tilkoblingen til det eksterne systemet kan det ta lang tid å hente eksterne data. Salesforce har en konfigurerbar maksimal tidsavbruddsverdi på 120 sekunder for å vente på svar fra det eksterne systemet.
- Fullføring av den eksterne prosessen skal utføres i rett tid og fullføres innenfor Salesforce-tidsavbruddsgrensen og innenfor brukerforventningene.
Datavolumer
Dette mønsteret brukes primært til små volumer, sanntidsaktiviteter på grunn av de små tidsavbruddsverdiene og den maksimale størrelsen på forespørselen eller svaret for Apex. Ikke bruk dette mønsteret i gruppebehandlingsaktiviteter der datalastingen finnes i meldingen.
Støtte for endepunktsfunksjonalitet og standarder
Støtten for funksjonalitet og standarder for endepunktet avhenger av løsningen du velger.
| Løsning | Viktige punkter om sluttpunkter |
|---|---|
| Salesforce Connect | OData API-er: Bruk Open Data-protokollen til å få tilgang til data som er lagret utenfor Salesforce. De eksterne dataene må vises via Odata. Andre API-er – Bruk Apex Connector Framework til å utvikle din egen tilpassede adapter når de andre tilgjengelige adapterne ikke er egnet for dine behov. En tilpasset adapter kan hente data fra hvilken som helst kilde. Enkelte data kan for eksempel hentes fra Internett via oppkall, mens andre data kan manipuleres eller til og med genereres programmatisk. Koble til Salesforce: Bruker Lightning Platform REST API til å få tilgang til data som er lagret i andre Salesforce-organisasjoner. Koble til via Middleware Koble til via Middleware – Salesforce Connect har samarbeidet tett med Salesforce for å sikre at deres mellomprogramgatewayer viser Odata fra tjenesten sin slik at Salesforce kan koble til dem uten å skrive ekstra kode. |
| Forespørsel og svar | Apex SOAP-oppkall - Sluttpunktet må kunne motta et nettjenesteanrop via HTTP. Apex HTTP-oppkall - Sluttpunktet må kunne motta HTTP-kall. Du kan bruke Apex HTTP-oppkall til å kalle opp RESTful-tjenester med standardmetodene GET, POST, PUT og DELETE |
Statsforvaltning
Når du integrerer systemer, er nøkler viktige for pågående statussporing. Hvis en post for eksempel opprettes i det eksterne systemet, trenger posten vanligvis en slags identifiseringsnøkkel for å støtte pågående oppdateringer. Det finnes to alternativer for lagring av nøkler.
- Salesforce lagrer den primære eller unike erstatningsnøkkelen for den eksterne posten.
- Det eksterne systemet lagrer den unike Salesforce-post-IDen eller en annen unik erstatningsnøkkel. Det er spesifikke vurderinger for håndtering av integrasjonsnøkler i dette synkrone mønsteret.
| Master System (Overordnet system) | Beskrivelse |
|---|---|
| Salesforce | Det eksterne systemet lagrer enten Salesforce-post-IDen eller en annen unik erstatningsnøkkel fra posten. |
| Eksternt system | Kallet til den eksterne prosessen returnerer den unike nøkkelen fra programmet, og Salesforce lagrer denne nøkkelverdien i et unikt postfelt. |
Komplekse integrasjoner
I enkelte tilfeller kan løsningen som foreskrives av dette mønsteret, kreve implementering av et komplekst integrasjonsscenarium. Disse scenariene løses ofte med mellomprogramvare.
- Aggregering av samtaler og deres resultater på tvers av samtaler til flere systemer
- Transformasjon av både innkommende og utgående meldinger
- Opprettholde transaksjonsintegritet på tvers av samtaler til flere systemer
- Andre prosessorkestreringsaktiviteter mellom Salesforce og det eksterne systemet
Regulerende grenser
Forskjellige grenser gjelder for forskjellige adaptere. Du finner flere detaljer i Generelle grenser for Salesforce Connect.
Middleware-egenskaper
Følgende tabell fremhever de ønskede egenskapene for et mellomproduktsystem som deltar i dette mønsteret.
| Eiendom | Obligatorisk | Ønsket | Ikke nødvendig |
|---|---|---|---|
| Hendelsesbehandling | X | ||
| Protokollkonvertering | X | ||
| Oversettelse og transformasjon | X | ||
| Kø og bufring | X | ||
| Synkrone transportprotokoller | X | ||
| Asynkrone transportprotokoller | X | ||
| Medieringsruting | X | ||
| prosesskoreografi og serviceorkestrering | X | ||
| Transaksjonalitet (kryptering, signering, pålitelig levering, transaksjonsbehandling) | X | ||
| Ruting | X | ||
| Trekk ut, transformer og last inn | X | ||
| Lang avspørring | X |
Eksternt objekt-relasjoner
Eksterne objekter støtter standard oppslagsrelasjoner, som bruker den 18-tegns Salesforce-post-IDen til å knytte til relaterte poster. Data som er lagret utenfor Salesforce-organisasjonen, inneholder imidlertid ofte ikke disse post-ID-ene. Derfor er to spesielle typer oppslagsrelasjoner tilgjengelig for eksterne objekter: eksterne oppslag og indirekte oppslag.
Denne tabellen oppsummerer relasjonstypene som er tilgjengelig for eksterne objekter.
| Relasjon | Tillatte underordnede objekter | Tillatte overordnede objekter | Overordnet felt for samsvarende poster |
|---|---|---|---|
| Oppslag | Standard, Tilpasset, Ekstern | Standard, Tilpasset | Den 18-tegns Salesforce-post-ID-en |
| Eksternt oppslag | Standard, Tilpasset, Ekstern | Ekstern | Standardfeltet Ekstern ID |
| Indirekte oppslag | Ekstern | Standard, Tilpasset | Velge et tilpasset felt med attributtene Ekstern ID og Unik |
Viktige punkter om høyt datavolum for Salesforce Connect – OData 2.0- og 4.0-adaptere
Hvis organisasjonen når grenser for tilgang til eksterne objekter, kan du vurdere å velge alternativet Høy datatrafikk i de tilknyttede eksterne datakildene. Det omgår de fleste grenser, men noen spesielle virkemåter og begrensninger gjelder. Hvis du vil ha mer informasjon, kan du se Viktige punkter om høy datatrafikk for Salesforce Connect
Kundedrevet og serverdrevet paginering for Salesforce Connect – OData 2.0- og 4.0-adaptere
Det er vanlig at Salesforce Connect med eksterne data har et stort resultatsett som er delt inn i mindre batcher eller sider. Du bestemmer om virkemåten til pagineringen skal kontrolleres av det eksterne systemet (serverdrevet) eller av OData 2.0- eller 4.0-adapteren for Salesforce Connect (klientdrevet). Feltet Serverdrevet paginering i den eksterne datakilden angir om det skal brukes klientdrevet eller serverdrevet paginering. Hvis du aktiverer serverdrevet paginering på en ekstern datakilde, ignorerer Salesforce de forespurte sidestørrelsene, inkludert standard batchstørrelse queryMore() på 500 rader. Sidene som returneres av det eksterne systemet, bestemmer gruppene, men hver side kan ikke overskride 2000 rader. Grensene for Odata for Salesforce Connect gjelder imidlertid fremdeles.
Eksempel
Et manufacturing-firma bruker Salesforce til å behandle kundesaker. Kundeservicerepresentantene ønsker å få tilgang til sanntidsbestillingsinformasjonen fra ERP-systemet i serverbygningen for å få en 360-visning av kunden uten å måtte lære og kjøre rapporter manuelt i ERP.
Når du implementerer løsningen som er foreskrevet av dette mønsteret, bør du
- Konfigurer den eksterne datakilden med et Odata. Det eksterne programmet kan inkludere innebygd støtte for OData. For andre applikasjoner har store integrasjonsleverandører som Dell Boomi, Informatica, Jitterbit, MuleSoft og Progress Software samarbeidet med Salesforce på Salesforce Connect for å bygge adaptere.
- Point Salesforce Connect at Odata, enten direkte eller via en mellomprogramvareløsning.
- Synkroniser de eksterne databasetabellene med eksterne objekter i Salesforce. Når en bruker åpner en side med data fra disse eksterne objektene, sender Salesforce Connect oppkall i sanntid til serverdelprogrammene dine.
Utviklerdokumentasjon
Trailhead
For å være effektive medlemmer av bedriftsporteføljen må alle programmer opprettes og integreres med relevante sikkerhetsmekanismer. Moderne IT-strategier bruker en kombinasjon av lokale og skybaserte tjenester.
Integrering av sky-til-sky-tjenester fokuserer vanligvis på nettjenester og tilknyttet godkjenning, men tilkobling av stedsbaserte tjenester og skytjenester innebærer ofte økt kompleksitet. Denne delen beskriver sikkerhetsverktøy, teknikker og Salesforce-spesifikke vurderinger.
Omvendt proxyserver
En omvendt proxyserver er en server som sitter foran nettservere og videresender klientforespørsler (for eksempel nettleser) til disse nettserverne. Omvendte proxyer implementeres vanligvis for å bidra til å øke sikkerhet, ytelse og pålitelighet.
Det er en type proxyserver som henter ressurser på vegne av en klient fra én eller flere servere. Disse ressursene returneres deretter til klienten som om de kom fra selve proxy-serveren. Til forskjell fra en videresendingsproxy, som er en mellomledd for sine tilknyttede klienter for å kontakte en hvilken som helst server, er en omvendt proxy en mellomledd for sine tilknyttede servere for å bli kontaktet av en hvilken som helst klient.
I Salesforce-implementasjoner leveres en slik tjeneste vanligvis via et eksternt gatewayprodukt. Alternativer med åpen kildekode som Apache HTTP, lighttpd og nginix kan for eksempel brukes. Markedsprodukter inkluderer IBM WebSeal og Computer Associates SiteMinder. Disse produktene kan enkelt konfigureres til å proxy og behandle alle utgående Salesforce-forespørsler på vegne av den interne forespørselen.
Kryptering
Enkelte virksomheter krever at valgte transaksjoner eller datafelt krypteres mellom en kombinasjon av nettstedsbaserte og skybaserte programmer. Hvis organisasjonen må overholde tilleggskrav til samsvar, kan du implementere alternativer, inkludert følgende:
-
Gatewaytjenester for kommersiell kryptering på stedet, inkludert Salesforces egne, CipherCloud, IBM DataPower og Computer Associates. For hver løsning kalles krypteringsmotoren eller gatewayen opp ved transaksjonsgrensen ved å sende og motta en kryptert last eller ved kryptering eller dekryptering av bestemte datafelt før HTTP(S)-forespørselen utføres.
-
Skybaserte alternativer, som Salesforce Shield Plattformkryptering. Shield Platform Encryption gir dataene dine et helt nytt sikkerhetslag samtidig som de beholder viktig plattformfunksjonalitet. Dataene du velger, krypteres under lagring ved bruk av et avansert nøkkelutledningssystem. Du kan beskytte dataene dine mer sikkert enn noen gang før. Du finner mer informasjon i Salesforce Online-hjelpen.
Spesialisert WS-* protokollstøtte
For å løse kravene til sikkerhetsprotokoller (som WS-*), anbefaler vi disse alternativene.
-
Sikkerhet/XML-gateway: Injiser WS-Security-legitimasjon (IBM WebSeal eller Datapower, Layer7, TIBCO og så videre) i selve transaksjonsstrømmen. Denne løsningen krever ingen endringer i nettjenester på programnivå eller oppkall av nettjenester fra Salesforce. Du kan også gjenbruke denne løsningen på tvers av Salesforce-installeringen. Det krever imidlertid tilleggsutforming, konfigurasjon, testing og vedlikehold for å behandle riktig WS-Security-innsetting i den eksisterende sikkerhetsgatewaytilnærmingen.
-
Kryptering på transportnivå: Krypter kommunikasjonskanalen med toveis SSL- og IP-restriksjoner. Selv om denne tilnærmingen ikke implementerer WS-*-protokollen direkte alene, sikrer den kommunikasjonskanalen mellom programmene på stedet og Salesforce uten å overføre brukernavn og passord. Det kreves heller ikke endringer i Salesforce-genererte klasser. Det kan imidlertid være nødvendig med enkelte endringer av nettjenester på stedet (i selve programmet eller på mellomprogramvaren/ESB-laget).
-
Tilpasset Salesforce-utvikling: Legg til WS-Security-hoder i den utgående SOAP-forespørselen via WSDL2Apex-verktøyet. Dette genererer en Java-lignende Apex fra WSDL-filen som brukes til å kalle opp den interne tjenesten. Denne tilnærmingen krever ingen endringer i serverdelnettjenester eller andre komponenter i DMZ, men den krever:
- en økt bygg- og testinnsats
- en relativt kompleks og manuell prosess for å manuelt kode WS-Security-attributtene (inkludert XML-serieralisering i Apex)
- en høyere langsiktig vedlikeholdsinnsats
Notat: Det siste alternativet anbefales ikke på grunn av kompleksiteten og risikoen for at slike integrasjoner må gjennomgås regelmessig basert på regelmessige oppdateringer av Salesforce.
Andre sikkerhetshensyn
-
Navngivne legitimationsoplysninger: En navngitt legitimasjon som er ment å sikre og forenkle godkjente API-oppkall til eksterne systemer, angir URL-adressen til et oppkallssluttpunkt og dens nødvendige godkjenningsparametere i én definisjon. For å effektivisere Apex og forenkle oppsettet av godkjente oppkall angir du en navngitt legitimasjon som oppkallssluttpunkt. Se heri for flere detaljer.
-
OAUTH 2.0: OAuth 2.0 er et bransjestandard autorisasjonsrammeverk som lar en bruker gi begrenset tilgang til sine beskyttede ressurser til et tredjepartsprogram uten å dele legitimasjonen sin (som passord). I stedet for en direkte passordutveksling godkjenner brukeren en tilgangstokenforespørsel, som programmet deretter bruker til å få tilgang til brukerens data fra en ressursserver. Denne prosessen skiller klientprogrammet fra brukerens identitet og passord, og forbedrer sikkerheten ved å oppgi en midlertidig, omfangspesifikk "nøkkel" for tilgang til ressurser. Se heri for mer informasjon.
-
Privat tilkobling: Når du integrerer Salesforce-organisasjonen med programmer som driftes på tredjeparts skytjenester, er det viktig å kunne sende og motta HTTP-trafikk sikkert. Med Privat tilkobling kan du øke sikkerheten i Amazon Web Services (AWS)-integrasjonene ved å konfigurere en fullt administrert nettverkstilkobling mellom Salesforce-organisasjonen og AWS Virtual Private Cloud (VPC). Rut deretter trafikken på tvers av skyer gjennom tilkoblingen i stedet for over det offentlige Internett for å redusere eksponeringen for utenforstående sikkerhetstrusler. Privat tilkobling er tilgjengelig i partnerskap med AWS via en funksjon kalt AWS PrivateLink. Privat tilkobling er toveis: Du kan starte både innkommende og utgående trafikk. Med innkommende tilkoblinger kan du sende trafikk til Salesforce med standard-API-ene. Og med utgående tilkoblinger kan du sende trafikk ut av Salesforce via funksjoner som Apex, Eksterne tjenester og Eksterne objekter. For mer informasjon om VPC vennligst heri.
Med Salesforce Event Bus med plattformhendelser, CDC (Change Datafangst) og Pub/Sub API kan virksomheter opprette hendelsesdrevne stilarkitekturer (EDA).
En EDA kobler forbrukere av hendelsesmeldinger (abonnenter) fra produsenter av hendelsesmeldinger (publiserere) for å gi større skala og fleksibilitet. Spesifikke mønstre dekkes i dette dokumentet som en del av den eksisterende mønsterstrukturen som sammenligner og kontrasterer relaterte alternativer eller alternativer. Men å få en helhetlig forståelse av den hendelsesdrevne arkitekturen og hvordan mønstre samhandler, kan hjelpe deg å velge riktig mønster for behovene dine.
Khalid Mohammed er en fremhevet arkitektleder innenfor Salesforces profesjonelle tjenester. Siden han sluttet seg til Salesforce i 2015 har han benyttet seg av sin omfattende ekspertise innen Enterprise-programmer og -arkitektur, gjennom mange kundetransformasjoner før han ble ansatt i Salesforce. Khalid leder Delivery Architecture Board og er også anerkjent som leder for sertifisert teknisk arkitekt.
Gulal Kumar er Software Engineering Architect hos Salesforce med fokus på data og integrasjonsarkitektur. Med over 20 års erfaring innen integrasjon og API-er, moderniseringsprogrammer, sikkerhet og AIML-initiativer, har han en rik ekspertise. Gulal har vært forpliktet til å fremme forretningstransformasjonsinitiativer, forbedre sikkerhet og motstandskraft, fremme arkitektonisk dyktighet og lede AIML-initiativer på tvers av ulike domener.
Sushant er teknisk arkitekt hos Salesforce og spesialiserer seg på løsningsarkitektur og levering av Salesforce-plattformer fra ende til ende. Med dyp ekspertise innen plattformstyring, programutvikling, integrering og DevOps har han ledet en rekke kundetransformasjonsprogrammer på tvers av bransjer. Sushant er forpliktet til å oppnå enestående levering og skalerbare arkitektoniske utfall.