{"id":12455,"date":"2019-05-08T23:17:36","date_gmt":"2019-05-08T21:17:36","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/"},"modified":"2019-05-08T23:17:36","modified_gmt":"2019-05-08T21:17:36","slug":"apex-connect-2019-day-2","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/","title":{"rendered":"APEX Connect 2019 &#8211; Day 2"},"content":{"rendered":"<p>The day first started with a 5K fun run.<\/p>\n<p>After the Keynote about \u201cAPEX: Where we have come from and where we\u2019re heading: Personal insights on Application Express from the Development Team\u201d by John Snyders, Anthony Rayner and Carsten Czarski explaining their work on APEX and some upcoming features, I decided to attend presentations on following topics:<br \/>\n\u2013 Know your Browser Dev Tools!<br \/>\n\u2013 APEX Devops with Database tooling<br \/>\n\u2013 Klick, Klick, Test &#8211; Automated Testing for APEX<br \/>\n\u2013 Sponsored Session Pitss: Migration from Oracle Forms to APEX &#8211; Approaches compared<br \/>\n\u2013 APEX-Actions<\/p>\n<p>Potential upcoming features in APEX 19.2:<br \/>\n&#8211; APEX_EXEC enabled Interactive Grids<br \/>\n&#8211; Enhanced LOV<br \/>\n&#8211; New popup LOV<br \/>\n&#8211; Filter reports<\/p>\n<h3>Know your Browser Dev Tools!<\/h3>\n<p>Every web browser has it&#8217;s own set of developer tools but all of them mainly allow following functionalities:<br \/>\n&#8211; Manipulate HTML in DOM tree<br \/>\n&#8211; Execute JavaScript<br \/>\n&#8211; Apply CSS<br \/>\n&#8211; Client side debugging and logging<br \/>\n&#8211; Analyze network activity<br \/>\n&#8211; Simulate screensize<br \/>\nThe most popular and complet set of tools is provided by Google Chrome with:<br \/>\n&#8211; Elements<br \/>\n&#8211; Console<br \/>\n&#8211; Sources<br \/>\n&#8211; Network<br \/>\n&#8211; Performance<br \/>\n&#8211; Memory<br \/>\n&#8211; Application<br \/>\n&#8211; Security<br \/>\n&#8211; Audits<br \/>\nNote that if you want to see console output as well as details of Dynamic Actions from APEX, you need to activate debug mode in your application.<\/p>\n<h3>APEX Devops with Database tooling<\/h3>\n<p>One of the goal of DevOps is to bring Development and Operations to work closer together and make deployment of application smoother.<br \/>\nIn order to achieve that 100% automation of follwing tasks is helping a lot:<br \/>\n&#8211; Build<br \/>\n&#8211; Test<br \/>\n&#8211; Release<br \/>\n&#8211; Deploy<br \/>\nThis is mainly supported by RESTful services within Oracle, ORDS being the corner stone.<br \/>\nBeside that Jenkins has been replaced by GitLab with better web services support.<br \/>\nDatabase changes are tracked based in <a href=\"https:\/\/www.liquibase.org\" target=\"_blank\" rel=\"noopener noreferrer\">Liquibase<\/a> integrated and enhanced in SQLcl. Vault is also integrated in SQLcl to ease and automate the password management.<br \/>\nAnother target of DevOps is zero downtime. This can be supported with tools like <a href=\"https:\/\/www.consul.io\" target=\"_blank\" rel=\"noopener noreferrer\">consul.io<\/a> and <a href=\"https:\/\/fabiolb.net\" target=\"_blank\" rel=\"noopener noreferrer\">fabiolb<\/a> which permit to dynamically add ORDS servers covered by dynamic load balancing.<\/p>\n<h3>Klick, Klick, Test &#8211; Automated Testing for APEX<\/h3>\n<p>There are lots of automated testing tools on the market but they mostly are restricted to specific web browsers.<br \/>\nThe target is to have a solution that fits most of them and allows testing of APEX web applications.<br \/>\nIt needs a testing framework to abstract the scenario from underlying tool: <a href=\"https:\/\/codecept.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">codecept.io<\/a><br \/>\nThe code generated by the testing framework being standardized it can be generated based on APEX metadata analysis with the help of a templating tool: <a href=\"https:\/\/handlebarsjs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">handlebars<\/a><br \/>\nThe process is then supported by an APEX application that can retrieve the applications from the workspace and manage the dedicated test scenarios as well as trigger them on docker containers.<\/p>\n<h3>Sponsored Session Pitss: Migration from Oracle Forms to APEX &#8211; Approaches compared<\/h3>\n<p>Migrating forms applications to APEX can be very cumbersome as they can be very large and complex.<br \/>\nThe main phases fo such a migration are:<br \/>\n&#8211; Forms application preparation and analysis<br \/>\n&#8211; Migration<br \/>\n&#8211; APEX Application fine tuning<br \/>\n&#8211; Rollout<br \/>\nThe success of such a migration lays on the combination of skilled FORMS developers and APEX developers.<\/p>\n<h3>APEX-Actions<\/h3>\n<p>Beside the well known Dynamic Actions in APEX, there is a new JavaScript library introduced in APEX 5.0: apex.actions<br \/>\nDocumentation to it came with version 5.1 in the <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/application-express\/19.1\/aexjs\/apex.actions.html\" target=\"_blank\" rel=\"noopener noreferrer\">APEX JavaScript API documentation<\/a>.<br \/>\nIt&#8217;s used by the APEX development team in the Page Designer and is now available to all developers.<br \/>\nActions allow to centrally encapsulate and define rendering, associated function and shortcuts of objects from the web pages all of it dynamically.<br \/>\nIt uses an observer which allows to have the same behavior for multiple objects of the same type on the same page.<\/p>\n<p>The day ended with Sponsor Pitches &amp; Lightning Talks:<br \/>\n&#8211; APEX Competition Winner Plugin<br \/>\n&#8211; 5 things that make your life easier when using Docker<br \/>\n&#8211; Verwenden Sie kein PL\/SQL!<br \/>\n&#8211; Improving Tech with <a href=\"https:\/\/compassionatecoding.com\" target=\"_blank\" rel=\"noopener noreferrer\">Compassionate Coding<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The day first started with a 5K fun run. After the Keynote about \u201cAPEX: Where we have come from and where we\u2019re heading: Personal insights on Application Express from the Development Team\u201d by John Snyders, Anthony Rayner and Carsten Czarski explaining their work on APEX and some upcoming features, I decided to attend presentations on [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197,229],"tags":[],"type_dbi":[],"class_list":["post-12455","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-database-administration-monitoring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>APEX Connect 2019 - Day 2 - dbi Blog<\/title>\n<meta name=\"description\" content=\"Oracle APEX Connect conference Day 2 was having focus on DevOps, automated testing, application migration and specific APEX features like actions\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"APEX Connect 2019 - Day 2\" \/>\n<meta property=\"og:description\" content=\"Oracle APEX Connect conference Day 2 was having focus on DevOps, automated testing, application migration and specific APEX features like actions\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-08T21:17:36+00:00\" \/>\n<meta name=\"author\" content=\"Alain Lacour\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alain Lacour\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\"},\"author\":{\"name\":\"Alain Lacour\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\"},\"headline\":\"APEX Connect 2019 &#8211; Day 2\",\"datePublished\":\"2019-05-08T21:17:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\"},\"wordCount\":669,\"commentCount\":0,\"articleSection\":[\"Application integration &amp; Middleware\",\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\",\"name\":\"APEX Connect 2019 - Day 2 - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2019-05-08T21:17:36+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\"},\"description\":\"Oracle APEX Connect conference Day 2 was having focus on DevOps, automated testing, application migration and specific APEX features like actions\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"APEX Connect 2019 &#8211; Day 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\",\"name\":\"Alain Lacour\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g\",\"caption\":\"Alain Lacour\"},\"description\":\"Alain Lacour has more than 15 years of experience in application development with Oracle technologies. He is specialized in APEX, Java, and PL\/SQL development. His expertise also includes middleware technologies such as Oracle Weblogic and EMC Documentum. He also has a broad experience in business analysis and architecture solutions as well as in service and project management. Prior to dbi services, Alain Lacour was Senior Consultant at IMS Health in Basel. He also worked as a Software Engineer for M&amp;H Informatics in Basel. Alain Lacour holds a Master of Science in Industrial Computing from the University of Mulhouse (F). His branch-related experience mainly covers the pharma industry, with an in-depth knowledge of the drug development process as well as drug distribution.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/alain-lacour\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"APEX Connect 2019 - Day 2 - dbi Blog","description":"Oracle APEX Connect conference Day 2 was having focus on DevOps, automated testing, application migration and specific APEX features like actions","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/","og_locale":"en_US","og_type":"article","og_title":"APEX Connect 2019 - Day 2","og_description":"Oracle APEX Connect conference Day 2 was having focus on DevOps, automated testing, application migration and specific APEX features like actions","og_url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/","og_site_name":"dbi Blog","article_published_time":"2019-05-08T21:17:36+00:00","author":"Alain Lacour","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alain Lacour","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/"},"author":{"name":"Alain Lacour","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"headline":"APEX Connect 2019 &#8211; Day 2","datePublished":"2019-05-08T21:17:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/"},"wordCount":669,"commentCount":0,"articleSection":["Application integration &amp; Middleware","Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/","url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/","name":"APEX Connect 2019 - Day 2 - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-05-08T21:17:36+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"description":"Oracle APEX Connect conference Day 2 was having focus on DevOps, automated testing, application migration and specific APEX features like actions","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"APEX Connect 2019 &#8211; Day 2"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0","name":"Alain Lacour","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g","caption":"Alain Lacour"},"description":"Alain Lacour has more than 15 years of experience in application development with Oracle technologies. He is specialized in APEX, Java, and PL\/SQL development. His expertise also includes middleware technologies such as Oracle Weblogic and EMC Documentum. He also has a broad experience in business analysis and architecture solutions as well as in service and project management. Prior to dbi services, Alain Lacour was Senior Consultant at IMS Health in Basel. He also worked as a Software Engineer for M&amp;H Informatics in Basel. Alain Lacour holds a Master of Science in Industrial Computing from the University of Mulhouse (F). His branch-related experience mainly covers the pharma industry, with an in-depth knowledge of the drug development process as well as drug distribution.","url":"https:\/\/www.dbi-services.com\/blog\/author\/alain-lacour\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12455"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12455\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12455"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}