关于使用struts2发布JBPM的流程定义
来源:互联网 发布:诺基亚e7软件下载 编辑:程序博客网 时间:2024/06/06 06:35
使用struts2发布JBPM的流程定义也就是用WEB方法发布jbpm流程
有两种方法:
1.使用文件上传的方法:(优点)可以使用任何位置下的XML文件。缺点是必须增加JAR包
我用的是commons-fileupload-1.1.jar和commons-io-1.1.jar。
由于在parseRequest(request)的类有关继承于DiskFileItem
类。而他有private org.apache.commons.io.output.DeferredFileOutputStream dfos。这样的就必须使用到commons-io-1.1-dev.jar。因此需要导入该包。否则就出classNotFound:.DeferredFileOutputStream的错误。
补充说明:commons-fileupload-1.1.jar和commons-fileupload-1.0.jar的区别,本人只是会抛出异常
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
这里特地反驳一下http://blog.csdn.net/ying1979/archive/2007/09/18/1788931.aspx的作者
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
// don't wrap more than once
if (request instanceof StrutsRequestWrapper) {
return request;
}
if (content_type != null && content_type.indexOf("multipart/form-data") != -1) {
MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class);
request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext));
} else {
request = new StrutsRequestWrapper(request);
}
}
在这里又找不到MultiPartRequest.class的实现类。于是出错了。
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
其实解决上诉的方法最快的是。。保持原有配置不变直接升级包。。就可以了。。
而且 <url-pattern>*.action</url-pattern>会带来更多的问题
所以。。建设使用高版本的JAR
同时这里涉及到以下两个小知识:
文件上传的原理:
action文件:
package com.dhcc.itsm.jbpm.actions;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.log4j.Logger;
import com.dhcc.itsm.jbpm.service.ServiceTemplate;
import com.opensymphony.xwork2.ActionSupport;
public class DeployProcessDefinition extends ActionSupport{
private static final long serialVersionUID = 1L;
private Logger logger = Logger.getLogger(DeployProcessDefinition.class);
private ServiceTemplate serviceTemplate;
private String deployUrlName;
// 上传文件域对象
private File xmlFile;
public File getXmlFile() {
return xmlFile;
}
public void setXmlFile(File xmlFile) {
this.xmlFile = xmlFile;
}
public String getDeployUrlName() {
return deployUrlName;
}
public void setDeployUrlName(String deployUrlName) {
this.deployUrlName = deployUrlName;
}
public String execute() throws Exception {
logger.info("DeployProcessDefinition execute------------>");
InputStream is = new FileInputStream(xmlFile);
//主要是实现把InputStream 对象转化成processDefinition 对象。。然后发布。。
processDefinitionID = serviceTemplate.deployfromInputStream(is);
/*
InputSource inputSource = new InputSource(is);
JpdlXmlReader jpdlXmlReader = new JpdlXmlReader(inputSource);
_processDefinition = jpdlXmlReader.readProcessDefinition();
*/
return SUCCESS;
}
private boolean isInvalid(String value) {
return (value == null || value.length() == 0);
}
public void setServiceTemplate(ServiceTemplate serviceTemplate) {
this.serviceTemplate = serviceTemplate;
}
}
上诉代码不是全部。。只是提供思想。。
jsp页面
<s:form action="DeployProcessDefinition" name="itsm" method="POST" enctype="multipart/form-data">>
<table border="0" >
<tr>
<td>
<s:text name="选择您想发布的XML文件" />
</td>
<td>
<s:file name="xmlFile" />
</td>
</tr>
<tr height="20">
<td colspan="2"></td>
</tr>
<tr>
<td width="20%">
<s:label label="XML文件名:" tooltip="Enter your Name here"/>
</td>
<td width="80%">
<s:textfield name="deployUrlName" size="80" value=""/>
</td>
</tr>
<tr height="20">
<td colspan="2"><s:submit value="Submit the form" align="left" /></td>
</tr>
</table>
</s:form>
第2种方法:找到PROJECT中的XML文件。通过JBPM的InputStream is = ClassLoaderUtil.getStream(xmlStr);来生成InputStream 对象。。然后后面的操作和第一种方法相同。
- 关于使用struts2发布JBPM的流程定义
- JBPM的流程定义
- jbpm发布流程定义,启动流程实例
- java流程管理 之 jbpm流程定义、发布、查看、删除
- jbpm 定义请假流程 编程发布流程文件
- jbpm 不使用zip发布流程
- JBPM创建数据库,流程定义以及发布学习笔记
- jbpm的流程定义版本策略
- Jbpm流程定义的打包和部署
- Jbpm流程定义的打包和部署
- jbpm的流程定义版本策略
- jbpm的流程定义版本策略
- jbpm的流程定义元素 含义解析
- JBPM 流程定义的增删改查
- Struts2+Extjs进行jbpm的流程部署
- jbpm流程发布
- jbpm流程发布问题
- jBPM工作流程定义
- c# is not cls-compliant
- 解决head标签内title标签meta 标签不能对齐
- Response.AddHeader实现下载
- C#调用非托管动态库中的函数
- Apache .htaccess文件
- 关于使用struts2发布JBPM的流程定义
- 条形码机印表头的寿命有多久?
- 初识:rmi __完整的example
- Struts标签示例
- 享受单身生活。
- (转)java连各种数据库方法
- OFFICE风格的色彩选择器
- 学习高性能网页开发的14条军规
- 日期操作类