we are considering the use of Task Events with event type “Date/Time” quite extensively. Can anyone say something about the runtime behaviour of these events. I saw that each date time event creates a scheduler which runs every minute (Scheduled Event Administration). How does the engine then determine which tasks need to fire an event? Does the engine load all tasks of the task type?
The runtime behavior for date-time events, is whenever the schedule fires, the task engine must evaluate the associated rule.
What the task engine does is examines the rule and creates a very specific task query to only process the appropriate tasks that match the condition of the rule. So if you had one million tasks in the database, only the tasks that match the current condition of the date-time event will be loaded into memory and processed.
thanks for the valuable information. We configured the date/time event to fire when a date is reached. This date is included in the business data of the task. No further conditions are added to the event. From what I understood from documentation and your post such a query for business data is not possible in 8.0 (because business data are contained in a BLOB in the DB). So in such a case the engine would have to load all active tasks from the db? Is that right? With 8.2 we have indexed business data available. When we would add the date values to the indexed business data the engine could make a query that could load just the tasks that are needed. Is that assumption also right?
You’ve assessed the situation precisely and accurately. If the data that is used in the condition is one of the already indexed fields (like created date), then in 8.0, the query will be optimized. If you are using a condition that references business data in 8.0, the query will not be fully optimized.
So in 8.2, if you need to use business data for your date / time event, the task engine should be able to leverage an optimized SQL query. If it fails to do so, please let me know!