[jboss-user] [jBPM Users] - Re: Hibernate LazyInitializationException

remiel512 do-not-reply at jboss.com
Mon Oct 19 04:53:40 EDT 2009


"sebastian.s" wrote : Your process definition got lost. Can you repost it using the code-tags? Also please provide a unit test to show how you invoke the API.

Thanks Sebastian. Infos below:

process definition : (Same as examples/taskform)

  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <process name="VacationRequest" xmlns="http://jbpm.org/4.0/jpdl">
  |   <start form="org/jbpm/examples/taskform/request_vacation.ftl" g="16,56,48,48" name="start">
  |     <transition to="verify_request"/>
  |   </start>
  |   <task candidate-users="mike,peter" form="org/jbpm/examples/taskform/verify_request.ftl" g="96,54,178,52" name="verify_request">
  |     <transition g="-34,9" name="reject" to="vacation_rejected"/>
  |     <transition g="-46,-26" name="accept" to="vacation_accepted"/>
  |   </task>
  |   <end g="306,16,48,48" name="vacation_accepted"/>
  |   <end g="306,96,48,48" name="vacation_rejected"/>
  | </process>
  | 

I am trying to get all history information of an process instance using Servlet and JSP. Codes below :

ProcessManager:

  | public ProcessInstaticeActivityInfo getActivityCoordinatesInfo(String processInstanceId) {  
  | 	    ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) this  
  | 	        .getProcessDefinitionByProcessInstanceId(processInstanceId);  
  | 	    String pdId = processDefinition.getId();  
  | 	    List<ActivityInfo> activeCoordinates = new ArrayList<ActivityInfo>(); 
  | 	  
  | 	    List<ActivityInfo> coordinateList = new ArrayList<ActivityInfo>(); 
  | 	    {  
  | 	      ActivityInfo activityInfo = new ActivityInfo(processDefinition.getInitial().getCoordinates());  
  | 	      coordinateList.add(activityInfo);  
  | 	      List<HistoryActivityInstance> activities = historyService.createHistoryActivityInstanceQuery()  
  | 	          .executionId(processInstanceId).list();  
  | 	      for (HistoryActivityInstance activity : activities) {  
  | 	        String activityName = activity.getActivityName();  
  | 	        activityInfo = new ActivityInfo(repositoryService.getActivityCoordinates(pdId, activityName));  
  | 	        activityInfo.setActivityInstance(activity);  
  | 	        coordinateList.add(activityInfo);  
  | 	      }  
  | 	    }  
  | 	  
  | 	    HistoryProcessInstance hpi = getHistoryProcessInstancByProcessInstanceId(processInstanceId);  
  | 	    String endActivityName = ((HistoryProcessInstanceImpl) hpi).getEndActivityName();  
  | 	  
  | 	    if (endActivityName != null) { 
  | 	      ActivityCoordinates coordinates = repositoryService.getActivityCoordinates(pdId, endActivityName);  
  | 	      activeCoordinates.add(new ActivityInfo(coordinates)); 
  | 	    } else { 
  | 	      Set<String> activityNames = executionService.findExecutionById(processInstanceId)  
  | 	          .findActiveActivityNames();  
  | 	      for (String activityName : activityNames) {  
  | 	        ActivityCoordinates coordinates = repositoryService.getActivityCoordinates(pdId, activityName);  
  | 	        activeCoordinates.add(new ActivityInfo(coordinates));  
  | 	      }  
  | 	    }  
  | 	    return new ProcessInstaticeActivityInfo(activeCoordinates, coordinateList);  
  | 	} 
  | 

Servlet:

  | public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  | 	{
  | 		ProcessManager pm = new ProcessManager();
  | 		String taskId = 
  |             request.getParameter("taskid");
  | 		String piId = request.getParameter("pid");  
  | 		ProcessInstaticeActivityInfo processInstaticeActivityInfo = pm.getActivityCoordinatesInfo(piId);  
  | 		request.setAttribute("activeActivityInfos", processInstaticeActivityInfo.getActiveActivityInfos());  
  | 		request.setAttribute("processedActivityInfos", processInstaticeActivityInfo.getProcessedActivityInfos());
  | 		request.setAttribute("pm",pm);
  | 		response.setContentType("text/html;charset=UTF-8");
  | 		RequestDispatcher dispatcher = request.getRequestDispatcher("st_view.jsp");
  |         dispatcher.forward(request, response);
  | 	}
  | 

