Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Because addons that use the system script environment do not have access to user interface elements, they must have some way of determining when they need to execute the logic they are written for. The primary means of supporting this need in the addon system is via system events. System events are events that are fired by a host application in response to some trigger, whether it is based on an action occurring in the host application (such as a user routing a request in the client) or the passage of a set interval of time. The best example of this is the Route system event that is available in the client. The route event is triggered every time a request is routed in the client and no applicable entry is found in the routing table. This allows addon developers to create system addons which provide fine-tuned, customizable routing logic.

Addons can take advantage of system events by doing two things inside of a system addon. First, the addon developer must provide a method that can be called whenever a given event is triggered. For example, you might write a "ProcessRoute" method for processing the Route event referenced above. Second, the addon must register for the event by calling the RegisterSystemEventHandler method. Generally, this will be done inside the Init method, but this is not required. An example of both steps is given below.

Handling Events Sample

Code Block
languagesql
linenumberstrue
function Init()
	RegisterSystemEventHandler("Route", "ProcessRoute");
end
 
function ProcessRoute(routeEventArgs)
	routeEventArgs.Handled = false;
	
	if (GetFieldValue("Transaction", "RequestType") == 'Article') then
		ExecuteCommand("Route", { routeEventArgs.TransactionNumber, 
		"Awaiting Article Processing" });
 
		routeEventArgs.NewStatus = "Awaiting Article Processing";
		routeEventArgs.Handled = true;
	end
end