package com.blueland.bpm.engine.core.service;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

import com.blueland.bpm.engine.util.WorkFlowException;

/**
 * 流程监控Service
 * 
 * @version: 1.0
 * @author lw
 */
public interface ProcessTraceService  extends ActivitiService{
	
	/**
	 * 流程跟踪图
	 * 
	 * @param processInstanceId
	 *            流程实例ID
	 * @return 封装了各种节点信息
	 */
	 List<Map<String, Object>> traceProcess(String processInstanceId) throws WorkFlowException;

	/**
	 * 加载流程定义静态图片,并老亮显示当前活动 通过引擎内置提供的API来实现
	 * 
	 * @param processInstanceId
	 * @return InputStream
	 */
	 InputStream loadInternalProcessImage(String processInstanceId)throws WorkFlowException ;

	/**
	 * 获取流程流转轨迹列表-含意见
	 * 
	 * @param procInstId
	 * @return 返回历史任务、意见等数据
	 */
	 Map<String, Object> getHisTaskLog(String procInstId) throws WorkFlowException;
	 
	/**
	 * 获取流程轨迹意见，仅有意见的节点才返回
	 * 
	 * @param procInstId
	 * @return 返回有意见的历史任务数据
	 */
	 
	Map<String, Object> getHisTaskComments(String topProcInstId)throws WorkFlowException;

	/**
	 * 获取当前任务日志
	 * 
	 * @param procInstId
	 * @return 返回相同的历史任务、意见等数据
	 */
	Map<String, Object> getCurTaskLog(String procInstId) throws WorkFlowException;
	/**
	 * 获取流程轨迹，用于监控展现
	 * @param processInstanceId
	 * @return
	 */
	List<Map<String, Object>> getProcessTrace(String proceInstaceId);
	/**
	 * 获取流程实例的流程图
	 * @param processInstanceId
	 * @return
	 */
	public InputStream getProcessInstanceDiagram(String processInstanceId);
	/**
	 * 获取流程实例的流程图DIV
	 * @param processInstanceId
	 * @return
	 */
	public String getProcessInstanceDiv(String processInstanceId);
	/**
	 * 获取流程图的长宽大小
	 * @param processDefinitionId
	 * @return
	 */
	public String[] getProcessDiagramSize(String processDefinitionId);
	/**
	 * 获取流程定义的流程图DIV
	 * @param processDefinitionId
	 * @return
	 */
	public String getProcessDefinitionDiv(String processDefinitionId);
	/**
	 * 获取流程当前走到的环节轨迹
	 * @param processInstanceId
	 * @return
	 */
	public Map<String, Object> getHistoryProcess(String processInstanceId);
}
