15. Brocade menu

15.1. Inleiding

Deze tekst beschrijft hoe een vernieuwde menustructuur voor Brocade kan werken.

Het Brocade menu bestaat uit maar liefst 1.422 ingangen (27.02.2018). Bij deze telling werd er geen rekening gehouden met:

  • lokale menu’s die niet terug te vinden zijn in *.b files
  • folders (194)
  • ingangen die verwijzen naar meerdere folders (111).

De voorgestelde menustructuur gaat uit van de volgende overwegingen:

  • de Brocade gebruiker (steeds personeel) moet op een snelle manier de gewenste toepassing terugvinden
  • het menu is aangepast aan de werkzaamheden van de Brocade gebruiker
  • de menustructuur moet kunnen werken met deze hoeveelheid ingangen
  • het menu moet voldoende herkenbaar zijn voor de helpdesk

15.2. Terminologie

Laten we een aantal begrippen vastleggen:

viewport
Dit is het zichtbare gedeelte van de webpagina dat de Brocade toepassing draagt.
topmenu
Dit is de menu structuur die wordt aangeboden in het frame met als naam topmenu. Deze structuur is constant en bereikbaar van omzeggens elke Brocade window. topmenu bevat ook de titel van het menu item dat het laatste werd geactiveerd. Deze is ook klikbaar en activeert het corresponderende menu item.
workspace
Dit bestrijkt het overgrote gedeelte van het werkblad. Bij elke klik (submit) wordt de workspace terug opgebouwd. De applicatie die bij een specifiek menu item wordt opgestart, wordt hier getoond.
taskbar
Meestal begint de workspace met een horizontale activiteiten structuur. Deze activiteiten hebben impact op de applicatie die wordt getoond op de workspace.
roepcode
De roepcode identificeert op ondubbelzinnige wijze het menu item. Het is de identifier van het menu item in de corresponderende b-file. De roepcode wordt door de ontwikkelaar toegekend. Een voorbeeld is: collections
menu url
De menu url wordt gevormd door het standaardgedeelte /menu/ gevolgd door de roepcode.
Een voorbeeld: /menu/collections.

Deze URL moet vanzelfsprekend worden aangevuld met schema, port en host van de corresponderende webserver.

15.3. Algemeen

Een paar opmerkingen:

  • Bij het bouwen van lijsten die betrekking hebben op design wordt vaak uitgegaan van de regel 7±2. Met andere woorden, streef naar 5 à 9 items. Menu’s mogen gerust veel meer gegevens bevatten: ze moeten dan wel hiërarchisch volgens deze regel worden opgesplitst.

  • Sommige van onze menuverwoordingen zijn niet consistent.
    Voorbeeld: Collectiebeschrijvingen invoeren/wijzigen en Invoeren/wijzigen van archiefbeschrijvingen
  • Sommige van onze menuverwoordingen zijn moeilijk te begrijpen buiten hun context.
    Voorbeeld: Doelpubliek
  • Sommige menu items werden niet vertaald (ook niet in het Nederlands).

  • Ik stel voor om in release 4.30 statistische gegevens te verzamelen van ALLE menu items en gebruikers.

Notitie

Brocade kan heel goed werken met menu urls. Dit laat toe om een menustructuur te integreren in het bookmarksysteem van de browser. Deze faciliteit kan door elke gebruiker worden uitgewerkt, maar valt verder buiten de scope van dit document.

15.4. Voorstel over de menu(boom)structuur

Diverse acties die kunnen worden ondernomen:

  • Elk menu item en elke menufolder moet een verwoording hebben in de namespace menu.

  • De verwoordingen moeten

    • consistent,
    • grammaticaal correct,
    • kort zijn,
    • en zoveel mogelijk context dragen (!).
  • De boomstructuur mag maximaal 9 items per niveau hebben.

De boomstructuur moet worden herwerkt met behulp van de jstree Javascript oplossing. Dit is een beproefde oplossing die het mogelijk maakt om snel te bladeren doorheen hiërarchieën.

Een voorbeeld uit de archiefsoftware:

