docs: function startAction(params) {
          logger.log('debug', 'M|startAction|params=%j', params, meta);
          
          // 1) Make sure the Engine is in the STOPPED state before spinnig up
          //    all the workers.
          if (state !== states.stopped) {
              logger.log('warn', 'M|startAction|ERROR|REJECT');
              params.deferred.reject(new Error('Unable to start workers. Invalid state ' + states.toString(state) + '. Expected stopped'));
              logger.log('debug', 'M|startAction|params=%j|done', params, meta);
              return null;
          }
          
          // 2) Changing state to "Starting" and FORKing all the workers.
          //    Further more we will send a message to each of them with a "start"
          //    Action.
          nextState(states.starting);
          for (var w = 0 ; w < savedConfig.workers ; ++w) {
              startOneWorkerHelper();
          }
          
          // 3) Use the monitorAllWorkerHelper function to Queue all the workers an monitor
          //    their startup progress.
          var promises = monitorAllWorkerHelper('start', savedConfig.startTimeoutInMs);
          Q.all(promises).then(function (object) {
              logger.log('debug', 'M|startAction|all|resolved|object=%j', object, meta);
              actionCompleted("start", states.running, true, 'Workers started', params);                        
          }).fail(function (object) {
              logger.log('debug', 'M|startAction|all|rejected|object=%j', object, meta);
              actionCompleted("start", states.error, false, 'Unable to start workers', params);                        
          }).done();
          
          // 4) Return null, to inform the ActionQueue that this action should not
          //    be reinstered into the queue.
          logger.log('debug', 'M|startAction|params=%j|done', params, meta);
          return null;
      }