Článek: AN0002475Aktualizováno:: 17.05.2022
Modul umožňuje načítat data z discovery systému JDisc.
Níže uvedený skript můžeme použít např. na tlačítku na webu ObjectGears i ve skriptu spouštěném winservice ObjectGears. Ve skriptu definujeme, co chceme z JDisc číst a kam tato data uložit. Funkce merge zajistí nahrání nových dat, aktualizaci existujících a smazání dat, která už v JDisc nejsou.
var jd = OG.Module['og_jdisc'].CreateJDisc('https://localhost/graphql');
var j = 'jdisc_account';
var h = 'password_to_jdisc';
jd.Login(j, h);
var query = '{"query":"{ devices{ findAll{ name id} } }","variables":null}';
var devices = jd.GetData(query, 'data.devices.findAll');
//odhlaseni
jd.LogOut();
if (devices != null)
{
var cl = OGModel.ClassDefs['devices'];
var colId = cl.Columns['order']; //id zaznamu
var colName = cl.Columns['name']; //nazev
var colDate = cl.Columns['datetime']; //datum aktualizace
//smazat priznak aktualizace
var sql = OG.TextUtils.Format('update {0} set {1} = null', cl.DBTableName, colDate.DBColumnName);
OG.Sql.RunSql(sql);
//merge dat
sql = OG.TextUtils.Format(
'MERGE {0} AS target ' +
'USING (SELECT @id, @name) AS source (id, name) ' +
'ON target.{2} = source.id ' +
'WHEN MATCHED THEN ' +
' UPDATE SET target.{3} = source.name, {1} = getdate() ' +
'WHEN NOT MATCHED THEN ' +
' INSERT({2}, {3}, {1}, created, creator, CreatedDataSourceId) VALUES(source.id, source.name, getdate(), getdate(), @user, 8);',
cl.DBTableName, colDate.DBColumnName, colId.DBColumnName, colName.DBColumnName);
var d2 = devices.ToList();
for( var i = 0; i < d2.Count; ++i)
{
var d = d2[i];
var pars = OG.Sql.CreateParameterList();
pars.AddInt('id', d['id']);
pars.AddNvarchar('name', d['name']);
pars.AddNvarchar('user', OG.Person.GetLoginPerson().Account);
OG.Sql.RunSql(null, sql, pars);
}
}
else
{
OGForm.SetInfo('Data nenalezena.');
}