breadcrumbDescription
Udvid OmniscriptBaseMixin-komponenten
Aktiver en tilpasset Lightning for at interagere med et Omniscript ved at udvide OmniscriptBaseMixin-komponenten. OmniscriptBaseMixin indeholder metoder til at opdatere en Omniscripts data-JSON, overførsel af parametre mm.
Når du har udvidet OmniscriptBaseMixin-komponenten, skal du føje et tilpasset LWC-inputelement til et Omniscript og angive navnet på en komponent, der udvider OmnIScriptBaseMixin. Se Tilpasset LWC-element.
- Udvid komponenten
Find ud af, hvordan en tilpasset Lightning udvider OmniscriptBaseMixin-komponenten til at pakke et Salesforce Lightning - Valider komponenten
Find ud af, hvordan du føjer validering til OmniscriptBaseMixin-komponenten ved at omdefinerecheckValidity()-funktionen. - Navigation mellem trin
Find ud af, hvilke blandinger du kan angive på trinene i et Omniscript, så brugere kan navigere mellem disse trin. - Datalagring i en tilpasset komponent
Når den tilpassede komponent ikke findes i DOM, skal du gemme dataene i en tilstand. Hvis du vil lagre data i en tilstand, skal du bruge funktionenomniSaveState(). FunktionenomniSaveStateaccepterer tre argumenter: et dataobjekt, en nøgle og et boolesk. - Hentning af tilpassede komponentdata fra et Omniscript
BrugomniGetSaveState()til at hente tilpassede komponentdata fra et Omniscript. - Ryd en gemt stat fra et tidligere trin
Når en tilpasset LWC's gemte tilstand er baseret på data fra et tidligere trin, kan du betinget rydde den gemte tilstand for den tilpassede LWC, når en bruger navigerer til et tidligere trin. Efter konfigurationen overfører trinelementet et boolesk flag til det tilpassede LWC. Koden i din tilpassede LWC skal bruge boolesk til at bestemme, om den skal oprette en ny gemt tilstand eller fortsætte med at bruge den eksisterende gemte tilstand. - Få adgang til layoutet af OmniscriptBaseMixin-komponenten
Kald layoutet for din tilpassede LWC ved at overføre data-omni-layout-parameteren tilgetAttribute-metoden. - Fjernopkald
Gør det muligt for brugere at foretage fjernopkald fra en tilpasset LWC ved brug afomniRemoteCall()-metoden. - Data JSON-opdatering
Opdater det tilpassede Lightning Web-komponentelement, tilknyt svar til Omniscripts data JSON, og opret og tilknyt data i det tilpassede Lightning Web-komponentelement.
Related information html
Udvid komponenten
Find ud af, hvordan en tilpasset Lightning udvider OmniscriptBaseMixin-komponenten til at pakke et Salesforce Lightning
import tmpl from './customLightningElement.html';
import { LightningElement } from 'lwc';
import { OmniscriptBaseMixin } from 'c/omniscriptBaseMixin';
export default class customLightningElementWithMixin extends OmniscriptBaseMixin(LightningElement) {
handleBlur(evt) {
this.omniUpdateDataJson(evt.target.value);
}
render() {
return tmpl;
}
}
Valider komponenten
Find ud af, hvordan du føjer validering til OmniscriptBaseMixin-komponenten ved at omdefinere checkValidity()-funktionen.
checkValidity()-funktion, der returnerer false, når summen er mindre end nul.
import { api } from 'lwc';
import { OmniscriptBaseMixin } from 'c/omniscriptBaseMixin';
export default class MyCustomLwc extends OmniscriptBaseMixin(LightningElement) {
sum = 0;
// defining custom validation conditions
@api checkValidity() {
return this.sum < 100;
}
}
Datalagring i en tilpasset komponent
Når den tilpassede komponent ikke findes i DOM, skal du gemme dataene i en tilstand. Hvis du vil lagre data i en tilstand, skal du bruge funktionen omniSaveState(). Funktionen omniSaveState accepterer tre argumenter: et dataobjekt, en nøgle og et boolesk.
Metode: omniSaveState(input,key,usePubSub=false):
Argumenter:
input: De data, der skal gemmes.let mySaveState = {"my":"data"}; this.omniSaveState(mySaveState);key: (Valgfrit) En strengværdi, som objektparameteren tilknyttes til som et nøgle-værdi-par. Hvis en nøgle ikke sendes som en parameter, indstilles nøglen som standard til navnet på komponenten.let mySaveState = {"my":"data"}; let key = 'customLwcKey'; this.omniSaveState(mySaveState, key);usePubSub: (Valgfrit) Indstil boolesk til true for at lagre data til brug i et pubsub-mønster. Hvis du ønsker flere oplysninger om pubsub-mønstre, kan du se pubsub-begivenheder. Når den efterlades tom eller indstilles til falsk, kan begivenhederne bruge dataene. Hvis du ønsker flere oplysninger om begivenheder, kan du se LWC Events. NåromniSaveStateer i endisconnectedCallback, skalusePubSubindstilles tiltruefor at videregive begivenheden i pubsub i stedet for begivenhedsbobler.
Gem eventuelt tilstanden i et afbrudt tilbagekald. Lagring af tilstanden i et afbrudt tilbagekald aktiverer tilstanden for elementet, der skal gemmes, når brugere forlader elementet automatisk. I afbrudte tilbagekald skal usePubSub indstilles til true. Begivenheder i afbrudte tilbagekald kan kun videregives ved brug af pubsub.
omniSaveState, der kaldes i en disconnectedCallback:disconnectedCallback() {
let mySaveState = {"my":"data", "here" : 8};
let key = 'customLwcKey';
let usePubSub = true;
this.omniSaveState(mySaveState, key, usePubSub);
}Hentning af tilpassede komponentdata fra et Omniscript
Brug omniGetSaveState() til at hente tilpassede komponentdata fra et Omniscript.
omniGetSaveState(key): OmniGetSaveState accepterer en nøgle som et valgfrit argument. Hvis en nøgle ikke sendes, sættes nøglen som standard til navnet på den tilpassede komponent. Nøglen lagrer dataene fra omniSaveState().
Med et nøgleargument:
let key = 'customLwcKey';
const state = this.omniGetSaveState(key);
Uden nøgle:
// assumes the data is inside of the same custom component
const state = this.omniGetSaveState()
Ryd en gemt stat fra et tidligere trin
Når en tilpasset LWC's gemte tilstand er baseret på data fra et tidligere trin, kan du betinget rydde den gemte tilstand for den tilpassede LWC, når en bruger navigerer til et tidligere trin. Efter konfigurationen overfører trinelementet et boolesk flag til det tilpassede LWC. Koden i din tilpassede LWC skal bruge boolesk til at bestemme, om den skal oprette en ny gemt tilstand eller fortsætte med at bruge den eksisterende gemte tilstand.
- I Omniscript skal du bestemme det trin, der rydder tilstanden for tilpassede LWC'er, der er gemt.
- I trinnets egenskaber skal du klikke på Rediger som JSON.
-
Angiv egenskabens
"omniClearSaveState": [ ]. -
I egenskaben omniClearSaveState skal du angive navnet på en eller flere tilpassede LWC-element-
"omniClearSaveState": [ "CustomLWC1"]. Trinnet sender data til den tilpassede LWC, der aktiverer den tilpassede LWC til at bestemme, om trinnet blev gengivet. -
I din tilpassede LWC-kode skal du hente den aktuelle tilstand.
const state = this.omniGetSaveState() -
I din tilpassede LWC-kode skal du angive en variabel, der er lig med
this.omniGetSaveState(this.omniJsonDef.name + '-$Vlocity.cleared'. Funktionen evaluerer, om det forrige trin, der indeholder omniClearSaveState-egenskaben, gengives og returnerer et boolesk.let stateCleared = this.omniGetSaveState(this.omniJsonDef.name + '-$Vlocity.cleared'); - Rediger din kode ved at bruge den booleske værdi til at bestemme, om den aktuelle gemte tilstand skal bevares eller om der skal oprettes en ny gemt tilstand.
Få adgang til layoutet af OmniscriptBaseMixin-komponenten
Kald layoutet for din tilpassede LWC ved at overføre data-omni-layout-parameteren til getAttribute-metoden.
this.getAttribute('data-omni-layout')
Fjernopkald
Gør det muligt for brugere at foretage fjernopkald fra en tilpasset LWC ved brug af omniRemoteCall()-metoden.
Metode: omniRemoteCall(params, boolean)
Argumenter:
- Det første argument skal være et objekt med egenskabsinput, sClassName, sMethodName og indstillinger. Værdierne for hver af egenskaberne skal være i strengdatatypen.Bemærk Metoder, der kaldes i en pakke, skal have navneområdet foranstillet med ${this._ns}. F.eks.
`${this._ns}IntegrationProcedureService`.const params = { input: JSON.stringify(this.omniJsonData), sClassName: 'SomeApexClass', sMethodName: 'someApexMethod', options: '{}', }; - Det andet argument for omniRemoteCall er en valgfri boolesk værdi, der linker til en sporet egenskab ved navn
omniSpinnerEnabled. HTML'en skal have noget kode for at kontrollere boolesk værdi.Her er et HTML-eksempel:
<template if:true={omniSpinnerEnabled}> <div class="slds-spinner-container__wrapper"> <c-spinner variant="brand" alternative-text="Loading.." size="medium"> </c-spinner> </div> </template>
Når omniRemoteCall er udført, returnerer svartilbagekaldet et objekt, der indeholder de to egenskaber result og error.
result: Resultategenskaben indeholder et rå svar fra serveren.error: Fejleegenskaben lagrer en fejlværdi fra Vlocity's GenericInvoke2-klasse.
Omnistudio leverer egenskaber, der, når de overføres i indstillingerne, gør det muligt for job at være i kø, fremtidige, kæde- og fortsatte.
- Fjernopkald, der kalder en Apex
const params = { input: this.omniJsonDataS, sClassName: 'SomeApexClass', sMethodName: 'someApexMethod', options: '{}', }; this.omniRemoteCall(params, true).then(response => { window.console.log(response, 'response'); }).catch(error => { window.console.log(error, 'error'); }); - Integrationsprocedure-kald
const params = { input: this.omniJsonDataStr, sClassName: `${this._ns}IntegrationProcedureService`, sMethodName: 'test_RemoteAction', this will need to match the VIP -> type_subtype options: '{}', }; this.omniRemoteCall(params, true).then(response => { window.console.log(response, 'response'); }).catch(error => { window.console.log(error, 'error'); }); - Kædbar integrationsprocedurekald, der passerer ejendommens
chainable: true. Brug den, der kan kædes, når en integrationsprocedure overskrider grænsen for Salesforce CPU-styring.const options = { chainable: true, }; const params = { input: this.omniJsonDataStr, sClassName: `${this._ns}IntegrationProcedureService`, sMethodName: 'test_RemoteAction', this will need to match the VIP -> type_subtype options: JSON.stringify(options), }; this.omniRemoteCall(params, true).then(response => { window.console.log(response, 'response'); }).catch(error => { window.console.log(error, 'error'); }); - Fjernopkald i kø, der passerer ejendommens
useQueueableApexRemoting: true. Hvis du ønsker flere oplysninger om, hvordan Køfunktioner fungerer, kan du se Kø Apex.const options = { input: this.omniJsonDataStr, vlcClass: 'SomeApexClass', vlcMethod: 'someApexMethod', useQueueableApexRemoting: true, }; const params = { input: this.omniJsonDataStr, sClassName: `${this._ns}VFActionFunctionController.VFActionFunctionControllerOpen`, sMethodName: 'runActionFunction', options: JSON.stringify(options), }; this.omniRemoteCall(params, true).then(response => { window.console.log(response, 'response'); }).catch(error => { window.console.log(error, 'error'); }); - Fremtidig fjernopkald, der passerer ejendommens
useFuture: true. Hvis du ønsker flere oplysninger om, hvordan fremtidige metoder fungerer, kan du se Future Methods.const options = { useFuture: true, }; const params = { input: this.omniJsonDataStr, sClassName: 'SomeApexClass', sMethodName: 'someApexMethod', options: JSON.stringify(options), }; this.omniRemoteCall(params, true).then(response => { window.console.log(response, 'response'); }).catch(error => { window.console.log(error, 'error'); }); - Fortsæt fjernopkald, der overfører parameteren
useContinuation: true. Hvis du ønsker flere oplysninger om, hvordan fortsættelse fungerer, kan du se Fortsætningsklasse.const options = { input: this.omniJsonDataStr, vlcClass: 'SomeApexClass', vlcMethod: 'someApexMethod', useContinuation: true, }; const params = { input: this.omniJsonDataStr, sClassName: 'SomeApexClass', sMethodName: 'someApexMethod', options: JSON.stringify(options), }; this.omniRemoteCall(params, true).then(response => { window.console.log(response, 'response'); }).catch(error => { window.console.log(error, 'error'); });
Data JSON-opdatering
Opdater det tilpassede Lightning Web-komponentelement, tilknyt svar til Omniscripts data JSON, og opret og tilknyt data i det tilpassede Lightning Web-komponentelement.
- Opdatering af det tilpassede Lightning data
Anvend svaret fra et tilpasset LWC-udkald på det tilpassede LWC-element ved brug afomniUpdateDataJson-metoden. - Tilknytning af svar til Omniscripts data-JSON
Anvend svar fra tilpassede handlinger ved brug afomniApplyCallResp()-metoden. - Opret og tilknyt data i det tilpassede LWC-element
Konstruer yderligere data JSON-noder i det tilpassede LWC-element, og overfør værdier ned fra elementet til de nye JSON-noder ved brug afomniaggregate.
Opdatering af det tilpassede Lightning data
Anvend svaret fra et tilpasset LWC-udkald på det tilpassede LWC-element ved brug af omniUpdateDataJson-metoden.
Metode: omniUpdateDataJson(input, aggregateOverride =
false)
Argumenter:
input: Det første argument, input, accepterer data i et objekt eller en primitiv datatype. Ikke defineret accepteres ikke. Inputdataene erstatter enten den aktuelle værdi eller flettes med de eksisterende data afhængigt af indstillingen af det andet argument,aggregateOverride.aggregateOverride: Det andet argument, aggregrateOverride, kontrollerer, hvordan data gemmes i data-JSON. Det er et valgfrit argument, der som standard er indstillet til falsk. Når den er indstillet til falsk, flettes inputdataene med de eksisterende data. Hvis dataene ikke er et objekt, flettes de ikke i data-JSON. Når den er indstillet til true, tilsidesætter inputdata eventuelle eksisterende data i Tilpasset LWC-elementet.
- Overfør
input-argumentet med standardadfærdenaggregrateOverride:let myData = "myvalue" // any kind of data that is a string, object, number, etc this.omniUpdateDataJson(this.myData); - Videregiv
input-argumentet medaggregateOverride-argumentet indstillet til falsk:// 1. first call to omniUpdateDataJson // input for omniUpdateDataJson when aggregateOverride = false { "prop1" : "data1" } // 2. output of data JSON after the first call // { "Step1" : { "CustomLWC1" : { "prop1": "data1" } } // 3. second call to omniUpdateDataJson // input for omniUpdateDataJson when aggregateOverride = false { "prop2" : "data2" } // 4. output of data JSON after the second call // notice that the value of CustomLWC1 contains both prop1 and prop2 // because the data is merged instead of replaced when aggregateOverride is set to false { "Step1" : { "CustomLWC1" : { "prop1": "data1", "prop2": "data2" } }
Tilknytning af svar til Omniscripts data-JSON
Anvend svar fra tilpassede handlinger ved brug af omniApplyCallResp()-metoden.
Metoden accepterer et objekt, som den overfører til Omniscripts data-JSON. Hvis rodenodens navn i svaret matcher et elementnavn i Omniscript, udfylder disse data elementet og eventuelle indlejrede elementer på forhånd, når de gengives i Omniscript. Hvis rodnodenavnet ikke matcher et element i data-JSON, indsættes noden straks i data-JSON. Anvendelse af svaret fungerer på samme måde som egenskaben Send/svar. Hvis du ønsker flere oplysninger, kan du se Manipuler JSON med Egenskaber for Send/svar-transformationer.
input = JSON.parse(JSON.stringify(input));
this.omniApplyCallResp(input);
Metode: omniApplyCallResp(response, usePubsub = false)
Argumenter:
response: Objekt, der flettes i data-JSON.usePubSub: Kontrollerer, hvordan svaret overføres op til Omniscript-sidehovedet for at flette ind i data-JSON. Dette booleske er som standard indstillet til falsk. Når den er indstillet til falsk, sendesresponsetil Omniscript-sidehovedet via javascript-begivenheder. Når det er indstillet til sandt, sendesresponsetil Omniscript-sidehovedet af pubsub-modulet.Argumentet usePubSub gør det muligt for brugere at kalde
omniApplyCallRespasynkront. Når den kører asynkront, blokeres brugergrænsefladen ikke, når den venter på svaret.Du kan også foretage et fjernopkald ved at bruge omniNextStep()-metoden og kalde
omniApplyCallResp()asynkront.
- Vis de aktuelle data JSON før kørsel af omniApplyCallResp().
{ "Step1" : { "Currency1" : 12345, "Text1" : "data1" }, "Step2" : { "Text3": "data3" } } - Kald omniApplyCallResp, og overfør data som et argument.
let myData = { "Step1" : { "CustomLWC1" : "newprop" }, "Anotherprop" : { "prop1" : "anothervalue" } } this.omniApplyCallResp(myData); - Få vist den opdaterede data-JSON.
{ "Step1" : { "Currency1" : 12345, "Text1" : "data1", "CustomLWC1" : "newprop" }, "Step2" : { "Text3": "data3" }, "Anotherprop" : { "prop1" : "anothervalue" } }
Opret og tilknyt data i det tilpassede LWC-element
Konstruer yderligere data JSON-noder i det tilpassede LWC-element, og overfør værdier ned fra elementet til de nye JSON-noder ved brug af omniaggregate.
Hvis du ønsker flere oplysninger om begivenheder, kan du se Opret og udsend begivenheder.
Begivenhed: omniaggregate
-
Opret en tilpasset aggregeringsfunktion, og indstil
omniaggregatetil en variabel.Eksempel:customAggregate() { const eventName = 'omniaggregate' } -
Opret en variabel til at lagre LWC-elementets inputdata.
Eksempel:
customAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; } -
Konstruer et objekt ved at tilknytte dataene til nøgledataene, og et elementnavn til nøgle-elementId.
Eksempel:
customAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; const detail = { data: data, elementId: 'elementName2' }; } -
(Valgfrit) I detaljeobjektet skal du inkludere nøgle-værdi-par
aggregateOverride: truefor at tilsidesætte alle eksisterende data i det tilpassede LWC-element.Eksempel:customAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; const detail = { data: data, elementId: 'elementName2', aggregateOverride: true }; } -
Opret et nyt begivenhedsobjekt, der overfører omniaggregeringsbegivenheden og et objekt, der indeholder disse fire egenskaber:
- bobler: En boolesk, der bestemmer, om begivenheden bobler op til DOM.
- kan annulleres: En boolesk værdi, der bestemmer, om begivenheden kan annulleres.
- bestående af: En boolesk, der bestemmer, om begivenheden kan passere gennem skyggegrænsen.
- detalje: Data, der blev overført i begivenheden.
Eksempel:omniAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; const detail = { data: data, elementId: 'elementName2' }; const myEvent = new CustomEvent(eventName, { bubbles: true, cancelable: true, composed: true, detail: detail, }); } -
Kald
this.dispatchEvent(), og overfør begivenhedsobjektet som en parameter.Kodeeksempel
Eksempel på data JSON-resultat
// code to call omniAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; const detail = { data: data, elementId: 'elementName2' }; const myEvent = new CustomEvent(eventName, { bubbles: true, cancelable: true, composed: true, detail: detail, }); this.dispatchEvent(myEvent); }"CustomLWC12": { "elementName1": { "prop": "prop1" }, "elementName2": { "anyKeyName": "myElementData" } }
