Loading
Liiketoimintaprosessiesi automatisointi Salesforce-kululla
Aloita kulku Apexista

Aloita kulku Apexista

Apexista aloitetut kulut voivat sisältää monimutkaista liiketoimintalogiikkaa ja parannettua virheiden käsittelyä, ja ne voivat integroitua tehokkaammin ulkoisiin järjestelmiin. Tämä lähestymistapa edistää uudelleenkäytettävyyttä lisäämällä logiikkaa kulkuihin, joita voidaan kutsua tarvittaessa. Se tarjoaa myös paremman hallinnan suorituksen asiayhteydestä ja operaatioiden järjestyksestä. Apexin ja kulun yhdistelmä auttaa sinua luomaan tehokkaampia ja joustavampia sovelluksia, joita on helpompi ylläpitää.

Huomautus
Huomautus Kulun käynnistäminen Apexista kulkujen pääkäyttäjänä käyttää kulun uusinta versiota, aktivoinnin tilasta riippumatta.

Voit käyttää Invocable.Action- tai Flow.Interview-luokkaa käynnistääksesi kulun Apexista. Ota huomioon näiden kahden luokan eroavaisuudet.

  • Jos käytät kulkujen suorittamiseen Invocable.Action-luokkaa, kulut suoritetaan erissä bulkkauksella, mutta voit viitata kulkuihin vain dynaamisesti. Tarjoat merkkijonoarvon kulun nimelle, joka ei tarjoa viitteellistä yhtenäisyyttä. Tämä lähestymistapa voi olla parempi, kun haluat suorittaa satunnaisia kulkuja, mutta et, kun kutsut tiettyä kulkua.
  • Käytä Flow.Interview-luokkaa viitataksesi kulkuihin staattisesti nähdäksesi viitteen yhtenäisyyden. Et voi pakata tai ottaa käyttöön Apexia ilman, että kulku on olemassa kohdeorganisaatiossa, käyttöönotossa tai paketissa. Flow.Interview-luokka ei voi kuitenkaan suorittaa erissä käyttämällä bulkkausta.

Salesforce Object Query Language (SOQL)- ja Data Manipulation Language (DML) -rajoitukset ovat voimassa kulun suorituksen aikana. Lisätietoja on Salesforce-ohjeen aiheessa Transaktiokohtaiset kulkujen rajoitukset.

Tutustu näissä esimerkeissä tähän esimerkkikulkuun:

  • Kulun API-nimi: MyFunFlow
  • Kulussa on kaksi tekstimuuttujaa, jotka ovat käytettävissä input-arvona:
    • inputA
    • inputB
  • Kululla on yksi tekstimuuttuja, joka on käytettävissä tuloksille:
    • outputVariable
  • Kulussa on Kohdistus-elementti, joka ketjuttaa arvot inputA ja inputB ja kohdistaa tuloksen outputVariable-muuttujaan.

Yksittäisen automaattisesti käynnistyvän kulun suorittaminen Apexista kutsuttavalla kululla.Toimintoluokka

Jos haluat suorittaa kulun käyttämällä Invocable.Action-metodia, luo Invocable.Action-luokasta esiintymä käyttämällä createCustomAction()-metodia. Määritä suoritettavan kulun yhden tai useamman esiintymän input-muuttujan arvot ja suorita sitten invoke()-metodi. invoke()-metodi palauttaa objektin, joka voi lukea virheet tai kulun tarjoamat tulokset.

Tämän lähestymistavan avulla voit suorittaa useita esiintymiä samasta kulusta eri input-arvoille.

/* Set the input variable values into a Map<String,Object> with each input as a key, and the input value you want to set as the value */
Map<String,Object> flowInputVariables = new Map<String,Object>();
flowInputVariables.put('inputA','hello');
flowInputVariables.put('inputB','world');

/* Put the input map(s) into a List. Each item in this list represents a flow interview that's invoked together in a single batch run that uses flow bulkification. You must use a list, even if you want to run just one instance of the flow. */
List<Map<String,Object>> flowInputs = new List<Map<String,Object>{ flowInputVariables };

/* Initialize the flow as an action with the Action Type 'flow' and the API name of the flow */
Invocable.Action flowAction = Invocable.Action.createCustomAction('flow','MyFunFlow');

/* Use the input parameters to prepare the invocations that will be invoked */
flowAction.setInvocations(flowInputVariables);

/* Invoke the flow, assigning the results to a list of Invocable.Action.Result */
List<Invocable.Action.Result> flowResults = flowAction.invoke();

/* Read the results and outputs of the invocation */
for (Invocable.Action.Result result : flowResults) {
	if (result.isSuccess() == false) {
		// This invocation failed! read what the errors are with getErrors()
		List<Invocable.Action.Error> errors = result.getErrors();
	} else {
		// Success! Read the outputs with getOutputParameters()
		Map<String,Object> outputValues = result.getOutputParameters();
		String myFlowOutput = (String)outputValues.get('outputVariable');
		System.debug('Result: ' + myFlowOutput);
	}
}

