Olet tässä:
Integrointitoimenpiteen kutsu Apexista
Käytä Summer’25 -julkaisusta alkaen IntegrationProcedureService-Apex-luokan Connect API for Integration Procedure -kutsuja ConnectAPI.OmniDesignerConnect.integrationProcedureExecute(ipName, ApexInput) -rajapinnasta. Tämä Connect API poistaa riippuvuuden hallitusta paketista ja tarjoaa 21 % paremman suorituskyvyn Apex integraatiotoimenpiteiden kutsuille verrattuna edelliseen menetelmään.
Edellytykset
Ennen kuin käytät Connect API for Integration Procedure -kutsuja, ota parannettu suorituskyky käyttöön Omnistudio-asetukset-sivulta. Kun parannettu suorituskyky ei ole käytössä, pyyntöjä ei reititetä Connect API:n kautta.
Katso ohjeet kohdasta Komponenttien parannetun suorituskyvyn ottaminen käyttöön.
Integrointitoimenpiteen käynnistäminen ja sen tietojen palauttaminen
Kutsuu integrointiprosessia ja palauttaa sen tiedot. Ohittaa jakosäännöt ja mukautetut käyttöoikeudet, mikä varmistaa, että integrointitoimenpide on yksityinen. Lisätietoja on Salesforce-ohjeen aiheessa Jakosäännöt ja mukautetut käyttöoikeudet.
| Connect API for Integration Procedure -kutsun | Olemassa oleva metodi (korvaa Connect API:lla) |
|---|---|
|
|
Integrointitoimenpiteen käynnistäminen ja sen datan palauttaminen jakosääntöjen ja mukautettujen käyttöoikeuksien ohittamatta
Kutsuu integrointiprosessia ja palauttaa sen tiedot. Ohittaa jakosäännöt ja mukautetut käyttöoikeudet, mikä varmistaa, että integrointitoimenpide on yksityinen. Lisätietoja on Salesforce-ohjeen aiheessa Jakosäännöt ja mukautetut käyttöoikeudet.
| Connect API for IP -kutsut | Olemassa oleva metodi (korvaa Connect API:lla) |
|---|---|
Käyttäjillä täytyy olla tarvittavat käyttöoikeudet integraatiotoimenpiteen suorittamiseen. |
|
Integrointitoimenpiteen kutsuminen @future-annotaatiolla
| Connect API for Integration Procedure -kutsun | Olemassa oleva metodi (korvaa Connect API:lla) |
|---|---|
|
|
Integrointitoimenpiteen kutsuminen jonoitettavana Apex asynkronista käsittelyä varten
Palauttaa Queueable-työn tunnuksen. Lisätietoja on Salesforce-ohjeen aiheessa Queueable Apex.
| Connect API for Integration Procedure -kutsun | Olemassa oleva metodi (korvaa Connect API:lla) |
|---|---|
|
|
Kutsuu integraatiotoimenpiteen, joka välittää syöttöparametrien kartan ja vastaanottaa tuloksen toisessa kartassa
| Connect API for Integration Procedure -kutsun | Olemassa oleva metodi (korvaa Connect API:lla) |
|---|---|
|
|
Integrointitoimenpiteiden puheluiden esimerkkejä
Voit kutsua integrointiprosessia Apex-koodista kahdella tavalla käyttämällä IntegrationProcedureService -luokkaa.
Esimerkki 1
class IntegrationProcedureService {
/*
procedureAPIName - the Type_SubType of Procedure
input - The payload / initial data in the Map<String, Object> format for the Procedure
*/
String ipName = 'FindContacts_LastNames';
Map<String, Object> inputMap = new Map<String, Object>();
inputMap.put('ContactLastName', 'Smith');
Map<String, Object> optionsMap = new Map<String, Object>();
optionsMap.put('isDebug', false);
ConnectAPI.IntegrationProcedureServiceRunInputRepresentation apexInput = new ConnectAPI.IntegrationProcedureServiceRunInputRepresentation();
List<String> stringList = new List<String>();
String serializedInputMap = JSON.serialize(inputMap);
stringList.add(serializedInputMap);
apexInput.input = stringList;
ConnectAPI.IntegrationProcedureServiceRunOptionsRepresentation options = new ConnectAPI.IntegrationProcedureServiceRunOptionsRepresentation();
for (String key: optionsMap.keySet()){
if (key == 'isDebug') {
options.isDebug = (Boolean)optionsMap.get(key);
} else if (key == 'chainable') {
options.chainable = (Boolean)optionsMap.get(key);
} else if (key == 'resetCache') {
options.resetCache = (Boolean)optionsMap.get(key);
} else if (key == 'ignoreCache') {
options.ignoreCache = (Boolean)optionsMap.get(key);
} else if (key == 'queueableChainable') {
options.queueableChainable = (Boolean)optionsMap.get(key);
} else if (key == 'useQueueableApexRemoting') {
options.useQueueableApexRemoting = (Boolean)optionsMap.get(key);
} else if (key == 'vlcApexResponse') {
options.vlcApexResponse = (Boolean)optionsMap.get(key);
} else if (key == 'useFuture') {
options.useFuture = (Boolean)optionsMap.get(key);
} else if (key == 'useQueueable') {
options.useQueueable = (Boolean)optionsMap.get(key);
} else if (key == 'vlcIPData') {
options.vlcIPData = (String)optionsMap.get(key);
} else if (key == 'vlcStatus') {
options.vlcStatus = (String)optionsMap.get(key);
} else if (key == 'vlcMessage') {
options.vlcMessage = (String)optionsMap.get(key);
}
}
options.shouldSendLegacyResponse = true;
apexInput.options = options;
ConnectAPI.IntegrationProcedureServiceRunOutputRepresentation output = ConnectAPI.OmniDesignerConnect.integrationProcedureExecute(ipName, apexInput);
List<String> responseList = output.response;
String currentSerResponse = responseList[0];
Map<String, Object> currentResponseObj = (Map<String, Object>)JSON.deserializeUntyped(currentSerResponse);
Object ipOutput = currentResponseObj.get('result');
Esimerkki 2
/* Initialize variables */
String procedureName = 'Type_SubType';
Map<String, Object> ipInput = new Map<String, Object> ();
Map<String, Object> ipOutput = new Map<String, Object> ();
Map<String, Object> ipOptions = new Map<String, Object> ();
/* Populating input map for an Integration Procedure.
Follow whatever structure your VIP expects */
String orderId = '80100000000abcd';
ipInput.put('orderId', orderId);
/* Call the Integration Procedure via runIntegrationService,
and save the output to ipOutput */
ipOutput = (Map<String, Object>)
String ipName = 'FindContacts_LastNames';
Map<String, Object> inputMap = new Map<String, Object>();
inputMap.put('ContactLastName', 'Smith');
Map<String, Object> optionsMap = new Map<String, Object>();
optionsMap.put('isDebug', false);
ConnectAPI.IntegrationProcedureServiceRunInputRepresentation apexInput = new ConnectAPI.IntegrationProcedureServiceRunInputRepresentation();
List<String> stringList = new List<String>();
String serializedInputMap = JSON.serialize(inputMap);
stringList.add(serializedInputMap);
apexInput.input = stringList;
ConnectAPI.IntegrationProcedureServiceRunOptionsRepresentation options = new ConnectAPI.IntegrationProcedureServiceRunOptionsRepresentation();
for (String key: optionsMap.keySet()){
if (key == 'isDebug') {
options.isDebug = (Boolean)optionsMap.get(key);
} else if (key == 'chainable') {
options.chainable = (Boolean)optionsMap.get(key);
} else if (key == 'resetCache') {
options.resetCache = (Boolean)optionsMap.get(key);
} else if (key == 'ignoreCache') {
options.ignoreCache = (Boolean)optionsMap.get(key);
} else if (key == 'queueableChainable') {
options.queueableChainable = (Boolean)optionsMap.get(key);
} else if (key == 'useQueueableApexRemoting') {
options.useQueueableApexRemoting = (Boolean)optionsMap.get(key);
} else if (key == 'vlcApexResponse') {
options.vlcApexResponse = (Boolean)optionsMap.get(key);
} else if (key == 'useFuture') {
options.useFuture = (Boolean)optionsMap.get(key);
} else if (key == 'useQueueable') {
options.useQueueable = (Boolean)optionsMap.get(key);
} else if (key == 'vlcIPData') {
options.vlcIPData = (String)optionsMap.get(key);
} else if (key == 'vlcStatus') {
options.vlcStatus = (String)optionsMap.get(key);
} else if (key == 'vlcMessage') {
options.vlcMessage = (String)optionsMap.get(key);
}
}
options.shouldSendLegacyResponse = true;
apexInput.options = options;
ConnectAPI.IntegrationProcedureServiceRunOutputRepresentation output = ConnectAPI.OmniDesignerConnect.integrationProcedureExecute(ipName, apexInput);
List<String> responseList = output.response;
String currentSerResponse = responseList[0];
Map<String, Object> currentResponseObj = (Map<String, Object>)JSON.deserializeUntyped(currentSerResponse);
Object ipOutput = currentResponseObj.get('result');
System.debug('IP Output: ' + ipOutput);