Skip to content

Commit aa27714

Browse files
author
Adam Rutland
authored
Merge pull request #505 from vlocityinc/patch_js
Fix for OmniScript Activation with jsRemote failing because of Winter…
2 parents d784a5e + 050a16a commit aa27714

File tree

3 files changed

+68
-32
lines changed

3 files changed

+68
-32
lines changed

lib/datapacksutils.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,6 +2620,27 @@ DataPacksUtils.prototype.loadFilesFromDir = function(srcpath) {
26202620
return this.loadedFiles;
26212621
}
26222622

2623+
DataPacksUtils.prototype.activateOmniScript = async function(omniscriptId) {
2624+
var self = this;
2625+
2626+
var payload = {
2627+
sClassName: this.vlocity.namespace + '.EmbeddingBusinessProcessController.EmbeddingBusinessProcessControllerOpen',
2628+
sMethodName: 'activateScript',
2629+
input: JSON.stringify({
2630+
sBPId: omniscriptId,
2631+
index: 1
2632+
})
2633+
};
2634+
2635+
VlocityUtils.verbose('Activating OmniScript', omniscriptId);
2636+
2637+
if (self.vlocity.namespace) {
2638+
payload = JSON.parse(JSON.stringify(payload).replace(/%vlocity_namespace%/g, self.vlocity.namespace));
2639+
}
2640+
2641+
return await this.vlocity.datapacks.makeApexPostRequest('/' + this.vlocity.namespace + '/v1/invoke/', payload);
2642+
}
2643+
26232644
DataPacksUtils.prototype.jsRemote = async function(action, method, data, page) {
26242645

26252646
var body = {

lib/datapacktypes/omniscript.js

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -420,48 +420,54 @@ OmniScript.prototype.onActivateError = async function (dataPackData) {
420420
var currentOmniScriptId = dataPackData.dataPacks[0].VlocityDataPackRecords[0].VlocityRecordSalesforceId;
421421

422422
if (currentOmniScriptId && omniScriptDataPack[this.osFieldMap(`${defaultNS}IsReusable__c`)]) {
423+
var searchKey = `${omniScriptDataPack[this.osFieldMap(`${defaultNS}Type__c`)]}|${omniScriptDataPack[this.osFieldMap(`${defaultNS}SubType__c`)]}|${omniScriptDataPack[this.osFieldMap(`${defaultNS}Language__c`)]}`;
423424

424-
if (!this.vlocity.sfdxUsername && !this.vlocity.oauthConnection) {
425-
VlocityUtils.log('Skipping Individual Activation because using SFDX Authentication is required');
426-
} else {
427-
var searchKey = `${omniScriptDataPack[this.osFieldMap(`${defaultNS}Type__c`)]}|${omniScriptDataPack[this.osFieldMap(`${defaultNS}SubType__c`)]}|${omniScriptDataPack[this.osFieldMap(`${defaultNS}Language__c`)]}`;
425+
VlocityUtils.verbose('Handling Reusable OmniScript Activation Directly', searchKey)
426+
427+
var resultOfActivate = await this.vlocity.datapacksutils.activateOmniScript(currentOmniScriptId);
428428

429-
VlocityUtils.verbose('Handling Reusable OmniScript Activation Directly', searchKey)
430-
431-
var resultOfActivate = await this.vlocity.datapacksutils.jsRemote(`${this.vlocity.namespace}.EmbeddingBusinessProcessController`, 'activateScript', [ currentOmniScriptId, 1], `${this.vlocity.namespace}__embeddingbusinessprocesspage`);
429+
try {
430+
if (typeof resultOfActivate == "string") {
431+
resultOfActivate = JSON.parse(resultOfActivate);
432+
}
433+
} catch (e) {
434+
throw resultOfActivate;
435+
}
432436

433-
if (resultOfActivate && resultOfActivate[0].statusCode >= 300) {
434-
VlocityUtils.error('Error Activating OmniScript', resultOfActivate[0].message);
437+
if (resultOfActivate.errorCode != "INVOKE-200") {
438+
VlocityUtils.error('Error Activating OmniScript', resultOfActivate.error);
435439

436-
onActivateErrorResult.ActivationStatus = 'Error';
437-
onActivateErrorResult.message = resultOfActivate[0].message;
440+
onActivateErrorResult.ActivationStatus = 'Error';
441+
onActivateErrorResult.message = resultOfActivate.error;
438442

439-
return onActivateErrorResult;
440-
}
443+
return onActivateErrorResult;
444+
}
441445

442-
let reusableOmnis = await this.vlocity.jsForceConnection.query(this.vlocity.omnistudio.updateQuery(`SELECT Id, ${this.vlocity.namespacePrefix}OmniScriptId__c FROM ${this.vlocity.namespacePrefix}Element__c WHERE ${this.vlocity.namespacePrefix}SearchKey__c = '${searchKey}' AND ${this.vlocity.namespacePrefix}OmniScriptId__r.${this.vlocity.namespacePrefix}IsActive__c = true`));
446+
let reusableOmnis = await this.vlocity.jsForceConnection.query(this.vlocity.omnistudio.updateQuery(`SELECT Id, ${this.vlocity.namespacePrefix}OmniScriptId__c FROM ${this.vlocity.namespacePrefix}Element__c WHERE ${this.vlocity.namespacePrefix}SearchKey__c = '${searchKey}' AND ${this.vlocity.namespacePrefix}OmniScriptId__r.${this.vlocity.namespacePrefix}IsActive__c = true`));
447+
448+
for (var i = 0; i < reusableOmnis.records.length; i++) {
443449

444-
for (var i = 0; i < reusableOmnis.records.length; i++) {
445-
446-
var activationResult = await this.vlocity.datapacksutils.jsRemote(`${this.vlocity.namespace}.EmbeddingBusinessProcessController`, 'activateScript', [ reusableOmnis.records[i][`${this.vlocity.namespacePrefix}OmniScriptId__c`], 1], `${this.vlocity.namespacePrefix}embeddingbusinessprocesspage`);
450+
var activationResult = await this.vlocity.datapacksutils.activateOmniScript(reusableOmnis.records[i][this.osFieldMap(`${this.vlocity.namespacePrefix}OmniScriptId__c`)]);
447451

448-
if (activationResult && activationResult instanceof Array) {
449-
activationResult = activationResult[0];
450-
} else if (activationResult && typeof(activationResult) === 'string') {
452+
try {
453+
if (typeof activationResult == "string") {
451454
activationResult = JSON.parse(activationResult);
452455
}
453-
454-
if (activationResult.statusCode < 400) {
455-
onActivateErrorResult.ActivationStatus = 'Success';
456-
} else {
457-
onActivateErrorResult.ActivationStatus = 'Error';
458-
onActivateErrorResult.message = activationResult.message;
459-
break;
460-
}
456+
} catch (e) {
457+
throw activationResult;
461458
}
462459

463-
return onActivateErrorResult;
460+
if (activationResult.errorCode == "INVOKE-200") {
461+
onActivateErrorResult.ActivationStatus = 'Success';
462+
} else {
463+
onActivateErrorResult.ActivationStatus = 'Error';
464+
onActivateErrorResult.message = activationResult.error;
465+
break;
466+
}
464467
}
468+
469+
return onActivateErrorResult;
470+
465471
}
466472

467473
return null;

lib/datapacktypes/vlocityuitemplate.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,19 @@ VlocityUITemplate.prototype.onDeployFinish = async function(jobInfo) {
2222

2323
VlocityUITemplate.prototype.activateOmniScript = async function(inputMap) {
2424
var omniscript = inputMap.omniscript;
25-
var resultOfActivate = await this.vlocity.datapacksutils.jsRemote(`${this.vlocity.namespace}.EmbeddingBusinessProcessController`, 'activateScript', [ omniscript.Id, 1], `${this.vlocity.namespace}__embeddingbusinessprocesspage`);
2625

27-
if (resultOfActivate && resultOfActivate[0].statusCode >= 300) {
28-
VlocityUtils.error('Error Re-Activating OmniScript', resultOfActivate[0].message);
26+
var resultOfActivate = await this.vlocity.datapacksutils.activateOmniScript(omniscript.Id);
27+
28+
try {
29+
if (typeof resultOfActivate == "string") {
30+
resultOfActivate = JSON.parse(resultOfActivate);
31+
}
32+
} catch (e) {
33+
throw resultOfActivate;
34+
}
35+
36+
if (resultOfActivate.errorCode != "INVOKE-200") {
37+
VlocityUtils.error('Error Re-Activating OmniScript', omniscript.Id, resultOfActivate);
2938
}
3039
}
3140

0 commit comments

Comments
 (0)