怎样创建ProcessDefinition对象???
是这样的,我想部署一个流程,原来用的数据库是mysql部分代码是这样的:
实体类:
/**
* 流程定义文件
* @hibernate.property
* type="binary"
* length="99999999"
*/
private byte[] processDefinition;
/**
* 流程定义图片
* @hibernate.property
* type="binary"
* length="99999999"
*/
private byte[] processImage;
映射文件:
<property name="processDefinition" length="99999999" type="binary"/>
<property name="processImage" length="99999999" type="binary"/>
接口:
/**
* 部署流程定义
* @param processDefinition
* @param processImage
*/
public void deployProcessDefinition(byte[] processDefinition,byte[] processImage);
实现:
public void deployProcessDefinition(byte[] processDefinition,
byte[] processImage) {
//通过byte[]创建ProcessDefinition对象
ProcessDefinition def =
ProcessDefinition.parseXmlInputStream(
new ByteArrayInputStream(processDefinition));
//将流程定义文件部署到JBPM
getContext().deployProcessDefinition(def);
==============================以下略=======================================
现在用的是 oracle数据库,再用上边的建表就不行啦,提示不能有2个length的列,我就把流程定义的类型改为String了,
可是在实现的时候,
//这个地方和mysql数据库的不一样,前者用的byte[],后者用的String/
public void deployProcessDefinition(String processDefinition,
byte[] processImage) {
//通过String 创建ProcessDefinition对象
ProcessDefinition def =
ProcessDefinition.parseXmlInputStream(
new StringArrayInputStream(processDefinition));
提示我创建一个StringArrayInputStream 的类,这是自动生成的代码
public class StringArrayInputStream extends InputStream {
@Override
public int read() throws IOException {
// TODO Auto-generated method stub
return 0;
}
}
难道我要在这个类里写一个文件上传?原来的什么都没有些,。
[解决办法]
你可以试着换一种方式部署一个流程。
将流程定义的文件和图片打包成ZIP形式,然后引入发布:(期间可能要下载一个jar包,你依Eclipse的提示上网下载就行了)
void deploy(HttpServletRequest request, HttpServletResponse response) throws Exception, IOException {
String file = getServletContext().getRealPath("/file"); //这里需要在工程下建立两文件夹file 和 uploadfile
String uploadfile = getServletContext().getRealPath("/uploadfile");
DiskFileUpload diskFileUpload = new DiskFileUpload();
diskFileUpload.setFileSizeMax(1 * 1024 * 1024);
diskFileUpload.setSizeThreshold(4096);
diskFileUpload.setRepositoryPath(file);
List fileItems = diskFileUpload.parseRequest(request);
Iterator iter = fileItems.iterator();
if (iter.hasNext()) {
FileItem items = (FileItem)iter.next();
if (!items.isFormField()) {
String name = items.getName();
long size = items.getSize();
if (name != null && !name.equals("") && size >0) {
repositoryService.createDeployment()
.addResourcesFromZipInputStream(new ZipInputStream(items.getInputStream())).deploy();
}
}
}
}