Bug 1048346

Summary: Add lookup of WorkItem from WorkItemInfo id or List<WorkItem> from ProcessInstance id
Product: [Retired] JBoss BPMS Platform 6 Reporter: Adam Baxter <abaxter>
Component: jBPM CoreAssignee: Kris Verlaenen <kverlaen>
Status: CLOSED EOL QA Contact: Radovan Synek <rsynek>
Severity: low Docs Contact:
Priority: low    
Version: 6.0.0CC: abaxter, lpetrovi, rrajasek
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-03-27 19:35:59 UTC Type: Feature Request
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Adam Baxter 2014-01-03 19:13:31 UTC
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

Comment 2 Adam Baxter 2014-01-03 19:28:40 UTC
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();

Comment 3 Marek Baluch 2014-01-03 19:46:09 UTC
As this is a new feature I'm setting severity to low.

Comment 4 Kris Verlaenen 2014-01-04 01:59:32 UTC
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)

Comment 5 Adam Baxter 2014-01-06 15:23:37 UTC
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