top of page
OmniStudioFactBg.png
Writer's pictureAnil H M

How to call an Integration procedure from LWC

Updated: May 10, 2023

Enable a custom Lightning web component to interact with OmniScript by extending the OmniScriptBaseMixin component. The OmniScriptBaseMixin includes methods to update OmniScript's data JSON, pass parameters, and more.


Steps to follow:

  • Import and extend OmniScriptBaseMixin in the LWC js.

  • import { OmniscriptBaseMixin } from 'NS/omniscriptBaseMixin';

  • runtimeNamespace: If Lightning Web Security (LWS) is disabled, add the namespace of your Vlocity package to the XML metadata file in your component by using the runtimeNamespace metadata tag.

  • <runtimeNamespace>NS<runtimeNamespace>

  • isExposed: Set the isExposed metadata tag to true.

In order to call the Integration Procedure the Custom LWCs extending the OmniScript Base Mixin must use the omniRemoteCall() function i.e., omniRemoteCall(params, boolean)



1. The first parameter of this method will be an object with the below properties:

  • input: Pass the JSON string needed for the Integration Procedure

  • sClassName: use the IntegrationProcedureService prefixed by the namespace

  • sMethodName: specify the name of the Integration Procedure in the format of type_subtype

  • options: set the optional parameters to enable jobs to be queuable, future, chainable, and continuable.

So, it should be framed like the below:

const params = {
	input: JSON.stringify(this.omniJsonData),
	sClassName: '{this._ns}IntegrationProcedureService',//Example:   sClassName:'omnistudio.IntegrationProcedureService',
	sMethodName: 'test_RemoteAction', //this will need to match the VIP -> type_subtype
	options: '{}',
};

2. The second parameter of the omniRemoteCall function is an optional boolean value which will be passed to the omniSpinnerEnabled variable.

Example syntax to use the omniRemoteCall method:

this.omniRemoteCall(params, true).then(response => {
	window.console.log(response, 'response');
}).catch(error => {
	window.console.log(error, 'error');
});

After omniRemoteCall executes, the response callback returns an object containing the two properties' result and error.

  • result: The result property contains a raw response from the server.

  • error: The error property stores an error value from the Vlocity's GenericInvoke2 class.

Let's see the complete implementation in the below example:

const options = {
	chainable: true, //Use chainable when an Integration Procedure exceeds the Salesforce CPU Governor limit.
useFuture: 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');
});


6,378 views1 comment

Recent Posts

See All

1 comentario


Invitado
07 may

This guidance is giving me the following error: Unexpected character ('a' (code 97)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]"},"error":true}


My params are listed below (Note: VersionId is a string). Any suggestions on what could be causing this?

       const params = {

        input: versionId,

        sClassName: 'omnistudio.IntegrationProcedureService',

         sMethodName: 'FormMgmt_MetadataRetrieval',

         options: '{}'

        };

Editado
Me gusta
bottom of page