Websem du 30 juin 2020 -Questions Réponses APEX

Ci-dessous des questions/Réponses faisant suite au web Séminaire du mardi 30 juin 2020 organisé par Oracle.


Bonjour, Je suis intéressé par la précision que Patrick voulais faire sur l’affichage des liste sur mobile.
Le composant « Interactive Report » est très riche et il est bien adapté pour un écran de type Desktop. Cependant il est plus commun de proposer, sur un mobile, une liste simplifiée évitant le recours à du scrolling latéral. Il vaut ainsi mieux utiliser un autre type de liste qui s’appelle « List view » qui n’affiche la valeur que de quelques colonnes.

Au niveau implémentation, on peut :

  1. Soit installer les deux composants sur la même page et le rendu de l’un ou de l’autre sera sous le contrôle d’une simple classe de style.
    cf https://apex.oracle.com/pls/apex/apex_pm/r/ut/responsive-utilities
    classes : hidden-xxs-down et hidden-xs-up.
    C’est la « magie » du framework Bootstrap qui permet cet affichage conditionnel.
  1. Soit créer deux pages différentes avec dans chacune d’elles le composant adapté, installer un code javascript de détection de type de périphérique et router la demande de liste vers l’une ou l’autre des deux pages.

De façon plus générale, voici quelques liens utiles pour le développement destiné à des mobiles:
cf les patterns APEX pour les mobiles
Cf deux demos de Shakeeb Rahman, Product Manager APEX, autour d’APEX et des mobiles

Bonjour, quel fonctionnement en mode déconnecté ?
Ce mode n’est pas prévu en standard dans le produit APEX, mais cela est possible.
Il faut avoir recours à l’emploi du framework PWA qui permet de mettre en place un fonctionnement en mode déconnecté … au prix, il est vrai d’un peu (!) de programmation en Javascript.

Cf le très bon post de Vincent Morneau (Insum) sur le sujet: http://vmorneau.me/apex-pwa/

Comment dois-je faire pour développer des applications présentes dans une base de données autres que Oracle?
La société www.troiso.fr a évalué et documenté l’emploi d’un passerelle ODBC (Heterogeneous Services inclus dans le SGBD Oracle) pour se connecter à des données présentes dans une base PostgreSQL, ainsi que d’autres.
Sinon, il faut songer à exposer les données via des Web Services (REST ou SOAP) et les consommer dans APEX.

Est il possible de travailler avec des workflows d’approbation (du style BPM) ?
Oui, on peut déclencher des Workflows en effectuant un appel via un WebService (REST ou SOAP).
Si c’est Oracle

On peut également, depuis un Workflow externe, rentrer dans une application APEX dans une page spécifique avec le pre-positionnement d’un contexte. (deep linking).

Et il est bien sur possible d’appeler un service REST manipulant des données gérées 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’interface d’Oracle APEX, soit via Sql Developer.

Par ailleurs, même s’il n’existe pas de capacité de workflow dans APEX, il existe des expérimentations intéressantes de couplage avec un framework open source de type BPMN. cf https://apex.mt-ag.com/apex/f?p=SHOWCASE:11:0&p_lang=en (basé sur bpmn-js qui est un sous-produit open source de Camunda)

Est-ce qu’on peut créer une application qui utiliseraient des données de différentes bases de données (Plusieurs moteur, un moteur oracle, aller chercher des données dans une base SQL Serveur, d’autres dans une base My SQL) ?
oui.

La société www.troiso.fr a évalué l’emploi d’un passerelle ODBC (Heterogeneous Services inclus dans le SGBD Oracle) pour se connecter à des données présentes dans une base PostgreSQL.
Sinon, il faut songer à exposer les données via des Web Services (REST ou SOAP) et les consommer dans APEX.
Tant qu’on est en lecture, tout va bien. Si on doit coordonner une transaction sur plusieurs systèmes, le problème se corse car il faut que les systèmes candidats supportent le « two-phase commit. »

Est-ce qu’on remplacer l’url par notre nom de domaine ?
Oui. S’il s’agit d’une instance Autonomous Database (appelée aussi ATP), il faut installer un custom ORDS (uniquement à partir de la version 19.4) sur une VM de type compute afin de se substituer au module ORDS utilisé par défaut. (ce dernier n’est absolument pas modifiable. C’est une sorte de boite noire)
En général, 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 également disponible sur la plateforme Free Tier.
Enfin, on redirige son nom de domaine (Record de type A) vers la VM.
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

