发布流程,网上几乎都是用zip来部署流程,太过繁琐,其实只要添加流程图片的Resource就可以了。
action接收processInstance的Id,得到流程图,并在当前activity上画框,来显示流程走到哪里。
structs里面配置result为stream类型,class交给spring处理没有集成的可以修改成原有路径
调用起来就很简单了
运行结果:
[img]http://dl.iteye.com/upload/attachment/0068/8261/87210c52-8e36-3686-90fa-78d13ceaecd3.png[/img]
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'/>"/>
运行结果:
[img]http://dl.iteye.com/upload/attachment/0068/8261/87210c52-8e36-3686-90fa-78d13ceaecd3.png[/img]