Loading
Salesforcen laajentaminen napsautuksilla, ilman koodia
Muutoksiin reagoiminen Apex-käynnistimillä

Muutoksiin reagoiminen Apex-käynnistimillä

Käytä Apex-käynnistimiä automatisoidaksesi liiketoimintasi ulkoisilla muutostapahtumilla.

Codey Outfitters voi mukauttaa Salesforcea lähettämään sähköposti- tai tekstiviesti-ilmoituksia tuotteista, jotka ovat loppumassa varastossa tai joiden hintaa on alennettu. Välineitä ja muita kysyttyjä tuotteita voidaan valvoa varastosta loppumisen varalta ja tilata automaattisesti. Varmista ennen Salesforcen mukauttamista, että olet ottanut muutostietojen seuraamisen käyttöön ulkoiselle objektille, jota haluat seurata. Codey Outfitters luo Apex-käynnistimen nimeltään LowOnStock seuratakseen tuotteita, jotka ovat loppumassa varastosta. Seuraavaksi yritys valitsee käynnistimen sObjectin ja muutostapahtuman, joka julkaisee ulkoisen objektin Products__x muutokset: Products__ChangeEvent.

Alla on esimerkki yksinkertaisesta säännöstä, joka lähettää ilmoituksen, kun tuote on loppumassa varastosta.

trigger LowOnStock on Products__ChangeEvent (after insert) {
    // Get the change event’s product ID for added and updated products
    Set<Id> productIds = new Set<Id>();
    for (Products__ChangeEvent event: Trigger.new) {
        if (event.ChangeEventHeader.getChangeType() != 'DELETE') {
            String productId = event.ChangeEventHeader.getRecordIds()[0];
            productIds.add(productId);
        }
    }
    if (productIds.size() > 0) {
        ProductNotifications.notifyOnLowOnStockProductUpdates(productIds);
    }
}

ProductNotifications-luokka kyselee ulkoisia Product-objekteja saadakseen muutetut tuotetunnukset ja LowOnStock-kynnysarvon. Nykyisten Product-tietueiden noutaminen ulkoisesta järjestelmä hyväksytyille tuotteille on callout, joka on ajoitettu Apex-futuurina.

public class ProductNotifications {    
    // Notify subscribers on product updates that are low on stock.
    // This method is run asynchronously as it is performing a callout to the external
    // system to get the latest product details
    @future (callout=true)
    public static void notifyOnLowOnStockProductUpdates(Set<Id> productIds) {
        // Look up the current stock threshold to filter the products with
        Integer productStockThreshold = ...;
        List<Products__x> lowOnStockProducts =
            getProductsLowOnStock(productIds, productStockThreshold);
        // Notify subscribers
        notifySubscribers(lowOnStockProducts,
            ‘These items are running out of stock. Act soon!’);
    }
    
    // Get the external Product objects for each Product ID
    public static List<Products__x>
    getProductsLowOnStock(Set<Id> productIds, Integer productStockThreshold) {
        return [SELECT Id, ExternalId, Name__c, ProductId__c, Stock__c, UnitPrice__c  
            FROM Products__x
            WHERE Stock__c < :productStockThreshold  AND Stock__c > 0 AND 
                Id IN :productIds];
    }
    
    // Notify subscribers by sending an email or SMS
    public static void notifySubscribers(String message, List<Products__x> products) {
        ...
    }
}

Voit löytää muutostietojen metadatan sObject descripe API:n kautta. Esimerkiksi Products__ChangeEvent-objektin sObject describe näyttää seuraavat muutostapahtumien vakiokentät.

Kenttä Tyyppi Kuvaus
Id Merkkijono Muutostapahtuman Salesforce-tunnus. Tämä tunnus ei ole muutetun tietueen Salesforce-tunnus, vaan tapahtuma, joka sisältää tietueen muutokset.
ReplayId Merkkijono Tapahtumailmoituksen sijainti kanavan tapahtumaketjussa.
ChangeEventHeader Monimutkainen tyyppi Tietojen muutostapahtuman tyyppi.

Jokainen muutostapahtumaobjekti sisältää kenttiä, jotka sisältävät päivitetyn arvon, kun tietue päivitettiin. OData-tuottaja voi myös sisältää kenttiä, jotka eivät ole muuttuneet. Voit tarkastaa tämänhetkiset arvot kyselemällä ulkoista objektia käyttämällä tietueen tunnusta muutostapahtuman otsakkeessa.

Seuraava taulukko esittää Products__x-objektin esimerkkikenttiä. Muutostapahtumien objektit on räätälöity seurattua ulkoista objektia varten. Kaikki kentät eivät ole välttämättä käytettävissä muutostapahtumalle.

Kenttä Tyyppi Kuvaus
Id Merkkijono Tuotetietueen Salesforce-tunnus organisaatiossasi
ExternalId Merkkijono Tuotetietueen ulkoinen tunnus
DisplayUrl Merkkijono Ulkoisessa järjestelmässä olevan tietueen URL-osoite
CreatedOn__c DateTime Milloin tietue luotiin ulkoisessa järjestelmässä
UpdatedOn__c DateTime Milloin tietue päivitettiin viimeksi ulkoisessa järjestelmässä
Name__c Merkkijono Product__x-objektissa oleva tuotenimi
OrderLimit__c Kokonaisluku Kerralla tilattavien tuotteiden määrä
Stock__c Kokonaisluku Varastossa olevien tuotteiden määrä
UnitPrice__c Desimaali (8,2) Tuotteen yksikköhinta

Seuraavat kentät ovat muutostapahtumien otsakkeen monimutkaisen tyypin kenttiä. Käytä ChangeEventHeader-luokan getter-metodia käyttääksesi sen kenttiä Apexissa. Jos haluat esimerkiksi käyttää kenttää ChangeType, käytä arvoa eventObject.ChangeEventHeader.getChangeType().

Kenttä Tyyppi Kuvaus
commitUser Merkkijono Tapahtuman julkaissut käyttäjä.
sequenceNumber Kokonaisluku Muutostapahtuman järjestysnumero. Muutokset näytetään niiden vastaanottojärjestyksessä.
entityName Merkkijono Ulkoisen objektin API-nimi.
changeType ChangeType enum Määrittää, päivitettiinkö, luotiinko vai poistettiinko tietue. Ulkoisten muutostapahtumien enum-arvot ovat Create, Update ja Delete.
changeOrigin Merkkijono Delta-linkki, jota käytetään edellisen tai ensimmäisen muutospyynnön jälkeisten muutosten pyytämiseen. OData-tuottaja laskee delta-valtuuden suorittaessaan edellistä muutospyyntöä.
transactionKey Merkkijono Transaktion yksilöllinen tunnus.
commitTimestamp Long Määrittää, milloin muutostapahtuman ilmoitus julkaistaan millisekunteina 1. tammikuuta 1970 jälkeen.
recordIds Merkkijonotyyppinen taulukko Ulkoisen objektin päivitetyn, luodun tai poistetun tietueen Salesforce-tunnus. Jos haluat nähdä tietueen kenttien tämänhetkiset arvot, kysele ulkoista objektia käyttämällä tätä tietuetunnusta. Tämä taulukko sisältää aina vain yhden Salesforce-tunnuksen.
nulledFields Merkkijonotyyppinen taulukko Null-arvoisten kenttien nimien luettelo.
 
Ladataan
Salesforce Help | Article