Virheenkorjauslokeissa näytetään:

> Result: Hello World

Automaattisesti käynnistyvän kulun useiden esiintymien suorittaminen kutsuttavalla.Toimintoluokka ja yksi kutsu().

/* Set the input variable values into a Map<String,Object> with each input as a key, and the input value you want to set as the value. */
Map<String,Object> flowInput1 = new Map<String,Object>();
flowInput1.put('inputA','hello');
flowInput1.put('inputB','world');

Map<String,Object> flowInput2 = new Map<String,Object>();
flowInput2.put('inputA','foo');
flowInput2.put('inputB','bar');

/* Put the input map(s) into a list. Each item in this list represents a flow interview invoked together in a single batch run that uses  flow bulkification . You must use a list, even if you want to run one instance of the flow only. */
List<Map<String,Object>> flowInputs = new List<Map<String,Object>();
flowInputs.add(flowInput1);
flowInputs.add(flowInput2);

/* Initialize the flow as an action with the Action Type 'flow' and the API name of the flow */
Invocable.Action flowAction = Invocable.Action.createCustomAction('flow','MyFunFlow');

/* Use the input parameters to prepare the invocations that will be invoked */
flowAction.setInvocations(flowInputs);

/* Invoke the flow, setting the result to a list of Invocable.Action.Result */
List<Invocable.Action.Result> flowResults = flowAction.invoke();

/* Read the results and outputs of the invocation */
for (Invocable.Action.Result result : flowResults) {
	if (result.isSuccess() == false) {
		// This invocation failed! Read what the errors are with getErrors()
		List<Invocable.Action.Error> errors = result.getErrors();
	} else {
		// Success! Read the outputs with getOutputParameters()
		Map<String,Object> outputValues = result.getOutputParameters();
		String myFlowOutput = (String)outputValues.get('outputVariable');
		System.debug('Result: ' + myFlowOutput);
	}
}

Virheenkorjauslokeissa näytetään:

> Result: hello world > Result: foo bar
> Result: foo bar

Yksittäisen automaattisesti käynnistyvän kulun suorittaminen Apexista kulun kanssa.Haastattelu-luokka

Jos haluat suorittaa kulun käyttämällä Flow.Interview luokkaa, luo sen Flow.Interview esiintymä käyttämällä createInterview() menetelmää tai staattinen esiintymä Flow.Interview.FlowApiName. Määritä input-muuttujat ja suorita sitten start()-metodi. Kun olet suorittanut start()-metodin, voit lukea minkä tahansa output-muuttujan tulokset käyttämällä Flow.Interview-esiintymän getVariableValue()-metodia.

Voit suorittaa vain yhden Flow.Interview kerrallaan dynaamisilla tai staattisilla lähestymistavoilla.

Suorita kulku dynaamisesti kululla.Interview.createInterview()

/* Set the input variable values into a Map<String,Object> with each input as a key, and the input value you want to set as the value */
Map<String,Object> flowInputVariables = new Map<String,Object>();
flowInputVariables.put('inputA','hello');
flowInputVariables.put('inputB','world');

/* Initialize the flow using the API name of the flow and the list of inputs you've defined */
Flow.Interview myFlow = Flow.Interview.createInterview('MyFunFlow',flowInputVariables);

/* Invoke the flow, setting the result to a list of Invocable.Action.Result */
myFlow.start();

/* Read the results and outputs of the invocation */
String myFlowOutput = (String)myFlow.getVariableValue('outputVariable');

System.debug('Result: ' + myFlowOutput);
Result: hello world

Suorita kulku staattisesti kululla.Interview.FlowApiName

/* Set the input variable values into a Map<String,Object> with each input as a key, and the input value you want to set as the value */
Map<String,Object> flowInputVariables = new Map<String,Object>();
flowInputVariables.put('inputA','hello');
flowInputVariables.put('inputB','world');

/* Initialize the flow using the API name of the flow and the list of inputs you've defined. By using this mechanism, you are creating a static reference to the flow, meaning any deployment or packaging of this Apex  requires the flow to exist in the target org,deployment, or package */
Flow.Interview myFlow = new Flow.Interview.MyFunFlow(flowInputVariables);

/* Invoke the flow, setting the result to a list of Invocable.Action.Result */
myFlow.start();

/* Read the results and outputs of the invocation */
String myFlowOutput = (String)myFlow.getVariableValue('outputVariable');

System.debug('Result: ' + myFlowOutput);
> Result: hello world

Ruutukulkujen suorittaminen mukautetussa koodissa

Visualforcesta: Lisätietoja on kohdassa Kulun upottaminen Visualforce-sivulle

Mukautetusta Lightning: Katso lisätietoja kohdasta Kulun upottaminen mukautettuun Aura-komponenttiin

 
Ladataan
Salesforce Help | Article