how can i show a graph of the instance that i specify ?
yairfr Jul 25, 2007 11:30 AMhi,
i am trying to show the graph of the current task in the process instance that i pass by the taskInstanceId parameter.
today i can see the general graph of the process , not of the
instance of the process .
the error in on :
gpdBytes = fileDefinition.getBytes("gpd.xml");
because the fileDefinition comes out null.
should i insert a file definition to the processdefinition.xml ?
and if so - how ?
final long serialVersionUID = 1L; long taskInstanceId = -1; long tokenInstanceId = -1; byte[] gpdBytes = null; byte[] imageBytes = null; Token currentToken = null; ProcessDefinition processDefinition = null; String currentTokenColor = "red"; String childTokenColor = "blue"; String tokenNameColor = "blue"; ProcessImageJbpm PIJ = new ProcessImageJbpm(); String tempInsId = DBDate.nullstring(request .getParameter("TaskInstanceId")); if (tempInsId.equals("")) tempInsId = "0"; long TaskInstanceId = Long.parseLong(tempInsId); try { JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); TaskInstance taskInstance = jbpmContext.getTaskMgmtSession().loadTaskInstance(TaskInstanceId); currentToken = taskInstance.getToken(); processDefinition = currentToken.getProcessInstance().getProcessDefinition(); PIJ.setCurrentToken(currentToken); FileDefinition fileDefinition = processDefinition.getFileDefinition(); if(fileDefinition!=null) { gpdBytes = fileDefinition.getBytes("gpd.xml"); imageBytes = fileDefinition.getBytes("processimage.jpg"); if (gpdBytes != null && imageBytes != null) { int borderWidth = 4; Element rootDiagramElement = DocumentHelper.parseText( new String(gpdBytes)).getRootElement(); int[] boxConstraint; int[] imageDimension = PIJ .extractImageDimension(rootDiagramElement); String imageLink = "processimage?definitionId=" + processDefinition.getId(); if (tokenInstanceId > 0) { List allTokens = new ArrayList(); allTokens = PIJ.walkTokens(currentToken, allTokens); out.println("<div style='position:relative; background-image:url(" + imageLink + "); width: " + imageDimension[0] + "px; height: " + imageDimension[1] + "px;'>"); for (int i = 0; i < allTokens.size(); i++) { Token token = (Token) allTokens.get(i); //check how many tokens are on teh same level (= having the same parent) int offset = i; if (i > 0) { while (offset > 0&& ((Token) allTokens.get(offset - 1)).getParent().equals(token.getParent())) { offset--; } } boxConstraint = PIJ.extractBoxConstraint(rootDiagramElement, token); //Adjust for borders boxConstraint[2] -= borderWidth * 2; boxConstraint[3] -= borderWidth * 2; out.println("<div style='position:absolute; left: " + boxConstraint[0] + "px; top: " + boxConstraint[1] + "px; "); if (i == (allTokens.size() - 1)) { out.println("border: " + currentTokenColor); } else { out.println("border: " + childTokenColor); } out.println(" " + borderWidth + "px groove; " + "width: " + boxConstraint[2] + "px; height: " + boxConstraint[3] + "px;'>"); if (token.getName() != null) { out.println("<span style='color:" + tokenNameColor + ";font-style:italic;position:absolute;left:" + (boxConstraint[2] + 10) + "px;top:" + ((i - offset) * 20) + ";'> " + token.getName() + "</span>"); } out.println("</div>"); } out.println("</div>"); } else { boxConstraint = PIJ.extractBoxConstraint(rootDiagramElement); out.println("<table border=0 cellspacing=0 cellpadding=0 width=" + imageDimension[0] + " height=" + imageDimension[1] + ">"); out.println(" <tr>"); out.println(" <td width=" + imageDimension[0] + " height=" + imageDimension[1] + " style=\"background-image:url(" + imageLink + ")\" valign=top>"); out.println(" <table border=0 cellspacing=0 cellpadding=0>"); out.println(" <tr>"); out.println(" <td width=" + (boxConstraint[0] - borderWidth) + " height=" + (boxConstraint[1] - borderWidth) + " style=\"background-color:transparent;\"></td>"); out.println(" </tr>"); out.println(" <tr>"); out.println(" <td style=\"background-color:transparent;\"></td>"); out.println(" <td style=\"border-color:" + currentTokenColor + "; border-width:" + borderWidth + "px; border-style:groove; background-color:transparent;\" width=" + boxConstraint[2] + " height=" + (boxConstraint[3] + (2 * borderWidth)) + "> </td>"); out.println(" </tr>"); out.println(" </table>"); out.println(" </td>"); out.println(" </tr>"); out.println("</table>"); } out.flush(); } } } catch (IOException e) { e.printStackTrace(); //throw new JspException("table couldn't be displayed", e); } catch (DocumentException e) { e.printStackTrace(); } //throw new JspException("table couldn't be displayed", e); catch (Exception e) { e.printStackTrace(); } taskInstanceId = -1; gpdBytes = null; imageBytes = null; currentToken = null;