6.5.2 方式 2
通过查询流程部署信息获取流程定义资源。
代码语言:javascript复制// 获取流程定义图片资源
@Test
public void getProcessResources() throws IOException {
//流程部署id
String deploymentId = "9001";
// 通过流程引擎获取repositoryService
RepositoryService repositoryService = processEngine
.getRepositoryService();
//读取资源名称
List<String> resources =
repositoryService.getDeploymentResourceNames(deploymentId);
String resource_image = null;
//获取图片
for(String resource_name :resources){
if(resource_name.indexOf(".png")>=0){
resource_image = resource_name;
}
}
//图片输入流
InputStream inputStream =
repositoryService.getResourceAsStream(deploymentId, resource_image);
File exportFile = new File("d:/holiday.png");
FileOutputStream fileOutputStream = new
FileOutputStream(exportFile);
byte[] buffer = new byte[1024];
int len = -1;
//输出图片
while((len = inputStream.read(buffer))!=-1){
fileOutputStream.write(buffer, 0, len);
}
inputStream.close();
fileOutputStream.close();
}
说明:
1) deploymentId 为流程部署 ID
2) resource_name 为 act_ge_bytearray 表中 NAME_列的值
3) 使用 repositoryService 的 getDeploymentResourceNames方法可以获取指定部署下得所有文件的名称
4) 使用 repositoryService 的 getResourceAsStream 方法传入部署 ID和资源图片名称可以获取部署下指定名称文件的输入流
5) 最后的将输入流中的图片资源进行输出。
6.6流程历史信息的查看
即使流程定义已经删除了,流程执行的历史信息通过前面的分析,依然保存在 activiti 的 act_hi_*相关的表中。所以我们还是可以查询流程执行的历史信息,可以通过 HistoryService 来查看相关的历史记录。
代码语言:javascript复制public void testHistoric01(){
HistoryService historyService = pe.getHistoryService();
HistoricActivityInstanceQuery query =
historyService.createHistoricActivityInstanceQuery();
query.processInstanceId("1501");
List<HistoricActivityInstance> list = query.list();
for(HistoricActivityInstance ai :list){
System.out.println(ai.getActivityId());
System.out.println(ai.getActivityName());
System.out.println(ai.getProcessDefinitionId());
System.out.println(ai.getProcessInstanceId());
System.out.println("==============================");
}
}