package com.x.processplatform.assemble.surface.jaxrs.task; import org.apache.commons.lang3.BooleanUtils; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.project.Applications; import com.x.base.core.project.x_processplatform_service_processing; import com.x.base.core.project.exception.ExceptionAccessDenied; import com.x.base.core.project.exception.ExceptionEntityNotExist; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.jaxrs.WoId; import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.ThisApplication; import com.x.processplatform.core.entity.content.Task; import com.x.processplatform.core.entity.element.Application; import com.x.processplatform.core.entity.element.Process; import io.swagger.v3.oas.annotations.media.Schema; class ActionManageDelete extends BaseAction { ActionResult execute(EffectivePerson effectivePerson, String id) throws Exception { Task task = null; ActionResult result = new ActionResult<>(); try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { Business business = new Business(emc); task = emc.find(id, Task.class); if (null == task) { throw new ExceptionEntityNotExist(id, Task.class); } Application application = business.application().pick(task.getApplication()); Process process = business.process().pick(task.getProcess()); // 需要对这个应用的管理权限 if (BooleanUtils.isFalse(business.canManageApplicationOrProcess(effectivePerson, application, process))) { throw new ExceptionAccessDenied(effectivePerson); } } ThisApplication.context().applications().deleteQuery(x_processplatform_service_processing.class, Applications.joinQueryUri("task", task.getId()), task.getJob()); Wo wo = new Wo(); wo.setId(task.getId()); result.setData(wo); return result; } @Schema(name = "com.x.processplatform.assemble.surface.jaxrs.task.ActionManageDelete.Wo") public static class Wo extends WoId { } }