From 88d84b7111501d549ebf787e90f6e3dce70dc78f Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 8 Jul 2020 21:17:56 +0000 Subject: [PATCH] --- devdocs/specs/core-notification.txt | 34 +++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/devdocs/specs/core-notification.txt b/devdocs/specs/core-notification.txt index 6b57a917..1a7131f3 100644 --- a/devdocs/specs/core-notification.txt +++ b/devdocs/specs/core-notification.txt @@ -28,6 +28,7 @@ CREATING NOTIFICATIONS OBJECTS Saving an object triggers notification processing for that object: - in v7 biz object just submits any possible notification and later it's checked to see if anyone subscribes would be better to short circuit that at the biz object to stop if no events of interest + - TODO: Every corebiz object needs at least to support created / updated with tag type as a minimum - type and id is submitted to eventofinterest checker (possibly also tags I think) AyaType, ID, eventlist,objectbefore,objectafter eventofinterest db table contains each type and event id @@ -49,6 +50,11 @@ OBJECTS Saving an object triggers notification processing for that object: DUPES - there can be near dupes here because user may have multiple of identical but vary in only: Delivery method advancenoticetimespan (e.g. contract expiring could be one 90 days in advance to renegotiate and then one 10 days in advance for notify service to cancel etc) + InTags - notify applies if has these tags + empty means any + OutTags - notify cancelled if has these tags + empty means any + out trumps an in, default is safer option CONDITION has optional condition fields (in v7 was guidvalue for wo status type, but we need more [investigate?]) @@ -82,7 +88,12 @@ v7 - NotifyPopup contains UI deliveries V8 TABLES notifysubscription - contains all users subscriptions to events and delivery method, if user wants two delivery methods they have two entries here, no other table indicates events to be tracked - (aID, aUserID, ayatype, aEventType, advancenoticetimespan, aGuidValue, aDeliveryMethod, deliveryaddress, HASH) + note use of subscriberid (0=all of type, or specific ID) and type, this would normally be type user and the user id but covers also the case of setting up a subscription for *ALL* customers (type customer id =0 meaning all) + also ayatype GLOBAL means that the subscription applies to events of any corebiz type + so for example a CreatedWithTag notification or UpdatedWithTag notification will work on any object with that tag if global or a specific type i.e. customer with that tag + Then they can control by tag as well, intags are used to filter and include (or any if no intags), outtags filter out and trump intags + These are also used for tag type conditions + (aID, subscriberId, subscriberAyaType, ayatype, aEventType, advancenoticetimespan, aGuidValue, aDeliveryMethod, deliveryaddress, intags, outtags, HASH) Notifyevent - contains all events, created by updating objects or directly in some cases and used by generator for processing as deliveries ayatype, objectid, eventtype, appliestouserid (single subscriber event), aEventDate, ASAVEDMESSAGE, HASH? notifydeliverylog - intended for troubleshooting, logs deliveries with a cap on how many records it retains. Keeping this as a separate and distinct OPS ui thing @@ -106,15 +117,15 @@ ALL EVENT TYPES INITIAL RELEASE ## OLD -WorkOrderStatusChange [GENERAL] [CONDITION: STATUS] +WorkOrderStatusChange [GENERAL] [CONDITION: WOSTATUS integer] ContractExpiring (User notify, add more notify before time frames in cases) [GENERAL] CSRAccepted [CUSTOMER] CSRRejected [CUSTOMER] NewWorkorder [CUSTOMER] -WorkorderStatusChange [CUSTOMER] +WorkorderStatusChange [CUSTOMER] [CONDITION: WOSTATUS integer] WorkorderClosed [CUSTOMER] WorkorderFollowUp [CUSTOMER] -QuoteStatusChanged [CUSTOMER] +QuoteStatusChanged [CUSTOMER] [CONDITION: QUOTESTATUS integer] ServiceBank[Currency/Hours/Incidents]Depleted [GENERAL] NewCSR [GENERAL] NewMemo [PERSONAL] @@ -125,7 +136,7 @@ ScheduleMarkerCreated (will rename) [PERSONAL] WorkorderItemScheduledUserCreatedUpdated [PERSONAL] WorkorderItemScheduledUserEventImminent [PERSONAL] WorkorderCloseByDatePassed (user) [general] -WorkorderStatusChanged (user) [GENERAL] +WorkorderStatusChanged (user) [GENERAL] [CONDITION: WOSTATUS integer] WorkorderItemOutsideServiceOverdue [general] WorkorderItemOutsideServiceReceivedBack [GENERAL] WorkorderItemPartRequestPartsReceived [GENERAL] @@ -139,14 +150,23 @@ BackupStatus case 3786 (biz and ops) [GENERAL] UpcomingServiceEvent case 3725 [CUSTOMER] WorkorderItemPartRequestCreated case 3652 [GENERAL] ContractExpiring - Customer version in addition to User version [CUSTOMER] -WorkorderTotalExceedsThreshold - Custom notification case 1745 "the andy" [GENERAL] +WorkorderTotalExceedsThreshold - Custom notification case 1745 "the andy" [GENERAL] [CONDITION: DOLLARTOTAL money value] WorkOrderStatusAge "deadman" delivery if not changed before XX time period [GENERAL] QuoteStatusAge [PERSONAL (prepared by), GENERAL] UnitWarranyExpiry case 1361 [GENERAL] UnitMeterReadingMultipleExceeded case 1254 [GENERAL] DefaultNotification case 3792 used for all system and old Quick notifications [EVERYONE] -TagNotification case 3799 +TagNotification case 3799 [CONDITION: intag, outtag, ayatype global/specific] + (Note: this is actually just general notification if an object is created or updated and the tagging is optional) + +CRUD Notifications: + (note: tag filterable and also can select type specifically or global for any type) + (note: differs from tag notification above in that only applies on a CHANGE of TAGS, this is an always for this op and tags are just an optional filter) + [CONDITION: intag, outtag, ayatype global/specific] + ObjectCreated + ObjectUpdated + ObjectDeleted PERSONAL? OR COVERED BY TAG FILTER ALREADY BETTER? WorkorderItemPartRequestPartsReceivedWhenIAmScheduled [PERSONAL]