Script Fails to run at all.
I have a Modified Date initiated script that does not give us any output to the Console. It is a calculated value. We are calling script from a Workitem Attribute that is a small-string data type, but we can't get any response from the script once it is called. Can someone please help?
// The script name must be the same in lines 1 and 8. // This script needs to be modified to make it stop calculating when the state is set to "closed" dojo.provide("org.example.calculated.AgeValueProvider"); dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes"); dojo.require("dojo.date.stamp"); (function() { var WorkItemAttributes = com.ibm.team.workitem.api.common.WorkItemAttributes; var fromISOString = dojo.date.stamp.fromISOString; dojo.declare("org.example.calculated.AgeValueProvider", null, { getValue: function(attribute, workItem, configuration) { var creationDate = fromISOString(workItem.getValue(WorkItemAttributes.CREATION_DATE)); var resolutionDate = fromISOString(workItem.getValue(WorkItemAttributes.RESOLUTION_DATE)); console.log("creation date" + creationDate); console.log("Resolution date" + resolutionDate); if(resolutionDate !== null){ var ageInSeconds = (resolutionDate.getTime() - creationDate.getTime()) / 1000; var days = parseInt(ageInSeconds / 86400); var hours = parseInt((ageInSeconds-days * 86400) / 3600); var minutes = parseInt((ageInSeconds-days * 86400 - hours * 3600) / 60); return days + " d, " + hours + " hr, " + minutes + " min"; }else{ var ageInSeconds = (Date.now() - creationDate.getTime()) / 1000; var days = parseInt(ageInSeconds / 86400); var hours = parseInt((ageInSeconds-days * 86400) / 3600); var minutes = parseInt((ageInSeconds-days * 86400 - hours * 3600) / 60); return days + " d, " + hours + " hr, " + minutes + " min"; } return ""; } }); })(); |
Accepted answer
Hi, Kenneth
I tested with v5.0.2 with your javascript(add a small string attribute for the calculated value) what version did you test with and what result did you get? Kenneth Herrscher selected this answer as the correct answer
|
2 other answers
It may be a silly mistake - you said the script is "Modified Date initiated", but the script reads Resolution Date. Make sure that you make the dependency right.
Another thing to note - you should also check the null value for variable "creationDate", as it will be definitely null during the creation of a new work item. Comments
Kenneth Herrscher
commented Apr 05 '16, 7:28 p.m.
Good answer. We did change this script so that it stopped counting seconds after the Resolution (close) date was entered. It's working fine now.
|
Actually the correct answer was how to get any of the scripts to run for a workitem and a project. What solved it was we found a script entry /workitem/scripts/common/sar_warranty.js that had zero bytes. We found that condition causes no scripts to run for the entire project. We deleted this zero byte script file and everything began to work again. That smells like a bug to me.
Comments
Donald Nong
commented Apr 05 '16, 8:09 p.m.
I did see such behavior before, and it is quite easy to spot using a debugger. The JavaScript engine appears to evaluate all the scripts as a whole, and a single corrupted script can render all scripts invalid. Regarding your original issue, you described it in a way that made us believe only the one quoted script didn't work. How can you expect a "correct" answer for such a question then?
|
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.
Comments
You should be able to use a debugger or look at the logs to get an idea. See Process Enactment Workshop for the Rational solution for Collaborative Lifecycle Management Lab 5