Esimerkki Bulkatun tietueen käsittelystä CPU-rajoitusten välttämiseksi
Opettele refaktoroimaan kulkuja käyttämään bulkkauskuvioita, jotka estävät Apex_CPU_TIME_LIMIT_EXCEEDED -virheet. Tämä esimerkki osoittaa virheellisen ja optimoidun kulun rakenteen eroavaisuudet.
Vaaditut versiot
| Näytä tuetut Edition-versiot. |
| Tarvittavat käyttöoikeudet | |
|---|---|
| Kulun avaaminen, muokkaaminen, luominen, aktivointi tai aktivoinnin kumoaminen käyttämällä kaikkia Flow Builderissa käytettävissä olevia kulkutyyppejä, elementtejä ja ominaisuuksia, mukaan lukien Einstein ja Agentforce for Flow: | Kulkujen hallintaoikeus |
Tämä esimerkki osoittaa, miten voit muuntaa kulun, joka suorittaa datan manipuloinnin kielen (DML) silmukan sisällä, bulkatuksi kuluksi, joka käsittelee tietueita tehokkaasti. Katso ennen ja jälkeen-vertailu ja tutustu kulkujen bulkkaamisen periaatteisiin.
Skenaario
Laadi tietueiden käynnistämä kulku, joka suoritetaan, kun mahdollisuus suljetaan. Kulku luo jokaiselle suljetulle ja voitetulle mahdollisuudelle jatkotehtävän mahdollisuustiimin jokaiselle jäsenelle. Kulku:
- Hakee kaikki mahdollisuustiimin jäsenet.
- Luo jokaiselle tiimin jäsenelle kohdistetun tehtävän.
- Toimii tehokkaasti, vaikka käyttäjät päivittäisivät useita mahdollisuuksia kerralla.
- Vältä Apex_CPU_TIME_LIMIT_EXCEEDED -virheitä joukkotoimintojen aikana.
Salesforce käyttää yhden prosessorin aikarajaa 10 000 millisekuntia (10 sekuntia) per synkronoitu tapahtuma. Jokainen kyseisen transaktion automatisointi — Apex, kulut, työnkulkusäännöt ja prosessit — saadaan samasta budjetista. Ei-aktiivinen kulun rakenne pahentaa ongelmaa. Transaktion muut automatisoinnit vähentävät ensin jaettua budjettia, ja tehottomat kulut kuluttavat tarpeettoman paljon jäljellä olevia tietoja.
Kulkujen suoritusjärjestys riippuu kulun tyypistä. Tässä esimerkissä käytetään tallennuksen jälkeen tietueiden käynnistämää kulkua, joka suoritetaan myöhemmin ennen tallennusta kulkujen järjestyksessä. Lisätietoja suoritusjärjestyksestä on kohdassa Käynnistimet ja suoritusjärjestys.
Epätehokas lähestymistapa: DML-toiminnot silmukan sisällä
Tämä tapa aiheuttaa CPU-rajoitusvirheitä, kun käsitellään useita mahdollisuuksia.
Kulun rakenne: Kulku alkaa mahdollisuusobjektin Tietueiden käynnistämä kulku, joka suoritetaan tietueen päivityksen jälkeen, kun Vaihe on yhtä kuin Suljettu/voitettu. Kulku käyttää Nouda tietueita -toimintoa noutaakseen mahdollisuustiimin jäseniä käynnistävälle tietueelle ja silmukelee sitten kokoelman läpi. Silmukan sisällä oleva Luo tietueita -elementti luo yhden tehtävän jokaiselle tiimin jäsenelle.
Miksi tämä lähestymistapa epäonnistuu:
- Jokainen silmukan iterointi suorittaa erillisen DML-toiminnon.
- Mahdollisuus, jossa on 5 tiimin jäsentä, aiheuttaa viisi DML-operaatiota.
- Kun käyttäjät päivittävät 20 mahdollisuutta kerralla, kulku käsittelee kaikki mahdollisuudet yhdessä transaktiossa.
- 20 mahdollisuutta × 5 tiimin jäsentä = 100 DML-operaatiota yhdessä transaktiossa.
- 100 DML-toiminnon kumulatiivinen suoritusaika ylittää hallintarajoituksen.
- Lopputulos: APEX_CPU_TIME_LIMIT_EXCEEDED -virhe.
Tehokas lähestymistapa: Kokoelmaan perustuva bulkkaaminen
Tämä lähestymistapa käsittelee tietueet tehokkaasti määrästä riippumatta.
Kulun rakenne: Kulku alkaa mahdollisuusobjektin tietueiden käynnistämästä kulusta ja käyttää Nouda tietueita mahdollisuustiimin jäsenten noutamiseen. Kulku luo Tehtävätietuemuuttujan ja Tehtävätietueiden kokoelmamuuttujan. Tietuemuuttuja sisältää tämänhetkisen tehtävän, jota kulku työstää, ja tietueiden kokoelma sisältää luotavat tehtävät. Kulku silmukoi tiimin jäseniä. Silmukan sisällä oleva Kohdistus-elementti rakentaa jokaisen tehtävätietueen määrittämällä Arvot Tehtävätietueen muuttujalle ja liittää tehtävän silmukan nykyiseen tiimin jäseneen. Toinen Kohdistus-elementti lisää Tehtävätietueen muuttujan arvot Tehtävätietueiden kokoelmaan. Kun silmukka on valmis, yksi Luo tietueita -elementti luo kaikki tehtävät kokoelmasta.
Miksi tämä toimii:
- Silmukka rakentaa kokoelman tehtävätietueita suorittamatta DML-operaatioita.
- Vain yksi DML-toiminto tapahtuu silmukan suorittamisen jälkeen.
- Mahdollisuus, jossa on 5 tiimin jäsentä, aiheuttaa silti vain yhden DML-toiminnon (luomalla 5 tehtävää kerralla).
- Kun käyttäjät päivittävät 20 mahdollisuutta kerralla, kulku suorittaa 20 DML-toimintoa yhteensä (yksi per mahdollisuus).
- CPU-ajan kulutuksen merkittävä vähentäminen.
- Lopputulos: Kulku suoritetaan onnistuneesti ylittämättä hallintarajoituksia.
Suorituskykyjen vertailu
| Skenaario | Epätehokas (DML silmukoissa) | Tehokas (bulkattu) |
|---|---|---|
| 1 mahdollisuus ja 5 tiimin jäsentä | 5 DML-operaatiota | 1 DML-operaatio |
| 20 mahdollisuutta (joukkopäivitys) 5 tiimin jäsenellä | 100 DML-operaatiota (Todennäköisesti epäonnistuu CPU-rajoitusvirheellä) |
20 DML-operaatiota (Suoritetaan onnistuneesti) |
| 100 mahdollisuutta (datan lataus) 3 tiimin jäsenellä | 300 DML-operaatiota (Ehdottomasti epäonnistuu) |
100 DML-operaatiota (Suoritetaan onnistuneesti) |
Bulkkaamisen tärkeimmät periaatteet
- Älä koskaan suorita DML-operaatioita silmukoissa. Kerää kokoelmamuuttujaan aina tietueita silmukan aikana ja suorita sitten DML silmukan jälkeen.
- Suunnittele joukkotoiminnot alusta alkaen. Oletetaan, että tietueiden käynnistämät kulut käsittelevät useita tietueita samanaikaisesti.
- Käytä tietueiden kokoelmamuuttujia. Kokoelmaan perustuvat DML-operaatiot ovat huomattavasti tehokkaampia kuin yksittäiset operaatiot.
- Testaa todellisilla määrillä. Yhden tietueen virheenkorjaustila ei paljasta joukkotoimintojen ongelmia. Testaa tietojen ohjatulla tuontitoiminnolla, Data Loaderilla tai joukkopäivityksillä.
- Valvo suorituskykyä. Tarkasta virheenkorjauslokit tunnistaaksesi kulut, jotka lähestyvät hallintarajoituksia ennen kuin ne epäonnistuvat tuotantoympäristössä.
Yleiset vaiheet
Tutustu tämän esimerkin vaiheisiin. Noudata niitä järjestyksessä tai siirry osioon saadaksesi tarkempia ohjeita.
- Kulun luominen
Määritä tietueiden käynnistämä kulku, joka suoritetaan, kun mahdollisuudet suljetaan. - Resurssien luominen
Luo bulkattuun käsittelyyn tarvittavat muuttujat. - Nouda tiimin jäseniä
Hanki mahdollisuustiimin jäsenten tietueet käsiteltäväksi käyttämällä Nouda tietueita -elementtiä. - Päätöksen lisääminen tiimin jäsenten tarkastukseen
Lisää Päätös-elementti välttyäksesi tietojen käsittelystä, kun tiimissä ei ole jäseniä. - Silmukan elementin lisääminen
Lisää Silmukka-elementti iteroidaksesi tiimin jäsenten kautta. - Tehtävätietueiden rakentaminen silmukan sisällä
Täytä TaskRecord-tietuemuuttujan kenttäarvot jokaiselle silmukan sisäiselle tiimin jäsenelle. - Tehtävien lisääminen kokoelmaan
Lisää jokainen tehtävätietue TasksToCreate-kokoelmamuuttujaan joukkotuotetta varten. - Kaikkien tehtävien luominen silmukan jälkeen
Käytä yhtä Luo tietueita -elementtiä luodaksesi kaikki tehtävät yhdessä toiminnossa. - Virheiden käsittelyn lisääminen
Määritä vikahallinta kerätäksesi ja raportoidaksesi virheitä. - Testaaminen joukkodatan avulla
Bulkattujen kulkujen testaaminen vaatii joukkotoimintojen simulointia. - Muita optimointitekniikoita
Optimoi bulkatut kulut tarkemmin näillä tekniikoilla. - Olemassa olevien kulkujen muuntaminen
Muunna DML-toimintoja sisältävät kulut silmukoissa bulkattuihin kuvioihin.
Kulun luominen
Määritä tietueiden käynnistämä kulku, joka suoritetaan, kun mahdollisuudet suljetaan.
-
Avaa Kulut-luettelonäkymä.
- Kirjoita Määritykset-valikon Pikahaku-kenttään Kulut ja valitse Kulut.
- Valitse Automatisointi-sovelluksesta Kulut-välilehti.
- Napsauta Lightning-sovelluksen Kulut-välilehdestä toimintovalikkoa ja valitse Avaa kulku.
-
Luo tietueiden käynnistämä kulku.
- Napsauta Automation Lightning -sovelluksesta Uusi. Hae ja valitse tietueiden käynnistämä kulku.
- Napsauta Määritykset-valikosta Uusi kulku, hae ja valitse tietueiden käynnistämä kulku.
Määritä aloitus -paneeli avautuu. -
Määritä Alku-elementti.
- Valitse objektiksi Mahdollisuus.
- Valitse Käynnistä kulku, kun -valikosta Tietue päivitetään.
- Valitse Määritä syötteen ehdot ehtojen vaatimuksille -osiosta Kaikki ehdot täyttyvät (AND).
- Valitse kentäksi Vaihe.
- Valitse operaattoriksi Yhtä kuin.
- Valitse arvoksi Suljetut/voitetut.
- Valitse Optimoi kulku -asetukseksi Toiminnot ja niihin liittyvät tietueet.
Resurssien luominen
Luo bulkattuun käsittelyyn tarvittavat muuttujat.
-
Laadi jokainen tehtävä luomalla tietuemuuttuja tehtävätietueiden laatimiseen.
-
Avaa työkalupakki napsauttamalla
.
- Napsauta Uusi resurssi ja valitse sitten Muuttujat.
- Syötä API-nimi-kenttään TaskRecord.
- Valitse datatyypiksi Tietue.
- Valitse objektiksi Tehtävä.
- Napsauta Valmis.
-
Avaa työkalupakki napsauttamalla
-
Jos haluat tallentaa kaikki tehtävät, luo tietueiden kokoelmamuuttuja kaikille tehtäville.
- Napsauta Uusi resurssi ja valitse sitten Muuttujat.
- Syötä API-nimi-kenttään TasksToCreate.
- Valitse datatyypiksi Tietue.
- Valitse objektiksi Tehtävä.
- Valitse tämä vaihtoehto Salli useat arvot (kokoelma).
- Napsauta Valmis.
Nouda tiimin jäseniä
Hanki mahdollisuustiimin jäsenten tietueet käsiteltäväksi käyttämällä Nouda tietueita -elementtiä.
-
Napsauta
ja hae ja valitse Nouda tietueita.
-
Määritä elementti.
- Syötä Otsikko-kenttään Get Opportunity Team Members.
-
Valitse objektiksi Mahdollisuuden yhteyshenkilön rooli.
Tässä esimerkissä kulku tallentaa tiimin jäsenet Mahdollisuuden yhteyshenkilön rooli -objektiin. Objekti, joka linkittää mahdollisuudet yhteyshenkilöihin.
- Valitse Suodata mahdollisuuksien yhteyshenkilöroolien tietueita -osiosta kentäksi Mahdollisuuden tunnus.
- Valitse operaattoriksi Yhtä kuin.
- Valitse arvoksi Käynnistä mahdollisuus ja sitten mahdollisuuden tunnus.
- Valitse Tallennettavien tietueiden määrä -asetukseksi Kaikki tietueet.
- Valitse Miten tallentaa tietuedataa -osiosta Tallenna kaikki kentät automaattisesti.
Päätöksen lisääminen tiimin jäsenten tarkastukseen
Lisää Päätös-elementti välttyäksesi tietojen käsittelystä, kun tiimissä ei ole jäseniä.
-
Napsauta
ja hae ja valitse Päätös.
-
Määritä päätös.
- Syötä Otsikko-kenttään Etsi tiimin jäsenet?.
- API-nimi täytetään automaattisesti.
- Syötä Lopputuloksen otsikko -kenttään Kyllä.
- API-nimi täytetään automaattisesti.
- Valitse resurssiksi Mahdollisuuksien yhteyshenkilöroolit Nouda mahdollisuustiimin jäsenet -osiosta.
- Valitse operaattoriksi On null.
- Valitse arvoksi epätosi.
- Napsauta Default Outcome.
- Syötä Otsikko-kenttään Ei.
Silmukan elementin lisääminen
Lisää Silmukka-elementti iteroidaksesi tiimin jäsenten kautta.
-
Napsauta Kyllä-polusta
ja hae ja valitse Silmukka.
-
Määritä silmukka.
- Syötä Otsikko-kenttään Iteroi tiimin jäsenten kautta.
- API-nimi täytetään automaattisesti.
-
Valitse kokoelmamuuttujaksi Mahdollisuuden yhteyshenkilön rooli Nouda mahdollisuustiimin jäsenet -osiosta.
Tämä resurssi näytetään yksikkönä, vaikka se sisältäisikin useita tietueita.
- Valitse Suunta-kentästä Ensimmäinen kohteesta viimeiseen kohteeseen.
Tehtävätietueiden rakentaminen silmukan sisällä
Täytä TaskRecord-tietuemuuttujan kenttäarvot jokaiselle silmukan sisäiselle tiimin jäsenelle.
-
Napsauta Jokaiselle-kentästä
ja hae ja valitse Kohdistus.
-
Määritä kohdistus.
- Syötä Otsikko-kenttään Laadi tehtävätietue.
- API-nimi täytetään automaattisesti.
- Valitse muuttujaksi TaskRecord ja valitse sitten Aihe.
- Valitse operaattoriksi Yhtä kuin.
- Syötä arvoksi Seuraa suljettuja mahdollisuuksia.
- Napsauta + Lisää kohdistus.
-
Jatka kohdistusten ja arvojen lisäämistä.
Resurssi Operaattori Arvo TaskRecord>Tila Yhtä kuin Ei aloitettu TaskRecord>Prioriteetti Yhtä kuin Korkea TaskRecord>Kohdistettu tunnukseen Yhtä kuin Tämänhetkinen kohde silmukasta>Yhteyshenkilön tunnus TaskRecord>Liittyy tunnukseen Yhtä kuin Mahdollisuuden käynnistäminen>Mahdollisuuden tunnus
Tehtävien lisääminen kokoelmaan
Lisää jokainen tehtävätietue TasksToCreate-kokoelmamuuttujaan joukkotuotetta varten.
-
Napsauta Kohdistus-elementin jälkeen ja edelleen silmukassa
ja hae ja valitse sitten Kohdistus.
-
Määritä kohdistus.
- Syötä Otsikko-kenttään Lisää tehtävä kokoelmaan.
- Valitse muuttujaksi TasksToCreate.
- Valitse operaattoriksi Lisää.
- Valitse arvoksi TaskRecord ja valitse sitten Koko resurssi.
Kaikkien tehtävien luominen silmukan jälkeen
Käytä yhtä Luo tietueita -elementtiä luodaksesi kaikki tehtävät yhdessä toiminnossa.
-
Kun silmukka on päättynyt, napsauta
ja hae ja valitse Luo tietueita.
-
Määritä elementti.
- Syötä Otsikko-kenttään Luo kaikki tehtävät.
- Valitse Määritä tietueen kenttäarvot -osiosta Tietueen muuttujasta.
- Valitse Kuinka monta tietuetta luodaan -asetukseksi useita.
- Valitse tietueiden kokoelmaksi TasksToCreate.
- Tallenna kulku.
- Syötä Otsikko-kenttään Luo tehtäviä mahdollisuustiimin jäsenille.
- API-nimi täytetään automaattisesti.
Virheiden käsittelyn lisääminen
Määritä vikahallinta kerätäksesi ja raportoidaksesi virheitä.
-
Jos haluat hallita virheitä, lisää Luo tietueita -elementtiin vikapolku.
- Napsauta Luo kaikki tehtävät -elementin kolmea pistettä ja valitse Lisää vikapolku.
-
Jos haluat ilmoittaa Salesforce-pääkäyttäjille vikapolun virheistä, lisää Lähetä sähköposti -toiminto.
-
Napsauta vikapolusta
ja hae ja valitse Lähetä sähköpostia.
- Syötä Otsikko-kenttään Ilmoita pääkäyttäjälle virheestä.
- API-nimi täytetään automaattisesti.
- Syötä Vastaanottajan osoitteet -kenttään sen henkilön sähköpostiosoite, jolle haluat saada ilmoituksen.
- Syötä Aihe-kenttään Kulku vaatii huomiotasi
- Syötä Tekstiosa-kenttään Luo tehtäviä mahdollisuustiimin jäsenille -kulku aiheutti virheen. Tässä on virhe: .
- Napsauta Lisää resurssi.
- Valitse Suoritettava kulku ja valitse sitten Virheviesti.
-
Napsauta vikapolusta
- Tallenna työsi.
Testaaminen joukkodatan avulla
Bulkattujen kulkujen testaaminen vaatii joukkotoimintojen simulointia.
- Jos haluat testata yksittäistä tietuetta, käytä virheenkorjaustilaa päivittääksesi yhden mahdollisuuden ja varmistaaksesi, että kulku luo tehtävät oikein.
- Aktivoi kulku.
-
Jos haluat testata joukkotoimintoja sandboxissa, käytä tietojen ohjattua tuontitoimintoa, Data Loaderia tai luettelonäkymää päivittääksesi useita mahdollisuuksia kerralla.
- Luo 10–20 testitapausta.
- Lisää tiimin jäseniä kuhunkin mahdollisuuteen.
- Käytä Data Loaderia tai joukkopäivitystä muuttaaksesi kaikkien mahdollisuuksien vaiheeksi Suljettu/voitettu samanaikaisesti.
- Varmista, että kulku luo kaikki tehtävät ilman virheitä.
- Tarkasta Apex varmistaaksesi, että CPU-ajan kulutus on hyväksyttävissä rajoissa suorituskyvyn varmistamiseksi.
Muita optimointitekniikoita
Optimoi bulkatut kulut tarkemmin näillä tekniikoilla.
Syöttöehtojen käyttäminen suorituksen rajoittamiseksi
Lisää kulun Alku-elementtiin ehtoja varmistaaksesi, että se suoritetaan vain tarvittaessa. Käsittele esimerkiksi vain tietyn summan ylittävät mahdollisuudet tai tietyt tietuetyypit.
Harkitse tallennuksen jälkeistä tallennusta ei-kriittisille toiminnoille
Tallennuksen jälkeen tietueiden käynnistämät kulut voivat luoda seurantatehtäviä mahdollisuuden tallentamisen jälkeen. Ne suoritetaan ei-synkronoidusti ja niillä on korkeammat hallintarajoitukset.
Eräprosessi erittäin suurille määrille
Jos mahdollisuuksilla on säännöllisesti kymmeniä tiimin jäseniä, käytä ajoitettua kulkua, joka käsittelee suljetut mahdollisuudet erissä eikä reaaliajassa.
Olemassa olevien kulkujen muuntaminen
Muunna DML-toimintoja sisältävät kulut silmukoissa bulkattuihin kuvioihin.
Jos sinulla on kulkuja, joiden DML-toiminnot ovat silmukoissa, muunna ne noudattamalla seuraavia ohjeita.
- Löydät DML-operaatiot silmukoissa tunnistamalla silmukoissa kaikki Luo tietueita-, Päivitä tietueita- ja Poista tietueita -elementit.
-
Suorita muuntaminen kullekin DML-elementille.
- Luo tietueita luomalla tietuemuuttuja kyseiselle objektityypille.
- Jos haluat tallentaa käsiteltävät tietueet, luo tietueiden kokoelmamuuttuja kyseiselle objektityypille.
- Jos haluat tallentaa tietueiden kenttäarvoja, käytä Kohdistus-elementtiä kohdistaaksesi arvoja tietuemuuttujaan.
- Kerää käsiteltävät tietueet käyttämällä kohdistusta lisätäksesi tietuemuuttujan tietueiden kokoelmaan.
- Jos haluat luoda tietueita tehokkaasti, lisää silmukan jälkeen yksi DML-elementti, joka käsittelee koko tietueiden kokoelman.
- Testaa muunnos huolellisesti joukkodatan avulla varmistaaksesi, että refaktorointi toimi oikein.

