Index: forgon-core/src/main/java/com/forgon/workflow/service/NodeDefinitionManagerImpl.java =================================================================== diff -u -r22046 -r22123 --- forgon-core/src/main/java/com/forgon/workflow/service/NodeDefinitionManagerImpl.java (.../NodeDefinitionManagerImpl.java) (revision 22046) +++ forgon-core/src/main/java/com/forgon/workflow/service/NodeDefinitionManagerImpl.java (.../NodeDefinitionManagerImpl.java) (revision 22123) @@ -1,12 +1,15 @@ package com.forgon.workflow.service; import java.util.List; + import org.apache.commons.collections4.CollectionUtils; + import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.workflow.model.NodeDefinition; import com.forgon.workflow.model.WorkFlow; import com.forgon.workflow.model.NodeApproval; +import com.forgon.workflow.model.WorkFlowApprovalTask; public class NodeDefinitionManagerImpl extends BasePoManagerImpl implements NodeDefinitionManager { @@ -71,6 +74,14 @@ @Override public void deleteNodeDefinition(Object[] idArray) { for (Object object : idArray) { + //先将待办任务的节点置为空 + List workFlowApprovalTasks=objectDao.findByProperty(WorkFlowApprovalTask.class.getSimpleName(), "po.nodeDefinition.id", object.toString()); + if(workFlowApprovalTasks.size()>0){ + for(WorkFlowApprovalTask workFlowApprovalTask:workFlowApprovalTasks){ + workFlowApprovalTask.setNodeDefinition(null); + objectDao.save(workFlowApprovalTask); + } + } List nodeApprovals= (List) objectDao.findByProperty(NodeApproval.class.getSimpleName(),"nodeDefinition.id",""+object); for(NodeApproval nodeApproval:nodeApprovals){ deleteNodeApproval(nodeApproval);//删除所属的节点审批 @@ -94,6 +105,14 @@ @Override public void deleteNodeDefinition(NodeDefinition nodeDefinition) { + //先将待办任务的节点置为空 + List workFlowApprovalTasks=objectDao.findByProperty(WorkFlowApprovalTask.class.getSimpleName(), "nodeDefinition.id", nodeDefinition.getId().toString()); + if(workFlowApprovalTasks.size()>0){ + for(WorkFlowApprovalTask workFlowApprovalTask:workFlowApprovalTasks){ + workFlowApprovalTask.setNodeDefinition(null); + objectDao.save(workFlowApprovalTask); + } + } objectDao.delete(nodeDefinition); }