[jboss-user] [jBPM Users] - Re: Query on remaining task
freak182
do-not-reply at jboss.com
Wed Aug 26 05:49:44 EDT 2009
Hello,
Just wanted to share how I accomplished this query. although it is not, let say hibernate way or jbpm way, but it work.
|
| @SuppressWarnings("unchecked")
| public List<Task> findNextTasksByProcessInstance(final ProcessInstance process)
| {
| try {
| return (List<Task>) jbpmTemplate.execute(new JbpmCallback() {
|
| public Object doInJbpm(JbpmContext context)
| throws JbpmException {
|
| final long processDefId = process.getProcessDefinition().getId();
|
| final GraphSession sess = context.getGraphSession();
| final ProcessDefinition def = sess.getProcessDefinition(processDefId);
| final Map<String, Task> task = def.getTaskMgmtDefinition().getTasks();
| final Set<String> taskSet = task.keySet();
|
| final Session session = context.getSession();
| final Query query = session.getNamedQuery("findNextTasksByProcessInstance");
| query.setEntity("processInstance", process);
| final List<String> taskInstance = query.list();
|
| return JbpmEngineUtils.getNextTasks(taskSet, taskInstance, task);
| }
| });
| } catch (Exception e) {
| throw new CCTIException("No task instance get", e);
| }
| }
|
then subtract the activeTask from possibletask:
| public static List<String> getNextTasks(Set<String> possibleTask,List<String> completedTask,Map<String,Task> task)
| {
| final List<String> nextTasks = new ArrayList<String>();
|
| final Set<String> tmpPossibleTask = new HashSet<String>(possibleTask);
| final List<String> tmpActiveTask = new ArrayList<String>(completedTask);
| final Map<String, Task> mapTask = new HashMap<String, Task>(task);
|
| for(String s : tmpActiveTask)
| {
| if ( tmpPossibleTask.contains(s) )
| {
| tmpPossibleTask.remove(s);
| }
| }
| Iterator<String> ite = tmpPossibleTask.iterator();
| while (ite.hasNext()) {
| final String string = ite.next();
| final Task taskLeft = mapTask.get(string);
| nextTasks.add(taskLeft.getDescription());
| }
| return nextTasks;
| }
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4251736#4251736
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4251736
More information about the jboss-user
mailing list