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

With the RTC Java API, how do you modify a Changeset to associate a Work Item?

 I have found a lot of examples where you create a reference to a changeset in a work item, using the RTC Java API, but I need to do the opposite.

The reason being that my environment requires change sets to have work items associated with them, in order to deliver code.

When I attempt to deliver, I get the following Exception:
exception occured com.ibm.team.process.common.advice.TeamOperationCanceledException: 'Deliver' failed. Preconditions have not been met: A work item or change request must be associated with the change set.

I am running on RTC 6.0.2

The related code is as follows:
IWorkItemClient workItemClient = (IWorkItemClient)repo.getClientLibrary(IWorkItemClient.class);
IWorkItem workItem = workItemClient.findWorkItemById(workItemId, IWorkItem.FULL_PROFILE, myProgressMonitor);

// associate work item with changeset
IWorkItemWorkingCopyManager workItemWorkingCopyManager = workItemClient.getWorkItemWorkingCopyManager();
workItemWorkingCopyManager.connect(workItem, IWorkItem.FULL_PROFILE, null);
WorkItemWorkingCopy workItemWorkingCopy = workItemWorkingCopyManager.getWorkingCopy(workItem);
IItemType itemType = changeset.getItemType();
IItemHandle itemHandle = itemType.createItemHandle(changeset.getItemId(), changeset.getStateId());
IItemReference itemReference = IReferenceFactory.INSTANCE.createReferenceToItem(itemHandle);
IEndPointDescriptor endpoint = LinkTypeRegistry.INSTANCE.getLinkType(WorkItemLinkTypes.RELATED_CHANGE_MANAGEMENT).getTargetEndPointDescriptor();
workItemWorkingCopy.getReferences().add(endpoint, itemReference);
workItemWorkingCopy.save(myProgressMonitor);
.

Thanks for any help solving this. 

0 votes



One answer

Permanent link
I don't understand the question. I think you say you use the code above and the advisor does not recognize the link.

This is most likely because the link type is incorrect. You want to use WorkItemLinkTypes.CHANGE_SET.
Note, that link type can only be created by the SCM component and you will likely have to do something about that. I would start with

com.ibm.team.filesystem.internal.rcp.ui.workitems.actions.AssociateWorkItemToChangeSetAction.run(Shell, IWorkbenchPage, IStructuredSelection)
 
Which uses com.ibm.team.filesystem.client.workitems.IFileSystemWorkItemManager.createLink(IWorkspaceHandle, IChangeSetHandle, IWorkItemHandle[], IProgressMonitor) to create the link.
 


0 votes

Comments

I'm in an environment that is running outside of eclipse.  It's a web based tool that needs to be able to checkin and deliver changes to various files that the tool makes. I don't have a Shell, IWorkbenchPage or anything else eclipse related that I can rely on.  Is there something else I can use in the SCM component to do this that doesn't require me to be running in eclipse?


Thanks,
Eric

You use the Plain Java Client Libraries, so you have enough Java. I have no example code handy for what you want. My suggestion was to look in the RTC Eclipse Client set up with an SDK. You want to have this environment for development and debugging anyway. Look at the source code from com.ibm.team.filesystem.client.workitems.IFileSystemWorkItemManager.createLink(IWorkspaceHandle, IChangeSetHandle, IWorkItemHandle[], IProgressMonitor) . Maybe use this API to create the link?

https://rsjazz.wordpress.com/2015/09/30/learning-to-fly-getting-started-with-the-rtc-java-apis/ explains how to set up a proper development environment.

https://rsjazz.wordpress.com/2012/11/01/restrict-delivery-of-changesets-to-workitem-types-advisordelivery-of-changesets-associated-to-wrong-work-item-types-advisor/ shows linking (reading the link) from the SCM API perspective.

1 vote

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
× 12,020
× 1,202
× 411
× 102
× 49

Question asked: Aug 12 '16, 11:10 a.m.

Question was seen: 3,936 times

Last updated: Aug 18 '16, 3:49 a.m.

Confirmation Cancel Confirm