package com.norteksoft.product.api; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import com.norteksoft.product.api.entity.WorkflowInstance; import com.norteksoft.product.api.entity.WorkflowTask; import com.norteksoft.product.orm.Page; import com.norteksoft.task.base.enumeration.TaskProcessingResult; import com.norteksoft.wf.base.enumeration.CompleteTaskTipType; import com.norteksoft.wf.engine.client.FormFlowable; /** * 公开提供给用户使用的工作流任务api * @author wurong */ public interface WorkflowTaskService { /** * 根据任务id查询任务 * @param taskId * @return 工作流任务 */ public WorkflowTask getTask(Long taskId); /** * 根据TaskId完成任务,没有办理意见 * @param taskId 任务id * @param result :TaskTransact 同意/不同意...交办... * @param allOriginalUsers 下一环节原办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeWorkflowTask(Long taskId, TaskProcessingResult result,String allOriginalUsers); /** * 根据TaskId完成任务,没有办理意见 * @param taskId 任务id * @param result :TaskTransact 同意/不同意...交办... * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeWorkflowTask(Long taskId, TaskProcessingResult result); /** * 完成任务 不需要特事特办 * @param task 任务 * @param result :TaskTransact 同意/不同意...交办... * @param allOriginalUsers 下一环节原办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeWorkflowTask(WorkflowTask task, TaskProcessingResult result,String allOriginalUsers); /** * 完成任务 不需要特事特办 * @param task 任务 * @param result :TaskTransact 同意/不同意...交办... * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeWorkflowTask(WorkflowTask task, TaskProcessingResult result); /** * 完成交互的任务 * @param taskId 任务id * @param allOriginalUsers 下一环节原办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeInteractiveWorkflowTask(Long taskId ,String allOriginalUsers); /** * 完成交互的任务 * @param taskId * @param transcators 下一环节办理人 * @param allOriginalUsers 下一环节原办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeInteractiveWorkflowTask(Long taskId,Collection<String> transcators,String allOriginalUsers); /** * 完成交互的任务 * @param taskId * @param allOriginalUsers 下一环节原办理人 * @param transcators 下一环节办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeInteractiveWorkflowTask(Long taskId,String allOriginalUsers,String... transcators); /** * 完成交互的任务 * @param task * @param allOriginalUsers 下一环节原办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeInteractiveWorkflowTask(WorkflowTask task,String allOriginalUsers); @Deprecated public CompleteTaskTipType completeInteractiveWorkflowTask(com.norteksoft.task.entity.WorkflowTask task,String allOriginalUsers); /** * 完成交互的任务 * @param task * @param transcators 下一环节办理人 * @param allOriginalUsers 下一环节原办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeInteractiveWorkflowTask(WorkflowTask task, Collection<String> transcators,String allOriginalUsers); @Deprecated public CompleteTaskTipType completeInteractiveWorkflowTask(com.norteksoft.task.entity.WorkflowTask task, Collection<String> transcators,String allOriginalUsers); /** * 完成交互的任务 * @param task * @param allOriginalUsers 下一环节原办理人 * @param transcators 下一环节办理人 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeInteractiveWorkflowTask(WorkflowTask task,String allOriginalUsers,String... transcators); @Deprecated public CompleteTaskTipType completeInteractiveWorkflowTask(com.norteksoft.task.entity.WorkflowTask task,String allOriginalUsers,String... transcators); /** * 查询下环节任务的办理人 * @param taskId 任务id * @return Map<String[办理模式,任务名] ,List<String[用户名称,用户登录名称] >> */ public Map<String[], List<String[]>> getNextTasksCandidates(Long taskId); @Deprecated public Long getFormIdByTask(com.norteksoft.task.entity.WorkflowTask task); public Long getFormIdByTask(WorkflowTask task); @Deprecated public Long getDataIdByTask(com.norteksoft.task.entity.WorkflowTask task); public Long getDataIdByTask(WorkflowTask task); /** * 加签 * @param taskId 任务id * @param users 需要加签的人 * @deprecated 替换为<code>addSigner(Long taskId, Collection<String> users);</code> */ @Deprecated public void additional(Long taskId, Collection<String> users); /** * 加签 * @param taskId 任务id * @param users 需要加签的人 * @deprecated 替换为<code>addSigner(Long taskId, Collection<String> users);</code> */ public void addSign(Long taskId, Collection<String> users); /** * 加签 * @param taskId 任务id * @param users 需要加签的人 */ public void addSigner(Long taskId, Collection<String> users); /** * 加签 * @param taskId 任务id * @param users 需要加签的人 * @deprecated 替换为<code>addSigner(Long taskId, String... users);</code> */ @Deprecated public void additional(Long taskId, String... users); /** * 加签 * @param taskId 任务id * @param users 需要加签的人 * @deprecated 替换为<code>addSigner(Long taskId, String... users);</code> */ public void addSign(Long taskId, String... users); /** * 加签 * @param taskId 任务id * @param users 需要加签的人 * */ public void addSigner(Long taskId, String... users); /** * 减签 * @param taskId 任务id * @param users 需要减签的人 * @deprecated 替换为<code>removeSigner(Long taskId, Collection<String> users);</code> */ public void reduceHandlers(Long taskId,Collection<String> users); /** * 减签 * @param taskId 任务id * @param users 需要减签的人 */ public void removeSigner(Long taskId,Collection<String> users); /** * 减签 * @param taskId 任务id * @param users 需要减签的人 * @deprecated 替换为<code>removeSigner(Long taskId,String... users);</code> */ public void reduceHandlers(Long taskId,String... users); /** * 减签 * @param taskId 任务id * @param users 需要减签的人 */ public void removeSigner(Long taskId,String... users); /** * 获得该会签环节的会签办理人 * @param taskId 任务id * @param handlingState 该办理人对任务的完成状态 {@link com.norteksoft.task.entity.Task#COMPLETED}}、 {@link com.norteksoft.task.entity.Task#WAIT_TRANSACT}} * @return 办理人登录名的集合 * @deprecated 替换为<code>getCountersignTransactors(Long taskId,Integer handlingState);</code> */ public List<String> getCountersignHandlers(Long taskId,Integer handlingState); /** * 获得该会签环节的会签办理人 * @param taskId 任务id * @param handlingState 该办理人对任务的完成状态 {@link com.norteksoft.task.entity.Task#COMPLETED}}、 {@link com.norteksoft.task.entity.Task#WAIT_TRANSACT}} * @return 办理人登录名的集合 */ public List<String> getCountersignTransactors(Long taskId,Integer handlingState); /** * 取回任务。当任务刚办理完下一环节办理人还没有开始办理任务的时候,可以取回任务。 * @param taskId 任务id * @return 取回任务的提示信息。 */ public String retrieve(Long taskId); /** * 领取 * @param taskId 任务id * @return 当前任务不是“待领取”状态时,会返回不需领取;当前任务领取成功时,返回领取成功 */ public String drawTask(Long taskId); /** * 放弃领取 * @param taskId * @return */ public String abandonReceive(Long taskId); /** * 交办 或 指派 <br/> * 将任务交办或指派给指定的人员 * @param taskId 需交办或指派的任务 * @param assignee 受理人 */ public void assign(Long taskId, String assignee); /** * 流程实例能退回到的环节名称 * @param taskId 任务ID * @return List<String> size等于0时表示当前不能退回到任何环节 * @deprecated 替换为 <code>getReturnableTaskNames(Long taskId)</code> */ @Deprecated public List<String> canBackNames(Long taskId); /** * 流程实例能退回到的环节名称 * @param taskId 任务ID * @return List<String> size等于0时表示当前不能退回到任何环节 * @deprecated 替换为 <code>getReturnableTaskNames(Long taskId)</code> */ public List<String> backToTaskNames(Long taskId); /** * 流程实例能退回到的环节名称 * @param taskId 任务ID * @return List<String> size等于0时表示当前不能退回到任何环节 */ public List<String> getReturnableTaskNames(Long taskId); /** * 退回到某环节 * @param taskId 任务ID * @param backTo 退回到的环节名称 * @deprecated 替换为 <code>returnTaskTo(Long taskId, String taskName)</code> */ public void goBack(Long taskId, String backTo); /** * 退回到某环节 * @param taskId 任务ID * @param taskName 退回到的环节名称 */ public void returnTaskTo(Long taskId, String taskName); /** * 查询办理人的当前任务 * @param entity 走流程的表单 * @param loginname 办理人的登录名 * @return 如果流程已经启动 ,返回当前任务;否则,返回null * @deprecated 替换为 <code>getActiveTaskByLoginName(FormFlowable entity,String loginName)</code> */ public WorkflowTask getMyTask(FormFlowable entity,String loginName); /** * 查询办理人的当前任务 * @param entity 走流程的表单 * @param loginName 办理人的登录名 * @return 如果流程已经启动 ,返回当前任务;否则,返回null */ public WorkflowTask getActiveTaskByLoginName(FormFlowable entity,String loginName); /** * 完成分发任务 * @param taskId * @param receivers 分发到的用户登录名列表 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeDistributeTask(Long taskId, List<String> receivers); /** * 完成分发任务 * @param taskId * @param receivers 分发到的用户登录名列表 * @return CompleteTaskTipType {@link com.norteksoft.wf.base.enumeration.CompleteTaskTipType} */ public CompleteTaskTipType completeDistributeTask(Long taskId, String... receivers); /** * 返回查看会签结果的权限 */ @Deprecated public boolean viewMeetingResultRight(Long taskId ); /** * 返回查看投票结果的权限 */ @Deprecated public boolean viewVoteResultRight(Long taskId ); /** * 完成选择环节的任务 * @param taskId 当前任务的id * @param transitionName 用户选择的流向的名字 * @return 返回完成任务后的提示类型 * @deprecated 替换为<code>selectActivity(Long taskId, String transitionName)</code> */ public CompleteTaskTipType completeTacheChoice(Long taskId, String transitionName); /** * 完成选择环节的任务 * @param taskId 当前任务的id * @param transitionName 用户选择的流向的名字 * @return 返回完成任务后的提示类型 */ public CompleteTaskTipType selectActivity(Long taskId, String transitionName); /** * 查询流程定义中某个办理人的任务 * @param definitionName 流程定义名 * @param loginName 办理人登录名 * @return 任务列表 */ public List<WorkflowTask> getWorkflowTasksByDefinitonName(String definitionName,String loginName); /** * 生成抄送任务 * @param taskId 当前任务的id * @param transactors 将该任务抄送给谁 * @deprecated 替换为<code>createCopyTasks(Long taskId, List<String> transactors,String title,String url)</code> */ @Deprecated public void createCopyTaches(Long taskId,List<String> transactors ); /** * 生成抄送任务 * 参数title为null或空字符串时,生成的该抄送任务的标题为“(抄送)原任务标题”;参数url为null或空字符串时,生成的抄送任务的办理页面为该url * @param taskId 当前任务的id * @param transactors 将该任务抄送给谁 * @deprecated 替换为<code>createCopyTasks(Long taskId, List<String> transactors,String title,String url)</code> */ public void createCopyTaches(Long taskId, List<String> transactors,String title,String url) ; /** * 生成抄送任务 * 参数title为null或空字符串时,生成的该抄送任务的标题为“(抄送)原任务标题”;参数url为null或空字符串时,生成的抄送任务的办理页面为该url * @param taskId 当前任务的id * @param transactors 将该任务抄送给谁 */ public void createCopyTasks(Long taskId, List<String> transactors,String title,String url) ; /** * 根据用户查询未完成任务总数 * @param companyId 公司id * @param loginName 当前用户登录名 * @return 未完成任务总数 * @deprecated 替换为<code>getActiveTaskCountByTransactor(String loginName)</code> */ @Deprecated public Integer getTasksNumByTransactor(Long companyId, String loginName); /** * 根据用户查询未完成任务总数 * @param loginName 用户登录名 * @return 未完成任务总数 * @deprecated 替换为<code>getActiveTaskCountByTransactor(String loginName)</code> */ public Integer getTasksNumByTransactor(String loginName); /** * 根据用户查询未完成任务总数 * @param loginName 用户登录名 * @return 未完成任务总数 */ public Integer getActiveTaskCountByTransactor(String loginName); /** * 查找公司中所有的超期任务 * @param companyId * @return * @deprecated 替换为<code>getActiveOverdueTasks()</code> */ @Deprecated public List<WorkflowTask> getOverdueTasks(Long companyId) ; /** * 查找公司中所有的超期任务 * @return 过期的任务集合 * @deprecated 替换为<code>getActiveOverdueTasks()</code> */ public List<WorkflowTask> getOverdueTasks() ; /** * 查找公司中所有的超期任务 * @return 过期的任务集合 */ public List<WorkflowTask> getActiveOverdueTasks(); /** * 查找当前办理人所有的超期任务的总数 * @param companyId * @return map :key为办理人登录名,value为超期次数 * @deprecated * 替换为<code>getOverdueTasksNumByTransactor()</code> */ @Deprecated public Map<String,Integer> getOverdueTasksNumByTransactor(Long companyId) ; /** * 查找当前办理人所有的超期任务的总数 * @param companyId * @return map :key为办理人登录名,value为超期次数 */ public Map<String,Integer> getOverdueTasksNumByTransactor() ; /** * 查找公司中所有的超期任务,包括已完成的任务 * @param companyId * @return * @deprecated 替换为<code>getAllOverdueTasks()</code> */ @Deprecated public List<WorkflowTask> getTotalOverdueTasks(Long companyId) ; /** * 查找公司中所有的超期任务,包括已完成的任务 * @return 所有超期任务的集合 * @deprecated 替换为<code>getAllOverdueTasks()</code> */ public List<WorkflowTask> getTotalOverdueTasks() ; /** * 查找公司中所有的超期任务,包括已完成的任务 * @return 所有超期任务的集合 */ public List<WorkflowTask> getAllOverdueTasks() ; /** * 查询每个人的超期任务数,包括已完成的任务 * @param companyId * @return * @deprecated * 替换为<code>getOverdueTaskCountGroupByTransactor()</code> */ public Map<String,Integer> getTotalOverdueTasksNumByTransactor(Long companyId); /** * 查询每个人的超期任务数,包括已完成的任务 * @return 返回值为HashMap,key为用户登录名,value为超期任务总数 * @deprecated * 替换为<code>getOverdueTaskCountGroupByTransactor()</code> */ public Map<String,Integer> getTotalOverdueTasksNumByTransactor(); /** * 查询每个人的超期任务数,包括已完成的任务 * @return 返回值为HashMap,key为用户登录名,value为超期任务总数 */ public Map<String,Integer> getOverdueTaskCountGroupByTransactor(); /** * 分页查询用户所有未完成任务 * @param page * @deprecated * 替换为 <code>getUnDoneTasksByUser( String loginName, Page<Task> page)</code> */ @Deprecated public void getAllTasksByUser(Long companyId,String loginName, Page<com.norteksoft.task.entity.WorkflowTask> page); /** * 查询用户所有未完成任务(不是分页) * @param page * @deprecated 替换为 <code>getUnDoneTasksByUser((String loginName))</code> */ @Deprecated public List<com.norteksoft.task.entity.WorkflowTask> getAllTasksByUser( Long companyId,String loginName); /** * 分页查询用户所有未完成任务 * @param loginName 用户登录名 * @param page */ @Deprecated public void getUnDoneTasksByUser( String loginName, Page<com.norteksoft.task.entity.WorkflowTask> page); /** * 查询用户所有未完成任务(不是分页) * @param loginName 用户登录名 * @return 用户所有未完成任务集合 * @deprecated 替换为 <code>getActiveTasksByLoginName(String loginName)</code> */ public List<WorkflowTask> getUnDoneTasksByUser(String loginName); /** * 查询用户所有未完成任务(不是分页) * @param loginName 用户登录名 * @return 用户所有未完成任务集合 */ public List<WorkflowTask> getActiveTasksByLoginName(String loginName); /** * 是否是第一环节 * @param taskId * @return true表示是第一环节,反之不是 */ public boolean isFirstTask(Long taskId); /** * 获得所有办理人除当前任务名称的办理人 * @param taskId * @return * @deprecated 替换为 <code>getTransactorsExcludeGivenTask(Long taskId)</code> */ public List<String> getTransactorsExceptTask(Long taskId); /** * 获得所有办理人除当前任务名称的办理人 * @param taskId * @return */ public List<String> getTransactorsExcludeGivenTask(Long taskId); /** * 指派任务 * @param taskId * @param transcators * @return * @deprecated 替换为 <code>assign(Long taskId, String transactor)</code> */ public CompleteTaskTipType assignTask(Long taskId, Collection<String> transcators); /** * 指派任务 * @param taskId * @param transcator * @return * @deprecated 替换为 <code>assign(Long taskId, String transactor)</code> */ public CompleteTaskTipType assignTask(Long taskId, String transcator); /** * 设置任务为已读 * @param taskId */ public void setTaskRead(Long taskId); /** * 环节跳转功能 * @param workflowId 实例id * @param backTo 要跳转到的环节名称 * @param transactors * @return */ public CompleteTaskTipType taskJump(String workflowId, String backTo,Long companyId); /** * 查询当前任务是否需要选择环节 * @param task 当前任务 * @deprecated 替换为 <code>getOptionalTasks(WorkflowTask task)</code> */ @Deprecated public CompleteTaskTipType isNeedChoiceTache(com.norteksoft.task.entity.WorkflowTask task); public CompleteTaskTipType isNeedChoiceTache(WorkflowTask task); /** * 查询当前任务是否需要选择环节 * @param task 当前任务 * @return 如果需要选择环节,将返回枚举TACHE_CHOICE_URL;该枚举实例的getCanChoiceTaches()方法将返回可供选择的环节 */ @Deprecated public CompleteTaskTipType getOptionalTasks(com.norteksoft.task.entity.WorkflowTask task); public CompleteTaskTipType getOptionalTasks(WorkflowTask task); /** * 查询当前待办理的任务的办理人 * @param entity 实体 * @return */ public List<String[]> getActivityTaskTransactors( FormFlowable entity); /** * 获得委托人集合[ * @param entity 实体 * @return */ public List<String> getActivityTaskPrincipals(FormFlowable entity); /** * 获得委托人集合[loginName,name] * @param entity 实体 * @return */ public List<String[]> getActivityTaskPrincipalsDetail(FormFlowable entity); /** * 获得所有已办理人 * @param entity * @return * @deprecated 替换为 <code>getHandledTransactors(FormFlowable entity)</code> */ public Set<String> getHandledTransactors(FormFlowable entity); /** * 获得所有已办理人 * @param entity * @return */ public Set<String> getCompletedTaskTransactor(FormFlowable entity); /** * 获得所有已办理人 * @param entity * @return * @deprecated 替换为 <code>getCompletedTaskTransactor(Long taskId)</code> */ public Set<String> getHandledTransactors(Long taskId); /** * 获得所有已办理人 * @param entity * @return */ public Set<String> getCompletedTaskTransactor(Long taskId); /** * 保存任务 * @param task */ public void saveTask(WorkflowTask task); @Deprecated public void saveTask(com.norteksoft.task.entity.WorkflowTask task); /** *获得环节扩展属性 */ public Map<String,String> getExtendFields(FormFlowable entity); /** *获得环节扩展属性 */ public Map<String,String> getExtendFields(Long taskId); /** * 查询当前待办理的任务的办理人 * @param entity 实体 * @return */ public List<String[]> getActivityTaskTransactors(String workflowId); /** * 获得受托人集合 * @param workflowId * @return */ public List<String> getActivityTaskPrincipals(String workflowId); /** * 获得受托人集合[loginName,name] * @param workflowId * @return */ public List<String[]> getActivityTaskPrincipalsDetail(String workflowId); public Map getDataByTaskId(Long taskId); /** * 查询当前待办理的任务的集合(包括特事特办的任务) * @param entity 实体 * @return */ public List<WorkflowTask> getActivityTasks( FormFlowable entity); /** * 任务退回,退回到上一环节 * @param entity */ public String returnTask(Long taskId); @Deprecated public void endInstance(com.norteksoft.wf.engine.entity.WorkflowInstance workflow); public void endInstance(WorkflowInstance workflow); /** * 根据流程实例查询当前待办理的任务的集合(包括特事特办的任务),一般用于自定义表单时 * @param workflowId 流程实例id * @return */ public List<WorkflowTask> getActivityTasks( String workflowId); /** * 查询办理人的当前任务,一般用于自定义表单时 * @param entity 走流程的表单 * @param loginName 办理人的登录名 * @return 如果流程已经启动 ,返回当前任务;否则,返回null */ public WorkflowTask getActiveTaskByLoginName(String workflowId,String loginName); }