THIS CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED;
THE AUTHOR DISCLAIMS ALL LIABILITY FOR ANY DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR STORE DISRUPTIONS ARISING FROM ITS USE.
Adding scheduled tasks to modules is easy once you get the hang of it. The two most important functions are below, self explanitory.
First, add the scheduled task feature to the module in the module_description function along with any other features you're using:
<MvASSIGN NAME = "l.module:features" VALUE = "data_store,util,vis_util,scheduledtask">
These two functions are all that you usually need to deal with when creating scheduled task functions:
<MvFUNCTION NAME = "ScheduledTaskModule_Operations" PARAMETERS = "module var, operations var" STANDARDOUTPUTLEVEL = "">
<MvASSIGN NAME = "l.settings" VALUE = "{ config(l.module_settings) }" />
<MvASSIGN NAME = "l.info:code" VALUE = "customerstatus" />
<MvASSIGN NAME = "l.info:descrip" VALUE = "Remove Unverified Customers" />
<MvASSIGN NAME = "l.ok" VALUE = "{ miva_array_insert(l.operations,l.info,-1) }" />
<MvASSIGN NAME = "l.info:code" VALUE = "process_expiration" />
<MvASSIGN NAME = "l.info:descrip" VALUE = "Process Expired Accounts" />
<MvASSIGN NAME = "l.ok" VALUE = "{ miva_array_insert(l.operations,l.info,-1) }" />
<MvFUNCTIONRETURN VALUE = "{ miva_array_elements(l.operations) }">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Execute" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
<MvASSIGN NAME = "l.settings" VALUE = "{ config(l.module_settings) }" />
<MvIF EXPR = "{ l.task:operation EQ 'customerstatus' }">
<MvASSIGN NAME = "l.ok" VALUE = "{ tracking_cleanup(l.null,l.settings) }" />
</MvIF>
<MvIF EXPR = "{ l.task:operation EQ 'process_expiration' }">
<MvASSIGN NAME = "l.ok" VALUE = "{ process_expiration(l.settings) }" />
</MvIF>
<MvFUNCRETURN VALUE = "{ 1 }">
</MvFUNCTION>
These are the other scheduled task functions for the module. They are required even if they are not being used.
<MvFUNCTION NAME = "ScheduledTaskModule_Capabilities" PARAMETERS = "module var, capabilities var" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Delete" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Field" PARAMETERS = "module var, field_id" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Fields" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Prompt" PARAMETERS = "module var, field_id" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Provision_Settings" PARAMETERS = "module var, task var, proxide_xml var" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Update" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
<MvFUNCTION NAME = "ScheduledTaskModule_Validate" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
<MvFUNCRETURN VALUE = "1">
</MvFUNCTION>
Create a Scheduled Task in the Store
Creating a scheduled task in the store for this module is as simple as going to:
Store Settings > Scheduled Tasks > Create New Scheduled Task
Give it a description and then choose from the dropdown the task. The task name begins with the module and then shows the "operation" name above.
Ignore everything related to Trigger and otherwise decide how often you want the task to run and then save.