Apex bug fixing tijdens applicatie release

Bij mijn huidige opdrachtgever hebben we een prachtig systeem vanaf scratch mogen opbouwen. Inmiddels zijn we in een stadium aanbeland dat we niet meer in een projectgroep werken maar volledig in productie. Dit verandert ook de werkwijze op veel vlakken. Één daarvan is de manier hoe we moeten omgaan met bug fixing terwijl er op hetzelfde moment ook gewerkt wordt aan een nieuwe release. Gelukkig heeft APEX hiervoor de Build Option.
Met deze optie kan je diversen applicatie onderdelen in- of excluden. Hoe je de Build Option nu moet gebruiken, zal ik hieronder stap voor stap uitleggen.

 

Creëer Build Option.

Dit doe je bij de Shared Components
Hier kan je een nieuwe Build Option aanmaken.

buildoption1

 

Gebruik van de Build Option.

Je kunt de Build Option op verschillende plaatsen gebruiken.

  • Page
  • Region
  • Item
  • Processes
  • Computation
  • Validation
  • Buttons
  • Branches
  • Ajax Callbacks

Kortom op alles wat je op een pagina plaatst en de pagina zelf kan de de Build Option gebruiken.
Je geeft bij het betreffende object aan wanneer die moet worden gebruikt, wanneer de Build Option aan of uit staat.

buildoption3

buildoption4.

 

Productie of niet?

Op de bovenstaande manier kun je dus nieuwe objecten aan een pagina toevoegen en daarbij aangeven dat die bij een bepaalde Build Option horen.
Dit is natuurlijk allemaal heel handig maar hoe kun je nu aangeven welke release wanneer actief is?
Ook daar is over nagedacht. Bij de Build Option in de shared components kun je de status en default on export opgeven.

buildoption2

Met de status geef je aan of deze Build Option in de applicatie moet worden gebruikt of niet (include/exclude).
met Default on Export geef je aan of de Build Option mee moet worden genomen tijdens een export of deploy (via sqldeveloper).
Hierdoor is het dus mogelijk om aan een release te werken en toch een pagina op te leveren om een bug op te lossen.

 

Niet declaratief

Wat nu als je in bijvoorbeeld in een LOV bepaalde regels wel of niet wil tonen, afhankelijk van de Build Option. Je zou dan kunnen kiezen om 2 verschillende item’s te maken met ieder zijn eigen LOV en het juiste item tonen afhankelijk van de Build Option. Dit is echter niet altijd even handig omdat je de 2 item niet dezelfde naam kan geven. dit kan weer problemen geven met de verdere afhandeling op de pagina.
Ik heb dit opgelost door de Build Option aan te roepen via een apex api. In deze api is de functie apex_util.get_build_option_status aanwezig.

select case when apex_util.get_build_option_status(p_application_id    => 200,
p_build_option_name => ‘IBIS 2.4 (Signalen)’) = ‘EXCLUDE’
then ‘(Signaal)’
else ‘Signaal’
end
,
case when apex_util.get_build_option_status(p_application_id    => 200,
p_build_option_name => ‘IBIS 2.4 (Signalen)’) = ‘EXCLUDE’
then ‘SIG_exclude’
else ‘SIG’
end
from dual

Op deze manier kan ik dus 1 item gebruiken en in de query van de LOV de juiste gegevens selecteren op basis van de Build Option. De api kan natuurlijk op vele manieren worden gebruikt dit dient slechts als voorbeeld.

 

Conclusie

Je kunt met de standaard apex tools dus “gewoon” bugs oplossen terwijl er ondertussen wordt gebouwd aan een nieuwe release.