SAP Workflow inbox performance

Download Report

Transcript SAP Workflow inbox performance

SAP Workflow inbox performance
Inleiding
Door workflow taken aan meerdere personen toe te kennen ontstaat een gedeelde
verantwoordelijkheid voor de verwerking. Een nadeel hiervan kan zijn dat het aantal
taken in de workflow inbox snel oploopt, met een mindere performance van de SAP
Workflow inbox tot gevolg. Een voorbeeld hiervan is de vaak grote workflow inbox
van de crediteurenadministratie.
Een recente SAP OSS note verbetert de performance van het ophalen van taak
specifieke attributen binnen de Fiori My Inbox app. De in deze note beschreven
methodiek werkt ook voor de SAP GUI Workflow inbox (transactie SBWP) voor de
professional users.
Er bestond natuurlijk al de mogelijkheid om een BAdI te implementeren, zodat de
dynamische kolommen in één keer gevuld worden voor de gehele lijst work items.
Ter volledigheid worden in dit stuk beide methoden beschreven.
Vullen van dynamische kolommen met “user attributes”
Dynamische kolommen (transactie SWL1) worden ingericht worden op taakniveau.
Het gebruik van dynamische kolommen in de SAP Business Workplace (transactie
SBWP) maakt het mogelijk taken te prioriteren op applicatie context.
Zie hieronder voor een voorbeeld van een workflow inbox waarbij dynamische
kolommen worden gebruikt.
Figuur 1: Dynamische kolommen in SBWP
Standaardgedrag van de SAP Workflow runtime is dat de inhoud van de dynamische
kolommen wordt vastgesteld op het moment dat de inbox wordt geopend. Bij
binnenkomst van de inbox moeten alle workflow containers worden gelezen en de
dynamische kolom waarden moet voor elk werkitem worden geëvalueerd. Het lezen
van workflow containers, instantiëren van objecten en vervolgens het uitlezen de
attributen is niet geoptimaliseerd voor massale verwerking waardoor de performance
afneemt.
Met de introductie van OSS note 2023356 werd het mogelijk in de Fiori My Inbox app
aan de takenlijst (de master list links in de app) taak-specifieke informatie toe te
voegen.
Figuur 2: Extra doorzoekbare informatie in takenlijst, specifiek per soort taak
Deze zogenaamde “user attributes” worden periodiek in batch bepaald en opgeslagen
in tabel SWW_USRATT. In een tweede stap, maakte SAP met de introductie van OSS
note 2089151 de koppeling tussen de SWL1 data (dynamische kolom definitie in de
backend) en de user attributes mogelijk. De inrichting hiervan geschiedt met behulp
van het rapport RSWD_MAINTAIN_USER_ATTR. Rapport RSWW_FILL_USER_ATTR
kan gebruikt worden voor de initiële bepaling en eventuele her-indexatie van de
actieve work items.
De SAP Workflow inbox SBWP zal eerst de genoemde tabel raadplegen. Als deze er
niet is wordt de waarde bepaald op de standaard wijze door het uitlezen van de
workflow containers of object attributen. Er kan worden gecustomized welke
dynamische kolommen gebufferd moeten worden en welke niet. Aan verandering
onderhevige dynamische kolommen kunnen dus van buffering worden uitgesloten.
Probleem dat hierbij kan ontstaan is, dat de gebufferde waarden kunnen verouderen.
Hiervoor kan de genoemde job ingepland worden. Deze zal de gebufferde waarden
regelmatig bijwerken.
In bepaalde situaties dient de beschreven methodiek niet gebruikt te worden:


Het object attribuut is taalafhankelijk. De job die de attributen bepaald zal
mogelijk onder een systeemgebruiker, bijvoorbeeld WF-BATCH, draaien. In dit
geval zou dit de taal moeten zijn van de eindgebruiker.
De kolom bevat een datum- of tijd veld. Indien het work item in een andere
tijdzone is gecreëerd wordt deze wellicht gevuld met een verkeerde waarde voor
de eindgebruiker.
Zie OSS note 2143729 (SBWP: Filling dynamic columns with user attributes) voor
meer details.
Vullen van dynamische kolommen via een BAdI
Er is ook een Business Workplace BAdI beschikbaar voor het geoptimaliseerd bepalen
van de inhoud van dynamische kolommen, zie SAP OSS note 848382.
De BAdI WF_BWP_DYN_COLUMN kan gebruikt worden om de standaard bepaling van
de dynamische kolommen te omzeilen. Deze BAdI maakt het mogelijk om direct te
selecteren op database niveau.
Figuur 3: bepalen dynamische kolommen via BAdI
Een nadeel van deze methode is dat de ABAP logica voor het bepalen van de
individuele waardes wellicht al gedefinieerd is in de business object attributen of
methoden. Deze logica zal opnieuw geschreven moeten worden voor de batch
bepaling van de kolomwaarden.
Er is een voorbeeld implementatie van de BAdI WF_BWP_DYN_COLUMN beschikbaar.
Klasse CL_EXM_IM_WF_BWP_DYN_COLUMN bevat logica voor de bepaling van de
dynamische kolommen van taak TS30000016 (goedkeuren verlofaanvragen).
Ter illustratie van de mogelijke performance winst bij gebruik van BAdi
WF_BWP_DYN_COLUMN wordt 2 maal de SAP Business Workplace geopend. Eenmaal
wordt de BAdi uitgeschakeld, de tweede maal wordt deze ingeschakeld.
Zonder BAdi is de responsetijd 25179 milliseconden, met BAdi is de responsetijd
5382 milliseconden. Een performanceverbetering van 467%!
Deze tekst is aangeleverd door Avelon. Voor vragen of extra informatie over dit
onderwerp kunt u contact opnemen met Sander van der Wijngaart. Zie voor
contactgegevens www.avelon.nl.