On dispose de deux VM de type Compute (micro-shape) dans l’environnement Free Tier. Donc tout va bien pour tester le concept !.

cf l’excellent blog de Dimitri Giellis

Même une base My SQL ou SQL Server, en gros autre que Oracle ?
oui pour la consommation des données.
Rappel: Oracle APEX DOIT être installé dans une base Oracle !

La société www.troiso.fr a évalué l’emploi d’un passerelle ODBC (Heterogeneous Services inclus dans le SGBD Oracle) pour se connecter à des données présentes dans une base PostgreSQL.
Sinon, il faut songer à exposer les données via des Web Services (REST ou SOAP) et les consommer dans APEX.
Tant qu’on est en lecture, tout va bien. Si on doit coordonner une transaction sur plusieurs systèmes, le problème se corse car il faut que les systèmes participants supportent le « two-phase commit. »

Patrick, c’est quoi le nom du plugin ? PWA, et le plugin carte ?
Le nom du plugin est: JK64 Report Map

Il est disponible depuis le site apex.world:

https://apex.world/ords/f?p=100:710:8140164595770::::P710_PLG_ID:COM.JK64.REPORT_GOOGLE_MAP_R1

Cf le très bon post de Vincent Morneau (Insum) sur le sujet: http://vmorneau.me/apex-pwa/

Peut on partir d’une modélisation pour faire notre appli ? Ou modéliser dans APEX ?
Dans APEX, on travaille au niveau du modèle relationnel. Pour modéliser à un niveau conceptuel, il faut utiliser des outils tiers. On pense, par exemple, à l’outil Oracle Data Modeler qui est basé sur une approche Entité/Association avec un formalisme de type Barker. (https://en.wikipedia.org/wiki/Barker%27s_notation)
Sinon, ou peut utiliser tout autre type de modélisation (objet par exemple) sachant qu’au final, il faut que cela se concrétise par un modèle relationnel sous forme d’un script SQL/DDL.

Peut-on intégrer de l’APEX dans du code PHP ou dans un CMS (ex: WordPress ou Drupal) ?
Oui en utilisant les deux approches suivantes:

Soit on consomme (depuis WordPress, Drupal …) des données gérées par une application APEX via des appels de services REST

Soit on embarque une page complète APEX (avec sa UI) dans le CMS en utilisant une iframe. Dans ce cas, il ne faut pas oublier d’autoriser le « deep linking » dans les propriétés de l’application Apex.

Possibilité de générer une application Native iOS ou Android ?
Non. Oracle APEX ne génère que des application en mode connecté ou semi-connecté (cf approche PWA), mais pas d’applications mobiles natives.

pour la création de compte free on ne trouve pas la region pour la France, il propose suisse, germany, uk ? quel region utiliser ?
Il faut utiliser la région de Francfort.

support apex free sur www.troiso.fr
Info donnée par Fred Brunet

Utilisable avec une base Mysql ?
Oracle APEX DOIT être installé dans une base Oracle, mais peut consommer des données depuis d’autres systèmes de base de données.

Voici un catalogue des produits developpés avec APEX https://www.builtwithapex.com/
Info donnée par Souleman Dembele

Y a t-il aussi un gestionnaire de code source pour intégré ainsi qu’un outil de build ?
Non. Il s’agit des deux points importants sur lesquels travaillent les équipes de développement d’Oracle APEX.

Pour le moment, il faut exporter régulièrement son application et l’enregistrer dans un CVS (Subversion,, Github…) Le format d’export est granulaire jusqu’au niveau Page.
La société Insum propose un outil qui va plus loin pour la granularité des objets: APEXCl
https://apexcl.dev/
Pour le build, il existe des guides de bonnes pratiques et aussi un plugin pour Maven, par exemple.(réalisé en 2014)

Y’a t-il une gestion des profiles d’utilisateurs sous APEX ?
Oui. On peut gérer des profils d’utilisateurs avec des préférences et chaque utilisateur a la possibilité de modifier celles qu’on aura exposées lors de la conception.
Les règles de complexité des mots de passe sont paramétrable.

En parallèle, il est possible aussi de créer des groupes d’utilisateur et mettre en place une gestion d’ACLs.
La méthode la plus sophistiquée pour élaborer une gestion de rôles complète consiste à utiliser l’option Oracle RAS (Real Application Security). Oracle APEX est nativement intégrée avec Oracle RAS.

cf http://gpmfactory.com/index.php/2019/12/14/oracle-apex-et-ras/

About the author

GPM Factory