- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2021 01:26 AM
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.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2021 06:08 PM
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'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2021 01:46 AM
Try something like this :
var gr = new GlideRecord('sys_flow_context');
gr.addQuery('source_record', current.sys_id);
gr.query();
if (gr.next()) {
var url = 'sys_flow_context.do?sys_id=' + gr.sys_id.toString();
action.setRedirectURL(url);
} else {
gs.addErrorMessage("Record not found"));
action.setRedirectURL(current);
}
Please mark this as correct if it solves your query to help community
Please mark this as helpful if it helped you to help community .
Regards
Ashish Raj
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2023 07:50 AM
Hi,
Nothing happened when I clicked it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2021 06:08 PM
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'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-11-2022 11:01 AM
Aidan, can you let me know where you're putting this second Ajax script? Is it in your UI action or did you make a script include, or client script etc.? I need to do the same thing as you and I'm stuck with the second script you included:
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'
});
