Is there any way to read the work item history using RTC Java API's?

One answer

Look at the methods for ItemManager in the API doc. In particular the fetch methods.
very _sparse_ snippet:
// workItem is a particular work item already fetched from repository
IAuditableHandle auditableHandle = (IAuditableHandle) workItem.getItemHandle();
IItemManager itemManager = repository().itemManager();
...
handles = itemManager.fetchAllStateHandles( auditableHandle, null);
List<IWorkItem> workItems = new ArrayList<IWorkItem>();
workItems = itemManager.fetchCompleteStates(handles, null);
You can now iterate workItems and get the attributes you wish to examine, each of which is a historic view of the starting work item.
very _sparse_ snippet:
// workItem is a particular work item already fetched from repository
IAuditableHandle auditableHandle = (IAuditableHandle) workItem.getItemHandle();
IItemManager itemManager = repository().itemManager();
...
handles = itemManager.fetchAllStateHandles( auditableHandle, null);
List<IWorkItem> workItems = new ArrayList<IWorkItem>();
workItems = itemManager.fetchCompleteStates(handles, null);
You can now iterate workItems and get the attributes you wish to examine, each of which is a historic view of the starting work item.
Comments

Hi Kevin
Thanks for the solution. I tried but found that it is always giving the last state of the work item for every instance of the work item history but I need the copy of the work item for every time when the work item is saved.

Not an expert on this, but history should represent a workitem when it was saved. It makes no logical sense that an attribute change is recorded w/o the work item being saved, whether by clicking the Save button on a UI or calling the save() method of an editable work item in a user-written program.