Implementing Earned Value Management (EVM) in RTC
I want to perform EVM in RTC by attaching a charge rate attribute to a work item, then multiplying that rate by the number of estimated work hours and actual work hours to compute planned cost and actual cost, respectively. Planned cost and actual cost will also be attributes on the work item, so after these values are computed, they need to be saved back to the work item somehow. Does anyone have experience with using the RTC SDK to extract attribute values, perform math operations on them, then send the computed values back and save them as work item attributes?
I am just looking for some ideas or guidance as to how this can be implemented in RTC. I welcome any and all ideas. Thank you, Murad |
3 answers
Ralph Schoon (63.6k●3●36●47)
| answered May 03 '12, 2:58 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Hi Murad,
this is the best place to get started: https://jazz.net/library/article/784 If all your operations are only affecting one work item and only need access to simple (string, integer) attributes, you could try to use use java scripts to configure default and calculated values. See https://jazz.net/wiki/bin/view/Main/AttributeCustomizationExamples for more information. I am not sure which data you need. I would start with trying to access the estimation attributes. If you can access those and calculate with them, you have a good chance to be able to use this simple technology. If you can't access all the data you need or if you require to follow parent child relationships and collect data across multiple work items you would have to use the SDK and most likely create a followup action. |
Ralph,
Thanks very much for the info and it was great meeting you at Innovate this year. I think I am almost there with what I need. I have hit another roadblock though ... I am doing attribute customization with script-based calculated values. I need to access a custom attribute I've created called "Charge Rate" with ID "chargeRate" but I can't figure out how to do so with what I have. Here's my JavaScript so far: dojo.provide("org.example.workitems.providers.APIExample"); dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes"); dojo.require("dojo.number"); (function() { var WorkItemAttributes= com.ibm.team.workitem.api.common.WorkItemAttributes; dojo.declare("org.example.workitems.providers.APIExample", null, { getValue: function(attributeId, workItem, configuration) { var chargeRate= dojo.number.parse(workItem.getValue(WorkItemAttributes.chargeRate)); console.log(workItem.getValue(WorkItemAttributes.CHARGERATE)); return chargeRate; } }); })(); chargeRate is currently returning null. Any ideas? Thanks again. Best, Murad |
Ralph Schoon (63.6k●3●36●47)
| answered Aug 08 '13, 6:37 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Murad, please have a look at the "Spy" script in https://jazz.net/library/article/1093 Lab 5. The code should help you to understand what is returned. As explained in that workshop you have to call workItem.getValue("chargeRate"). The WorkItemAttributes strings are only defined for internal attributes.
|
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.