- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-04-2016 11:28 AM
I'm building a small little custom app and the requirement needs me to auto set certain groups based on state.
typically I would do this with assignment rules but I have to also do other things that cannot be done with rules.
That said, I am leveraging UI Policy (if true or if false script blocks).
I have created a glide ajax Script Include in the new custom application scope with client callable checked.
I have created three system properties + system properties category and Module to display the properties in the application.
I have created a UI Policy with condition (state = draft) and then in the execute if true script block I have written a fairly simple glideAjax script.
The issue seems to be with parsing the result. If I gs.warn() on the script include it correctly logs what I want just before calling "return" to send the results back to the client.
Here is the UI Policy Script:
function onCondition() {
try {
g_form.clearValue('assigned_to');
g_form.setDisplay('assigned_to', false);
var ga = new GlideAjax('u_docit_ajax');
ga.addParam('sysparm_name', 'getGSDProperties');
ga.addParam('sysparm_property', 'x_10032_gtd_dev.sn.developers.group');
ga.getXML(myCallBack);
}
catch(err) {
console.log(err);
}
}
function myCallBack(response) {
var answer = response.responesXML.documentElement.getAttribute("answer");
alert('my answer is: ' + answer);
//*** g_form.setValue('fieldname', 'sys_id', 'name') ***//
//g_form.setValue('assigned_to', answer); //answer is coming back as: 'c0c602364f55d20036988ab18110c7f8', 'SN Developers'
}
Here is my Script Include:
var u_docit_ajax = Class.create();
u_docit_ajax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
//u_docit_ajax.prototype = Object.extendsObject(x_10032_gtd_dev.u_docit_ajax.AbstractAjaxProcessor, {
// u_docit_ajax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
/*
* @getGSDProperties - GlideAjax function called from client script
* @sysparm_property - This will be the sys_parameter name passed in from the client
* @returns - The value of the given property
*/
getGSDProperties: function() {
var sysProp = this.getParameter('sysparm_property');
gs.warn('***DEBUG: gs.getProperty(sysProp) is: ' + gs.getProperty(sysProp));
return gs.getProperty(sysProp);
}
});
Here is an error in the system log when the Script Include is processing:
And here is a Java console error when the client-side codes runs when form loads:
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2016 11:16 AM
HI Emyrold,
You need to have 2 properties or You need to split the property into display name and sys_id and pass them separately for the setValue method.
Hope this helps
Thanks
Srini
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2016 10:48 AM
Hi Emyrold,
How about this?
g_form.setValue('assignment_group', g_scratchpad.sn_developers_group, 'SN Developers');
Thanks
Srini
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2016 10:51 AM
Yes that worked but then it defeats the point of trying to not store any static values in the client script...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2016 10:56 AM
Hi Emyrold,
I doubt on your reference qualifier. Would you be able to select the 'SN developers' Group manually for the assignment_group field
Thanks
Srini
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2016 11:10 AM
Hi Pradeep and Srini,
I just ran another test where I reconfigured things a little.
I changed the system properties to contain single values instead of a string with two parameters and it is working.
BR:
(function executeRule(current, previous /*null when async*/) {
g_scratchpad.sn_developers_group_sys_id = gs.getProperty('x_10032_gtd_dev.sn.developers.group'); //with value: c0c602364f55d20036988ab18110c7f8 **no quotes
g_scratchpad.sn_developers_group_name = gs.getProperty('x_10032_gtd_dev.sn.story.owner.group'); //with value: SN Developers **no quotes
})(current, previous);
client script:
g_form.setValue('assignment_group', g_scratchpad.sn_developers_group_sys_id, g_scratchpad.sn_developers_group_name);
Question: do you think I should be able to have both the first and second parameter in the one property and maybe it is just quoting things when I shouldn't or something like that?
Thanks,
-e
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2016 11:16 AM
HI Emyrold,
You need to have 2 properties or You need to split the property into display name and sys_id and pass them separately for the setValue method.
Hope this helps
Thanks
Srini