{"id":12454,"date":"2019-05-07T22:33:06","date_gmt":"2019-05-07T20:33:06","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/"},"modified":"2019-05-07T22:33:06","modified_gmt":"2019-05-07T20:33:06","slug":"apex-connect-2019-day-1","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/","title":{"rendered":"APEX Connect 2019 &#8211; Day 1"},"content":{"rendered":"<p>This year again the APEX connect conference spans over three days with mixed topics around APEX, like JavaScript, PL\/SQL and much more.<br \/>\nAfter the welcome speech and the very funny and interesting Keynote about &#8220;PL\/SQL: A Career Built On Top Of PL\/SQL &#8211; 25 years of Coding, Sharing, and Learning&#8221; by Martin Widlake, I decided to attend presentations on following topics:<br \/>\n&#8211; Oracle Text &#8211; A Powerful Tool for Oracle APEX Developers<br \/>\n&#8211; Make It Pretty! MIP your APEX application!<br \/>\n&#8211; REST Services without APEX &#8211; but with APEX_EXEC<br \/>\n&#8211; Microservices with APEX<br \/>\n&#8211; SQL Magic!<br \/>\n&#8211; The UX of forms<\/p>\n<h3>PL\/SQL: A Career Built On Top Of PL\/SQL &#8211; 25 years of Coding, Sharing, and Learning:<\/h3>\n<p>Martin Widlake shared the story of 25 years development on Oracle from version 6 to the newest 19c.<br \/>\nThe most important to retain from his professional journey is that &#8220;Good developers are made by other developers&#8221; and &#8220;Everything you learn will have some return sometime in the future&#8221;. That means sharing is the key, keep yourself curious and never stop learning, even things that are not yet obviously useful. <\/p>\n<h3>Oracle Text &#8211; A Powerful Tool for Oracle APEX Developers<\/h3>\n<p>That feature is embedded as a standard in Oracle databases since 1997 when it was named Car Text. In 1999 it became Intermedia Text and finally Oracle Text in 2001. It allows to index text based fields of the database as well as files in BLOBs, allowing much faster and easier search of text patterns (words, sentences, &#8230;). We went thru aspects like syntax, fuzzy search, snippets and lexer.<br \/>\nAs search combinations require usage of specific operators and delimiters, which are cumbersome for end users, there is a useful package written by Roger Ford that allows to convert simple &#8220;Google&#8221; like requests into the right format for Oracle Text: PARSER <a href=\"https:\/\/cdn.app.compendium.com\/uploads\/user\/e7c690e8-6ff9-102a-ac6d-e4aebca50425\/bffaa258-457d-46a1-bb58-7e0285733cdf\/File\/b4f54d3c9baeed4519d6be76e3e34875\/parser_v0991.pls\" target=\"_blank\" rel=\"noopener noreferrer\">download<\/a><br \/>\nHis <a href=\"https:\/\/blogs.oracle.com\/author\/roger-ford\" target=\"_blank\" rel=\"noopener noreferrer\">blog<\/a> will provide nice information about it and <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/ccref\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle documentation<\/a> provides all details to the usage of Oracle Text.<br \/>\nYou can find further information on following Blog:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/understand-oracle-text-at-a-glance\/\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle text at a glance<\/a><\/p>\n<h3>Make It Pretty! MIP your APEX application!<\/h3>\n<p>The business logic is the heart of the application but the UI is its face and what users will judge first.<br \/>\nThere are some rules which to Make It Pretty (MIP).<br \/>\nFirst of all it needs to fullfil user needs by either:<br \/>\n&#8211; stick to company brand rules<br \/>\n&#8211; stick to company webpage design<br \/>\n&#8211; stick to user wishes (can be drafted with <a href=\"https:\/\/www.templatemonster.com\" target=\"_blank\" rel=\"noopener noreferrer\">template monster<\/a><br \/>\nTechnical and non-technical aspects need to be considered.<br \/>\nFollowing Design rules help to improve the UI:<br \/>\n&#8211; Be consistent<br \/>\n&#8211; Make it intuitive<br \/>\n&#8211; Be responsive (give feedback to users)<br \/>\n&#8211; Keep it simple (not crowded)<br \/>\n&#8211; Fonts: max 2 per page, 16px rule (verify on <a href=\"https:\/\/www.fontpair.co\" target=\"_blank\" rel=\"noopener noreferrer\">fontpair.co<\/a>)<br \/>\n&#8211; Color rules (verify on <a href=\"https:\/\/contrastchecker.com\" target=\"_blank\" rel=\"noopener noreferrer\">contrast checker<\/a>)<br \/>\n&#8211; Have imagination<br \/>\n&#8211; Know your APEX universal theme<\/p>\n<h3>REST Services without APEX &#8211; but with APEX_EXEC<\/h3>\n<p>APEX is based on metadata to store definitions and PL\/SQL packages support the engine.<br \/>\nThat means APEX metadata support can be used outside the APEX application in any PL\/SQL code.<br \/>\nOne particular APEX PL\/SQL package is APEX_EXEC introduced in APEX 18.1. It allows to abstract the data format (XML, json, &#8230;) in websources in order to be able to use data as it would come from any local table. It also takes care of pagination from web services to make the data retrieval transparent. But in order to make use of that package an APEX session must first be created to initiate the needed metadata. Fortunately this is made easy since APEX 18.1 with procedure create_session from the apex_session package.<br \/>\nThe next version of APEX 19.2 might integrate websource modules with interactive grid.<\/p>\n<h3>Microservices with APEX<\/h3>\n<p>APEX can be compared to microservices by looking at the characteristics:<br \/>\n&#8211; Scalability<br \/>\n&#8211; Fail-safe<br \/>\n&#8211; Maintainable<br \/>\n&#8211; Technology independent<br \/>\n&#8211; Database independent<br \/>\n&#8211; Small<br \/>\nAnd it mostly matches!<br \/>\nBut APEX also overrules the microservices drawbacks:<br \/>\n&#8211; Complex architecture<br \/>\n&#8211; Complex testing<br \/>\n&#8211; Migration efforts<br \/>\n&#8211; Complex development<br \/>\nTo have a behavior close to microservices, APEX applications have to make use of web services for the data management and the interfacing with any kind of other services. This allows to clearly separate data management and applications. ORDS allows to enable REST at schema and also object level within APEX. Caching also needs to be considered based data change frequency to lower the lag time of data handling.<\/p>\n<h3>SQL Magic!<\/h3>\n<p>Since Oracle 12c the database provides the json data guide which allows easy json data manipulation like any standard table data. This comes also with new views like user_json_data_guide.<br \/>\nOracle 11g introduced Invisible columns that hides columns from table description as well as standard &#8220;select *&#8221; but not specific select statements. This can be used to deprecate columns or add new columns without breaking existing applications with &#8220;select *&#8221;. Even though &#8220;select *&#8221; should be avoided in applications.<br \/>\nOracle 12c also introduced polymorphic table function that can be used with pipelined tables to create views allowing to pivot and transpose tables whatever number of columns and rows they have.<br \/>\nAll those features are very useful and should be used further.<\/p>\n<h3>The UX of forms<\/h3>\n<p>User eXperience (UX) rules to be applied in forms go beyond APEX. The aim to:<br \/>\n&#8211; Reduce cognitive load<br \/>\n&#8211; Prevent errors<br \/>\n&#8211; Make it user friendly<br \/>\nThe rules are following:<br \/>\n&#8211; One thing per page<br \/>\n&#8211; Put field labels above rather than side to<br \/>\n&#8211; Replace small dropdowns by radio buttons<br \/>\n&#8211; Use Interactive data lists for long dropdowns<br \/>\n&#8211; For login pages, be specific on username type (name, e-mail) and password definition rules<br \/>\n&#8211; Avoid * for required fields but rather flag Optional fileds<br \/>\n&#8211; Adapt field size on expected data length<br \/>\n&#8211; Use smart default values<br \/>\n&#8211; Use entry masks<br \/>\n&#8211; Use date picker<br \/>\n&#8211; Define check before you start pattern to guide users and reduce form length<br \/>\nAll that will improve UX.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This year again the APEX connect conference spans over three days with mixed topics around APEX, like JavaScript, PL\/SQL and much more. After the welcome speech and the very funny and interesting Keynote about &#8220;PL\/SQL: A Career Built On Top Of PL\/SQL &#8211; 25 years of Coding, Sharing, and Learning&#8221; by Martin Widlake, I decided [&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,368,59],"tags":[],"type_dbi":[],"class_list":["post-12454","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-development-performance","category-oracle"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>APEX Connect 2019 - Day 1 - dbi Blog<\/title>\n<meta name=\"description\" content=\"DOAG APEX connect conference is going on in Bonn for 3 days about APEX development, PL\/SQL and JavaScript. Here the details of day 1.\" \/>\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-1\/\" \/>\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 1\" \/>\n<meta property=\"og:description\" content=\"DOAG APEX connect conference is going on in Bonn for 3 days about APEX development, PL\/SQL and JavaScript. Here the details of day 1.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-07T20:33:06+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=\"5 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-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/\"},\"author\":{\"name\":\"Alain Lacour\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/acabba2b6ca473b44b098c2de61294b0\"},\"headline\":\"APEX Connect 2019 &#8211; Day 1\",\"datePublished\":\"2019-05-07T20:33:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/\"},\"wordCount\":992,\"commentCount\":0,\"articleSection\":[\"Application integration &amp; Middleware\",\"Development &amp; Performance\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/\",\"name\":\"APEX Connect 2019 - Day 1 - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2019-05-07T20:33:06+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/acabba2b6ca473b44b098c2de61294b0\"},\"description\":\"DOAG APEX connect conference is going on in Bonn for 3 days about APEX development, PL\\\/SQL and JavaScript. Here the details of day 1.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/apex-connect-2019-day-1\\\/#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 1\"}]},{\"@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 1 - dbi Blog","description":"DOAG APEX connect conference is going on in Bonn for 3 days about APEX development, PL\/SQL and JavaScript. Here the details of day 1.","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-1\/","og_locale":"en_US","og_type":"article","og_title":"APEX Connect 2019 - Day 1","og_description":"DOAG APEX connect conference is going on in Bonn for 3 days about APEX development, PL\/SQL and JavaScript. Here the details of day 1.","og_url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/","og_site_name":"dbi Blog","article_published_time":"2019-05-07T20:33:06+00:00","author":"Alain Lacour","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alain Lacour","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/"},"author":{"name":"Alain Lacour","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"headline":"APEX Connect 2019 &#8211; Day 1","datePublished":"2019-05-07T20:33:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/"},"wordCount":992,"commentCount":0,"articleSection":["Application integration &amp; Middleware","Development &amp; Performance","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/","url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/","name":"APEX Connect 2019 - Day 1 - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-05-07T20:33:06+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"description":"DOAG APEX connect conference is going on in Bonn for 3 days about APEX development, PL\/SQL and JavaScript. Here the details of day 1.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-1\/#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 1"}]},{"@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\/12454","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=12454"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12454\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12454"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}