Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Flow Context UI Action from custom table

Community Alums
Not applicable

I have custom tables that also have Flows that attach themselves.

I'm trying to replicate the "Flow Context" UI action on a custom table so that I can see these active flows, however the default solution thats used for RITMs obviously does not work.

How can this be modified to work correctly?

function showFlowContext () {
	var url = new GlideURL('catalog_flow_context.do');
	url.addParam('sysparm_sys_id', g_form.getUniqueValue());
	url.addParam('sysparm_ck', g_form.getValue("sysparm_ck"));
	g_navigation.open(url.getURL(), "_blank");
}

Currently it obviously does not redirect me to the correct place, the custom table does not have a sysparm_ck value.

find_real_file.png

1 ACCEPTED SOLUTION

Community Alums
Not applicable

I managed to resolve this myself with an Ajax call.

function showFlowContext() {
    var id = g_form.getUniqueValue();
    var ga = new GlideAjax('AjaxUtils');
    ga.addParam('sysparm_name', 'getFlowContext');
    ga.addParam('sysparm_id', id);
    ga.getXMLAnswer(getValue);

    function getValue(response) {
        var answer = JSON.parse(response);
        if (answer["success"] == "true") {
	    g_navigation.open('/$flow-designer.do#/operations/context/' + answer.id, "_blank");
        }
    }

}
var AjaxUtils = Class.create();
AjaxUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
	getFlowContext: function(){
		var id = this.getParameter('sysparm_id');
		var ctx = new GlideRecord("sys_flow_context");
		ctx.addEncodedQuery("source_table=table_name_here^source_record="+id);
		ctx.query();
		if(ctx.next()){
			var results = {
				"success":"true",
				"id":ctx.getUniqueValue()
			};
			return JSON.stringify(results);
		}
		gs.addErrorMessage("Flow Context does not exist for this record.");
		var results = {
			"success":"false"
		};
		return JSON.stringify(results);
	},
	
    type: 'AjaxUtils'
});

View solution in original post

16 REPLIES 16

kchorny
Tera Guru

If you have multiple flows associated to a single record, how would you modify the UI Action and Script Include to show all of them in one window?

Hello, this is a very late reply but this is how you would do that:

Hello, this is a very late reply, but here is how you would do that:

find_real_file.png

It worked, thank you

 

Mario Garcia
Tera Contributor

This is the one that finally worked for me:

 

var gr = new GlideRecord('sys_flow_context');
gr.addQuery('source_record', current.sys_id);
gr.query();
if (gr.next()) {
    var url = '$flow-designer.do?sysparm_nostack=true#/operations/context/' + gr.sys_id.toString();
    action.setRedirectURL(url);
} else {
    gs.addErrorMessage("Record not found");
    action.setRedirectURL(_blank);
    gs.info(gr.sys_id);
}