jsp:

  | ProcessManager pm = (ProcessManager)request.getAttribute("pm");
  |          int id = 0;  
  |          List<ActivityInfo> processedActivityInfos = (List<ActivityInfo>)request.getAttribute("processedActivityInfos"); ;  
  |          List<ActivityInfo> activeActivityInfos = (List<ActivityInfo>)request.getAttribute("activeActivityInfos");   
  |          ActivityCoordinates coordinates;  
  |          HistoryActivityInstance activityInstance;  
  |          for(ActivityInfo info : processedActivityInfos){  
  |            coordinates = info.getCoordinates();  
  |            activityInstance = info.getActivityInstance();  
  |            String elId = "_pai_" + (++id);  
  |            String title = activityInstance==null?"":activityInstance.getActivityName();   
  |            StringBuffer position = new StringBuffer();  
  |            position.append("left:").append(coordinates.getX()+2).append("px;");  
  |            position.append("top:").append(coordinates.getY()+2).append("px;");  
  |            position.append("height:").append(coordinates.getHeight()-10).append("px;");  
  |            position.append("width:").append(coordinates.getWidth()-10).append("px;");  
  |            StringBuffer text = new StringBuffer();
  |            
  |            if (activityInstance instanceof HistoryDecisionInstanceImpl) {  
  |              text.append("<b>CompleteTime:</b> ").append(activityInstance.getEndTime());  
  |              String transitionName = ((HistoryActivityInstanceImpl) activityInstance).getTransitionName();  
  |              if("completed".equals(transitionName)){  
  |                ProcessDefinition pd = pm.getProcessDefinitionByProcessInstanceId(request.getParameter("piId"));  
  |                if(pd!=null){  
  |                  Activity activity = ((ProcessDefinitionImpl)pd).getActivitiesMap().get(activityInstance.getActivityName());  
  |                  if(activity!=null){  
  |                    text.append("<br/><b>Transaction:</b> ").append(activity.getDefaultOutgoingTransition().getName());  
  |                  }  
  |                }  
  |              } else {  
  |                text.append("<br/><b>Transaction:</b> ").append(transitionName);  
  |              }  
  |            } else if (activityInstance instanceof HistoryTaskInstanceImpl) {  
  |              HistoryTaskInstanceImpl taskInstanceImpl = (HistoryTaskInstanceImpl) activityInstance; 
  |              
  |              
  |              text.append("<b>Assignee</b>: ").append(taskInstanceImpl.getHistoryTask().getAssignee());  
  |              text.append("<br/><b>Complete Time:</b> ").append(activityInstance.getEndTime());  
  |              String transitionName = ((HistoryActivityInstanceImpl) activityInstance).getTransitionName();  
  |              if("completed".equals(transitionName)){  
  |                ProcessDefinition pd = pm.getProcessDefinitionByProcessInstanceId(request.getParameter("piId"));  
  |                if(pd!=null){  
  |                  Activity activity = ((ProcessDefinitionImpl)pd).getActivitiesMap().get(activityInstance.getActivityName());  
  |                  if(activity!=null){  
  |                    text.append("<br/><b>Transaction:</b> ").append(activity.getDefaultOutgoingTransition().getName());  
  |                  }  
  |                }  
  |              } else {  
  |                text.append("<br/><b>Transaction:</b> ").append(transitionName);  
  |              }  
  |                
  |              List<HistoryComment> comments =  pm.getTaskComments(taskInstanceImpl.getHistoryTask().getId());  
  |              if(comments.size()>0){ // 表示最新的comment  
  |                text.append("<br/><br/><b>Comments:</b> ").append(comments.get(comments.size()-1).getMessage());  
  |              }  
  |            }
  | 

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4261004#4261004

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4261004




More information about the jboss-user mailing list