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()
Properties
Commands
Gets all commands registered in this command set. See ICommand.
public
List<ICommand> Commands { get; }
Events
Gets all events registred in this command set.
See IEvent.
public
List<IEvent> Events { get; }
Instance methods
AddCommand
Adds a command to this command set.
See ICommand.
public
void AddCommand(ICommand command)
- command: ICommand - command to add.
AddCommandSet
Adds all of the commands and events from a specified command set into this one.
public
void AddCommandSet(CommandSet commandSet)
- commandSet: CommandSet - CommandSet to add.
AddCommands
Adds multiple commands to this command set.
See ICommand.
public
void AddCommands(IEnumerable<ICommand> commands)
- commands: IEnumerable<ICommand> - array of commands to add.
AddEvent
Adds an event to this command set.
See IEvent.
public
void AddEvent(IEvent ev)
- ev: IEvent - event to add.
AddEvents
Adds multiple events to this command set.
See IEvent.
public
void AddEvents(IEnumerable<IEvent> events)
- events: IEnumerable<IEvent> - array of events to add.
AddInterceptor
Adds a command interceptor to this command set.
public
void AddInterceptor(ICommandInterceptor intercepter)
- intercepter: ICommandInterceptor interceptor to add.
AddListener
Adds a listener to receive notifications on fired events.
See IEventListener.
public
void AddListener(IEventListener listener)
- listener: IEventListener - listener to add.
ExecuteAsync
Executes a command specificed by its name.
See ICommand, Parameters.
public
Task<\object> ExecuteAsync(IContext context, string command, Parameters args)
- context: IContext - (optional) a context to trace execution through a call chain.
- command: string - name of that command that is to be executed.
- args: Parameters - parameters (arguments) to pass to the command for execution.
- returns: Task<\object> - execution result
FindCommand
Searches for a command by its name. See ICommand.
public
ICommand FindCommand(string command)
- command: 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.
public
IEvent FindEvent(string ev)
- ev: string - name of the event to search for.
- returns: IEvent - event whose name matches the provided name.
NotifyAsync
Fires event specified by its name and notifies all registered listeners.
public
Task NotifyAsync(context: IContext, ev: string, args: Parameters)
- context: IContext - (optional) a context to trace execution through a call chain.
- ev: string - name of the event that is to be fired.
- args: Parameters - event arguments (parameters).
RemoveListener
Removes a previosly added listener.
See IEventListener.
public
void RemoveListener(IEventListener listener)
- listener: IEventListener - listener to remove.
validate
Validates 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.
IList<ValidationResult> validate(string command, Parameters args)
- command: string - name of the command for which the ‘args’ must be validated.
- args: Parameters - parameters (arguments) to validate.
- returns: IList<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
public class MyDataCommandSet: CommandSet
{
private IMyDataController _controller;
///
public MyDataCommandSet(IMyDataController controller) // Any data controller interface
{
base();
this._controller = controller;
this.addCommand(this.MakeGetMyDataCommand()); }
private ICommand MakeGetMyDataCommand()
{
return new Command(
"get_mydata",
null,
async(context, args)=> {
String param = args.getAsString("param");
return this._controller.getMyData(context, param); });
}
}