[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