поля не заполняются, т. Е. «Сервер базы данных» и «экземпляр БД». Здесь мы не можем просто использовать ссылочный фильтр, нам нужно заполнить эти два поля через скрипт. Но скрипт не работает. Данные должны заполняться из таблицы cmdb_rel_ci.
Условие фильтра для таблицы cmdb_rel_ci должно быть
Код:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
g_form.clearOptions('db_instance');
g_form.addOption('db_instance','','--None--',0);
var server = g_form.getValue('db_server');
alert(server);
// var server_name='';
// var rec1 = new GlideRecord('cmdb_ci');
// rec1.addQuery('sys_id', server);
// rec1.query();
// if (rec1.next()){
// server_name = rec1.name;
// }
var ga = new GlideAjax('getDBInstanceForServers');
ga.addParam('sysparm_name','getRunningDBInstances');
ga.addParam('sysparm_server', server);
ga.getXML(instancesOfServer);
// ga.getXMLWait();
//ga.getXMLAnswer(function(answer) {
//var result = JSON.parse(answer);
//alert('result');
function instancesOfServer(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//var answer = ga.getAnswer();
answer = answer.evalJSON();
//}
//var returneddata = answer.evalJSON();
//alert(result.instance_name);
var name = returneddata.instance_name.split('\n');
for(var count=1;count<name.length;count++){
//alert(name[count]);
g_form.addOption('db_instance',name[count],name[count],count);
}
// });
}
}
*******************************************
script include code:
var getDBInstanceForServers = Class.create();
getDBInstanceForServers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getRunningDBInstances: function() {
var server = this.getParameter('sysparm_server');
var instances = '';
var obj = {};
gs.log(server, 'Vijaya');
var rec = new GlideRecord('cmdb_rel_ci');
rec.addQuery('child', server);
rec.addQuery('type', '60bc4e22c0a8010e01f074cbe6bd73c3');
rec.query();
gs.log(rec.getRowCount(), 'Vijaya');
while (rec.next()) {
var sys_id = rec.parent;
if(sys_id!=""){
var rec1 = new GlideRecord('cmdb_ci_db_instance');
rec1.addQuery('sys_id', sys_id);
rec1.query();
while (rec1.next()){
if(rec1.name!='')
gs.log(rec1.name, 'Vijaya');
//instances += '\n' + rec1.name.toString();
instances = rec1.name.toString();
gs.log(instances, 'Vijaya');
}
//gs.log(instances, 'Vijaya');
}
}
//obj.instance_name = instances.toString();
//var json = new JSON();
//var data = JSON.stringify(obj);
return instances;
},
getqualifier: function() {
var server = this.getParameter('sysparm_server');
var instances = '';
var filterString='parentISNOTEMPTY^ORparent!=^childISNOTEMPTY^child.u_prod_status=Production^child.support_groupISNOTEMPTY^child.support_group!=71d83db50f889a0060e7e64be1050e3b'.toString();
var refQual='';
var childName ='';
var rec = new GlideRecord('cmdb_ci');
rec.addQuery('sys_id', server);
rec.query();
if (rec.next()) {
childName = rec.name.toString();
refQual = filterString+'^'+'child.nameCONTAINS'+childName+'^EQ';
}
else{
refQual =filterString+'^EQ';
}
refQual = refQual.toString();
return refQual;
},
});
Пожалуйста, помогите с кодом.