"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#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...