_images/tree.png

15.5. Topmenu

In de problematiek van het aanbieden van toegangen tot de menu items is dit een belangrijk onderdeel: deze is immers steeds toegankelijk.

Het topmenu bestaat essentieel uit twee onderdelen:

  • navigatie elementen
  • instrumenten die bij elke Brocade toepassing moeten beschikbaar zijn

De diverse elementen hebben drie verschillende naturen:

  • icon

    Door een klik wordt de corresponderende functionaliteit opgestart.

  • select

    Een keuze uit een dynamisch opgestelde lijst (meest gebruikt/vaakst gebruikt).

  • text

    De titel van het laatst opgestarte menu item. Deze titel is klikbaar en laat toe om dezelfde applicatie terug op te starten.

In de volgende paragrafen stellen we een aantal systemen voor die kunnen bijdragen bij het ontplooien van de menu.

15.5.1. Bestaande elementen

15.5.1.1. Het clipboard

_images/clipboard.png

Het clipboard kan mijns inziens worden weggelaten: in Brocade release 4.30 werd de functionaliteit van het clipboard overgenomen door het systeem clipboard.

Waarschuwing

In de praktijk gebruiken nog heel wat Brocade gebruikers deze knop!
Er zijn ook gebruikers waarbij de copy-knop de gegevens niet naar het clipboard kopieert … [jgrillet ADVO-A] .

15.5.1.2. Home

_images/home.png

Deze functionaliteit is op dit moment afhankelijk van de gebruiker.

Ik stel voor hier slechts een aanpassing aan te brengen: indien deze functionaliteit NIET werd aangestipt in het gebruikersbeheer, dan komt hier een standaardtoepassing die later wordt behandeld.

15.5.1.3. Back

_images/back.png

Deze functionaliteit wil ik behouden: niet zelden wil men navigeren naar verwante toepassingen.

Toch de volgende aanpassing: de zijn er meerdere parents, dan kiest de software zelf de parent uit de contekst, zodat deze op de meest natuurlijke wijze overkomt bij de gebruiker.

15.5.1.4. Doc

_images/docu.png

Deze functionaliteit wil ik behouden.

15.5.1.5. Helpdesk

_images/help.png

Deze functionaliteit wil ik behouden.

15.5.1.6. Select

_images/select.png

Deze functionaliteit wil ik verschuiven naar de standaardtoepassing.

15.5.1.7. Exit

_images/exit.png

Deze functionaliteit wil ik behouden.

15.5.1.8. Titel

_images/title.png

Deze functionaliteit wil ik behouden. Wel kan de stylering worden aangepast zodat het duidelijk is dat het hier gaat om een link.

15.5.2. Nieuwe elementen

15.5.2.1. De separator

_images/sep.png

Dit is een nieuw element dat moet dienen om de diverse onderdelen (navigatie, applicatie) van elkaar visueel te scheiden. De separator kan zich manifesteren als een verticale lijn of als een andere inkleuring van de iconen die dienen als navigatie tegenover deze die dienen als opstarten van de applicatie.

15.5.2.2. Zoeken in het menu

_images/search.png

Het is mogelijk om de opzoeking te starten in het topmenu, maar de display uit te voeren op de workspace.

Op deze wijze kunnen we het zoeken in het menu toegankelijk maken van op elke plaats in Brocade.

15.5.2.3. Tonen van de boomstructuur

_images/mtree.png

Het is mogelijk om de hiërarchie te starten in het topmenu, maar de display uit te voeren op de workspace.

Op deze wijze kunnen we het menu toegankelijk maken van op elke plaats in Brocade.

15.5.2.4. Custom elementen

_images/work.png

Ik zou tot drie vrij algemene iconen ter beschikking stellen waarvan de gebruiker zelf de functionaliteit kan instellen.

15.5.2.5. Persoonlijke voorkeuren

_images/personal.png

De menu-ingang voor het aanpassen van de persoonlijke voorkeuren van een gebruiker, zou ik verplaatsen naar het topmenu.

