/**
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
*
* The Apereo Foundation licenses this file to you under the Educational
* Community 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://opensource.org/licenses/ecl2.txt
*
* 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.opencastproject.workflow.api;
import org.opencastproject.mediapackage.MediaPackage;
import java.util.Map;
/**
* The result of a workflow operation.
*/
public interface WorkflowOperationResult {
enum Action {
CONTINUE, PAUSE, SKIP
}
/**
* @return The media package that results from the execution of a workflow operation.
*/
MediaPackage getMediaPackage();
/**
* Operations may optionally set properties on a workflow operation.
*
* @return The properties to set
*/
Map<String, String> getProperties();
/**
* Sets the action to take.
*
* @param action
* the action
*/
void setAction(Action action);
/**
* Operations may optionally request that the workflow be placed in a certain state.
*
* @return The action that the workflow service should take on this workflow instance.
*/
Action getAction();
/**
* Specifies whether the operation should be continuable by the user.
*
* @param isContinuable
*/
void setAllowsContinue(boolean isContinuable);
/**
* Returns <code>true</code> if this operation can be continued by the user from an optional hold state. This value is
* only considered if the action returned by this result equals {@link Action#PAUSE}.
*
* @return <code>true</code> if a paused operation should be continuable
*/
boolean allowsContinue();
/**
* Specifies whether the operation should be abortable by the user.
*
* @param isAbortable
*/
void setAllowsAbort(boolean isAbortable);
/**
* Returns <code>true</code> if this operation can be canceled by the user from an optional hold state. This value is
* only considered if the action returned by this result equals {@link Action#PAUSE}.
*
* @return <code>true</code> if a paused operation should be abortable
*/
boolean allowsAbort();
/**
* The number of milliseconds this operation sat in a queue before finishing.
*
* @return The time spent in a queue
*/
long getTimeInQueue();
}