U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Programmeerstijl: gebruik van de klasse Main van MercatorUi

0000001924     -      27-11-2013

Voor de versie Mercator Aruba gebruikten we Xdotnet of XDotnetFromMai voor het oproepen van een klasse in een assembly. Nadeel hiervan was dat deze klasse bij elke oproep in een afzonderlijk AppDomain werd uitgevoerd. Bijgevolg was het niet mogelijk om te beschikken over gemeenschappelijke (statische) globale variabelen voor de verschillende processen van deze klassen.

Dankzij Mercator Aruba wordt het nu mogelijk om te werken in één enkel AppDomain en dus te profiteren van een groot aantal correct door Mercator geïnitialiseerde globale variabelen. Daartoe dient de klasse MercatorUi.Main die bij het opstarten van Mercator wordt geïnitialiseerd.

mainglobals

De meeste beschikbare statische variabelen hebben een begrijpelijke naam die geen commentaar behoeft. Een aantal worden hieronder toegelicht:

  • CurrentUser: DataRow met alle velden uit de USER-tabel voor de actieve gebruiker
    Voorbeeld: naam van de gebruiker: MercatorUi.Globals.CurrentUser["NOM"].ToString()
  • ExternalGen: DataTable met het boekhoudplan van een andere boekhouding dan Mercator
  • ExternalAna: tabel (array) van 9 DataTables waarvan elk element de bijbehorende analytische rekening weergeeft (dat de analytische rekeningen van een andere boekhouding dan Mercator bevat). Indien de rekening niet bepaald werd, dan is het bijbehorende element in de tabel leeg. Rekening nr 1 hoort bij element nr 0 van de tabel, rekening nr 2 hoort bij element nr 2 van de tabel, ...
  • ExternalObjects: woordenboek <string, object> met de processen van klassen geladen door InstanciateExternalClass
  • iw: IWin32Window in te voeren als parameter in Show() of ShowDialog()
  • Main: gericht naar de klasse MercatorUi.Main
  • ParamIdentif: woordenboek <string,string> met alle inputs van "Tools / Identificatie"
  • ParamPos: woordenboek <string,string> met alle inputs van ParamPos.dbf

  • Bijvoorbeeld: geldladepoort: MercatorUi.Globals.ParamPos["PORT_TIR"]
  • Params: woordenboek <string,string> met alle inputs van Params.dbf
    Voorbeeld: optie "Backorders uit verkoop": MercatorUi.Globals.ParamPos["X_BO_V"]
  • TunnelObject: tunnelobject correct opgeroepen door Mercator.

Zoals hierboven aangegeven, bevat Main.Globals een correct door Mercator geïnitialiseerde Tunnel. Hierdoor is het dus niet nodig om deze procedure te activeren voor iedere assembly. Wat leidt tot een beter beheer van het geheugen en een sterk vereenvoudigde invoering van assemblies.

De globale variabelen worden geïnitialiseerd bij het opstarten van Mercator. Daarna wordt hun waarde doorlopend up-to-date gehouden door Mercator. Bijvoorbeeld:

  • bij een verandering van gebruiker: CurrentUser, Langue,  DateDMY, UserId, ... worden geactualiseerd
  • na bewerking van de opties: de waarden van het Params-woordenboek worden aangepast
  • na bewerking van de kassa-uitrusting: de waarden van het ParamPos-woordenboek worden aangepast
  • ...

Opmerkingen

  • Er moet in uw project een verwijzing naar MercatorUi.dll worden toegevoegd.
  • Als uw klasse niet door Mercator wordt opgeroepen (project volledig los van Mercator), zullen deze globale variabelen gewoon een standaardwaarde vermelden, die uiteraard nooit geactualiseerd zal worden (bijgevolg zijn deze globale variabelen dus niet bruikbaar in bijvoorbeeld een ASP.net-project).