Activiti 프로세스 맵 보기 인스턴스
1. 테스트 용례 보기 그림 코드는 다음과 같습니다.
public void viewImage() throws Exception {
//
RepositoryService repositoryService = processEngine.getRepositoryService();
//
String deploymentId = "701";
List<String> names = repositoryService.getDeploymentResourceNames(deploymentId);
String imageName = null;
for (String name : names) {
if(name.indexOf(".png")>=0){
imageName = name;
}
}
if(imageName!=null){
// System.out.println(imageName);
File f = new File("e:/"+ imageName);
// ID
InputStream in = repositoryService.getResourceAsStream(deploymentId, imageName);
FileUtils.copyInputStreamToFile(in, f);
}
설명:1) deploymentId의 프로세스 배포 ID
2) resourceName이(가) act_ge_bytearray 테이블에서 NAME_열의 값
3) repository Service의 getDeployment ResourceNames 방법을 사용하면 배치된 모든 파일의 이름을 지정할 수 있습니다
4) repository Service의 getResourceAsStream 방법으로 배치 ID와 파일 이름을 전송하면 배치된 이름 파일의 입력 흐름을 얻을 수 있습니다
5) 마지막 IO 흐름에 대한 작업, FileUtils 도구의copyInputStreamToFile 방법으로 프로세스에서 파일로의 복사 완료
2. 웹 프로젝트에서 프로세스 정의 페이지에서 그림을 보기:
public String viewImage(){
InputStream in = repositoryService.getResourceAsStream.getImageStream(deploymentId,imageName);// service
HttpServletResponse resp = ServletActionContext.getResponse();
try {
OutputStream out = resp.getOutputStream();
// resp
byte[] b = new byte[1024];
for (int len = -1; (len= in.read(b))!=-1; ) {
out.write(b, 0, len);
}
//
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
설명:1) deploymentId는 프로세스 배포 ID이고 imageName은 그림 이름입니다.
2) 프로세스 정의 목록 페이지에서 그림을 보기 때문에 id와 imageName은 프로세스 정의 (ProcessDefinition) 에서 얻을 수 있습니다 (String getDeploymentId ().및 String getDiagram ResourceName();)
3) 웹 페이지 레이블흐름도 보기
3. 웹 프로젝트 현재 흐름도 보기
public String viewCurrentImage(){
ProcessDefinition pd = service.getProcessDefinitionByTaskId(taskId);
// 1. ID
putContext("deploymentId", pd.getDeploymentId());
// 2.
putContext("imageName", pd.getDiagramResourceName());
// 3.
Map<String,Object> currentActivityCoordinates =service.getCurrentActivityCoordinates(taskId);
putContext("acs", currentActivityCoordinates);
return "image";
}
그중의 서비스.getProcessDefinitionByTaskId(taskId);의 코드 구현:
public ProcessDefinition getProcessDefinitionByTaskId(String taskId) {
// 1. task
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 2. task pdid
ProcessDefinition pd = repositoryService.getProcessDefinition(task.getProcessDefinitionId());
return pd;
}
그중의 서비스.getCurrentActivityCoordinates(taskId);의 코드 구현:
public Map<String, Object> getCurrentActivityCoordinates(String taskId) {
Map<String, Object> coordinates = new HashMap<String, Object>();
// 1. ID
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
String currentActivitiId = pi.getActivityId();
// 2.
ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId());
// 3. currentActivitiId
ActivityImpl activity = pd.findActivity(currentActivitiId);
// 4.
coordinates.put("x", activity.getX());
coordinates.put("y", activity.getY());
coordinates.put("width", activity.getWidth());
coordinates.put("height", activity.getHeight());
return coordinates;
}
이미지 페이지 섹션:개인 작업 목록 페이지에서 를 클릭하여 현재 흐름도 보기 다음 페이지로 이동합니다.
<body>
<!-- 1. strust2 -->
<img style="position: absolute;top: 0px;left: 0px;" src="viewImage?deploymentId=<s:property value='#deploymentId'/>&imageName=<s:property value='#imageName'/>">
<!-- 2. , DIV -->
<div style="position: absolute;border:1px solid red;top:<s:property value='#acs.y'/>px;left: <s:property value='#acs.x'/>px;width: <s:property value='#acs.width'/>px;height:<s:property value='#acs.height'/>px; "></div>
</body>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activiti 처리 오류activiti5.22.0, 작업 중 오류, taskService.complete(taskId); 오류 정보: [11-21 14:45:52] ERROR CommandContext [main]: Error while ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.