Hi guys,
After completing some RSjazz tutorials and participants examples I ended up developing a participant that can get the value from some custom attributes from a parent and set them to all his children. This works when I save the parent.
But now I need something different: get the values from some custom attributes from a parent and set them to a child but it needs to work when saving this child.
I have this piece of code:
List<IReference> parent_reference = getParentReference(saveParameter);
IAuditable auditable = saveParameter.getNewState();
IWorkItem child_me = (IWorkItem) auditable;
if (!parent_reference.isEmpty()) {
for (IReference reference: parent_reference ) {
if (reference.isItemReference()) {
IItemHandle referencedItem= ((IItemReference) reference).getReferencedItem();
if (referencedItem instanceof IWorkItemHandle) {
IWorkItem parent = (IWorkItem) auditableCommon
.resolveAuditable((IWorkItemHandle) referencedItem
, IWorkItem.FULL_PROFILE, null);
IAttribute fecha_para_el_plugin_Attribute_parent_only = wiCommon
.findAttribute(parent.getProjectArea()
, WORKITEM_ATTRIBUTE_FECHA_PARA_EL_PLUGIN, monitor);
IAttribute enumeracion_para_el_plugin_Attribute_parent_only = wiCommon
.findAttribute(parent.getProjectArea()
, WORKITEM_ATTRIBUTE_ENUMERACION_PARA_EL_PLUGIN, monitor);
Object fecha_para_el_plugin_parent_only =
parent.getValue(fecha_para_el_plugin_Attribute_parent_only);
Object enumeracion_para_el_plugin_parent_only =
parent.getValue(enumeracion_para_el_plugin_Attribute_parent_only);
child_me = (IWorkItem)child_me.getWorkingCopy();
IAttribute fecha_para_el_plugin_Attribute_parent_only_child = wiCommon
.findAttribute(child_me.getProjectArea()
, WORKITEM_ATTRIBUTE_FECHA_PARA_EL_PLUGIN, monitor);
IAttribute enumeracion_para_el_plugin_Attribute_parent_only_child = wiCommon
.findAttribute(child_me.getProjectArea()
, WORKITEM_ATTRIBUTE_ENUMERACION_PARA_EL_PLUGIN, monitor);
child_me.setValue(fecha_para_el_plugin_Attribute_parent_only_child
, fecha_para_el_plugin_parent_only);
child_me.setValue(enumeracion_para_el_plugin_Attribute_parent_only_child
, enumeracion_para_el_plugin_parent_only);
Set<String> additionalParams = new HashSet<String>();
additionalParams.add(IExtensionsDefinitions.UPDATE_CHILDREN_DATE_EXTENSION_ID);
}
}
}
}
What this code does is:
After saving a work item, the participant looks if it has a parent. If True then it gets the value from "fecha_para_el_plugin_Attribute_parent_only" and "enumeracion_para_el_plugin_Attribute_parent_only_child" attributes from the parent.
Once I have these values I need to set them to the child (the work item which is saving) so I´m using this code:
child_me.setValue(fecha_para_el_plugin_Attribute_parent_only_child
, fecha_para_el_plugin_parent_only);
child_me.setValue(enumeracion_para_el_plugin_Attribute_parent_only_child
, enumeracion_para_el_plugin_parent_only);
But for some reason It's not working. I'm still seeing empty fields in the child. I even tried to see the values from these attributes from the child using message boxes (to confirm if ".setValue" works) and it worked fine, but when the "save operation" is completed these attributes returns to "none" or empty. I don't know why.
Am I using the wrong code (".setValue")?
Am I missing a code?
Please I need help on this because I think it could be solved easily.
Thank you!