org.snaker.engine.ITaskService Maven / Gradle / Ivy
/* Copyright 2013-2014 the original author or authors.
*
* 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.
*/
package org.snaker.engine;
import java.util.List;
import java.util.Map;
import org.snaker.engine.core.Execution;
import org.snaker.engine.entity.Task;
import org.snaker.engine.model.ProcessModel;
import org.snaker.engine.model.TaskModel;
/**
* 任务业务类,包括以下服务:
* 1、创建任务
* 2、添加、删除参与者
* 3、完成任务
* 4、撤回任务
* 5、回退任务
* 6、提取任务
* @author yuqs
* @version 1.0
*/
public interface ITaskService {
/**
* 完成指定的任务,删除活动任务记录,创建历史任务
* @param taskId 任务id
* @return Task 任务对象
*/
Task complete(String taskId);
/**
* 完成指定的任务,删除活动任务记录,创建历史任务
* @param taskId 任务id
* @param operator 操作人
* @return Task 任务对象
*/
Task complete(String taskId, String operator);
/**
* 根据任务主键ID,操作人ID完成任务
* @param taskId 任务id
* @param operator 操作人id
* @param args 参数集合
* @return Task 任务对象
*/
Task complete(String taskId, String operator, Map args);
/**
* 根据任务主键ID,操作人ID提取任务
* 提取任务相当于预受理操作,仅仅标识此任务只能由此操作人处理
* @param taskId 任务id
* @param operator 操作人id
* @return Task 任务对象
*/
Task take(String taskId, String operator);
/**
* 向指定的任务id添加参与者
* @param taskId 任务id
* @param actors 参与者
*/
void addTaskActor(String taskId, String... actors);
/**
* 向指定的任务id添加参与者
* @param taskId 任务id
* @param performType 参与类型
* @param actors 参与者
*/
void addTaskActor(String taskId, Integer performType, String... actors);
/**
* 对指定的任务id删除参与者
* @param taskId 任务id
* @param actors 参与者
*/
void removeTaskActor(String taskId, String... actors);
/**
* 根据任务主键id、操作人撤回任务
* @param taskId 任务id
* @param operator 操作人
* @return Task 任务对象
*/
Task withdrawTask(String taskId, String operator);
/**
* 根据当前任务对象驳回至上一步处理
* @param model 流程定义模型,用以获取上一步模型对象
* @param currentTask 当前任务对象
* @return Task 任务对象
*/
Task rejectTask(ProcessModel model, Task currentTask);
/**
* 根据taskId、operator,判断操作人operator是否允许执行任务
* @param task 任务对象
* @param operator 操作人
* @return boolean 是否允许操作
*/
boolean isAllowed(Task task, String operator);
/**
* 根据任务模型、执行对象创建新的任务
* @param taskModel 任务模型
* @param execution 执行对象
* @return List 创建任务集合
*/
List createTask(TaskModel taskModel, Execution execution);
/**
* 根据已有任务id、任务类型、参与者创建新的任务
* @param taskId 主办任务id
* @param taskType 任务类型
* @param actors 参与者集合
* @return List 创建任务集合
*/
List createNewTask(String taskId, int taskType, String... actors);
/**
* 根据任务id获取任务模型
* @param taskId 任务id
* @return
*/
TaskModel getTaskModel(String taskId);
}