Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

metric is not ending when ticket gets closed

anshul_jain25
Kilo Guru

I have created a metric which store duration how much time a assignment group is taking. but this metic should end when ticket is closed

find_real_file.png

calculation should complete and metric should provide duration when ticket is closed or inactive

1 ACCEPTED SOLUTION

Hi Alikutty,



below is the code which i found from communities which is running for me,



if (current.state == 6) {     //change according to your closed state


  answer = false;


  mi.endDuration();


closeDurations(mi.current);


}




function closeDurations(current) {


  var gr = new GlideRecord('metric_instance');


  gr.addQuery('id', current.sys_id);


gr.addQuery('calculation_complete', false);


gr.addQuery('definition.type', 'field_value_duration');


gr.addQuery('definition', '39d43745c0a808ae0062603b77018b90'); //mark your metric definition sysid


  gr.query();


  while (gr.next()) {


  var definition = new GlideRecord('metric_definition');


  definition.get(gr.definition);


  var mi = new MetricInstance(definition, current);


  mi.endDuration();


  }


}


View solution in original post

38 REPLIES 38

It seems like some issue in the instance. Can you check the same on a developer instance once?



Thank You


Please Hit Like, Helpful or Correct depending on the impact of response


ok


Hi , i have checked on other env also but code is not working, can you check in your instance by removing that code , last metrics should be false only, why i am asking this is to check that metrics is stopping or not when you are not writing code


Hi Alikutty,



below is the code which i found from communities which is running for me,



if (current.state == 6) {     //change according to your closed state


  answer = false;


  mi.endDuration();


closeDurations(mi.current);


}




function closeDurations(current) {


  var gr = new GlideRecord('metric_instance');


  gr.addQuery('id', current.sys_id);


gr.addQuery('calculation_complete', false);


gr.addQuery('definition.type', 'field_value_duration');


gr.addQuery('definition', '39d43745c0a808ae0062603b77018b90'); //mark your metric definition sysid


  gr.query();


  while (gr.next()) {


  var definition = new GlideRecord('metric_definition');


  definition.get(gr.definition);


  var mi = new MetricInstance(definition, current);


  mi.endDuration();


  }


}


I can't seem to get this to work. I think I have done everything right.

find_real_file.png

 

Any input would be apreciated.

 

BR - Thomas