在JBPM的使用过程中,由于JBPM完全屏蔽了流程内部的细节。所以有时候很难从全局上掌握流行的运行情况。比如你提交一个请求,只知道请求提交了,通常你是不知道提交到那里,也不知道你的请求目前在那个位置。这样必须专门通过程序去查看流程的整体运行情况。查看的方式越简单明了越好。
我采用图片的方式,能够显示出流程进过的历史和当前任务所在的节点。方便用户查询。
这个技术分成两个重要部分。第一个是查询当前流程的流程定义图片,将其转换成输出流。第二点是将查询任务经过的节点和当前节点,得到他们的坐标。在html中使用图像标注出来。
一:获得流程定义图片。
public InputStream findProcessInstancePic(String processInstanceId) {
ProcessInstance processInstance = executionService
.findProcessInstanceById(processInstanceId);
String processDefinitionId = processInstance.getProcessDefinitionId();
ProcessDefinition processDefinition = repositoryService
.createProcessDefinitionQuery()
.processDefinitionId(processDefinitionId).uniqueResult();
return repositoryService.getResourceAsStream(
processDefinition.getDeploymentId(),
processDefinition.getImageResourceName());
}