Loading
Salesforce-organisaatiosi määrittäminen ja ylläpito
Integraatioidesi päivittäminen uusia paikkamääritysformaatteja varten

Integraatioidesi päivittäminen uusia paikkamääritysformaatteja varten

Jos integroit dataa ulkoisista järjestelmistä Salesforceen tai lähetät Salesforce-dataa ulkoisille kolmansille osapuolille, käytä koodissasi paikkamääritysneutraaleja formaatteja aina, kun se on mahdollista. Kun paikkamääritysformaatit muuttuvat, tarkasta koodi, joka käsittelee asiaankuuluvat formaatit.

Vaaditut versiot

Käytettävissä: Salesforce Classicissa ja Lightning Experiencessa
Käytettävissä: Kaikissa versioissa

Integrointipisteet voivat käyttää useita eri muotoja, mukaan lukien Salesforceen ja Salesforcesta tehdyt API-kutsut. Tarkasta myös prosessit, jotka vievät dataa tiedostoihin, kuten pilkuilla erotettujen arvojen tiedostoihin (CSV), tai tuovat dataa tiedostoista Salesforceen.

Osoitteiden, valuuttojen, päivämäärien, päivämäärä/aika-arvojen, kokonaislukujen, nimien ja kellonaikojen formaatit voivat muuttua, kun käyttäjä muuttaa paikkamääritystä. Käytä tällaisten tietojen käsittelemiseen paikkamääritysneutraaleja standardimetodeja aina, kun se on mahdollista. Jos standardimetodia ei ole käytettävissä, päivitä koodi uusien formaattien mukaisesti.

Kun siirryt Oraclen Java Development Kit (JDK) -formaateista International Components for Unicode (ICU) -paikkamääritysformaatteihin, tarkasta valuutta-, päivämäärä, päivämäärä/aika-, kokonaisluku- tai aika-arvojen käsittelevät integraatiot.

Jos kolmas osapuoli kutsuu Salesforcea ohjelmallisesti, tee yhteistyötä kyseisen osapuolen kanssa testataksesi ja päivittääksesi prosessia tarvittaessa, kun paikkamääritysformaatit muuttuvat. Jos haluat hakea Salesforce-koodiasi, lataa metadata. Käytä sitten komentorivikäyttöliittymää, kuten Salesforce CLI.

Integraation esimerkki: päivämäärien tuominen

Katsotaanpa yksinkertaista esimerkkiä siitä, miten paikkamäärityksen muuttaminen voi vaikuttaa integraatioihin.

Tässä esimerkissä meillä on mukautettu objekti, Konferenssi, ja kaksi lisäkenttää: start_date_time ja end_date_time. Apex-luokka noutaa tietoja ulkoisella API-rajapinnalla Conference-objektin täyttämiseksi. Luokka voisi noutaa tietoja myös CSV-tiedostosta, mutta tässä esimerkissä käytämme ulkoista API-kutsua.

Ulkoinen API-kutsu palauttaa JSON-objektin, joka sisältää nämä tiedot. Päivämäärä/aika-arvo muotoillaan käyttämällä Englanti (Yhdysvallat) [en_US] -paikkamäärityksen JDK-formaattia.

{
   "conferences": [{
       "name": "conference1",
       "start_date_time": "10/20/2021 10:00 AM",
       "end_date_time": "10/22/2021 05:00 PM"
   }, {
       "name": "conference2",
       "start_date_time": "11/21/2021 11:00 AM",
       "end_date_time": "11/24/2021 05:00 PM"
   }]
}

Tämä Apex-koodi lisää konferenssitietueet.

// Mocking the sample response of API call
String jsonResponse = '{"conferences": [{"name":"conference1", "start_date_time":"10/20/2021 10:00 AM", "end_date_time":"10/22/2021 5:00 PM"}, {"name":"conference2", "start_date_time":"11/21/2021 11:00 AM", "end_date_time":"11/24/2021 05:00 PM"}]}';
 
Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(jsonResponse);
 
List<Object> conferences = (List<Object>) results.get('conferences');
 
for(Object conference: conferences) {
  Map<String, Object> conferenceDetails = (Map<String, Object>)conference;
 
  //Initialize object
  Conference__c confObject = new Conference__c (
  name = String.valueof(conferenceDetails.get('name')),
  start_date_time__c = datetime.parse(String.valueof(conferenceDetails.get('start_date_time'))),
  end_date_time__c = datetime.parse(String.valueof(conferenceDetails.get('end_date_time')))
  );
   
  //insert object                       
  insert confObject;
}

datetime.parse()-metodi käyttää koodin suorittavan käyttäjän henkilökohtaisen paikkamäärityksen päivämäärä/aika-formaattia.

Oletetaan esimerkiksi, että käyttäjän henkilökohtainen paikkamääritys on Englanti (Yhdysvallat) [en_US]. Paikkamäärityksen päivämäärä/aika-arvojen JDK- ja ICU-formaatit eroavat toisistaan.

  • Päivämäärä/aika-arvojen lyhyt JDK-formaatti en_US-paikkamääritykselle: 10/20/2021 10:00 AM
  • Päivämäärä/aika-arvojen lyhyt ICU-formaatti en_US-paikkamääritykselle: 10/20/2021, 10:00 AM

Kun organisaatio käyttää JDK-paikkamääritysformaatteja, tämä koodi suoritetaan onnistuneesti. Kun ICU-paikkamääritysformaatit ovat käytössä, tämä koodi aiheuttaa jäsentövirheen, koska start_date_time- ja end_date_time-arvoista puuttuu odotettu pilkku vuoden jälkeen.

Tämä ongelma voi ilmetä myös, kun Salesforcessa säilytettyjä tietoja välitetään ulkoiseen järjestelmään käyttämällä paikkamäärityskohtaista muotoa, esimerkiksi POST-kutsulla. Niin kuin yllä olevassa esimerkissä, koodin suorittavan käyttäjän henkilökohtainen paikkamääritys määrittää tietojen muodon.

Ongelmien ratkaiseminen

Voit välttyä näiltä ongelmilta käyttämällä paikkamääritysneutraaleja formaatteja, kun vastaanotat, välität ja käsittelet tietoja.

Jos ulkoisesta järjestelmästä vastaanotetuissa tiedoissa ilmenee ongelma, pyydä lähettäjää päivittämään lähdetietojen muoto. Jos et saa yhteyttä lähettäjään, päivitä koodisi muuntaaksesi vastaanotetut tiedot paikkamääritysneutraaliin muotoon ennen niiden käsittelyä.

 
Ladataan
Salesforce Help | Article