/**
* Copyright 1996-2014 FoxBPM ORG.
*
* 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.
*
* @author kenshin
* @author ych
*/
package org.foxbpm.engine;
import java.util.Map;
import org.foxbpm.engine.datavariable.VariableQuery;
import org.foxbpm.engine.runningtrack.RunningTrackQuery;
import org.foxbpm.engine.runtime.ProcessInstance;
import org.foxbpm.engine.runtime.ProcessInstanceQuery;
import org.foxbpm.engine.runtime.TokenQuery;
public interface RuntimeService {
/**
* 根据流程定义key启动流程,启动对应key的最新版本
*
* @param processDefinitionKey
* @return
*/
ProcessInstance startProcessInstanceByKey(String processDefinitionKey);
/**
* 根据流程定义key启动流程,启动对应key的最新版本
*
* @param processDefinitionKey
* @param bizKey
* 流程关联键
* @return
*/
ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String bizKey);
/**
* 根据流程定义Key启动流程,启动对应key的最新版本
*
* @param processDefinitionKey
* @param transientVariables
* 瞬态变量
* @param persistenceVariables
* 持久化变量
* @return
*/
ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables);
/**
* 根据流程定义Key启动流程,启动对应key的最新版本
*
* @param processDefinitionKey
* @param bizKey
* 流程关联键
* @param transientVariables
* 瞬态变量
* @param persistenceVariables
* 持久化变量
* @return
*/
ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String bizKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables);
/**
* 根据流程定义id(唯一编号)启动流程
*
* @param processDefinitionId
* @return
*/
ProcessInstance startProcessInstanceById(String processDefinitionId);
/**
* 根据流程定义id(唯一编号)启动流程
*
* @param processDefinitionId
* @param bizKey
* 流程关联键
* @return
*/
ProcessInstance startProcessInstanceById(String processDefinitionId, String bizKey);
/**
* 根据流程定义id(唯一编号)启动流程
*
* @param processDefinitionId
* @param transientVariables
* 瞬态变量
* @param persistenceVariables
* 持久化变量
* @return
*/
ProcessInstance startProcessInstanceById(String processDefinitionId, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables);
/**
* 根据流程定义id(唯一编号)启动流程
*
* @param processDefinitionId
* @param bizKey
* 流程关联键
* @param transientVariables
* 瞬态变量
* @param persistenceVariables
* 持久化变量
* @return
*/
ProcessInstance startProcessInstanceById(String processDefinitionId, String bizKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables);
/**
* 根据消息启动流程(尚未实现)
*
* @param messageName
* @return
*/
ProcessInstance startProcessInstanceByMessage(String messageName);
/**
* 根据消息启动流程(尚未实现)
*
* @param messageName
* @param bizKey
* 流程关联键
* @return
*/
ProcessInstance startProcessInstanceByMessage(String messageName, String bizKey);
/**
* 根据消息启动流程(尚未实现)
*
* @param messageName
* @param processVariables
* 持久化变量
* @return
*/
ProcessInstance startProcessInstanceByMessage(String messageName, Map<String, Object> processVariables);
/**
* 根据消息启动流程(尚未实现)
*
* @param messageName
* @param bizKey
* 流程关联键
* @param processVariables
* 持久化变量
* @return
*/
ProcessInstance startProcessInstanceByMessage(String messageName, String bizKey, Map<String, Object> processVariables);
/**
* 驱动流程实例向下走一步,流转到下一个等待节点(如:人工任务等)
*
* @param tokenId
* 令牌编号,可以从流程实例上获得,也可以通过tokenQuery获得
*/
void signal(String tokenId);
/**
* 驱动流程实例向下走一步,流转到下一个等待节点(如:人工任务等)
*
* @param tokenId
* 令牌编号,可以从流程实例上获得,也可以通过tokenQuery获得
* @param transientVariables
* 瞬态变量
* @param persistenceVariables
* 持久化变量
*/
void signal(String tokenId, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables);
/**
* 创建令牌查询对象
*
* @return
*/
TokenQuery createTokenQuery();
/**
* 创建流程实例查询对象
*
* @return
*/
ProcessInstanceQuery createProcessInstanceQuery();
/**
* 创建变量查询对象
*
* @return
*/
VariableQuery createVariableQuery();
/**
* 创建运行轨迹查询对象
*
* @return
*/
RunningTrackQuery createRunningTrackQuery();
/**
* 根据流程实例号删除流程实例(级联删除所有相关数据)
*
* @param processInstanceId
*/
void deleteProcessInstance(String processInstanceId);
/**
* 根据流程实例号终止流程实例,如果是子流程,则会知直接递归终止父流程
* @param processInstanceId
*/
void abortProcessInstance(String processInstanceId);
}