/**
* Copyright 1996-2014 FoxBPM ORG.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @author kenshin
* @author ych
*/
package org.foxbpm.engine.impl.persistence;
import java.util.List;
import org.foxbpm.engine.impl.Context;
import org.foxbpm.engine.impl.entity.DeploymentEntity;
import org.foxbpm.engine.impl.entity.ResourceEntity;
import org.foxbpm.engine.impl.model.ProcessDefinitionQueryImpl;
import org.foxbpm.engine.repository.ProcessDefinition;
/**
* 定义发布持久化管理器
*
* @author kenshin
* @author yangguangftlp
*/
public class DeploymentEntityManager extends AbstractManager {
/**
* 查询发布实例
*
* @param deploymentId
* 发布Id
* @return 返回查询实例
*/
public DeploymentEntity findDeploymentById(String deploymentId) {
DeploymentEntity deployment = (DeploymentEntity) selectOne("selectDeploymentById", deploymentId);
return deployment;
}
/**
* 插入发布实例
*
* @param deployment
* 发布实例
*/
public void insertDeployment(DeploymentEntity deployment) {
insert(deployment);
}
/**
* 插入发布资源
*
* @param resource
* 资源
*/
public void insertResource(ResourceEntity resource) {
insert(resource);
}
/**
* 删除发布实例以及关联资源
*
* @param deploymentId
* @param cascade
* true 会删除所有的流程定义
*/
public void deleteDeployment(String deploymentId, boolean cascade) {
// 删除大字段表
getResourceManager().deleteResourceByDeploymentId(deploymentId);
// 删除所有的流程定义
if (cascade) {
SchedulerManager schedulerManager = this.getSchedulerManager();
List<ProcessDefinition> processDefinitions = new ProcessDefinitionQueryImpl().deploymentId(deploymentId).list();
ProcessDefinitionManager processDefinitionManager = Context.getCommandContext().getProcessDefinitionManager();
for (ProcessDefinition processDefinition : processDefinitions) {
processDefinitionManager.deleteProcessDefinition(processDefinition.getId(), cascade);
schedulerManager.deleteJobByProcessKey(processDefinition.getKey());
}
}
// 删除deployment发布记录
delete("deleteDeploymentById", deploymentId);
}
}