Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

RTC Calculated Script Clarification

 Is it possible to have RTC Calculated Script for the below using enumerations. where Factor A to Factor H are having specific values, where in the below calculation is done and the result would be a Read-only Enumeration on a specific state.


Factors
Enumeration Attribute for Factor A Yes (25) No (0)
Enumeration Attribute for Factor B Yes (25) No (0)
Enumeration Attribute for Factor C Yes (25) No (0)
Enumeration Attribute for Factor D Yes (5) No (0)
Enumeration Attribute for Factor E Yes (5) No (0)
Enumeration Attribute for Factor F Yes (5) No (0)
Enumeration Attribute for Factor G Yes (5) No (0)
Enumeration Attribute for Factor H Yes (5) No (0)

Enumeration Attribute for Calculating Total = A B
If the evaluation result is higher than 50 , the result is A.  If the evaluation result is less than 50 , the result is B.


0 votes



5 answers

Permanent link

 The question is barely readable and does not make any sense to me.  It should be easy enough to create a presentation and a pseudo algorithm that explains what you want. 

Regardless, it is possible to create a calculated value for an enumeration attribute. The editor presentation for that attribute can be read only. The calculated value can access other attributes and operate on their values. 

0 votes

Comments

Updated the clarification by having them aligned.


 

I stand by my answer. You can compare enumeration values for multiple attributes, do the calculation above and return the enumeration value based on the comparison from the choice A and B. 



Permanent link
 The below script is not working. Please let me know if anything is wrong

dojo.provide("com.ibm.alinma.rtc.calculatedScript.evaluationresult");
dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes");
(function () 
{
dojo.declare("com.ibm.alinma.rtc.calculatedScript.evaluationresult", null, 
{
getValue: function (attribute, workItem, configuration) 
{
var WorkItemAttributes = com.ibm.team.workitem.api.common.WorkItemAttributes;
var A = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.A");
var B = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.B");
var C = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.C");
var D = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.D");
var E = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.E");
var F = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.F");
var G = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.G");
var H = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.H");
var Result = workItem.getLabel("com.ibm.team.workitem.initiative.customattribute.samplePA.EvaluationResult")
var total = 0;

if (A === "Yes" ) 
{
A_Value = 25;

else if (A === "No" || A === "Unassigned") 
{
A_Value = 0;
}

if (B === "Yes" ) 
{
B_Value = 25;

else if (B === "No" || B === "Unassigned") 
{
B_Value = 0;
}

if (C === "Yes" ) 
{
C_Value = 25;

else if (C === "No" || C === "Unassigned") 
{
C_Value = 0;
}
if (D === "Yes" ) 
{
D_Value = 25;

else if (D === "No" || D === "Unassigned") 
{
D_Value = 0;
}
if (E === "Yes" ) 
{
E_Value = 5;

else if (E === "No" || E === "Unassigned") 
{
E_Value = 0;
}
if (F === "Yes" ) 
{
F_Value = 5;

else if (F === "No" || F === "Unassigned") 
{
F_Value = 0;
}
if (G === "Yes" ) 
{
G_Value = 5;

else if (G === "No" || G === "Unassigned") 
{
G_Value = 0;
}
if (H === "Yes" ) 
{
H_Value = 5;

else if (H === "No" || H === "Unassigned") 
{
H_Value = 0;
}
// Criteria Contribution Weights:
// 1.       A            25%
// 2.       B  25%
// 3.       C  25%
// 4.       D 5%
// 5.       E  5%
// 6.       F 5%
// 7.      G  5%
// 8.     H   5%
// TOTAL               100%
var totalPriority = (A_Value + B_Value + C_Value + D_Value  + E_Value + F_Value + G_Value + H_Value);

if (totalPriority >= 50 ) 
{
EvaluationResult = "DropeDown1";

else if (totalPriority < 50) 
{
EvaluationResult = "DropeDown2";
}
}
});
})(); 

0 votes


Permanent link

  I would suggest you carefully read https://rsjazz.wordpress.com/2022/11/25/ewm-attribute-customization-introduction/ and maybe look into the documentation, workshop(s) and examples.


In addition to that, I would like to suggest to you that if a function was to return a value, you should probably return a value in one of the last statements at the end of your function. I would suggest you consider debugging your script ( https://rsjazz.wordpress.com/2022/11/17/debugging-ewm-work-item-attribute-customization-javascript/ ) link to be found in the post mentioned above.

0 votes


Permanent link

 Thanks Ralph 


With the links provided, I was able to crack the script by using the debugging method as the ready only enumerated field is getting updated based on the selection. The only issue is that the logic seem to be missing as I suspect the way the addition and updation is not correct. Can you help me on that part alone ?

Written Logic

var total = A + B + C + D + E + F + G + H;


if (total >= 50 ) 
{
EvaluationResult = "AA";

else if (totalPriority < 50) 
{
EvaluationResult = "BB";
}
return EvaluationResult;
}
When I select A B C D E F G H as Yes Yes No No No No No No in Sequence its working
When I select C D E H A G F B as No No No Yes No No No Yes in Random its not working.

Anything to be added to the logic to have the calculation done irrespective of the sequence of selection ?

0 votes

Comments

 There is not enough information to do a lot. Issue: 

  1. You use total and totalPriority to compare. The latter variable does not exist.
  2. Make sure that the value of the attribute you calculate here has all other attributes as dependency.
I would write the code like this

var result = "BB";
if(total>= 50){
   result = "AA";
}
return result;


Permanent link

There is a small mistake as "total" and "totalPriority" are the only comparison criteria


Below is the sample code
var A = 0;
    
.
    
var H = 0;
    
var total = 0;
var EvaluationResult = 0; 
if (Req1 === "Yes" ) 
            {
                A = 25;
            } 
            else if (Req1 === "No" || Req1 === "Unassigned") 
{ A = 0; }
.
        
.
        
.
        
.
        
if (Req8 === "Yes" ) 
            {
                H = 5;
            } 
            else if (Req8 === "No" || Req8 === "Unassigned") 
{ H = 0; }
var total = A + B + C + D + E + F + G + H;


if (total >= 50 ) 
{
EvaluationResult = "AA";

else if (total < 50) 
{
EvaluationResult = "BB";
}
return EvaluationResult;

0 votes

Your answer

Register or log in to post 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.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 6,132

Question asked: Mar 28 '23, 4:09 a.m.

Question was seen: 1,267 times

Last updated: Apr 03 '23, 6:17 a.m.

Confirmation Cancel Confirm