/** * 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.impl; import java.util.Map; import org.foxbpm.engine.RuntimeService; import org.foxbpm.engine.datavariable.VariableQuery; import org.foxbpm.engine.impl.cmd.AbortProcessInstanceByIdCmd; import org.foxbpm.engine.impl.cmd.BoundaryTimeSignalCmd; import org.foxbpm.engine.impl.cmd.DeleteProcessInstanceByIdCmd; import org.foxbpm.engine.impl.cmd.SignalCmd; import org.foxbpm.engine.impl.cmd.StartProcessInstanceCmd; import org.foxbpm.engine.impl.cmd.TimeExecuteConnectorCmd; import org.foxbpm.engine.impl.datavariable.VariableQueryImpl; import org.foxbpm.engine.impl.runningtrack.RunningTrackQueryImpl; import org.foxbpm.engine.impl.runtime.ProcessInstanceQueryImpl; import org.foxbpm.engine.impl.runtime.TokenQueryImpl; import org.foxbpm.engine.impl.util.ExceptionUtil; import org.foxbpm.engine.runningtrack.RunningTrackQuery; import org.foxbpm.engine.runtime.ProcessInstance; import org.foxbpm.engine.runtime.ProcessInstanceQuery; import org.foxbpm.engine.runtime.TokenQuery; /** * runTimeService的具体实现 * * @author kenshin * */ public class RuntimeServiceImpl extends ServiceImpl implements RuntimeService { public ProcessInstance startProcessInstanceByKey(String processDefinitionKey) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(processDefinitionKey, null, null, null, null)); } public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String bizKey) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(processDefinitionKey, null, bizKey, null, null)); } public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(processDefinitionKey, null, null, transientVariables, persistenceVariables)); } public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String bizKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(processDefinitionKey, null, bizKey, transientVariables, persistenceVariables)); } public ProcessInstance startProcessInstanceById(String processDefinitionId) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(null, processDefinitionId, null, null, null)); } public ProcessInstance startProcessInstanceById(String processDefinitionId, String bizKey) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(null, processDefinitionId, bizKey, null, null)); } public ProcessInstance startProcessInstanceById(String processDefinitionId, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(null, processDefinitionId, null, transientVariables, persistenceVariables)); } public ProcessInstance startProcessInstanceById(String processDefinitionId, String bizKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { return commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(null, processDefinitionId, bizKey, transientVariables, persistenceVariables)); } public ProcessInstance startProcessInstanceByMessage(String messageName) { throw ExceptionUtil.getException("功能尚未完成"); } public ProcessInstance startProcessInstanceByMessage(String messageName, String bizKey) { throw ExceptionUtil.getException("功能尚未完成"); } public ProcessInstance startProcessInstanceByMessage(String messageName, Map<String, Object> processVariables) { throw ExceptionUtil.getException("功能尚未完成"); } public ProcessInstance startProcessInstanceByMessage(String messageName, String bizKey, Map<String, Object> processVariables) { throw ExceptionUtil.getException("功能尚未完成"); } public void signal(String executionId) { commandExecutor.execute(new SignalCmd(executionId, null, null, null, null)); } public void signal(String executionId, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { commandExecutor.execute(new SignalCmd(executionId, null, null, transientVariables, persistenceVariables)); } public TokenQuery createTokenQuery() { return new TokenQueryImpl(commandExecutor); } public ProcessInstanceQuery createProcessInstanceQuery() { return new ProcessInstanceQueryImpl(commandExecutor); } public VariableQuery createVariableQuery() { return new VariableQueryImpl(commandExecutor); } public RunningTrackQuery createRunningTrackQuery() { return new RunningTrackQueryImpl(commandExecutor); } /** * 边界事件定时器启动推动令牌 * * @param tokenId * 令牌编号 * @param nodeId * 触发的边界事件节点号 * @param isCancelActivity * 是否中断 * @param transientVariables * 瞬态变量 */ public void boundaryTimeSignal(String tokenId, String nodeId, boolean isCancelActivity, Map<String, Object> transientVariables) { commandExecutor.execute(new BoundaryTimeSignalCmd(tokenId, nodeId, isCancelActivity, transientVariables, null)); } /** * 边界事件定时器启动推动令牌 * * @param tokenId * 令牌编号 * @param nodeId * 触发的边界事件节点号 * @param isCancelActivity * 是否中断 * @param transientVariables * 瞬态变量 * @param persistenceVariables * 持久化变量 */ public void boundaryTimeSignal(String tokenId, String nodeId, boolean isCancelActivity, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { commandExecutor.execute(new BoundaryTimeSignalCmd(tokenId, nodeId, isCancelActivity, transientVariables, persistenceVariables)); } /** * * autoExecuteConnector(调度器执行 Connector方法) * * @param processInstanceID * 流程实例ID * @param connectorID * 连接器ID * @param eventName * 事件名称 * @param tokenID * 令牌ID * @param nodeID * 节点ID void * @exception * @since 1.0.0 */ public void autoExecuteConnector(String processInstanceID, String connectorID, String eventName, String tokenID, String nodeID) { commandExecutor.execute(new TimeExecuteConnectorCmd(processInstanceID, connectorID, eventName, tokenID, nodeID)); } /** * * autoStartProcessInstance(调度器启动流程实例) * * @param processDefinitionKey * 流程定义KEY * @param processDefinitionId * 流程定义ID * @param bizKey * 业务关联键 * @param transientVariables * 瞬时变量 * @param persistenceVariables * 持久变量 void * @exception * @since 1.0.0 */ public void autoStartProcessInstance(String processDefinitionKey, String processDefinitionId, String bizKey, Map<String, Object> transientVariables, Map<String, Object> persistenceVariables) { this.commandExecutor.execute(new StartProcessInstanceCmd<ProcessInstance>(processDefinitionKey, processDefinitionId, bizKey, transientVariables, persistenceVariables)); } public void deleteProcessInstance(String processInstanceId) { this.commandExecutor.execute(new DeleteProcessInstanceByIdCmd(processInstanceId)); } public void abortProcessInstance(String processInstanceId) { // TODO Auto-generated method stub this.commandExecutor.execute(new AbortProcessInstanceByIdCmd(processInstanceId)); } public Class<?> getInterfaceClass() { return RuntimeService.class; } }