⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workflowaction.java

📁 这是一个jbpm的高级应用,是一个oa工作流的系统,里面用到了spring,hibernate技术等.实为学习jbpm的好资料!
💻 JAVA
字号:
package com.bjsxt.oa.web.actions;

import java.io.ByteArrayInputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.dom4j.io.SAXReader;

import com.bjsxt.oa.managers.WorkflowManager;
import com.bjsxt.oa.model.Workflow;
import com.bjsxt.oa.web.forms.WorkflowActionForm;

public class WorkflowAction extends BaseAction {

	private WorkflowManager workflowManager;
	
	//进入流程管理的首页
	@Override
	protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		request.setAttribute("flows", workflowManager.searchAllProcessDefinition());
		
		return mapping.findForward("index");
	}
	
	//上传流程定义及图片
	public ActionForward uploadProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		WorkflowActionForm waf = (WorkflowActionForm)form;
		
		byte[] processdef = null;
		byte[] processimage = null;
		
		if(waf.getProcessDefinition() != null){
			processdef = waf.getProcessDefinition().getFileData();
		}
		if(waf.getProcessImage() != null){
			processimage = waf.getProcessImage().getFileData();
		}
		
		//调用业务逻辑,添加流程定义
		workflowManager.deployProcessDefinition(processdef, processimage);
		
		return mapping.findForward("upload_success");
	}

	//删除流程定义
	public ActionForward del(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		WorkflowActionForm waf = (WorkflowActionForm)form;
		
		workflowManager.delProcessDefinition(waf.getName());
		
		return mapping.findForward("pub_del_success");
	}
	
	//打开查看流程图片的界面
	public ActionForward openViewImage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		return mapping.findForward("flow_image");
	}
	
	//查看图片
	public ActionForward viewImage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		WorkflowActionForm waf = (WorkflowActionForm)form;
		Workflow wf = workflowManager.findWorkflow(waf.getName());
		
		//图片类型
		response.setContentType("image/jpeg");
		
		//将图片的数据写入response
		response.getOutputStream().write(wf.getProcessimage());
		
		//告诉struts不要去处理response
		return null;
	}
	
	//查看流程定义文件
	public ActionForward viewFlowDef(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		WorkflowActionForm waf = (WorkflowActionForm)form;
		Workflow wf = workflowManager.findWorkflow(waf.getName());
		
		//在将一个byte[]转换为字符串时,最好不要写死其编码
		//request.setAttribute("def", new String(wf.getProcessdefinition(),"UTF-8"));
		
		/**
		 * 通过这种方式,将一个XML文本流转换为字符串,可以避免编码的问题。
		 * 因为XML解释器会自动根据这个文本流的编码来读取数据。
		 */
		request.setAttribute("def",
				new SAXReader().read(new ByteArrayInputStream(wf.getProcessdefinition())).asXML()
			);
		
		return mapping.findForward("flow_def");
	}

	public void setWorkflowManager(WorkflowManager workflowManager) {
		this.workflowManager = workflowManager;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -