How to Add conditions to Workspace Client Script in UI Action

mattmm
Kilo Sage

Hi all, 

I'm struggling to get the Conditions that normally work in my UI Action, to work in my Service Ops workspace.

I've got the UI Action button itself working, and doing what it is meant to do, but I can't get it to recognise my conditions.....

Do I need to add the conditions separately again to the Workspace Client Script itself?

If so can someone help me transform these into the client script (remembering we cannot use the "gs." server side stuff)

Condition:

gs.hasRole('itil,sn_change_write') && !current.isNewRecord() && new RiskCalculator(current).showRiskAssessment() && !new ChangeRiskAsmt().hasCompletedAssessment(current)

 

Workspace Client Script:

function onClick(g_form) {
	var id = g_form.getUniqueValue();
	var ga = new GlideAjax('ChangeRiskAsmtAjax');
	ga.addParam('sysparm_name','invokeAssessmentAjax');
	ga.addParam('sysparm_id',id);
	ga.addParam('sysparm_class','change_request');
	ga.getXML(ajaxAnswer);
}

function ajaxAnswer (response) {
	var answer = response.responseXML.documentElement.getAttribute("answer");
	answer = JSON.parse(answer);
	var asmtInstanceSysId = answer.asmtInstanceSysId;
	var changeRiskAsmtSysId = answer.changeRiskAsmtSysId;
	var changeRequestSysId = answer.changeRequestSysId;
	var riskAsmtName = answer.riskAsmtName;
	handleAsmt(asmtInstanceSysId, changeRiskAsmtSysId, changeRequestSysId, riskAsmtName);
}

function handleAsmt(asmtInstanceSysId, changeRiskAsmtSysId, changeRequestSysId, riskAsmtName) {
	var asmtUiPage = "assessment_take2";
	var url1 = asmtUiPage + ".do";
	url1 += "?sysparm_assessable_sysid=" + asmtInstanceSysId;
	url1 += "&sysparm_assessable_type=" + changeRiskAsmtSysId;
	url1 += "&sysparm_hide_header=true";
	url1 += "&sysparm_hide_save=true";
	url1 += "&sysparm_hide_cancel=true";
	url1 += "&sysparm_hide_source_details=true";
	url1 += "&sysparm_stack=no";
	url1 += "&sysparm_return_url=" + getEncodedUrl(changeRequestSysId, asmtInstanceSysId);
	g_modal.showFrame({
		url: url1,
		title: riskAsmtName + "",
		size: 'lg',
		height: 500
	});
	window.NOW.change_managment = { "riskAsmtAction" : "delete" };
	window.g_parentDialog = dialogWindow;
}
function getEncodedUrl(changeRequestSysId, asmtInstanceSysId) {
	var closeUiPage = "change_risk_asmt_close_dialog";
	var url = "/" + closeUiPage + ".do";
	url += "?sysparm_stack=no";
	url += "&sysparm_id=" + changeRequestSysId;
	url += "&sysparm_asmtInstanceSysId=" + asmtInstanceSysId;
	return encodeURIComponent(url);
}

 

 

3 REPLIES 3

mattmm
Kilo Sage

If this can't be achieved I'd like to possibly have a solution where the risk assessment form button in Service Ops workspace is hidden when the risk assessment completes.

 

NiveditaM
ServiceNow Employee
ServiceNow Employee

Did you get answer for this @mattmm ?

I didn't unfortunately @NiveditaM . We ended up using the risk assessment plugins native option of the Risk assess section and button in the overview section as with this screenshot

mattmm_0-1753226947455.png