15.7. Displaysoftware

_images/gridanet.png

Dit is een Brocade toepassing die een overzichtelijke menustructuur aanbiedt met de meest gebruikte opties.

Technisch gesproken wordt deze toepassing aangestuurd via CSS grid layouts. Voordelen hiervan zijn:

  • snel
  • standaard techniek en wordt door de meeste browsers ondersteund
  • goed styleerbaar

Ik pleit voor:

  • een 2 x 2 grid
  • elk vlak uit het grid heeft maximaal 7±2 elementen
  • elk vlak heeft een naam
  • elk vlak komt overeen met een Brocade folder

15.7.1. Vlak NW

Met de gebruiker wordt in het gebruikersbeheer een aantal taak-folders geassocieerd. Hij kan hieruit deze kiezen welke in NW terecht komt. Kiest hij niet, dan wordt de eerste taakfolder gekozen.

15.7.2. Vlak NE

Met de gebruiker wordt in het gebruikersbeheer een aantal taak-folders geassocieerd. Hij kan hieruit deze kiezen welke in in NE terecht komt. Kiest hij niet, dan wordt de eerste taakfolder gekozen die nog niet werd geselecteerd door hem.

15.7.3. Vlak SW

Hier wordt de folder xmenuhis geplaatst.

15.7.4. Vlak SE

Hier wordt de folder brocadese geplaatst. De gebruiker kan niet kiezen.

15.8. Samenstelling meta-informatie rond menu ingangen

De herwerking van het menubeheer behelst ook het ombouwen van de metadata over menu ingangen, folders en menu optiegroepen naar het nieuwe metamodel. Tijd om de attributen op een rijtje te zetten.

15.8.4. Opgeroepen M-applicaties vanuit externe omgevingen

Hieronder volgt een samenvatting van de M-entries die vanuit externe omgevingen worden gebruikt.

(%Entry^umnwdrs)
Oproepen van desktop services vanuit de desktop omgeving. Vervangen door %Entry^bmnwdrs
(%EntrTWn^umnwcal)
Oproepen full description generator vanuit de desktop omgeving
(%EntryId^umnwcal)
Oproepen menu applicatie vanuit brocade.phtml, launch.phtml, topmenu.js, … (eventueel doorgeleid via de /menu/[callname] constructie)
(%HisOpt^umnwcal)
Het samenstellen van de selectbox laatst gebruikte/meest gebruikte opties
(%EntryId^umnwdrv) TOPMENU.Logoff
Oproepen Brocade menu vanuit launch.phtml (UDlaunchmode !+ ‘application’?)

(%Action^umnwdrv) TOPMENU.Context

(%EntryIt^umnwcal): WORKSPACE.openMenuHistory WORKSPACE.walkMenu WORKSPACE.setApplicationtitle TOPMENU.MenuHistory.
Ook via topmenu.js.

(%Ajax^umnwcal): WORKSPACE.urlApplication TOPMENU.MenuHistory

(%EntrItL^umnwcal): WORKSPACE.urlApplicationLikeMenu WORKSPACE.openMenuHistory

(%EntrItM^umnwcal): WORKSPACE.urlApplicationLikeMenu

(%EntryFo^umnwcal): WORKSPACE.walkMenu.
Vervangen door %EntryIW^bmnwdrv, via WORKSPACE.launchMenuInWorkspace

15.8.5. Technische toelichting van menugestuurde url’s gebruikt in Brocade

15.8.5.1. Home (topmenu)

_images/home.png
  • Geactiveerd Javascript: TOPMENU.Home() (voorheen TOPMENU.Context(0))
  • Geactiveerd M script: %Home^bmnwdrv , geen extra parameters (voorheen %Action^umnwdrv , RDmenu=”“)

15.8.5.2. Back (topmenu)

_images/back.png
  • Geactiveerd Javascript: TOPMENU.Context(1)
  • Geactiveerd M script: %Action^umnwdrv , RDmenu=menu, waarnaar dient worden getransfereerd

15.8.5.3. Doc (topmenu)

