`
masterlim
  • 浏览: 3879 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JBPM4.4显示流程图片

阅读更多
发布流程,网上几乎都是用zip来部署流程,太过繁琐,其实只要添加流程图片的Resource就可以了。
repositoryService.createDeployment()
    .addResourceFromClasspath("process/recruiment.jpdl.xml")
    .addResourceFromClasspath("process/recruiment.png")
    .deploy();

action接收processInstance的Id,得到流程图,并在当前activity上画框,来显示流程走到哪里。
ProcessInstance processInstance = executionService
.findProcessInstanceById(pid);

String processDefinitionId = processInstance.getProcessDefinitionId();
ProcessDefinition processDefinition = repositoryService
.createProcessDefinitionQuery().processDefinitionId(
processDefinitionId).uniqueResult();

Set<String> activityNames = processInstance.findActiveActivityNames();
BufferedImage image = null;

for (String activityName : activityNames) {
    ActivityCoordinates ac = repositoryService.getActivityCoordinates(
	processInstance.getProcessDefinitionId(), activityName);

    InputStream is = repositoryService.getResourceAsStream(
	processDefinition.getDeploymentId(), processDefinition
	.getImageResourceName());

    image = ImageIO.read(is);
    Graphics g = image.getGraphics();
    g.setColor(new Color(255, 0, 0));

    g.drawRect(ac.getX(), ac.getY(), ac.getWidth(), ac.getHeight());
    g.dispose();
}

ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(image, "PNG", output);
ByteArrayInputStream input = new ByteArrayInputStream(output
.toByteArray());
this.setInputStream(input);
return SUCCESS;

structs里面配置result为stream类型,class交给spring处理没有集成的可以修改成原有路径
<action name="processImage" class="processImageAction">
	<result type="stream">
		<param name="contentType">image/png</param>
		<param name="inputName">inputStream</param>
	</result>
</action>

调用起来就很简单了
<img src="processImage.action?pid=<s:property value='id'/>"/>

运行结果:
  • 大小: 26.2 KB
分享到:
评论
1 楼 gamp.ding 2012-11-22  
博主这里面的java代码没有写全啊,
this.setInputStream(input);  这个方法改怎么写啊?

相关推荐

Global site tag (gtag.js) - Google Analytics