public void deployProcessDefinition(byte[] processDef, byte[] processImage) {
//使用hibernate的工具把byte[]-->Blob
Blob blobProcessImage_ = Hibernate.createBlob(processImage);
//通过byte【】数字创建ProcessDefinition
ProcessDefinition def =
ProcessDefinition.parseXmlInputStream(
new ByteArrayInputStream(processDef));
//将流程定义部署都jbpm
getContext().deployProcessDefinition(def);
Session session = getSession();
//到oa
Workflow workflow = (Workflow)getSession()
.createQuery("select w from cn.blueram.oa.model.Workflow w where w.name = ?")
.setParameter(0, def.getName())
.uniqueResult();
if(workflow == null) {
workflow = new Workflow();
workflow.setName(def.getName());
workflow.setProcessDef(processDef);
workflow.setProcessImage(Hibernate.createBlob(new byte[1]));
//数据库没有,添加新的存储到数据库
session.save(workflow);
session.flush();
session.refresh(workflow,LockMode.UPGRADE);
SerializableBlob blobProcessImage = (SerializableBlob)workflow.getProcessImage();
java.sql.Blob blo = (java.sql.Blob)blobProcessImage.getWrappedBlob();
oracle.sql.BLOB obj = (oracle.sql.BLOB)blo;
try {
OutputStream outs = obj.getBinaryOutputStream();
outs.write(processImage,0,processImage.length);
outs.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
session.save(workflow);
return;
}