TDataViewSourceProcessus2 - Exemples
| TDataViewSourceProcessus2 = class (TQubesDataViewSource) | Interface de TDataViewSourceProcessus2 | Exemples de TDataViewSourceProcessus2 |
uses
SysUtils, QubesObjectStore,
QubesDataViews, QubesDataViewsSources.Processus2, QubesDataViewsQuery;
const cDVName = 'DataViewName';
const cRUD = 'CITMOD016';
// définition des paramètres de la source
var srcParams : array of String;
srcParams.Add("Responsable obj=CURRENT_RESPONSABLES");
srcParams.Add("DateCloture Float=DateCloture");
srcParams.Add("Avancement String=ACTIVE_INT_TASKS");
srcParams.Add("value obj=value"); // champ indexé
var dataSource := TDataViewSourceProcessus2.Create(cRUD,srcParams);
dataSource.MarginUpdate := 0;
dataSource.LastInPSS := True;
//filtrage des données de la source
dataSource.AddPSSFilter('Status=Actif');
dataSource.AddPSSFilter('Concerned=1000000000000000001');
dataSource.AddPSSFilter('DateMini=43052');
dataSource.AddPSSFilter('DateMaxi=43060');
// définition des champs de la vue maintenue
var dvFields : array of String;
dvFields.Add('ExecutionNo');
dvFields.Add('Status');
dvFields.Add('Responsable');
dvFields.Add('DateCloture');
dvFields.Add('Avancement');
dvFields.Add('value');
var dataView := DeclareView(cDVName, dataSource, dvFields);
// test si un traitement est déjà en cours
if IncrementGlobalVar(cDVName) <> 1 then begin
if dataView.DeadManSwitchActive then begin
IncrementGlobalVar(cDVName, -1);
raise Exception.Create('Update already in progress. Please wait');
end;
end;
// récupération ou mise à jour de la vue maintenue
try
dataView.MetaData['ProcessusRUD']:=cRUD;
dataView.MetaData['ProcessusCfgField']:=dvFields.Join(',');
dataView.MetaData['ProcessusCfgFilter']:=dataSource.PSSFilter;
ObjectStore.Value[cDVName+'.CheckPoint'] := dataSource.Update(dataView, ObjectStore.Value[cDVName+'.CheckPoint']);
finally
IncrementGlobalVar(cDVName, -1);
end;
// extraction des données de la vue maintenue
var query := TDataViewsQuery.Create;
var sql := 'select '+dvFields.Join(',')+' from '+cDVName + " order by cast(substr(json_extract(ExecutionNo, '$.id'),4) as numeric)";
var qResult := JSON.Parse(query.SelectAsJSON(sql));
var data := JSON.NewArray;
for var row:=0 to qResult.Length()-1 do begin
var rowData := JSON.NewArray;
var jsLine := qResult[row];
for var col:=0 to dvFields.Length-1 do begin
var value := jsLine[dvFields[col]];
if StrBeginsWith(value,'"*ERR:unknown '+dvFields[col]) then
rowData.Add(Null)
else
rowData.Add(jsLine[dvFields[col]]);
end;
data.Add(rowData);
end;
Print(qResult);
SysUtils, QubesObjectStore,
QubesDataViews, QubesDataViewsSources.Processus2, QubesDataViewsQuery;
const cDVName = 'DataViewName';
const cRUD = 'CITMOD016';
// définition des paramètres de la source
var srcParams : array of String;
srcParams.Add("Responsable obj=CURRENT_RESPONSABLES");
srcParams.Add("DateCloture Float=DateCloture");
srcParams.Add("Avancement String=ACTIVE_INT_TASKS");
srcParams.Add("value obj=value"); // champ indexé
var dataSource := TDataViewSourceProcessus2.Create(cRUD,srcParams);
dataSource.MarginUpdate := 0;
dataSource.LastInPSS := True;
//filtrage des données de la source
dataSource.AddPSSFilter('Status=Actif');
dataSource.AddPSSFilter('Concerned=1000000000000000001');
dataSource.AddPSSFilter('DateMini=43052');
dataSource.AddPSSFilter('DateMaxi=43060');
// définition des champs de la vue maintenue
var dvFields : array of String;
dvFields.Add('ExecutionNo');
dvFields.Add('Status');
dvFields.Add('Responsable');
dvFields.Add('DateCloture');
dvFields.Add('Avancement');
dvFields.Add('value');
var dataView := DeclareView(cDVName, dataSource, dvFields);
// test si un traitement est déjà en cours
if IncrementGlobalVar(cDVName) <> 1 then begin
if dataView.DeadManSwitchActive then begin
IncrementGlobalVar(cDVName, -1);
raise Exception.Create('Update already in progress. Please wait');
end;
end;
// récupération ou mise à jour de la vue maintenue
try
dataView.MetaData['ProcessusRUD']:=cRUD;
dataView.MetaData['ProcessusCfgField']:=dvFields.Join(',');
dataView.MetaData['ProcessusCfgFilter']:=dataSource.PSSFilter;
ObjectStore.Value[cDVName+'.CheckPoint'] := dataSource.Update(dataView, ObjectStore.Value[cDVName+'.CheckPoint']);
finally
IncrementGlobalVar(cDVName, -1);
end;
// extraction des données de la vue maintenue
var query := TDataViewsQuery.Create;
var sql := 'select '+dvFields.Join(',')+' from '+cDVName + " order by cast(substr(json_extract(ExecutionNo, '$.id'),4) as numeric)";
var qResult := JSON.Parse(query.SelectAsJSON(sql));
var data := JSON.NewArray;
for var row:=0 to qResult.Length()-1 do begin
var rowData := JSON.NewArray;
var jsLine := qResult[row];
for var col:=0 to dvFields.Length-1 do begin
var value := jsLine[dvFields[col]];
if StrBeginsWith(value,'"*ERR:unknown '+dvFields[col]) then
rowData.Add(Null)
else
rowData.Add(jsLine[dvFields[col]]);
end;
data.Add(rowData);
end;
Print(qResult);
exemple de résultat :
[
[
"ExecutionNo" : "1000000000000000001",
"Status" : "En cours",
"Responsable" : {
"id": "usr1", // objet représentant le responsable
"login": "admin",
"name": "QuBES Admin"
},
"DateCloture" : null,
"Avancement" : "5 - Saisie 1",
"value" : "N/A"
],
[
"ExecutionNo" : "1000000000000000005",
"Status" : "En cours",
"Responsable" : {
"id": "usr1",
"login": "admin",
"name": "QuBES Admin"
},
"DateCloture" : null,
"Avancement" : "5 - Saisie 1",
"value" : "861"
],
[
"ExecutionNo" : "1000000000000000014",
"Status" :"Complet",
"Responsable" : {
"id": "usr1",
"login": "admin",
"name": "QuBES Admin"
},
"DateCloture" : "1899-12-30T00:00Z",
"Avancement" : "5 - Saisie 1",
"value" : "72"
]
]
[
"ExecutionNo" : "1000000000000000001",
"Status" : "En cours",
"Responsable" : {
"id": "usr1", // objet représentant le responsable
"login": "admin",
"name": "QuBES Admin"
},
"DateCloture" : null,
"Avancement" : "5 - Saisie 1",
"value" : "N/A"
],
[
"ExecutionNo" : "1000000000000000005",
"Status" : "En cours",
"Responsable" : {
"id": "usr1",
"login": "admin",
"name": "QuBES Admin"
},
"DateCloture" : null,
"Avancement" : "5 - Saisie 1",
"value" : "861"
],
[
"ExecutionNo" : "1000000000000000014",
"Status" :"Complet",
"Responsable" : {
"id": "usr1",
"login": "admin",
"name": "QuBES Admin"
},
"DateCloture" : "1899-12-30T00:00Z",
"Avancement" : "5 - Saisie 1",
"value" : "72"
]
]