schedule [Macro]


Purpose

The schedule macro is used to create tasks. A task is the application of a specific Loom action (implemented as a set of methods) to one or more objects. The schedule macro places the task on a queue for later execution, rather than executing it immediately (as perform does).

Syntax

schedule (actionName &rest arguments) &key priority

Arguments

The actionName argument is the name of the action which is to be applied to arguments. The procedure actually performed depends on which of the methods attached to actionName have their situation patterns satisfied by arguments.

The arguments argument contains zero or more variables or constants. Keyword arguments are supported, but optional and rest arguments are not.

The priority argument is currently either :high or :low. This argument specifies the queue on which the task is to be placed. The default value is :high.

Value

The return value of schedule is the newly-created task.

Remarks

Tasks may be scheduled as a result of production firings, as well as explicit calls to perform.

Scheduled tasks are executed when perform-task is called explicitly, or when the matcher is run (as a result of calling new-time-point, tellm, etc.).

Examples

(schedule (inspect-box box shipper)) ==> 
    |TASK|(INSPECT-BOX |I|BOX3 |I|ACME) 
(schedule (notify-shipper (fi Acme)) :priority :low) ==> 
    |TASK|(NOTIFY-SHIPPER |I|ACME)

See Also

Last modified: Jun 1 1995