<?php
/**
 * File containing the ezcWorkflowExecutionException class.
 *
 * @package Workflow
 * @version //autogen//
 * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
 * @license http://ez.no/licenses/new_bsd New BSD License
 */

/**
 * Exception will be thrown when an error occurs during workflow execution.
 *
 * @package Workflow
 * @version //autogen//
 */
class ezcWorkflowExecutionException extends ezcWorkflowException
{
}
?>
