Not able to make this Calculated value script to work, is there anything I'm missing?
Setting owner by state of the APAR Workitem .
dojo.provide("com.example.setownerbystate");
dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes");
(function() {
var WorkItemAttributes = com.ibm.team.workitem.api.common.WorkItemAttributes;
dojo.declare("com.example.setownerbystate", null, {
getValue: function(attributeId, workItem, configuration) {
var type = workItem.getValue(com.ibm.team.workitem.api.common.WorkItemAttributes.TYPE);
var state = workItem.getValue(com.ibm.team.workitem.api.common.WorkItemAttributes.STATE);
if (type === "apar") {
if (state === "APAR.state.s16" || state === "APAR.state.s20" || state === "APAR.state.s1"){
return configuration.getChild("parameters").getStringDefault("Firstname lastname 1", "");
}
else if (state === "APAR.state.s3" || state === "APAR.state.s17"){
return configuration.getChild("parameters").getStringDefault("Firstname Last name 2", "");
}
else {
return workItem.getValue(WorkItemAttributes.OWNER);
}
}
else {
return workItem.getValue(WorkItemAttributes.OWNER);
}
}
});
})();
dojo.provide("com.example.setownerbystate");
dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes");
(function() {
var WorkItemAttributes = com.ibm.team.workitem.api.common.WorkItemAttributes;
dojo.declare("com.example.setownerbystate", null, {
getValue: function(attributeId, workItem, configuration) {
var type = workItem.getValue(com.ibm.team.workitem.api.common.WorkItemAttributes.TYPE);
var state = workItem.getValue(com.ibm.team.workitem.api.common.WorkItemAttributes.STATE);
if (type === "apar") {
if (state === "APAR.state.s16" || state === "APAR.state.s20" || state === "APAR.state.s1"){
return configuration.getChild("parameters").getStringDefault("Firstname lastname 1", "");
}
else if (state === "APAR.state.s3" || state === "APAR.state.s17"){
return configuration.getChild("parameters").getStringDefault("Firstname Last name 2", "");
}
else {
return workItem.getValue(WorkItemAttributes.OWNER);
}
}
else {
return workItem.getValue(WorkItemAttributes.OWNER);
}
}
});
})();
2 answers
My assumption is, you return
return configuration.getChild("parameters").getStringDefault("Firstname lastname 1", "");
e.g. a string like "John Doe".
That never works. And it is not supposed to. See https://jazz.net/wiki/bin/view/Main/AttributeCustomization for how limited the API is and especially read the section about supported attribute types.
See Process Enactment Workshop for the Rational solution for Collaborative Lifecycle Management lab 5 for information what the API provides - and what not - and an attribute spy script you can use to print what values are in attrinbutes and display that - or use logging. You can only set contributor type (or other IItem type attributes) by returning the items UUID.
return configuration.getChild("parameters").getStringDefault("Firstname lastname 1", "");
e.g. a string like "John Doe".
That never works. And it is not supposed to. See https://jazz.net/wiki/bin/view/Main/AttributeCustomization for how limited the API is and especially read the section about supported attribute types.
See Process Enactment Workshop for the Rational solution for Collaborative Lifecycle Management lab 5 for information what the API provides - and what not - and an attribute spy script you can use to print what values are in attrinbutes and display that - or use logging. You can only set contributor type (or other IItem type attributes) by returning the items UUID.
Have you made the extra configuration which is required in the Process Configuration Source? If you base your code on the Script Based Validation example, you need to understand how it works. Also, as Ralph said, for an attribute of Contributor type, you need to return a UUID, not "firstname lastname".
https://jazz.net/wiki/bin/view/Main/AttributeCustomization#Configuring_additional_script_pa
https://jazz.net/wiki/bin/view/Main/AttributeCustomization#Configuring_additional_script_pa