首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

怎样创建ProcessDefinition对象?该如何处理

2012-02-23 
怎样创建ProcessDefinition对象???是这样的,我想部署一个流程,原来用的数据库是mysql部分代码是这样的:实

怎样创建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();
}
}
}

}

热点排行