Rahul Agrawal [https://community.jboss.org/people/rahulamt] created the discussion
"Re: NodeInstanceLog and Human Tasks relationship" To view the discussion, visit: https://community.jboss.org/message/799833#799833 -------------------------------------------------------------- I tried to implement it in the following way. It works fine. List<NodeInstanceLog> nodeInstancesList = dbLog.findNodeInstances(processInstanceId); List<HistoryRecord> objLstHistoryList = new ArrayList<HistoryRecord>(); Map<String, NodeInstanceLog> nodeInstances = new HashMap<String, NodeInstanceLog>(); for (NodeInstanceLog nodeInstance : nodeInstancesList) { if (nodeInstance.getType() == NodeInstanceLog.TYPE_ENTER) { nodeInstances.put(nodeInstance.getNodeInstanceId(), nodeInstance); } else { NodeInstanceLog enterLog = nodeInstances.get(nodeInstance.getNodeInstanceId()); HistoryRecord objHistoryRecord = null; objHistoryRecord = new HistoryRecord(); objHistoryRecord.setId(enterLog.getId()); objHistoryRecord.setStrNodeName(enterLog.getNodeName()); objHistoryRecord.setStrActedTime(nodeInstance.getDate().toString()); objHistoryRecord.setStrComment("Approved"); long lOrgDiff = nodeInstance.getDate().getTime() - enterLog.getDate().getTime() ; long lDiff = 0; lDiff = lOrgDiff / (60*60*1000); if(lDiff == 0) { lDiff = lOrgDiff / (60*1000); if (lDiff ==0 ) { lDiff = lOrgDiff / 1000; if(lDiff == 0) { objHistoryRecord.setStrDuration (lOrgDiff + " milisec."); } else objHistoryRecord.setStrDuration (lDiff + " sec."); } else { objHistoryRecord.setStrDuration (lDiff + " min."); } } else if(lDiff >= 24) { lDiff = lOrgDiff / (24*60*60*1000); objHistoryRecord.setStrDuration ( lDiff + " days."); } else { objHistoryRecord.setStrDuration (lDiff + " hrs."); } //Use the enterLog and nodeInstance object to get the duration field objLstHistoryList.add(objHistoryRecord); nodeInstances.remove(nodeInstance.getNodeInstanceId()); } } EntityManagerFactory emf = getEntityManagerFactory(processName); EntityManager em = emf.createEntityManager(); Query resultQuery = em.createQuery("SELECT t.taskData.actualOwner FROM NodeInstanceLog n ,org.jbpm.task.Task t left join t.names as i "+ "WHERE n.id = :nodeinstanceid AND " + " n.nodeName = i.text AND " + "n.processInstanceId = t.taskData.processInstanceId AND " + "t.taskData.status = 'Completed'"); java.util.Iterator<HistoryRecord> lstIterator = objLstHistoryList.iterator(); while(lstIterator.hasNext()) { try{ HistoryRecord hstryObj = lstIterator.next(); User user = (User)resultQuery.setParameter("nodeinstanceid", hstryObj.getId()).getSingleResult(); hstryObj.setStrActedBy(user.getId()); } catch (Exception e) { // TODO: handle exception } } return objLstHistoryList; -------------------------------------------------------------- Reply to this message by going to Community [https://community.jboss.org/message/799833#799833] Start a new discussion in jBPM at Community [https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
_______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user