All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.snaker.engine.ITaskService Maven / Gradle / Ivy

There is a newer version: 2.5.1
Show newest version
/* 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);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy