package com.norteksoft.wf.engine.client; import java.util.Collection; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.api.entity.Opinion; import com.norteksoft.task.base.enumeration.TaskProcessingResult; import com.norteksoft.wf.base.enumeration.CompleteTaskTipType; public abstract class WorkflowBaseManager<T extends FormFlowable> implements FormFlowableDeleteInterface{ /** * 删除实体 */ public abstract void deleteEntity(T entity); /** * 保存实体 */ public abstract void saveEntity(T entity); /** * 根据ID查询实体 */ public abstract T getEntity(Long id); /** * 删除流程实例时删除实体 */ public void deleteFormFlowable(Long dataId){ deleteEntity(getEntity(dataId)); } /** * 第一次保存实体,并发起流程 */ public void startWorkflow(T entity, Long wfDefinitionId){ saveEntity(entity); ApiFactory.getInstanceService().startInstance(wfDefinitionId, entity); } /** * 第一次保存实体,发起流程(如果需要),并提交第一环节任务 */ public CompleteTaskTipType submit(T entity, Long wfDefinitionId){ return ApiFactory.getInstanceService().submitInstance(wfDefinitionId, entity); } /** * 根据任务ID查询关联的实体 */ public T getEntityByTask(Long taskId){ if(taskId==null) return null; Long entityId = ApiFactory.getFormService().getFormFlowableIdByTask(taskId); return getEntity(entityId); } /** * 提交任务 */ public CompleteTaskTipType submitTask(T entity, Long taskId, TaskProcessingResult result){ saveEntity(entity); return ApiFactory.getTaskService().completeWorkflowTask(taskId, result); } /** * 带下一环节办理人 提交任务 */ public CompleteTaskTipType submitTask(T entity, Long taskId, TaskProcessingResult result, Collection<String> users){ saveEntity(entity); return ApiFactory.getTaskService().completeInteractiveWorkflowTask(taskId, users, ""); } /** * 加签 */ public void countersign(Long taskId, Collection<String> users){ ApiFactory.getTaskService().addSigner(taskId, users); } /** * 根据工作流ID获取第一环节的字段编辑权限 * @param workflowId * @return */ public String getFieldPermissionOfFirstTask(Long workflowId){ if(workflowId==null) return getFieldPermission(false); return ApiFactory.getFormService().getFieldPermissionNotStarted(workflowId); } /** * 根据任务ID获取表单的字段编辑权限 * @param taskId * @return */ public String getFieldPermission(Long taskId){ if(taskId==null) return getFieldPermission(false); return ApiFactory.getFormService().getFieldPermission(taskId); } /* * 字段编辑权限 * @param editable 为true,所有字段可以编辑,为false,所有字段禁止编辑 * @return */ private String getFieldPermission(boolean editable){ return ApiFactory.getFormService().getFieldPermission(editable); } /** * 根据任务ID取回任务,返回取回结果[成功或失败原因] */ public String retrieve(Long taskId){ return ApiFactory.getTaskService().retrieve(taskId); } /** * 保存用户办理意见 */ public void save(Opinion opinion){ ApiFactory.getOpinionService().saveOpinion(opinion); } }