Du är här:
Utöka komponenten OmniscriptBaseMixin
Aktivera en egen Lightning för att interagera med ett Omniscript genom att utöka komponenten OmniscriptBaseMixin. OmniscriptBaseMixin innehåller metoder för att uppdatera ett Omniscripts data-JSON, skicka parametrar, med mera.
När du har utökat komponenten OmniscriptBaseMixin, lägg till ett eget LWC-inmatningselement i ett Omniscript och specificera namnet på en komponent som utökar OmnIScriptBaseMixin. Se Eget LWC-element.
- Utöka komponenten
Få reda på hur en egen Lightning utökar OmniscriptBaseMixin-komponenten till att omge ett Salesforce Lightning. - Validera komponenten
Lär dig lägga till validering i komponenten OmniscriptBaseMixin genom att omdefinieracheckValidity(). - Navigering mellan steg
Få reda på vilka mixins du kan ställa in för stegen i ett Omniscript så att användare kan gå mellan dessa steg. - Spara data inuti en egen komponent
Om den egna komponenten inte finns i DOM, lagra data i ett läge. För att lagra data i en delstat, använd funktionenomniSaveState(). FunktionenomniSaveStateaccepterar tre argument: ett dataobjekt, en nyckel och en boolesk. - Hämta egna komponentdata från ett Omniscript
Använd funktionenomniGetSaveState()för att hämta egna komponentdata från ett Omniscript. - Rensa ett sparat läge från ett föregående steg
När en egen LWC:s sparade läge förlitar sig på data från ett föregående steg kan du villkorligt rensa det sparade läget för den egna LWC:n när en användare går till ett föregående steg. Efter konfigurationen skickar elementet Steg en boolesk flagga till den egna LWC:n. Koden i din egna LWC måste använda boolean för att avgöra om ett nytt sparat läge ska instansieras eller fortsätta använda det befintliga sparade läget. - Gå till layouten för komponenten OmniscriptBaseMixin
Anropa layouten för din egna LWC genom att skicka parametern data-omni-layout till metodengetAttribute. - Fjärrsamtal
Låt användare ringa fjärrsamtal från en egen LWC med hjälp av metodenomniRemoteCall(). - Data JSON-uppdatering
Uppdatera det egna Lightning, mappa svar till Omniscripts data-JSON och skapa och mappa data inuti det egna Lightning.
Utöka komponenten
Få reda på hur en egen Lightning utökar OmniscriptBaseMixin-komponenten till att omge ett 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;
}
}
Validera komponenten
Lär dig lägga till validering i komponenten OmniscriptBaseMixin genom att omdefiniera checkValidity().
checkValidity() som returnerar falskt när summan är mindre än noll.
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;
}
}
Spara data inuti en egen komponent
Om den egna komponenten inte finns i DOM, lagra data i ett läge. För att lagra data i en delstat, använd funktionen omniSaveState(). Funktionen omniSaveState accepterar tre argument: ett dataobjekt, en nyckel och en boolesk.
Metod: omniSaveState(input,key,usePubSub=false):
Argument:
input: De data som ska sparas.let mySaveState = {"my":"data"}; this.omniSaveState(mySaveState);key: (Valfritt) Ett strängvärde som objektparametern mappar till som ett nyckelvärdepar. Om en nyckel inte skickas som en parameter blir nyckeln som standard namnet på komponenten.let mySaveState = {"my":"data"}; let key = 'customLwcKey'; this.omniSaveState(mySaveState, key);usePubSub: (Valfritt) Sätt booleskt till sant för att lagra data för användning i ett pubsub-mönster. Mer information om pubsub-mönster finns i pubsub-händelser. När de lämnas tomma eller inställda på falskt kan händelser använda dessa data. Mer information om händelser finns i LWC-händelser. NäromniSaveStateär i endisconnectedCallbackmåsteusePubSubställas in tilltrueför att skicka händelsen i pubsub istället för händelsebubblande.
Om du vill kan du spara delstaten inom en frånkopplad callback. Att spara status inom en frånkopplad callback aktiverar status för elementet att spara när användare lämnar elementet automatiskt. I frånkopplade callbacks måste argumentet usePubSub vara satt till true. Händelser i frånkopplade callbacks kan endast skickas med pubsub.
omniSaveState som anropas i en disconnectedCallback:disconnectedCallback() {
let mySaveState = {"my":"data", "here" : 8};
let key = 'customLwcKey';
let usePubSub = true;
this.omniSaveState(mySaveState, key, usePubSub);
}Hämta egna komponentdata från ett Omniscript
Använd funktionen omniGetSaveState() för att hämta egna komponentdata från ett Omniscript.
omniGetSaveState(key): omniGetSaveState accepterar en nyckel som ett valfritt argument. Om ingen nyckel skickas blir nyckeln som standard namnet på den egna komponenten. Nyckeln lagrar data från omniSaveState().
Med ett nyckelargument:
let key = 'customLwcKey';
const state = this.omniGetSaveState(key);
Utan nyckel:
// assumes the data is inside of the same custom component
const state = this.omniGetSaveState()
Rensa ett sparat läge från ett föregående steg
När en egen LWC:s sparade läge förlitar sig på data från ett föregående steg kan du villkorligt rensa det sparade läget för den egna LWC:n när en användare går till ett föregående steg. Efter konfigurationen skickar elementet Steg en boolesk flagga till den egna LWC:n. Koden i din egna LWC måste använda boolean för att avgöra om ett nytt sparat läge ska instansieras eller fortsätta använda det befintliga sparade läget.
- I Omniscript, bestäm det steg som rensar det sparade läget för Egna LWC.
- I egenskaperna för steget, klicka på Redigera som JSON.
-
Ange egenskapens
"omniClearSaveState": [ ]. -
I egenskapen omniClearSaveState, ange namnet på ett eller flera egna LWC-element
"omniClearSaveState": [ "CustomLWC1"]. Steget skickar data till den egna LWC:n så att den egna LWC:n kan avgöra om steget återges. -
I din egna LWC-kod, hämta aktuell status.
const state = this.omniGetSaveState() -
I din egna LWC-kod, ange en variabel som är lika med
this.omniGetSaveState(this.omniJsonDef.name + '-$Vlocity.cleared'. Funktionen utvärderar om föregående steg som innehåller egenskapen omniClearSaveState återges och returnerar en boolesk.let stateCleared = this.omniGetSaveState(this.omniJsonDef.name + '-$Vlocity.cleared'); - Ändra din kod genom att använda det booleska värdet för att avgöra om du vill behålla det aktuella sparade läget eller instansiera ett nytt sparat läge.
Gå till layouten för komponenten OmniscriptBaseMixin
Anropa layouten för din egna LWC genom att skicka parametern data-omni-layout till metoden getAttribute.
this.getAttribute('data-omni-layout')
Fjärrsamtal
Låt användare ringa fjärrsamtal från en egen LWC med hjälp av metoden omniRemoteCall().
Metod: omniRemoteCall(params, boolean)
Argument:
- Det första argumentet måste vara ett objekt med egenskapsinmatningen, sClassName, sMethodName och alternativ. Värdena för var och en av egenskaperna måste vara i datatypen Sträng.Anteckning Metoder som anropas inom ett paket måste ha namnutrymmet förberett med ${this._ns}. Till exempel
`${this._ns}IntegrationProcedureService`.const params = { input: JSON.stringify(this.omniJsonData), sClassName: 'SomeApexClass', sMethodName: 'someApexMethod', options: '{}', }; - Det andra argumentet för omniRemoteCall är ett valfritt booleskt värde som länkar en spårad egenskap som heter
omniSpinnerEnabled. HTML-koden måste ha någon kod för att kontrollera booleans värde.Här är ett HTML-exempel:
<template if:true={omniSpinnerEnabled}> <div class="slds-spinner-container__wrapper"> <c-spinner variant="brand" alternative-text="Loading.." size="medium"> </c-spinner> </div> </template>
Efter att omniRemoteCall har körts returnerar callbacken ett objekt som innehåller de två egenskaperna result och error.
result: Resultategenskapen innehåller ett rått svar från servern.error: Felegenskapen lagrar ett felvärde från Vlocitys GenericInvoke2-klass.
Omnistudio tillhandahåller egenskaper som, när de skickas i alternativen, låter jobb vara köer, framtida, kedjebara och kontinuerliga.
- Fjärranrop som åberopar en Apex klass
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'); }); - Anrop för integreringsförfarande
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'); }); - Anrop för kedjeintegreringsförfarande som skickar egenskapens
chainable: true. Använd kedjebart när en integreringsprocess överskrider Salesforces styrande CPU-gräns.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'); }); - Köbart fjärrsamtal som skickar fastighetens
useQueueableApexRemoting: true. Mer information om hur köer fungerar finns i Köbar 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'); }); - Framtida fjärrsamtal som passerar fastighetens
useFuture: true. Mer information om hur framtida metoder fungerar finns i Framtida metoder.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'); }); - Fjärranrop för fortsättning som skickar parametern
useContinuation: true. Mer information om hur fortsättning fungerar finns i Fortsättningsklass.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-uppdatering
Uppdatera det egna Lightning, mappa svar till Omniscripts data-JSON och skapa och mappa data inuti det egna Lightning.
- Uppdatering av data för det egna Lightning
Tillämpa svaret från ett Eget LWC-anrop till Eget LWC-element genom att använda metodenomniUpdateDataJson. - Mappning av svar på Omniscriptets data-JSON
Tillämpa svar från egna åtgärder medomniApplyCallResp(). - Skapa och mappa data inuti det egna LWC-elementet
Konstruera ytterligare JSON-datanoder i Eget LWC-element och överför värden från elementet till de nya JSON-noderna med händelsenomniaggregate..
Uppdatering av data för det egna Lightning
Tillämpa svaret från ett Eget LWC-anrop till Eget LWC-element genom att använda metoden omniUpdateDataJson.
Metod: omniUpdateDataJson(input, aggregateOverride =
false)
Argument:
input: Det första argumentet, indata, accepterar data i ett objekt eller en primitiv datatyp. Odefinierad accepteras inte. Indata ersätter antingen det aktuella värdet eller kopplas till befintliga data beroende på inställningen för det andra argumentet,aggregateOverride.aggregateOverride: Det andra argumentet, aggregrateOverride, styr hur data sparas till data-JSON. Det är ett valfritt argument som är inställt till falskt som standard. När satt till falskt slås indata samman med befintliga data. Om data inte är ett objekt kopplas de inte till data-JSON. När satt till sant åsidosätter indata befintliga data i elementet Egen LWC.
- Skicka
inputmed standardbeteendet föraggregrateOverride:let myData = "myvalue" // any kind of data that is a string, object, number, etc this.omniUpdateDataJson(this.myData); - Skicka argumentet
inputmed argumentetaggregateOverridesatt till falskt:// 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" } }
Mappning av svar på Omniscriptets data-JSON
Tillämpa svar från egna åtgärder med omniApplyCallResp().
Metoden accepterar ett objekt som den skickar till Omniscriptets data-JSON. Om rotdatanodnamnet i svaret matchar ett elementnamn i Omniscriptet fyller dessa data i elementet i förväg, och eventuella kapslade element, när de återges i Omniscriptet. Om rotnodnamnet inte matchar ett element i data-JSON infogas noden i data-JSON omedelbart. Att tillämpa svaret fungerar liknande egenskapen Skicka/Svara. Mer information finns i Hantera JSON med egenskaperna för Skicka/Svara-transformationer.
input = JSON.parse(JSON.stringify(input));
this.omniApplyCallResp(input);
Metod: omniApplyCallResp(response, usePubsub = false)
Argument:
response: Objekt som kopplas till data-JSON.usePubSub: Styr hur svaret skickas upp till Omniscript-sidhuvudet för att kopplas till data-JSON. Denna booleska är inställd till falskt som standard. När satt till falskt skickasresponsetill Omniscript-sidhuvudet via javascript-händelser. När satt till sant skickasresponsetill Omniscript-sidhuvudet av modulen pubsub.Argumentet usePubSub låter användare anropa
omniApplyCallRespasynkront. När du kör asynkront blockeras inte användargränssnittet i väntan på svaret.Om du vill kan du utföra ett fjärranrop med metoden omniNextStep() och anropa
omniApplyCallResp()asynkront.
- Se aktuell data-JSON innan du kör omniApplyCallResp().
{ "Step1" : { "Currency1" : 12345, "Text1" : "data1" }, "Step2" : { "Text3": "data3" } } - Anropa omniApplyCallResp och skicka data som ett argument.
let myData = { "Step1" : { "CustomLWC1" : "newprop" }, "Anotherprop" : { "prop1" : "anothervalue" } } this.omniApplyCallResp(myData); - Visa JSON för uppdaterade data.
{ "Step1" : { "Currency1" : 12345, "Text1" : "data1", "CustomLWC1" : "newprop" }, "Step2" : { "Text3": "data3" }, "Anotherprop" : { "prop1" : "anothervalue" } }
Skapa och mappa data inuti det egna LWC-elementet
Konstruera ytterligare JSON-datanoder i Eget LWC-element och överför värden från elementet till de nya JSON-noderna med händelsen omniaggregate..
Mer information om händelser finns i Skapa och skicka händelser.
Händelse: omniaggregate
-
Skapa en egen aggregeringsfunktion och sätt
omniaggregatetill en variabel.Exempel:customAggregate() { const eventName = 'omniaggregate' } -
Skapa en variabel för att lagra LWC-elementets indata.
Exempel:
customAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; } -
Konstruera ett objekt genom att mappa data till nyckeldata och ett elementnamn till key elementId.
Exempel:
customAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; const detail = { data: data, elementId: 'elementName2' }; } -
(Valfritt) I detaljobjektet, inkludera
aggregateOverride: truenyckelvärdepar för att åsidosätta alla befintliga data i elementet Egen LWC.Exempel:customAggregate() { const eventName = 'omniaggregate' const data = { anyKeyName : 'myElementData' }; const detail = { data: data, elementId: 'elementName2', aggregateOverride: true }; } -
Skapa ett nytt händelseobjekt som skickar händelsen omniaggregat och ett objekt som innehåller dessa fyra egenskaper:
- bubblor: En boolesk som avgör om händelsen bubblar upp till DOM.
- annullerbar: En boolesk som avgör om händelsen går att avbryta.
- består av: En boolesk som avgör om händelsen kan passera genom skugggränsen.
- detalj: Data som skickas i händelsen.
Exempel: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, }); } -
Anropa
this.dispatchEvent()och skicka i händelseobjektet som en parameter.Kodexempel
Exempel på JSON-resultat för data
// 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" } }
