[jboss-user] [JBoss jBPM] - how can i show a graph of the instance that i specify ?

yairfr do-not-reply at jboss.com
Wed Jul 25 11:30:55 EDT 2007


hi,

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;
  | 

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

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




More information about the jboss-user mailing list