Index: vhUnitTest/Prod/Kenmerk/TestKenmerk.cls.xml
===================================================================
diff -u -r1248 -r1377
--- vhUnitTest/Prod/Kenmerk/TestKenmerk.cls.xml (.../TestKenmerk.cls.xml) (revision 1248)
+++ vhUnitTest/Prod/Kenmerk/TestKenmerk.cls.xml (.../TestKenmerk.cls.xml) (revision 1377)
@@ -16,18 +16,10 @@
Do ##class(Prod.Kenmerk.DataDefinitie).DeleteKM(GroepID,UnID,KenmerkNaam)
- Set %HeeftCreatedEventOntvangen = 0
- Set CreateSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkCreatedEvent","vhUnitTest.Prod.Kenmerk.TestKenmerk","KenmerkCreatedEventListener")
- Do CreateSubscription.%Save()
-
Set %HeeftModEventOntvangen = 0
Set ModifiedSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkModifiedEvent","vhUnitTest.Prod.Kenmerk.TestKenmerk","KenmerkModEventListener")
Do ModifiedSubscription.%Save()
- Set %HeeftDeleteEventOntvangen = 0
- Set DeletedSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkDeletedEvent","vhUnitTest.Prod.Kenmerk.TestKenmerk","KenmerkDeletedEventListener")
- Do DeletedSubscription.%Save()
-
Set MetaGroep = ##class(Prod.Kenmerk.MetaGroep).%New()
Set MetaGroep.Code = "UTGroep"
Do MetaGroep.%Save()
@@ -45,26 +37,26 @@
Do $$$AssertTrue($$$ISOK(Status),"Het kenmerk is gesaved")
- Do $$$AssertTrue(%HeeftCreatedEventOntvangen,"De create event is opgegooid")
+ Do $$$AssertTrue(%HeeftModEventOntvangen,"De modified event is opgegooid na creatie")
+ Set %HeeftModEventOntvangen = 0
+
Do Kenmerk.Waarden.Insert("NieuweWaarde")
Do Kenmerk.%Save()
- Do $$$AssertTrue(%HeeftModEventOntvangen,"De modified event is opgegooid")
+ Do $$$AssertTrue(%HeeftModEventOntvangen,"De modified event is opgegooid na wijziging")
+ Set %HeeftModEventOntvangen = 0
+
Do Kenmerk.%DeleteId(Kenmerk.%Id())
Do MetaGroep.%DeleteId(MetaGroep.%Id())
Do MetaDefinitie.%DeleteId(MetaDefinitie.%Id())
- Do $$$AssertTrue(%HeeftDeleteEventOntvangen,"De delete event is opgegooid")
+ Do $$$AssertTrue(%HeeftModEventOntvangen,"De modified event is opgegooid na verwijdering")
- Do CreateSubscription.%DeleteId(CreateSubscription.%Id())
Do ModifiedSubscription.%DeleteId(ModifiedSubscription.%Id())
- Do DeletedSubscription.%DeleteId(DeletedSubscription.%Id())
-
- Kill %HeeftCreatedEventOntvangen
+
Kill %HeeftModEventOntvangen
- Kill %HeeftDeleteEventOntvangen
]]>
@@ -79,18 +71,10 @@
Do ##class(Prod.Kenmerk.DataDefinitie).DeleteKM(GroepID,UnID,KenmerkNaam)
- Set %HeeftCreatedEventOntvangen = 0
- Set CreateSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkCreatedEvent","vhUnitTest.Prod.Kenmerk.TestKenmerk","KenmerkCreatedEventListener")
- Do CreateSubscription.%Save()
-
Set %HeeftModEventOntvangen = 0
Set ModifiedSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkModifiedEvent","vhUnitTest.Prod.Kenmerk.TestKenmerk","KenmerkModEventListener")
Do ModifiedSubscription.%Save()
- Set %HeeftDeleteEventOntvangen = 0
- Set DeletedSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkDeletedEvent","vhUnitTest.Prod.Kenmerk.TestKenmerk","KenmerkDeletedEventListener")
- Do DeletedSubscription.%Save()
-
Set MetaGroep = ##class(Prod.Kenmerk.MetaGroep).%New()
Set MetaGroep.Code = "UTGroep"
Do MetaGroep.%Save()
@@ -109,38 +93,25 @@
Do $$$AssertTrue($$$ISOK(Status),"Het kenmerk is gesaved")
- Do $$$AssertFalse(%HeeftCreatedEventOntvangen,"De create event is opgegooid")
+ Do $$$AssertFalse(%HeeftModEventOntvangen,"De modified event is niet opgegooid na creatie")
Do Kenmerk.Waarden.Insert("NieuweWaarde")
Do Kenmerk.%Save()
- Do $$$AssertFalse(%HeeftModEventOntvangen,"De modified event is opgegooid")
+ Do $$$AssertFalse(%HeeftModEventOntvangen,"De modified event is niet opgegooid na wijziging")
Do Kenmerk.%DeleteId(Kenmerk.%Id())
Do MetaGroep.%DeleteId(MetaGroep.%Id())
Do MetaDefinitie.%DeleteId(MetaDefinitie.%Id())
- Do $$$AssertFalse(%HeeftDeleteEventOntvangen,"De delete event is opgegooid")
-
- Do CreateSubscription.%DeleteId(CreateSubscription.%Id())
+ Do $$$AssertFalse(%HeeftModEventOntvangen,"De modified event is niet opgegooid na verwijdering")
+
Do ModifiedSubscription.%DeleteId(ModifiedSubscription.%Id())
- Do DeletedSubscription.%DeleteId(DeletedSubscription.%Id())
-
- Kill %HeeftCreatedEventOntvangen
+
Kill %HeeftModEventOntvangen
- Kill %HeeftDeleteEventOntvangen
]]>
-
-1
-KenmerkCreatedEvent:TECH.Events.KenmerkCreatedEvent
-
-
-
1
KenmerkModifiedEvent:TECH.Events.KenmerkModifiedEvent
@@ -152,14 +123,5 @@
}
]]>
-
-
-1
-KenmerkDeletedEvent:TECH.Events.KenmerkDeletedEvent
-
-
Index: APPS/PM/KenmerkenService.cls.xml
===================================================================
diff -u -r1251 -r1377
--- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1251)
+++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1377)
@@ -305,19 +305,32 @@
If ($IsObject(Kenmerk))
{
- Do Kenmerk.Waarden.Clear()
- Do ##class(TECH.ListUtils).CopyList(ProductKenmerk.Waarden,Kenmerk.Waarden)
- Set Kenmerk.IsEventRaiser = 0
- Set Status = Kenmerk.Save()
- If $$$ISERR(Status)
+ // Controleer of de nieuwe waarden verschillen
+ Set IsGewijzigd = (ProductKenmerk.Waarden.Count() '= Kenmerk.Waarden.Count())
+ Set i = 0
+
+ While ('IsGewijzigd) && (i < Kenmerk.Waarden.Count())
{
- Set ErrorMsg = "Kenmerk "_ProductKenmerk.Groep_"||"_ProductKenmerk.KenmerkNaam_" voor UnID "_UnID_" kon niet worden gesaved.("_$$ParseStatus^vhLib(Status)_")"
+ Set i = i + 1
+ Set IsGewijzigd = (ProductKenmerk.Waarden.GetAt(i) '= Kenmerk.Waarden.GetAt(i))
}
- Else
+
+ If (IsGewijzigd)
{
- 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))
+ 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
{
Index: TECH/Events/KenmerkenDeletedEvent.cls.xml
===================================================================
diff -u -r1229 -r1377
--- TECH/Events/KenmerkenDeletedEvent.cls.xml (.../KenmerkenDeletedEvent.cls.xml) (revision 1229)
+++ TECH/Events/KenmerkenDeletedEvent.cls.xml (.../KenmerkenDeletedEvent.cls.xml) (revision 1377)
@@ -2,6 +2,7 @@
+NIET GEÏMPLEMENTEERD
Dit is het bulk event voor KenmerkDeletedEvent.
Niet elk event gebeurt in bulk, er moet dus ook naar KenmerkDeletedEvent geluisterd worden.
serial
Index: TECH/Events/KenmerkenCreatedEvent.cls.xml
===================================================================
diff -u -r1229 -r1377
--- TECH/Events/KenmerkenCreatedEvent.cls.xml (.../KenmerkenCreatedEvent.cls.xml) (revision 1229)
+++ TECH/Events/KenmerkenCreatedEvent.cls.xml (.../KenmerkenCreatedEvent.cls.xml) (revision 1377)
@@ -2,6 +2,7 @@
+NIET GEÏMPLEMENTEERD
Dit is het bulk event voor KenmerkCreatedEvent.
Niet elk event gebeurt in bulk, er moet dus ook naar KenmerkCreatedEvent geluisterd worden.
serial
Index: Prod/Kenmerk/DataDefinitie.cls.xml
===================================================================
diff -u -r1289 -r1377
--- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1289)
+++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1377)
@@ -100,26 +100,16 @@
if SaveOK set SaveOK = ##super(IsNew)
- If $$$ISOK(SaveOK)
+ If $$$ISOK(SaveOK) && (..IsEventRaiser)
{
- If (..IsEventRaiser)
- {
- 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.%ConstructClone(1))
- Set Event = ##class(TECH.Events.KenmerkModifiedEvent).%New(EventData)
- }
-
- Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event)
- }
+ // 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.
+ //
+ // Het maakt ook niet uit of het een insert of update is. Dit is altijd een wijziging van de waarden van een kenmerk.
+ // Bij een insert is de wijziging van "Waarden leeg" naar "Waarden gevuld"
+ Set EventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(..UnID,..Kenmerk.Groep.Code,..Kenmerk.Kenmerk,..Waarden.%ConstructClone(1))
+ Set Event = ##class(TECH.Events.KenmerkModifiedEvent).%New(EventData)
+ Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event)
}
//w "After : "_$zobjval(,5,0,3,5),!
@@ -149,9 +139,10 @@
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)
+ // Een "delete" is ook een modify. De waardenlijst wordt van "gevuld" naar "leeg" gewijzigd.
+ Set EventData = ##class(TECH.Events.KenmerkModifiedEventData).%New($$$UnID,$$$Groep,$$$Kenm,##class(%ListOfDataTypes).%New())
+ Set Event = ##class(TECH.Events.KenmerkModifiedEvent).%New(EventData)
+ Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event)
}
Do ##class(Prod.Kenmerk.DataIndex).DeleteWaarden($$$Groep,$$$Kenm,$$$UnID)
@@ -176,8 +167,9 @@
#define Groep $P(ID,"||",2)
#define Kenm $P(ID,"||",3)
- Set EventData = ##class(TECH.Events.KenmerkDeletedEventData).%New($$$UnID,$$$Groep,$$$Kenm)
- Set Event = ##class(TECH.Events.KenmerkDeletedEvent).%New(EventData)
+ // Een "delete" is ook een modify. De waardenlijst wordt van "gevuld" naar "leeg" gewijzigd.
+ Set EventData = ##class(TECH.Events.KenmerkModifiedEventData).%New($$$UnID,$$$Groep,$$$Kenm,##class(%ListOfDataTypes).%New())
+ Set Event = ##class(TECH.Events.KenmerkModifiedEvent).%New(EventData)
Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(Event)
set ID = {ID}
Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml
===================================================================
diff -u -r1263 -r1377
--- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1263)
+++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1377)
@@ -150,7 +150,7 @@
Do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(1).Kenmerken.GetAt(4).Waarden.GetAt(1),"Keuken","Er is een ingevulde eigenschap "_ProductenKenmerken.Kenmerken.GetAt(1).Kenmerken.GetAt(4).KenmerkNaam_" : "_ProductenKenmerken.Kenmerken.GetAt(1).Kenmerken.GetAt(4).Waarden.GetAt(1)_"")
; [Review WV JBL Kenm] wat een geflipte expression :-P
; bestaat er geen method Product.GeefKenmerkViaNaam("MeubelToepassing") i.p.v. GetAt(4) ?
-
+
///Kenmerk wijzigen en wegschrijven
Set Waarden = ##class(%ListOfDataTypes).%New()
Do Waarden.Insert(NieuweWaarde)
@@ -163,6 +163,23 @@
///Opnieuw ophalen van kenmerken
Set ProductenKenmerken = KenmerkenService.GeefProductKenmerken(PRNrs, KenmerkGroepen)
Do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(1).Kenmerken.GetAt(4).Waarden.GetAt(1),NieuweWaarde,"Er is een ingevulde eigenschap "_ProductenKenmerken.Kenmerken.GetAt(1).Kenmerken.GetAt(4).KenmerkNaam_" : "_NieuweWaarde_"")
+
+ // We gaan nog eens opnieuw bewaren. Dit zou geen save mogen trigger => zelfde waarden is geen save.
+
+ Set %HeeftModEventOntvangen = 0
+ Set ModifiedSubscription = ##class(TECH.PubSub.EventSubscription).%New("KenmerkenModifiedEvent",..%ClassName(1),"KenmerkenModEventListener")
+ Do ModifiedSubscription.%Save()
+
+ Set Waarden = ##class(%ListOfDataTypes).%New()
+ Do Waarden.Insert(NieuweWaarde)
+ Set ProductenKenmerken.Kenmerken.GetAt(1).Kenmerken.GetAt(4).Waarden = Waarden
+
+ Do KenmerkenService.BewaarProductenKenmerken(ProductenKenmerken)
+
+ Do $$$AssertFalse(%HeeftModEventOntvangen,"De mod event werd niet opgegooid omdat er geen wijzigingen waren")
+
+ Do ModifiedSubscription.%DeleteId(ModifiedSubscription.%Id())
+ Kill %HeeftModEventOntvangen
]]>
@@ -210,6 +227,7 @@
Do $$$AssertFalse(%HeeftModEventOntvangen,"De bulk wijzig event is niet geraised door de rollback")
Do ModifiedSubscription.%DeleteId(ModifiedSubscription.%Id())
+ Kill %HeeftModEventOntvangen
k ProductenKenmerken
@@ -256,6 +274,7 @@
Do $$$AssertTrue(%HeeftModEventOntvangen,"De bulk wijzig event is opgevangen en had meerdere wijziging data objecten")
Do ModifiedSubscription.%DeleteId(ModifiedSubscription.%Id())
+ Kill %HeeftModEventOntvangen
k ProductenKenmerken
Index: TECH/Events/KenmerkDeletedEvent.cls.xml
===================================================================
diff -u -r1229 -r1377
--- TECH/Events/KenmerkDeletedEvent.cls.xml (.../KenmerkDeletedEvent.cls.xml) (revision 1229)
+++ TECH/Events/KenmerkDeletedEvent.cls.xml (.../KenmerkDeletedEvent.cls.xml) (revision 1377)
@@ -2,6 +2,7 @@
+NIET GEÏMPLEMENTEERD
Sommige KenmerkDeletedEvents worden in bulk gegenereerd.
Daarom moet in dit geval ook geluisterd worden naar KenmerkenDeletedEvent.
serial
Index: TECH/Events/KenmerkCreatedEvent.cls.xml
===================================================================
diff -u -r1229 -r1377
--- TECH/Events/KenmerkCreatedEvent.cls.xml (.../KenmerkCreatedEvent.cls.xml) (revision 1229)
+++ TECH/Events/KenmerkCreatedEvent.cls.xml (.../KenmerkCreatedEvent.cls.xml) (revision 1377)
@@ -2,6 +2,7 @@
+NIET GEÏMPLEMENTEERD
Sommige KenmerkCreatedEvents worden in bulk gegenereerd.
Daarom moet in dit geval ook geluisterd worden naar KenmerkenCreatedEvent.
serial