execute(...args) {
    if (this._isLocked) {
      return Promise.reject(rejectMessages.isLock);
    }

    let [command] = args;
    if (isString(command)) {
      command = commandFactory.create(...args);
    }

    return this._invokeExecution(command).then((value) => {
      this.clearRedoStack();

      return value;
    });
  }
Invoke command
Store the command to the undoStack
Clear the redoStack
@param {String} commandName - Command name
@param {...*} args - Arguments for creating command
@returns {Promise}