流程的发布常用的有二种方式:直接发布processdefinition.xml定义的xml文件, 在以前的文章描述中使用的方式。建议使用第二种方式,gpd.xml、processdefinition.xml、processimage.jpg压缩成zip文件上传。注rar不可以,java当中不支持这种商业化的压缩文件。
代码如下:
1 deployjbpm.jsp下选择zip压缩文件上传
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<html>
<head>
</head>
<body>
<form action="${ctx}/jbpmdeploy.do?method=deploy" enctype="multipart/form-data" method="post" />
选择zip类型流程上传 : <input type="file" name="file" />
<br/>
<input type="submit">
</form>
</body>
</html>
2 struts中的action文件
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.shane.commons.core.web.StrutsAction;
import com.shane.security.service.UploadProcessManager;
public class JbpmAction extends StrutsAction {
private static Log log = LogFactory.getLog(JbpmAction.class);
private UploadProcessManager uploadProcessManager;
public void setUploadProcessManager(UploadProcessManager uploadProcessManager) {
this.uploadProcessManager = uploadProcessManager;
}
/**
* 上传流程文件
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public ActionForward deploy(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
log.info("执行流程部署!");
log.info(uploadProcessManager.handleRequest(request));
return mapping.findForward("delpoyindex");
}
}
3 Service类,使用时要修改自已的hibernate的封装。代码中使用spring的设置式注入方式。相关文件可以自行编写。本方式是根据jbpm自带的示例改写。
3.1接口定义
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
public interface UploadProcessManager {
public void printInput(HttpServletRequest request) throws IOException;
public String handleRequest(HttpServletRequest request);
}
3.2实现类
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.zip.ZipInputStream;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;
import com.shane.commons.core.dao.HibernateEntityDao;
public class UploadProcessManagerImpl extends HibernateEntityDao implements UploadProcessManager{
private JbpmConfiguration jbpmConfiguration;
public void printInput(HttpServletRequest request) throws IOException {
InputStream inputStream = request.getInputStream();
StringBuffer buffer = new StringBuffer();
int read;
while ((read = inputStream.read()) != -1) {
buffer.append((char)read);
}
}
public String handleRequest(HttpServletRequest request) {
if (!FileUpload.isMultipartContent(request)) {
return "Not a multipart request";
}
try {
DiskFileUpload fileUpload = new DiskFileUpload();
List list = fileUpload.parseRequest(request);
Iterator iterator = list.iterator();
if (!iterator.hasNext()) {
return "No process file in the request";
}
FileItem fileItem = (FileItem)iterator.next();
if (fileItem.getContentType().indexOf("application/x-zip-compressed") == -1) {
return "Not a process archive";
}
return doDeployment(fileItem);
} catch (FileUploadException e) {
e.printStackTrace();
return "FileUploadException";
}
}
public String doDeployment(FileItem fileItem) {
try {
ZipInputStream zipInputStream = new ZipInputStream(fileItem.getInputStream());
JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
if(jbpmContext == null) {
jbpmContext = this.getJbpmContext();
}
ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
jbpmContext.deployProcessDefinition(processDefinition);
zipInputStream.close();
return "Deployed archive " + processDefinition.getName() + " successfully";
} catch (IOException e) {
return "IOException";
}
}
private JbpmContext getJbpmContext(){
JbpmContext context = jbpmConfiguration.getInstance().createJbpmContext();
context.setSession(this.getSession());
return context;
}
public void setJbpmConfiguration(JbpmConfiguration jbpmConfiguration) {
this.jbpmConfiguration = jbpmConfiguration;
}
}
分享到:
- 2009-01-10 08:12
- 浏览 1896
- 评论(4)
- 论坛回复 / 浏览 (3 / 3979)
- 查看更多
相关推荐
**jbpm_ssh.zip_jbpm+ssh** 是一个包含jbpm(Java Business Process Management)与SSH(Spring、Struts和Hibernate)集成示例的压缩包。这个集成是企业级Java应用开发中的常见实践,旨在利用jbpm的强大工作流管理...
- `jbpm与ssh框架集成.mht` 文件可能包含了一个完整的示例,演示了如何在SSH项目中启动和控制jbpm流程。 - `jbpm 4_3 与 spring 集成 - AJava.mht` 文件可能是关于jbpm 4.3版本与Spring集成的详细教程,包括具体的...
这个“jbpm+SSH完整例子”正是结合了这两种技术,为初学者提供了一个学习和理解jbpm工作流以及SSH框架集成的实用示例。 首先,jbpm的核心功能包括流程定义、流程实例管理、任务服务、事件处理等。它使用BPMN 2.0...
【jbpm+ssh整合】是将企业级工作流引擎jbpm与流行的SSH(Struts、Spring、Hibernate)框架集成,实现一个完整的业务流程管理系统。jbpm是一个开源的工作流引擎,可以处理复杂的业务流程自动化,而SSH是Java开发中...
在Java开发中,jbpm与SSH的整合可以实现业务流程管理和后端服务的无缝对接,提高系统的灵活性和可扩展性。 首先,我们来了解jbpm的核心功能。jbpm支持BPMN2(Business Process Model and Notation 2.0)标准,这是...
工作流JBPM SSH示例是将企业级工作流管理系统JBPM与流行的Java开发框架SSH(Struts、Spring、Hibernate)整合的一个典型应用。这个示例旨在帮助开发者理解如何在Java Web环境中集成工作流管理,以实现更高效的企业...
【jbpm整合ssh的例子】是关于如何将Java业务流程管理(jbpm)系统与Spring(ssh中的S)、Struts(ssh中的s)和Hibernate(ssh中的h)这三大流行开源框架进行集成的一个示例项目。这个例子展示了在Tomcat应用服务器上...
总之,这个【JBPM4.4 SSH案例】提供了一个完整的开发环境,不仅包含了JBPM4.4的核心功能,还有前端设计工具和一个实际的业务流程实例。开发者可以通过加载和运行这个项目,深入了解BPM系统的运作机制,以及如何在SSH...
"jBPM4实战系列(二)jBPM4.4+ssh 整合配置及完整实例" 这个标题表明我们将会探讨一个关于jBPM4的具体实战项目,特别关注的是如何将jBPM4版本与SSH(Spring、Struts和Hibernate)框架整合,并提供了一个完整的实现示例...
**jBPM4.4与SSH整合详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。SSH(Struts、Spring、Hibernate)是Java开发中的...
【标题】"JBPM4.4 + ssh2 + mssql2008请假流程设计示例"是一个关于企业级工作流管理系统实现的实践项目,它结合了JBPM(Java Business Process Management)4.4版本、SSH2(Struts2、Spring、Hibernate)三大框架...
有代码示例也有文档说明,适合学习JBPM的童鞋们上手
在这个实例中,jbpm4与SSH框架集成,提供了流程定义和执行的能力。 5. ExtJs:ExtJs是一个强大的JavaScript库,用于创建交互式的Web应用。WebRoot目录下可能包含ExtJs的库文件和使用ExtJs编写的前端界面代码。 6. ...
【jbpm4与SSH整合】是一项在Java企业级开发中常见的技术融合,涉及到Spring(简称SSH中的S)、Struts(S)和Hibernate(H)这三个主流的开源框架,以及jbpm(Java Business Process Management,一个流程管理框架)...
【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...
学习SSH整合JBPM通常涉及阅读官方文档、参考示例项目、查阅在线教程等。这些资源可以帮助开发者了解整合步骤,解决实际问题。 7. **实战案例**:"SSHJBPM"可能是整合后的项目名称,可能包含配置文件、源代码、测试...
jbpm4.4 shh2 项目示例是基于jbpm4.4版本与SSH2(Struts2、Spring和Hibernate)集成的一个实战项目。jbPM(Business Process Management)是一款开源的工作流管理系统,用于实现业务流程自动化。SSH2是Java开发中的...
【jbpm4.4与SSH框架的整合】 jBPM,即java Business Process Managerment,是一个基于JavaEE的轻量级工作流管理包,属于JBoss组织的一个子项目。它提供了一套完整的流程管理和执行机制,帮助企业处理复杂业务流程...
在本压缩包 "jBPM4.4Pssh.rar" 中,重点是将 jbPM 4.4 与 SSH(Struts、Spring 和 Hibernate)框架整合的示例。SSH 是 Java Web 开发中常见的三大框架,它们分别负责视图层、业务层和数据持久层的管理。 Struts 是...