CommandSet

Contains a set of commands and events supported by a commandable object. The CommandSet supports command interceptors and command call chains.

Description

The CommandSet class allows you to create a set of commands and events supported by a commandable object. In addition, it supports command interceptors and command call chains.

Important points

  • CommandSets can be used as an alternative commandable interface to a business object.
  • This class can be used to auto generate multiple external services for a business object.

Constructors

Creates an empty CommandSet object.

CommandSet()

Instance methods

addCommand

Adds a command to this command set.

See ICommand

void addCommand(ICommand command)

addCommandSet

Adds all of the commands and events from a specified command set into this one.

void addCommandSet(CommandSet commandSet)

addCommands

Adds multiple commands to this command set.

See ICommand

void addCommands(List<ICommand> commands)

  • commands: List<ICommand> - array of commands to add.

addEvent

Adds an event to this command set.
See IEvent

void addEvent(IEvent event)

  • event: IEvent - event to add.

addEvents

Adds multiple events to this command set.
See IEvent

void addEvents(List<IEvent> events)

  • event: List<IEvent> - array of events to add.

addInterceptor

Adds a command interceptor to this command set.

void addInterceptor(ICommandInterceptor interceptor)

addListener

Adds a listener to receive notifications on fired events.
See IEventListener

void addListener(IEventListener listener)

execute

Executes a command specificed by its name.
See ICommand, Parameters

Future<\dynamic> execute(String? correlationId, String commandName, Parameters args)

  • correlationId: String? - (optional) transaction id used to trace execution through the call chain.
  • commandName: String - name of the command that is to be executed.
  • args: Parameters - parameters (arguments) to pass to the command for execution.
  • returns: Future<\dynamic> - execution result

findCommand

Searches for a command by its name.
See ICommand

ICommand? findCommand(String commandName)

  • commandName: ICommand - name of the command to search for.
  • returns: ICommand? - command, whose name matches the provided name.

findEvent

Searches for an event by its name in this command set.

IEvent? findEvent(String eventName)

  • eventName: String - name of the event to search for.
  • returns: IEvent? - event, whose name matches the provided name.

getCommands

Gets all commands registered in this command set.
See ICommand

List<ICommand> getCommands()

  • returns: List<ICommand> - list of commands.

getEvents

Gets all events registred in this command set.
See IEvent

List<IEvent> getEvents()

  • returns: List<IEvent> - list of events.

notify

Fires an event specified by its name and notifies all registered listeners

void notify(String? correlationId, String eventName, Parameters args)

  • correlationId: String? - (optional) transaction id used to trace execution through the call chain.
  • eventName: String - name of the event that is to be fired.
  • args: Parameters - event arguments (parameters).

removeListener

Removes a previosly added listener.
See IEventListener

void removeListener(IEventListener listener)

validate

Validates the args for a command specified by its name using a defined schema. If the validation schema is not defined, then the methods returns no errors. It returns a validation error if the command is not found.

List<ValidationResult> validate(String commandName, Parameters args)

  • commandName: String - name of the command for which the ‘args’ must be validated.
  • args: Parameters - parameters (arguments) to validate.
  • returns: List<ValidationResult> - array of ValidationResults. If no command is found by the given name, then the returned array of ValidationResults will contain a single entry, whose type will be ValidationResultType.Error.

Examples

class MyDataCommandSet extends CommandSet {
     IMyDataController _controller;

    MyDataCommandSet(IMyDataController controller): super() { // Any data controller interface
        _controller = controller;
        addCommand(makeGetMyDataCommand());
    }

    ICommand _makeGetMyDataCommand()  {
        return  Command(
          'get_mydata',
          null,
          (String? correlationId, Parameters args) {
              var param = args.getAsString('param');
              return _controller.getMyData(correlationId, param);
          }
        );
    }
}

See also