/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright 2005 - 2008 Pentaho Corporation. All rights reserved. * * @created Jul 18, 2005 * @author James Dixon * */ package org.pentaho.platform.api.engine; import java.util.Map; /** * The SequenceDefinition represents the definition of several consecutive * action definitions that comprise an ActionSequence object, which is the * runtime equivalent of an action sequence document. * <p> * A SequenceDefinition can contain one to many ActionDefinitions that, when * executed by their constituent Components, flow automatically from one * ActionDefinition to the next. * */ public interface ISequenceDefinition { /** * return code indicating a valid SequenceDefinition */ public static final int ACTION_SEQUENCE_DEFINITION_OK = 0; /** * return code indicating a problem with the action sequences's XML */ public static final int ACTION_SEQUENCE_DEFINITION_INVALID_XML = 1; /** * return code indicating an action document that does validate against the * action document schema */ public static final int ACTION_SEQUENCE_DEFINITION_INVALID_ACTION_DOC = 2; /** * result-type value indicating the action should be not be displayed to * users during navigation */ public static final String RESULT_TYPE_NONE = "none"; //$NON-NLS-1$ /** * result-type value indicating the action should be be displayed as a * report to users during navigation */ public static final String RESULT_TYPE_REPORT = "report"; //$NON-NLS-1$ /** * result-type value indicating the action should be be displayed as a * business rule to users during navigation */ public static final String RESULT_TYPE_RULE = "rule"; //$NON-NLS-1$ /** * result-type value indicating the action should be be displayed as a * process to users during navigation */ public static final String RESULT_TYPE_PROCESS = "process"; //$NON-NLS-1$ /** * Returns a Map of the input parameters that are defined to this * SequenceDefinition. These inputs are part of the contract between this * sequence definition and the platform subsystems, ie., the runtime * context. * * @return Map of input parameters. Parameters take the name-value form. */ @SuppressWarnings("unchecked") public Map getInputDefinitions(); /** * Returns a Map of the input parameters that are defined to this * SequenceDefinition for a specific parameter provider. For example the input * named "REGION" may come from a request parameter named "regn" Calling this * method passing in "request" for the parameterproviderName will return a map that * includes an entry with the key "regn" mapped to the "REGION" IActionParameter. * * @param parameterProviderName The name of the parameter provider e.g. "request", "session", "global"... * * @return Map of input parameters. Parameters take the name-value form. */ @SuppressWarnings("unchecked") public Map getInputDefinitionsForParameterProvider(String parameterProviderName); /** * Returns a Map of the output parameters that are defined to this * SequenceDefinition. These outputs are part of the contract between this * sequence definition and the platform subsystems, ie., the runtime * context. * * @return Map of output parameters. Parameters take the name-value * form. */ @SuppressWarnings("unchecked") public Map getOutputDefinitions(); /** * Returns the sequence's resource definitions as a Map. Resources are * elements that exist outside of the action sequence document, such as * images, icons, additional definition documents, etc. * * @return Map of resource parameters. Parameters take the name-value * form. */ @SuppressWarnings("unchecked") public Map getResourceDefinitions(); /** * Returns the document name of the action sequence document that this * SequenceDefinition came from. * * @return the action sequence document name */ public String getSequenceName(); /** * Returns the type of the overall result of executing the action sequence * document that this SequenceDefinition came from. For example if the * sequence results in the generation of a report the result type for the * sequence should be RESULT_TYPE_REPORT. This property is used to select * icons to show next to the sequence name when users navigate the available * actions. Tif this returns RESULT_TYPE_NONE, empty string or null, the * action sequence will not be visible to users as they navigate * * @return the action sequence result type */ public String getResultType(); /** * Returns the author of the SequenceDefinition, if defined, or null * otherwise. * * @return this definition's author, or null if not defined. */ public String getAuthor(); /** * Returns the description of this SequenceDefinition, if defined, or null * otherwise. * * @return this definition's description, or null if not defined. */ public String getDescription(); /** * Returns the URL to the Help page for this definition. * * @return the definition's Help URL */ public String getHelp(); /** * Returns the title of this SequenceDefinition, if defined, or null * otherwise. * * @return this definition's title, or null if not defined. */ public String getTitle(); /** * Returns the solution name, which is the name at the root level of the * solution path. * * @return the name of the root level of this definition's solution */ public String getSolutionName(); /** * Returns the path relative to the solution name that will lead to this * definition * * @return the solution path to this definition */ public String getSolutionPath(); /** * Get the logging level for this SequenceDefinition. The logging level may * be set independently or may be inherited from a parent object's logging * level. * * @return this SequenceDefinition's logging level * * @see org.pentaho.platform.api.engine.ILogger */ public int getLoggingLevel(); /** * Returns the path to the icon for this SequenceDefinition. The path can be * relative or absolute In the pre-configured install these paths are URLs * of the form /style/icons/iconname.png This path is used by the navigation * XSL to generate the navigation user interface. If this property is not * set a generic icon is used. * * @return the url to the icon */ public String getIcon(); }