{"id":4901,"date":"2020-07-03T11:53:50","date_gmt":"2020-07-03T09:53:50","guid":{"rendered":"http:\/\/gpmfactory.com\/?p=4901"},"modified":"2020-07-03T12:01:46","modified_gmt":"2020-07-03T10:01:46","slug":"websem-du-30-juin-2020-questions-reponses-apex","status":"publish","type":"post","link":"https:\/\/gpmfactory.com\/index.php\/2020\/07\/03\/websem-du-30-juin-2020-questions-reponses-apex\/","title":{"rendered":"Websem du 30 juin 2020 -Questions R\u00e9ponses APEX"},"content":{"rendered":"\n<p>Ci-dessous des questions\/R\u00e9ponses faisant suite au web S\u00e9minaire du mardi 30 juin 2020 organis\u00e9 par Oracle.<\/p>\n\n\n\n<p><br><em><strong>Bonjour, Je suis int\u00e9ress\u00e9 par la pr\u00e9cision que Patrick voulais faire sur l&rsquo;affichage des liste sur mobile.<\/strong><\/em><br>Le composant \u00ab\u00a0Interactive Report\u00a0\u00bb est tr\u00e8s riche et il est bien adapt\u00e9 pour un \u00e9cran de type Desktop. Cependant il est plus commun de proposer, sur un mobile, une liste simplifi\u00e9e \u00e9vitant le recours \u00e0 du scrolling lat\u00e9ral. Il vaut ainsi mieux utiliser un autre type de liste qui s&rsquo;appelle \u00ab\u00a0List view\u00a0\u00bb qui n&rsquo;affiche la valeur que de quelques colonnes.<\/p>\n\n\n\n<p>Au niveau impl\u00e9mentation, on peut :<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Soit installer les deux composants sur la m\u00eame page et le rendu de l&rsquo;un ou de l&rsquo;autre sera sous le contr\u00f4le d&rsquo;une simple classe de style.<br>cf <a href=\"https:\/\/apex.oracle.com\/pls\/apex\/apex_pm\/r\/ut\/responsive-utilities\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/apex.oracle.com\/pls\/apex\/apex_pm\/r\/ut\/responsive-utilities<\/a><br>classes : hidden-xxs-down et hidden-xs-up.<br>C&rsquo;est la \u00ab\u00a0magie\u00a0\u00bb du framework Bootstrap qui permet cet affichage conditionnel.<\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li>Soit cr\u00e9er deux pages diff\u00e9rentes avec dans chacune d&rsquo;elles le composant adapt\u00e9, installer un code javascript de d\u00e9tection de type de p\u00e9riph\u00e9rique et router la demande de liste vers l&rsquo;une ou l&rsquo;autre des deux pages.<\/li><\/ol>\n\n\n\n<p>De fa\u00e7on plus g\u00e9n\u00e9rale, voici quelques liens utiles pour le d\u00e9veloppement destin\u00e9 \u00e0 des mobiles:<br>cf les patterns APEX pour les mobiles<br>Cf deux demos de Shakeeb Rahman, Product Manager APEX, autour d&rsquo;APEX et des mobiles<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.youtube.com\/watch?v=bosMSghczUo\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.youtube.com\/watch?v=bosMSghczUo<\/a><\/li><li><a href=\"https:\/\/www.youtube.com\/watch?v=gQrHr3uCaM0\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.youtube.com\/watch?v=gQrHr3uCaM0<\/a><\/li><li>Pour le d\u00e9veloppement d&rsquo;un th\u00e8me sp\u00e9cifique, cf <a href=\"https:\/\/apex.oracle.com\/pls\/apex\/f?p=12192:1\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/apex.oracle.com\/pls\/apex\/f?p=12192:1<\/a> qui montre Google Material Design adapt\u00e9 \u00e0 APEX.<\/li><\/ul>\n\n\n\n<p><em><strong>Bonjour, quel fonctionnement en mode d\u00e9connect\u00e9 ?<\/strong><\/em><br>Ce mode n&rsquo;est pas pr\u00e9vu en standard dans le produit APEX, mais cela est possible.<br>Il faut avoir recours \u00e0 l&#8217;emploi du framework PWA qui permet de mettre en place un fonctionnement en mode d\u00e9connect\u00e9 \u2026 au prix, il est vrai d&rsquo;un peu (!) de programmation en Javascript.<\/p>\n\n\n\n<p>Cf le tr\u00e8s bon post de Vincent Morneau (Insum) sur le sujet: <a href=\"http:\/\/vmorneau.me\/apex-pwa\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/vmorneau.me\/apex-pwa\/<\/a><\/p>\n\n\n\n<p><em><strong>Comment dois-je faire pour d\u00e9velopper des applications pr\u00e9sentes dans une base de donn\u00e9es autres que Oracle?<\/strong><\/em><br>La soci\u00e9t\u00e9 www.troiso.fr a \u00e9valu\u00e9 et document\u00e9 l&#8217;emploi d&rsquo;un passerelle ODBC (Heterogeneous Services inclus dans le SGBD Oracle) pour se connecter \u00e0 des donn\u00e9es pr\u00e9sentes dans une base PostgreSQL, ainsi que d&rsquo;autres.<br>Sinon, il faut songer \u00e0 exposer les donn\u00e9es via des Web Services (REST ou SOAP) et les consommer dans APEX.<\/p>\n\n\n\n<p><em><strong>Est il possible de travailler avec des workflows d&rsquo;approbation (du style BPM) ?<\/strong><\/em><br>Oui, on peut d\u00e9clencher des Workflows en effectuant un appel via un WebService (REST ou SOAP).<br>Si c&rsquo;est Oracle<\/p>\n\n\n\n<p>On peut \u00e9galement, depuis un Workflow externe, rentrer dans une application APEX dans une page sp\u00e9cifique avec le pre-positionnement d&rsquo;un contexte. (deep linking).<\/p>\n\n\n\n<p>Et il est bien sur possible d&rsquo;appeler un service REST manipulant des donn\u00e9es g\u00e9r\u00e9es avec une application APEX depuis un outil BPMN. Voir cet exemple avec Oracle PCS. Dans ce cas, il faudra developper un module REST soit dans l&rsquo;interface d&rsquo;Oracle APEX, soit via Sql Developer.<\/p>\n\n\n\n<p>Par ailleurs, m\u00eame s&rsquo;il n&rsquo;existe pas de capacit\u00e9 de workflow dans APEX, il existe des exp\u00e9rimentations int\u00e9ressantes de couplage avec un framework open source de type BPMN. cf <a href=\"https:\/\/apex.mt-ag.com\/apex\/f?p=SHOWCASE:11:0&amp;p_lang=en\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/apex.mt-ag.com\/apex\/f?p=SHOWCASE:11:0&amp;p_lang=en<\/a> (bas\u00e9 sur bpmn-js qui est un sous-produit open source de Camunda)<\/p>\n\n\n\n<p><em><strong>Est-ce qu&rsquo;on peut cr\u00e9er une application qui utiliseraient des donn\u00e9es de diff\u00e9rentes bases de donn\u00e9es (Plusieurs moteur, un moteur oracle, aller chercher des donn\u00e9es dans une base SQL Serveur, d&rsquo;autres dans une base My SQL) ?<\/strong><\/em><br>oui.<\/p>\n\n\n\n<p>La soci\u00e9t\u00e9 www.troiso.fr a \u00e9valu\u00e9 l&#8217;emploi d&rsquo;un passerelle ODBC (Heterogeneous Services inclus dans le SGBD Oracle) pour se connecter \u00e0 des donn\u00e9es pr\u00e9sentes dans une base PostgreSQL.<br>Sinon, il faut songer \u00e0 exposer les donn\u00e9es via des Web Services (REST ou SOAP) et les consommer dans APEX.<br>Tant qu&rsquo;on est en lecture, tout va bien. Si on doit coordonner une transaction sur plusieurs syst\u00e8mes, le probl\u00e8me se corse car il faut que les syst\u00e8mes candidats supportent le \u00ab\u00a0two-phase commit.\u00a0\u00bb<\/p>\n\n\n\n<p><em><strong>Est-ce qu&rsquo;on remplacer l&rsquo;url par notre nom de domaine ?<\/strong><\/em><br>Oui. S&rsquo;il s&rsquo;agit d&rsquo;une instance Autonomous Database (appel\u00e9e aussi ATP), il faut installer un custom ORDS (uniquement \u00e0 partir de la version 19.4) sur une VM de type compute afin de se substituer au module ORDS utilis\u00e9 par d\u00e9faut. (ce dernier n&rsquo;est absolument pas modifiable. C&rsquo;est une sorte de boite noire)<br>En g\u00e9n\u00e9ral, on installe un simple tomcat avec un Apache ou un Nginx en Reverse proxy, puis on installe un certificat afin de travailler en SSL. Un Load Balancer est \u00e9galement disponible sur la plateforme Free Tier.<br>Enfin, on redirige son nom de domaine (Record de type A) vers la VM.<br><a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-rest-data-services\/19.4\/aelig\/installing-and-configuring-customer-managed-ords-autonomous-database.html#GUID-24F4D51F-0BAF-4D3B-A714-492ED02D1212\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-rest-data-services\/19.4\/aelig\/installing-and-configuring-customer-managed-ords-autonomous-database.html#GUID-24F4D51F-0BAF-4D3B-A714-492ED02D1212<\/a><\/p>\n\n\n\n<p>On dispose de deux VM de type Compute (micro-shape) dans l&rsquo;environnement Free Tier. Donc tout va bien pour tester le concept !.<\/p>\n\n\n\n<p>cf l&rsquo;excellent blog de Dimitri Giellis<\/p>\n\n\n\n<p><em><strong>M\u00eame une base My SQL ou SQL Server, en gros autre que Oracle ?<\/strong><\/em><br>oui pour la consommation des donn\u00e9es.<br>Rappel: Oracle APEX DOIT \u00eatre install\u00e9 dans une base Oracle !<\/p>\n\n\n\n<p>La soci\u00e9t\u00e9 www.troiso.fr a \u00e9valu\u00e9 l&#8217;emploi d&rsquo;un passerelle ODBC (Heterogeneous Services inclus dans le SGBD Oracle) pour se connecter \u00e0 des donn\u00e9es pr\u00e9sentes dans une base PostgreSQL.<br>Sinon, il faut songer \u00e0 exposer les donn\u00e9es via des Web Services (REST ou SOAP) et les consommer dans APEX.<br>Tant qu&rsquo;on est en lecture, tout va bien. Si on doit coordonner une transaction sur plusieurs syst\u00e8mes, le probl\u00e8me se corse car il faut que les syst\u00e8mes participants supportent le \u00ab\u00a0two-phase commit.\u00a0\u00bb<\/p>\n\n\n\n<p><em><strong>Patrick, c&rsquo;est quoi le nom du plugin ? PWA, et le plugin carte ?<\/strong><\/em><br>Le nom du plugin est: JK64 Report Map<\/p>\n\n\n\n<p>Il est disponible depuis le site apex.world:<\/p>\n\n\n\n<p><a href=\"https:\/\/apex.world\/ords\/f?p=100:710:8140164595770::::P710_PLG_ID:COM.JK64.REPORT_GOOGLE_MAP_R1\">https:\/\/apex.world\/ords\/f?p=100:710:8140164595770::::P710_PLG_ID:COM.JK64.REPORT_GOOGLE_MAP_R1<\/a><\/p>\n\n\n\n<p>Cf le tr\u00e8s bon post de Vincent Morneau (Insum) sur le sujet: <a href=\"http:\/\/vmorneau.me\/apex-pwa\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/vmorneau.me\/apex-pwa\/<\/a><\/p>\n\n\n\n<p><em><strong>Peut on partir d&rsquo;une mod\u00e9lisation pour faire notre appli ? Ou mod\u00e9liser dans APEX ?<\/strong><\/em><br>Dans APEX, on travaille au niveau du mod\u00e8le relationnel. Pour mod\u00e9liser \u00e0 un niveau conceptuel, il faut utiliser des outils tiers. On pense, par exemple, \u00e0 l&rsquo;outil Oracle Data Modeler qui est bas\u00e9 sur une approche Entit\u00e9\/Association avec un formalisme de type <em>Barker<\/em>. (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Barker%27s_notation\">https:\/\/en.wikipedia.org\/wiki\/Barker%27s_notation<\/a>)<br>Sinon, ou peut utiliser tout autre type de mod\u00e9lisation (objet par exemple) sachant qu&rsquo;au final, il faut que cela se concr\u00e9tise par un mod\u00e8le relationnel sous forme d&rsquo;un script SQL\/DDL.<\/p>\n\n\n\n<p><em><strong>Peut-on int\u00e9grer de l&rsquo;APEX dans du code PHP ou dans un CMS (ex: WordPress ou Drupal) ?<\/strong><\/em><br>Oui en utilisant les deux approches suivantes:<\/p>\n\n\n\n<p>Soit on consomme (depuis WordPress, Drupal \u2026) des donn\u00e9es g\u00e9r\u00e9es par une application APEX via des appels de services REST<\/p>\n\n\n\n<p>Soit on embarque une page compl\u00e8te APEX (avec sa UI) dans le CMS en utilisant une iframe. Dans ce cas, il ne faut pas oublier d&rsquo;autoriser le \u00ab\u00a0deep linking\u00a0\u00bb dans les propri\u00e9t\u00e9s de l&rsquo;application Apex.<\/p>\n\n\n\n<p><em><strong>Possibilit\u00e9 de g\u00e9n\u00e9rer une application Native iOS ou Android ?<\/strong><\/em><br>Non. Oracle APEX ne g\u00e9n\u00e8re que des application en mode connect\u00e9 ou semi-connect\u00e9 (cf approche PWA), mais pas d&rsquo;applications mobiles natives.<\/p>\n\n\n\n<p>pour la cr\u00e9ation de compte free on ne trouve pas la region pour la France, il propose suisse, germany, uk ? quel region utiliser ?<br>Il faut utiliser la r\u00e9gion de Francfort.<\/p>\n\n\n\n<p>support apex free sur www.troiso.fr<br>Info donn\u00e9e par Fred Brunet<\/p>\n\n\n\n<p><em><strong>Utilisable avec une base Mysql ?<\/strong><\/em><br>Oracle APEX DOIT \u00eatre install\u00e9 dans une base Oracle, mais peut consommer des donn\u00e9es depuis d&rsquo;autres syst\u00e8mes de base de donn\u00e9es.<\/p>\n\n\n\n<p>Voici un catalogue des produits developp\u00e9s avec APEX https:\/\/www.builtwithapex.com\/<br>Info donn\u00e9e par Souleman Dembele<\/p>\n\n\n\n<p><em><strong>Y a t-il aussi un gestionnaire de code source pour int\u00e9gr\u00e9 ainsi qu&rsquo;un outil de build ?<\/strong><\/em><br>Non. Il s&rsquo;agit des deux points importants sur lesquels travaillent les \u00e9quipes de d\u00e9veloppement d&rsquo;Oracle APEX.<\/p>\n\n\n\n<p>Pour le moment, il faut exporter r\u00e9guli\u00e8rement son application et l&rsquo;enregistrer dans un CVS (Subversion,, Github\u2026) Le format d&rsquo;export est granulaire jusqu&rsquo;au niveau Page.<br>La soci\u00e9t\u00e9 Insum propose un outil qui va plus loin pour la granularit\u00e9 des objets: APEXCl<br>https:\/\/apexcl.dev\/<br>Pour le build, il existe des guides de bonnes pratiques et aussi un plugin pour Maven, par exemple.(r\u00e9alis\u00e9 en 2014)<\/p>\n\n\n\n<p><em><strong>Y&rsquo;a t-il une gestion des profiles d&rsquo;utilisateurs sous APEX ?<\/strong><\/em><br>Oui. On peut g\u00e9rer des profils d&rsquo;utilisateurs avec des pr\u00e9f\u00e9rences et chaque utilisateur a la possibilit\u00e9 de modifier celles qu&rsquo;on aura expos\u00e9es lors de la conception.<br>Les r\u00e8gles de complexit\u00e9 des mots de passe sont param\u00e9trable.<\/p>\n\n\n\n<p>En parall\u00e8le, il est possible aussi de cr\u00e9er des groupes d&rsquo;utilisateur et mettre en place une gestion d&rsquo;ACLs.<br>La m\u00e9thode la plus sophistiqu\u00e9e pour \u00e9laborer une gestion de r\u00f4les compl\u00e8te consiste \u00e0 utiliser l&rsquo;option Oracle RAS (Real Application Security). Oracle APEX est nativement int\u00e9gr\u00e9e avec Oracle RAS.<\/p>\n\n\n\n<p>cf <a href=\"http:\/\/gpmfactory.com\/index.php\/2019\/12\/14\/oracle-apex-et-ras\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/gpmfactory.com\/index.php\/2019\/12\/14\/oracle-apex-et-ras\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ci-dessous des questions\/R\u00e9ponses faisant suite au web S\u00e9minaire du mardi 30 juin 2020 organis\u00e9 par Oracle. Bonjour, Je suis int\u00e9ress\u00e9 par la pr\u00e9cision que&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"ppma_author":[150],"class_list":["post-4901","post","type-post","status-publish","format-standard","hentry","category-non-classe"],"authors":[{"term_id":150,"user_id":1,"is_guest":0,"slug":"admin8700","display_name":"Patrick","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/209d5ed69b74d288390621ab4c1d3773?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/4901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/comments?post=4901"}],"version-history":[{"count":6,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/4901\/revisions"}],"predecessor-version":[{"id":4907,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/4901\/revisions\/4907"}],"wp:attachment":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/media?parent=4901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/categories?post=4901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/tags?post=4901"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/ppma_author?post=4901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}