Description of problem: Request additional functionality to access a WorkItemInfo given its id. Same for a List<WorkItemInfo> given its Process Instance id. The only way for this functionality right now is to query the database manually. Version-Release number of selected component (if applicable): 6.0.0.Final
In particular, we are running the following queries: 1) Query query = entityManager.createQuery("from WorkItemInfo wii where wii.workItemId = :workItemId"); query.setParameter("workItemId", id); WorkItemInfo info = (WorkItemInfo)query.getSingleResult(); 2) final Long pendingStatus = new Long(WorkItem.PENDING); Query query = entityManager.createQuery("from WorkItemInfo wii where wii.processInstanceId = :processInstanceId and wii.state = :state"); query.setParameter("processInstanceId", processInstanceId); query.setParameter("state", pendingStatus); List<WorkItemInfo> infos = (List)query.getResultList();
As this is a new feature I'm setting severity to low.
Adam, could you elaborate why you would need access to the WorkItemInfo object? This is considered an internal persistence Object and should only be accessed with caution (similar to for example ProcessInstanceInfo). Note that you could get a WorkItem using: ((org.drools.core.process.instance.WorkItemManager) ksession.getWorkItemManager()).getWorkItem(id)
Hi Kris, Our goal is to provide the WorkItem when the only information we've been provided is the WorkItem Id. In this code we do not know the ProcessInstance Id at the start. We need that to get the ksession. Our code looks like: 1) Get WorkItemInfo matching the provided WorkItem id. 2) Get the ProcessInstance Id from the WorkItemInfo 3) Get the KieSession given the ProcessInstance Id 4) Get the WorkItemManager from the KieSession 5) return the WorkItem from the WorkItemManager using the originally provided id