Index: APPS/PM/KenmerkenService.cls.xml =================================================================== diff -u -r1133 -r1248 --- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1133) +++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1248) @@ -275,6 +275,8 @@ /// Scope ophalen Set OperatieScope = ##class(TECH.OperatieScope).StartMetTx() + Set KenmerkenModifiedEventData = ##class(TECH.Events.KenmerkenModifiedEventData).%New() + Set ProductKenmerkenIt = ##class(TECH.ListIterator).%New(ProductenKenmerken.Kenmerken) While (ProductKenmerkenIt.HasNext()) { @@ -305,12 +307,18 @@ { Do Kenmerk.Waarden.Clear() Do ##class(TECH.ListUtils).CopyList(ProductKenmerk.Waarden,Kenmerk.Waarden) - + Set Kenmerk.IsEventRaiser = 0 Set Status = Kenmerk.Save() If $$$ISERR(Status) { Set ErrorMsg = "Kenmerk "_ProductKenmerk.Groep_"||"_ProductKenmerk.KenmerkNaam_" voor UnID "_UnID_" kon niet worden gesaved.("_$$ParseStatus^vhLib(Status)_")" } + Else + { + Set WaardenLijst = ##class(%ListOfDataTypes).%New() + Do ##class(TECH.ListUtils).CopyList(Kenmerk.Waarden,WaardenLijst) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(##class(TECH.Events.KenmerkModifiedEventData).%New(UnID,ProductKenmerk.Groep,ProductKenmerk.KenmerkNaam,WaardenLijst)) + } }Else { Set ErrorMsg = "Kenmerk "_ProductKenmerk.Groep_"||"_ProductKenmerk.KenmerkNaam_" voor UnID "_UnID_" is niet gevonden." @@ -320,6 +328,13 @@ } If (ErrorMsg = ""){ Do OperatieScope.Gelukt() + + If (KenmerkenModifiedEventData.Wijzigingen.Count() > 0) + { + Set KenmerkenModifiedEvent = ##class(TECH.Events.KenmerkenModifiedEvent).%New(KenmerkenModifiedEventData) + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(KenmerkenModifiedEvent) + } + }Else{ Do OperatieScope.Gefaald(ErrorMsg) } Index: Default_ChristopherS.prj.xml =================================================================== diff -u -r1224 -r1248 --- Default_ChristopherS.prj.xml (.../Default_ChristopherS.prj.xml) (revision 1224) +++ Default_ChristopherS.prj.xml (.../Default_ChristopherS.prj.xml) (revision 1248) @@ -1,12 +1,18 @@ - + + + + + + + Index: vhUnitTest/APPS/PM/TestProductService.cls.xml =================================================================== diff -u -r1241 -r1248 --- vhUnitTest/APPS/PM/TestProductService.cls.xml (.../TestProductService.cls.xml) (revision 1241) +++ vhUnitTest/APPS/PM/TestProductService.cls.xml (.../TestProductService.cls.xml) (revision 1248) @@ -2,7 +2,7 @@ -Do ##class(vhUnitTest.Manager).RunTest("","APPS.PM.TestProductService") +Do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.PM.TestProductService") 1 vhUnitTest.TestCase 0 Index: zTryout/CSC/PersistenteKlasse.cls.xml =================================================================== diff -u -r1222 -r1248 --- zTryout/CSC/PersistenteKlasse.cls.xml (.../PersistenteKlasse.cls.xml) (revision 1222) +++ zTryout/CSC/PersistenteKlasse.cls.xml (.../PersistenteKlasse.cls.xml) (revision 1248) @@ -3,9 +3,14 @@ persistent 1 -%Persistent +TECH.VhChangeInfo 0 + +%Integer +list + + %Library.CacheStorage ^zTryout.CSC.PersistenteKlasseD @@ -22,6 +27,9 @@ Batch + +i + Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml =================================================================== diff -u -r1236 -r1248 --- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1236) +++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1248) @@ -220,6 +220,9 @@ Set NieuweWaarde = "GewijzigdeMeubelToepassing" Set KenmerkenService = ##class(APPS.PM.KenmerkenService).%New() + Set %HeeftModEventOntvangen = 0 + Set ModifiedSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkenModifiedEvent",..%ClassName(1),"KenmerkenModEventListener") + Do ModifiedSubscription.%Save() Set PRNrs = ##class(%ListOfDataTypes).%New() Do PRNrs.Insert(1005) @@ -242,6 +245,10 @@ Set ProductenKenmerken.Kenmerken.GetAt(2).Kenmerken.GetAt(4).Waarden = Waarden Do KenmerkenService.BewaarProductenKenmerken(ProductenKenmerken) + Do $$$AssertTrue(%HeeftModEventOntvangen,"De bulk wijzig event is opgevangen en had meerdere wijziging data objecten") + + Do ModifiedSubscription.%DeleteId(ModifiedSubscription.%Id()) + k ProductenKenmerken ///Opnieuw ophalen van kenmerken @@ -250,5 +257,16 @@ Do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).Kenmerken.GetAt(4).Waarden.GetAt(1),NieuweWaarde,"Ingevulde gewijzigde eigenschap "_ProductenKenmerken.Kenmerken.GetAt(2).Kenmerken.GetAt(4).KenmerkNaam_" : "_NieuweWaarde_"") ]]> + + +1 +KenmerkenModifiedEvent:TECH.Events.KenmerkenModifiedEvent + 0) + { + Set %HeeftModEventOntvangen = 1 + } +]]> + Index: vhUnitTest/Prod/Kenmerk/TestKenmerk.cls.xml =================================================================== diff -u -r1228 -r1248 --- vhUnitTest/Prod/Kenmerk/TestKenmerk.cls.xml (.../TestKenmerk.cls.xml) (revision 1228) +++ vhUnitTest/Prod/Kenmerk/TestKenmerk.cls.xml (.../TestKenmerk.cls.xml) (revision 1248) @@ -7,12 +7,15 @@ vhUnitTest.TestCase 0 - -%Boolean - - + + + + +Het gooien van events vanuit de datadefinitie kan uitgeschakeld worden. We gaan dit testen. + Index: Prod/Kenmerk/DataDefinitie.cls.xml =================================================================== diff -u -r1228 -r1248 --- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1228) +++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1248) @@ -102,19 +102,24 @@ If $$$ISOK(SaveOK) { - Set Event = "" - If (IsNew) + If (..IsEventRaiser) { - Set EventData = ##class(TECH.Events.KenmerkCreatedEventData).%New(..UnID,..Kenmerk.Groep.Code,..Kenmerk.Kenmerk,..Waarden) - Set Event = ##class(TECH.Events.KenmerkCreatedEvent).%New(EventData) + Set Event = "" + If (IsNew) + { + Set EventData = ##class(TECH.Events.KenmerkCreatedEventData).%New(..UnID,..Kenmerk.Groep.Code,..Kenmerk.Kenmerk,..Waarden) + Set Event = ##class(TECH.Events.KenmerkCreatedEvent).%New(EventData) + } + Else + { + // Het heeft geen zin om op de modified flag van "..Waarden" te gaan controleren, deze zal altijd false zijn. + // De Modified flag blijft bewaard in de onaftersave, maar de save van ..Waarden werd reeds volledig afgewerkt. + Set EventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(..UnID,..Kenmerk.Groep.Code,..Kenmerk.Kenmerk,..Waarden) + Set Event = ##class(TECH.Events.KenmerkModifiedEvent).%New(EventData) + } + + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event) } - Else - { - Set EventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(..UnID,..Kenmerk.Groep.Code,..Kenmerk.Kenmerk,..Waarden) - Set Event = ##class(TECH.Events.KenmerkModifiedEvent).%New(EventData) - } - - Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event) } //w "After : "_$zobjval(,5,0,3,5),! @@ -141,9 +146,13 @@ #define Groep $P($LG(Oid,1),"||",2) #define Kenm $P($LG(Oid,1),"||",3) - Set EventData = ##class(TECH.Events.KenmerkDeletedEventData).%New($$$UnID,$$$Groep,$$$Kenm) - Set Event = ##class(TECH.Events.KenmerkDeletedEvent).%New(EventData) - Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event) + Set Object = ..%Open(Oid) + If ($IsObject(Object) && Object.IsEventRaiser) + { + Set EventData = ##class(TECH.Events.KenmerkDeletedEventData).%New($$$UnID,$$$Groep,$$$Kenm) + Set Event = ##class(TECH.Events.KenmerkDeletedEvent).%New(EventData) + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event) + } Do ##class(Prod.Kenmerk.DataIndex).DeleteWaarden($$$Groep,$$$Kenm,$$$UnID)