It's all about the answers!

Ask a question

How do I reference a work item using Java API


Jagadish R Rao (10612111) | asked Dec 28 '09, 1:06 a.m.
Hi

I am trying to sync two work items on different project area . The requirement is fairly simple, all I need to do is when the work item B is saved , the comments and status should be reflected in work item A.

I was able to get the details of work item B when the save is invoked. but I am not sure How I can provide the reference to work item A . so that I can update.

I have the numeric value of workitem ID of A which is stored in B as a comment.

I did saw IWorkItemHandle api , but could not make much use , as I got lost without javadoc.

Any help is appreciated

Thanks & Regards
Jagadish

6 answers



permanent link
Jan Wloka (4161) | answered Dec 30 '09, 9:08 a.m.
JAZZ DEVELOPER
Jagadish,

client and server provide different APIs for modifying a work item. In the
following example snippet I assume your code is invoked on the the
client-site:


ITeamRepository repository= <YOUR_REPOSITORY>;
IWorkItemClient itemClient= (IWorkItemClient)
repository.getClientLibrary(IWorkItemClient.class);
IWorkItemWorkingCopyManager copyManager=
itemClient.getWorkItemWorkingCopyManager();
IWorkItemHandle handle= itemClient.findWorkItemById(<YOUR_ITEM_ID>,
IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
try {
copyManager.connect(handle, IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
WorkItemWorkingCopy itemCopy= copyManager.getWorkingCopy(handle);
IWorkItem itemToBeModified= itemCopy.getWorkItem();

// modify the item's attributes

itemCopy.save(<YOUR_MONITOR>);
} finally {
copyManager.disconnect(handle);
}


On the client-site you need to create of copy of your work item A before
you can modify it. Replace <YOUR_ITEM_ID> with the numeric ID of item A
and update it's attributes. Note the FULL_PROFILE used here should be
replaced with a profile more suitable to your purpose.

HTH,
Jan.

--
Jan Wloka
Jazz Work Item Team


On Mon, 28 Dec 2009 07:06:51 +0100, jramakri
<jramakri> wrote:

Hi

I am trying to sync two work items on different project area . The
requirement is fairly simple, all I need to do is when the work item
B is saved , the comments and status should be reflected in work item
A.

I was able to get the details of work item B when the save is invoked.
but I am not sure How I can provide the reference to work item A . so
that I can update.

I have the numeric value of workitem ID of A which is stored in B as a
comment.

I did saw IWorkItemHandle api , but could not make much use , as I got
lost without javadoc.

Any help is appreciated

Thanks & Regards
Jagadish

permanent link
Jagadish R Rao (10612111) | answered Jan 04 '10, 12:44 a.m.
Hi Jan,

Many thanks for the response. The code is invoked from the server-side , so if we do it from the server side .. so any API similar to "findWorkItemById" on server side

Thanks & Regards
Jagadish

Jagadish,

client and server provide different APIs for modifying a work item. In the
following example snippet I assume your code is invoked on the the
client-site:


ITeamRepository repository= <YOUR_REPOSITORY>;
IWorkItemClient itemClient= (IWorkItemClient)
repository.getClientLibrary(IWorkItemClient.class);
IWorkItemWorkingCopyManager copyManager=
itemClient.getWorkItemWorkingCopyManager();
IWorkItemHandle handle= itemClient.findWorkItemById(<YOUR_ITEM_ID>,
IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
try {
copyManager.connect(handle, IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
WorkItemWorkingCopy itemCopy= copyManager.getWorkingCopy(handle);
IWorkItem itemToBeModified= itemCopy.getWorkItem();

// modify the item's attributes

itemCopy.save(<YOUR_MONITOR>);
} finally {
copyManager.disconnect(handle);
}


On the client-site you need to create of copy of your work item A before
you can modify it. Replace <YOUR_ITEM_ID> with the numeric ID of item A
and update it's attributes. Note the FULL_PROFILE used here should be
replaced with a profile more suitable to your purpose.

HTH,
Jan.

--
Jan Wloka
Jazz Work Item Team


On Mon, 28 Dec 2009 07:06:51 +0100, jramakri
<jramakri> wrote:

Hi

I am trying to sync two work items on different project area . The
requirement is fairly simple, all I need to do is when the work item
B is saved , the comments and status should be reflected in work item
A.

I was able to get the details of work item B when the save is invoked.
but I am not sure How I can provide the reference to work item A . so
that I can update.

I have the numeric value of workitem ID of A which is stored in B as a
comment.

I did saw IWorkItemHandle api , but could not make much use , as I got
lost without javadoc.

Any help is appreciated

Thanks & Regards
Jagadish

permanent link
Jan Wloka (4161) | answered Jan 04 '10, 6:08 a.m.
JAZZ DEVELOPER
Jagadish,

the sever-side API is very similar. If the enclosing class is a service
then you can find a work item by its numeric ID and modify it as follows:


IWorkItemServer itemServer= getService(IWorkItemServer.class);
itemServer.findWorkItemById(<YOUR_ITEM_ID>, IWorkItem.FULL_PROFILE, null);
IWorkItem itemCopy= (IWorkItem)item.getWorkingCopy();

// modify itemCopy's attributes

IStatus result= itemServer.saveWorkItem2(itemCopy, null, null);
if (!result.isOK()) {
// deal with errors
}


If you do modify references/links to the work item, saveWorkItem2() needs
to receive the references in the second parameter.

HTH,
Jan.


--
Jan Wloka
Jazz Work Item Team


On Mon, 04 Jan 2010 06:50:06 +0100, jramakri
<jramakri> wrote:

Hi Jan,

Many thanks for the response. The code is invoked from the server-side
, so if we do it from the server side .. so any API similar to
"findWorkItemById" on server side

Thanks & Regards
Jagadish

permanent link
Jagadish R Rao (10612111) | answered Jan 07 '10, 12:44 a.m.
Hi Jan,

Many Thanks for the reply .

I will try the server side API, However I did something little crazy stuff .

I used the Client API for the Workitem Save (server) side Operation behavior and was able to connect to any repository and sync with destination work item .

However for this plugin to work , I had to deploy some of client jar files (around 12 ) on the server so that the API's are made available to the plugin

I did see some exceptions on Jazz.log , but I did not notice any behavior change (ofcourse I concentrated on just open/save/modify of work items)

Though my plugin is working .. I still feel this is not a clean way ..

Wanted your expert opinion

Thanks & Regards
Jagadish



Jagadish,

the sever-side API is very similar. If the enclosing class is a service
then you can find a work item by its numeric ID and modify it as follows:


IWorkItemServer itemServer= getService(IWorkItemServer.class);
itemServer.findWorkItemById(<YOUR_ITEM_ID>, IWorkItem.FULL_PROFILE, null);
IWorkItem itemCopy= (IWorkItem)item.getWorkingCopy();

// modify itemCopy's attributes

IStatus result= itemServer.saveWorkItem2(itemCopy, null, null);
if (!result.isOK()) {
// deal with errors
}


If you do modify references/links to the work item, saveWorkItem2() needs
to receive the references in the second parameter.

HTH,
Jan.


--
Jan Wloka
Jazz Work Item Team


On Mon, 04 Jan 2010 06:50:06 +0100, jramakri
<jramakri> wrote:

Hi Jan,

Many thanks for the response. The code is invoked from the server-side
, so if we do it from the server side .. so any API similar to
"findWorkItemById" on server side

Thanks & Regards
Jagadish

permanent link
Luis Bazo (6832019) | answered Aug 24 '10, 7:56 a.m.
JAZZ DEVELOPER
Jagadish,

client and server provide different APIs for modifying a work item. In the
following example snippet I assume your code is invoked on the the
client-site:


ITeamRepository repository= <YOUR_REPOSITORY>;
IWorkItemClient itemClient= (IWorkItemClient)
repository.getClientLibrary(IWorkItemClient.class);
IWorkItemWorkingCopyManager copyManager=
itemClient.getWorkItemWorkingCopyManager();
IWorkItemHandle handle= itemClient.findWorkItemById(<YOUR_ITEM_ID>,
IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
try {
copyManager.connect(handle, IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
WorkItemWorkingCopy itemCopy= copyManager.getWorkingCopy(handle);
IWorkItem itemToBeModified= itemCopy.getWorkItem();

// modify the item's attributes

itemCopy.save(<YOUR_MONITOR>);
} finally {
copyManager.disconnect(handle);
}


On the client-site you need to create of copy of your work item A before
you can modify it. Replace <YOUR_ITEM_ID> with the numeric ID of item A
and update it's attributes. Note the FULL_PROFILE used here should be
replaced with a profile more suitable to your purpose.

HTH,
Jan.

--
Jan Wloka
Jazz Work Item Team


On Mon, 28 Dec 2009 07:06:51 +0100, jramakri
<jramakri> wrote:

Hi

I am trying to sync two work items on different project area . The
requirement is fairly simple, all I need to do is when the work item
B is saved , the comments and status should be reflected in work item
A.

I was able to get the details of work item B when the save is invoked.
but I am not sure How I can provide the reference to work item A . so
that I can update.

I have the numeric value of workitem ID of A which is stored in B as a
comment.

I did saw IWorkItemHandle api , but could not make much use , as I got
lost without javadoc.

Any help is appreciated

Thanks & Regards
Jagadish


ohhh thanks for the example I was looking for a workitem update example a lot of time. I didn't find any similar on the example snippets. Just creation of WI but not update.

Thanks

permanent link
SEC Servizi (97123559) | answered Jan 27 '12, 4:31 a.m.
IWorkItemClient itemClient= (IWorkItemClient) repository.getClientLibrary(IWorkItemClient.class);
IWorkItemHandle handle = itemClient.findWorkItemById(<YOUR_ITEM_ID>, IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);

The method findWorkItemById() from class IWorkItemClient returns a IWorkItem and not a IWorkItemHandle.
The correct way should be:
IWorkItemClient itemClient= (IWorkItemClient) repository.getClientLibrary(IWorkItemClient.class); 

IWorkItem wi = itemClient.findWorkItemById(<YOUR_ITEM_ID>, IWorkItem.FULL_PROFILE, <YOUR_MONITOR>);
IWorkItemHandle wiH = (IWorkItemHandle) wi.getItemHandle();

or even your code is correct? In fact, Java compiler doesn't bother with your code...
Thanks in advance.

Your answer


Register or 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.