| | 28 | |
| | 29 | === Data Model === |
| | 30 | |
| | 31 | Notifications build on the S3SubscriptionModel (see above) and the web2py Scheduler (for running tasks and logging). |
| | 32 | |
| | 33 | === Process === |
| | 34 | |
| | 35 | [[Image(notification_process.png)]] |
| | 36 | |
| | 37 | 1) A background task "check_subscriptions" (installed in zzz_1st_run.py) is run every 5 minutes to check for updates of resources which have subscriptions. The "check_subscriptions" task schedules a separate, asynchronous "notify_notify" task for each resource/subscription pair which has updates. |
| | 38 | 2) Each "notify_notify" task generates a local HTTP POST request to the subscribed controller (request format "msg"), applying the subscription filters. |
| | 39 | 3) This request is handled by the S3Notifications.send() method, impersonating the subscriber. The send() method extracts the new/updated records, and renders and sends the notification message(s) to the subscriber. |
| | 40 | 4) Sending of the messages uses current.msg.send_by_pe_id(), which in turn uses the contact information of the subscriber stored in pr_contact. |
| | 41 | |
| | 42 | === Framework === |
| | 43 | |
| | 44 | Notifications require a scheduler worker process to run in the background. |
| | 45 | |
| | 46 | === Configuration === |
| | 47 | |
| | 48 | ==== Per Deployment ==== |
| | 49 | |
| | 50 | ==== Per Resource ==== |
| | 51 | |
| | 52 | ==== Per Subscription ==== |
| | 53 | == Notifications == |