_images/docu.png
  • Geactiveerd Javascript: TOPMENU.Help()
  • Geactiveerd M script: geen

15.8.5.4. Helpdesk (topmenu)

_images/help.png
  • Geactiveerd Javascript: TOPMENU.HelpDesk()
  • Geactiveerd M script: geen

15.8.5.5. Select (topmenu)

_images/select.png
  • Geactiveerd Javascript: TOPMENU.MenuHistory(this)
  • Geactiveerd M script: %EntryIt^umnwcal of %Ajax^umnwcal

15.8.5.6. Exit (topmenu)

_images/exit.png
  • Geactiveerd Javascript: TOPMENU.Startapp(‘logoff’)
  • Geactiveerd M script: %EntryIW^bmnwdrv (voorheen %EntryId:umnwcal) , UDapplic=logoff

15.8.6. Data gestuurde menu opzoeking

Het gebruik van een toepassing zoals Brocade kan uitgaan van 2 principes:

  • de gebruiker weet precies welke menu item hij wil starten
  • de gebruiker weet welke taak hij moet uitvoeren op een specifiek stuk data maar weet niet precies hoe (welke item) hij moet opstarten.

De vorige paragrafen toonden hoe het nieuwe Brocade menu kan worden aangewend om te werken volgens het eerste principe. Deze paragraaf gaat vooral over het tweede principe.

Om te bepalen welk menu item dient te worden opgestart, spelen er nu 2 elementen:

  • de gebruikersidentificatie (UDuser)
  • een data element waarop de gebruiker een activiteit wil uitvoeren (input)

15.8.6.1. Algoritme

Het algoritme is essentieel een functie die (UDuser, input) afbeeldt op een lijst met menu items.

Deze lijst heeft een aantal eigenschappen:

  • de lijst wordt geordend op basis van het gebruik door UDuser
  • elk element in de lijst bevat een menu item en een extra veld
  • elk menu item kan door UDuser worden geopend
  • elk element in de lijst heeft een ondubbelzinnige verwoording
  • elk element uit de lijst heeft een band met input
  • bevat de lijst slechts 1 element, dan wordt dit element geactiveerd
  • bevat de lijst geen elementen, dan komt er een duidelijke boodschap

Het algoritme wordt samengesteld op basis van 2 selecties:

  • een algemene selectie: deze wordt aangestuurd door de vorm van input
  • een UDuser specifieke selectie: deze wordt aangestuurd door meta-informatie ter hoogte van de gebruiker (en de gebruikersgroepen)

Notitie

Laat u, bij het uitbouwen van data gestuurde menu opzoeking, leiden door realiteitszin: werk met die data elementen die de gebruiker kent van buitenaf en die hem vertrouwd zijn. Werk niet met hypothetische data elementen waarvan het slechts weinig waarschijnlijk is dat de gebruiker ze kent en die het zoekprocess naar de passende menu items nodeloos vertragen.

15.8.6.1.1. Algemene selectie
15.8.6.1.1.1. Roepcodes

Is input een roepcode van een menu item dan bevat de items list het corresponderende menu item … op voorwaarde dat de gebruiker toegang heeft tot dit menu item.

Heeft de gebruiker geen toegang, dan is de lijst leeg!

15.8.6.1.1.2. : triggers

Bevat input een : dan spreken we van een : trigger.

: triggers zijn heel handig:

  • ze leiden snel tot een lijst met menu items
  • zeker voor de veel gebruikte codes (c:, o:, …) is het leerproces voor het personeel erg klein.

De trigger wordt gesplitst op de eerste : in 2 delen: deel-1 en deel-2.

Is deel-1 GEEN identifier van een LOI, dan levert de algemene selectie niets op en wordt er gewerkt met de UDuser specifieke selectie.

De rest van deze paragraaf gaat er van uit dat deel-1 wel een LOI identifier is.

Bij de LOI meta informatie wordt een een extra veld voorzien dat een MUMPS statement bevat. Dit MUMPS statement werkt met RDuser en RDinput en berekent een lijst RAmenu.

