package cn.cslg.shally.manager.impl;
import java.util.List;
import cn.cslg.shally.manager.JbpmFacede;
import cn.cslg.shally.manager.WorkFlowManager;
import cn.cslg.shally.model.WorkFlow;
import cn.cslg.shally.utils.AbstractPageModel;
public class WorkFlowManagerImpl extends AbstractPageModel implements
WorkFlowManager {
private JbpmFacede jbpmFacede;
public JbpmFacede getJbpmFacede() {
return jbpmFacede;
}
public void setJbpmFacede(JbpmFacede jbpmFacede) {
this.jbpmFacede = jbpmFacede;
}
@Override
public void delWorkFlow(int workFlowId) {
WorkFlow wf=findWorkFlow(workFlowId);
jbpmFacede.delProcessDefinition(wf.getName());
getHibernateTemplate().delete(wf);
}
@Override
public void deployProcessDefinition(byte[] processDefinition,
byte[] processImage) {
// TODO Auto-generated method stub
}
@Override
public WorkFlow findWorkFlow(int workFlowId) {
return (WorkFlow)getHibernateTemplate().load(WorkFlow.class, workFlowId);
}
@Override
public List searchAllWorkflows() {
return getHibernateTemplate().find("from WorkFlow");
}
public void addOrUpdateWorkflow(byte[] processDef, byte[] processImage) {
String workflowName = jbpmFacede.deployProcessDefinition(processDef);
//首先根据流程名称,查询是否已有Workflow对象
WorkFlow wf = (WorkFlow)getSession().createQuery("select w from WorkFlow w where w.name = ?")
.setParameter(0, workflowName)
.uniqueResult();
if(wf == null){
wf = new WorkFlow();
wf.setName(workflowName);
wf.setFile(processDef);
wf.setPic(processImage);
getHibernateTemplate().save(wf);
}else{
wf.setFile(processDef);
wf.setPic(processImage);
getHibernateTemplate().update(wf);
}
}
}
package cn.cslg.shally.model;
import java.util.Set;
/**
*
* @author Administrator
* @hibernate.class table="t_organization"
*/
public class Organization {
/**
* @hibernate.id generator-class="native"
*/
private int id;
/**
* @hibernate.property
*/
private String name;
/**
* @hibernate.property
*/
private String sn;
/**
* @hibernate.property
*/
private String description;
/**
* @hibernate.many-to-one column="pid"
*/
private Organization parent;
/**
* @hibernate.set
* inverse="true"
* @hibernate.key column="pid"
* @hibernate.one-to-many class="cn.cslg.shally.model.Organization"
*/
private Set<Organization> children;
public Set<Organization> getChildren() {
return children;
}
public void setChildren(Set<Organization> children) {
this.children = children;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Organization getParent() {
return parent;
}
public void setParent(Organization parent) {
this.parent = parent;
}
}