/* * 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 Jun 17, 2005 * @author James Dixon * */ package org.pentaho.platform.api.engine; import java.util.List; import java.util.Map; /** * The Solution Engine handles loading and launching execution of solutions and * action sequences. There is one solution engine per request, which can launch * one or more action sequences. */ public interface ISolutionEngine extends ILogger { public static final String RUNTIME_SOLUTION_NAME = "RuntimeSolution"; //$NON-NLS-1$ /** * Sets the source for input parameters. * * @param name * name to give to this provider * @param parameterProvider * instance of a provider * @see org.pentaho.platform.api.engine.services.IParameterProvider */ public void setParameterProvider(String name, IParameterProvider parameterProvider); public void setCreateFeedbackParameterCallback(ICreateFeedbackParameterCallback callback); /** * Executes the action sequence specified in the manner described in the * parameters * * @param solutionName * the name at the root level of the solution path * @param actionPath * the path relative to the solutionName that will lead to the * requested action * @param actionName * name of the action sequence document * @param processId * id for the given action sequence document * @param async * synchronous(false) or asynchronous(true) execution (not * currently used) * @param instanceId * id to be handed to the runtime repository * @param persisted * if true, store runtime data, otherwise do not * @param parameterProviderMap * group of ParameterProviders, sources for inout parameters * @param outputHandler * handler used to query for addition parameters * @param listener * object notified on completion of action sequences * @param urlFactory * factory for building urls * @param messages * list into which debug, info, warning, and errors messages will * be added * @return IRuntimeContext the RuntimeContext associated with this action * sequence execution * * @see org.pentaho.platform.api.engine.IRuntimeContext */ @SuppressWarnings("unchecked") public IRuntimeContext execute(String solutionName, String actionPath, String actionName, String processId, boolean async, boolean instanceEnds, String instanceId, boolean persisted, Map parameterProviderMap, IOutputHandler outputHandler, IActionCompleteListener listener, IPentahoUrlFactory urlFactory, List messages); /** * Executes the action sequence specified * @param runtime The runtime context for the execution * @param solutionName Name of the solution * @param sequencePath path to the solution * @param sequenceName name of the action sequence * @param processId id for the given process, typically a GUID or unique id for this execution * @param async true if the execution should be asynchronous. * @param instanceEnds currently true indicating that the process ends with this execution * @param parameterProviderMap Map of parameter providers to use for the execution * @param outputHandler The output handler for dealing with user feedback * @return The runtime context for the execution * @see IRuntimeContext * @see IParameterProvider * @see IActionSequence */ @SuppressWarnings("unchecked") public IRuntimeContext execute(IRuntimeContext runtime, String solutionName, String sequencePath, String sequenceName, String processId, boolean async, boolean instanceEnds, Map parameterProviderMap, IOutputHandler outputHandler); /** * Executes the in memory action sequence specified * @param actionSequenceXML the in memory action sequence string * @param sequenceName name of the action sequence * @param processId id for the given process, typically a GUID or unique id for this execution * @param async true if the execution should be asynchronous. * @param instanceEnds currently true indicating that the process ends with this execution * @param parameterProviderMap Map of parameter providers to use for the execution * @param outputHandler The output handler for dealing with user feedback * @return The runtime context for the execution * @see IRuntimeContext * @see IParameterProvider * @see IActionSequence */ @SuppressWarnings("unchecked") public IRuntimeContext execute(String actionSequenceXML, String sequenceName, String processId, boolean async, boolean instanceEnds, String instanceId, boolean persisted, Map parameterProviderMap, IOutputHandler outputHandler, IActionCompleteListener pListener, IPentahoUrlFactory urlFactory, List messages); /** * Sets the action complete listener which will be called when the action is complete * @param listener Listener to call back when execution is complete. */ public void setlistener(IActionCompleteListener listener); public void setlistener(IExecutionListener execListener); /** * Sets the session in the solution engine * @param session The session for this execution */ public void setSession(IPentahoSession session); /** * @return the runtime context being used for this execution. */ public IRuntimeContext getExecutionContext(); /** * @return Gets the current status from this execution */ public int getStatus(); /** * Initialize the SolutionEngine. This method should be called immediately * after object construction, and if solution engines are re-used among different * IPentahoSessions to bind the solution engine to the session. * * @param session * the session context for this SolutionEngine */ public void init(IPentahoSession session); /** * Sets if the promp page should be forced * @param status */ public void setForcePrompt(boolean forcePrompt); /** * Sets the xsl file to be used to generate the parameter page for the * current component. The parameter should be a full path from the solution * root starting with a /, or it should be a path relative to the directory * of the current action sequence. * * @param xsl * The name of the XSL file */ public void setParameterXsl(String xsl); }