De structuur voor RAmenu is als volgt:

RAmenu(roepcode)=de waarde voor UDextra

In RAmenu worden alle menu items geschrapt die niet toegankelijk zijn voor UDuser. De overblijvende elementen worden geordend op basis van het gebruik door UDuser. Is $D(RAmenu)<2, dan levert de algemene selectie niets op en wordt er verder gewerkt met de UDuser specifieke selectie.

15.8.6.1.1.3. Ontplooiing

Een paar opmerkingen die helpen bij de ontplooiing van dit soort menu selecties:

  • Gebruik in de *.b files bij de specificatie van de loi het attribuut $xmenu

    Voorbeeld:

    loi c:
        .
        .
        .
        $xmenu:  d %C^bcasmenu(.RAmenu,RDuser,RDinput)
    
  • Gebruik de hierarchie die inherent is aan de LOI structuur.

    Bij elke loi is er wel een specifieke applicatie die in de ogen van de Brocade gebruikers gebonden is met deze loi.

    Voorbeeld:

    • c:: invoeren van catalografische beschrijvingen

    Wordt er ook nog een tweede component gespecificeerd, dan is dit meestal een systeem. Dit systeem wordt dan beschreven met meta informatie. Verbind dan met deze meta informatie.

    Voorbeeld:

    • c:lvd: beheer van het regelwerk lvd

    Wordt een volledige loi gespecificeerd, verbind dan met de standaardapplicatie in deze loi.

    Voorbeeld:

    • c:lvd:2382736: invoeren van catalografische beschrijvingen met record c:lvd:2382736 geladen
  • Probeer het evenwicht te vinden in het aantal aangeboden menu items: tracht niet alle mogelijke menu items te vinden die op een of andere wijze kunnen worden geassocieerd met de loi.

15.8.6.1.2. Gebruikers specifieke selectie

Er wordt een meta informatie mt:datadrivenmenu opgesteld voor selectie algoritmes. Analoog zoals bij een LOI, is dit een MUMPS statement werkt met RDuser en RDinput en een lijst RAmenu berekent.

De structuur voor RAmenu is als volgt:

RAmenu(roepname)=de waarde voor UDextra

Deze selecties worden gekoppeld met gebruikers via het gebruikersbeheer (veld: datadrivenmenu) of - en dit is nog beter - via de meta informatie van de gebruikersgroepen.

Voor elke gebruiker wordt dan de unie van alle lijsten genomen die aan de orde zijn. De resulterende items worden geordend op basis van het gebruik door UDuser.

In deze categorie, wordt data aangeboden aan alle algoritmes die genoteerd staan bij een gebruiker. Dit betekent nog dat er een aanzienlijke overhead kan zijn om alle items te berekenen.

Zorg er dus voor dat de diverse algoritmes snel en efficiënt kunnen besluiten om geen items aan te leveren.

Ga ook zorgvuldig om aan wie deze algoritmes worden toegekend. Ga daarom uit van de reele werkopdrachten van de diverse gebruikers.

15.8.6.1.2.1. Ontplooiing

Een paar opmerkingen die helpen bij de ontplooiing van dit soort menu selecties:

  • Plaats in de /menu/datadriven/datadriven.b ingangen van de gedaante:

    cg datadrivenmenu.«id»:
        $attribute: code
        $$value: «M-statement»
    

    Hierbij is id de identifier van de menu selectie en M-statement een MUMPS statement dat werkt met RDuser en RDinput en een lijst RAmenu berekent.

  • Plaats in de /menu/datadriven/datadriven.l ingangen van de gedaante:

    lgcode metaDatadrivenmenu.cg«id».scope:
        N: «... beschrijving van defunctionaliteit ...»
    
    lgcode metaDatadrivenmenu.cg«id»:
        N: «... titel van de identifier ...»
    

15.8.6.2. Overzicht

15.8.6.2.1. : triggers

c:

c:xyz

c:xyz:nnnnnn

o:

o:xyz

o:xyz:nnnnnn

15.8.6.2.2. Gebruikers specifieke selectie