OS/400, Version 5.


V5 (r10 & r20) et nouvelles technologies



Nouveaux outils de développement

 

|


 Websphere development studio et websphere development tools 
  sont les nouveaux outils de la version 5.10
 Websphere development studio est représenté par le code produit 5722wds
   il contient tout 5769pw1, c'est à dire SEU, SDA, PDM ...
   plus tous les compilateurs suivants : RPG, COBOL, C/C++
 il est automatiquement installé si vous possédiez l'un de ces produits.
 Websphere developement tools est la partie cliente :
  pour développer des applications 5250 (developpement en Client/server)   pour développer des applications Client/server en Visual RPG.   pour développer ou migrer des applications sur le WEB.
 Cet ensemble représente un seul produit avec une seule clé de licence.


 Détail de Websphere development tools (en V5R10, avant Aôut 2002)
    + CODE/400
      lui même regroupant - Code/editeur un éditeur de source
                          - Code/designer le cousin de SDA et de RLU
                          - CPO (Code Project Organizer), le nouveau PDM
                          - Program Generator, gestion de vos compilations

    + VisualAge RPG
      permet de concevoir des applications Client/Serveur basées sur RPG
             contient un éditeur GUI (programmation évenementielle)
             utilise CODE/400 pour éditer le RPG-IV.


    + VisualAge pour JAVA (v3.5)
      pour concevoir des applications, des applet ou des servlets JAVA

    + Distributed Debuger
      pour faire du DEBUG sur touts ces éléments avec UN SEUL produit.

    + Websphere Studio
      pour concevoir des pages HTML contenant des servlets (pages JSP)

    + WEbfacing
      pour transformer vos DSPF en pages JSP (avec le même programme)
  ATTENTION, vous devez aussi installer Websphere application serveur WAS 3.5 (AS3) ou TOMCAT

WDS client v4.0 est le nouveau produit IBM faisant partie du produit 5722WDS depuis Aôut 2002 (5.10 ET 5.20)

Il est basé sur ECLIPSE, un IDE en licence publique d' initiative IBM, comprenant :.

Au dessus d'éclipse, IBM vend un produit WSSDA , successeur de Websphere studio et de VisualAge pour JAVA.

il vous permet

WDSc, est la version OS/400 de ce produit, comprenant :

la première tâche, va consister à définir une nouvelle connexion :

Indiquez

  • un nom de profil :
    • le votre si vous souhaitez ne pas partager cette définition
    • Team (qui existe en standard) dans le cas contraire
  • le nom de la connexion et le nom du système AS/400 à connecter (hôte)
  • le type de système (ici iSeries)
  • votre ID utilisateur
  • Une description pour cette connexion.

 

Vous voyez alors dans la partie haute, nommée "systèmes distants" ce que WDSc appelle des sous-systèmes
(rien avoir avec les objets *SBSD).

Cliquons sur Objets Iseries

  • Vos bibliothèques...
    crée un filtre sur un nom (ou début de nom) de bibliothèque.
  • Vos objets...
    un filtre sur un nom (ou un nom gen* ou *ALL) d'objet dans une bibliothèque
  • Vos membres...
    un filtre basé sur un nom de membre dans un fichier source.
  • Liste de bibliothèques permet de travailler à partir de *LIBL

A partir de ces listes, un double clique sur un membre source lance l'éditeur (LPEX)

Sinon les options sont disponibles avec un menu contextuel (click droit sur l'élement).

 

|

Serveur WEB et architecture N-tiers

L'origine de l'informatique est basée sur une Architecture 1 tiers

Le terminal
L'ordinateur central



A l'arrivée de la micro-informatique ce shéma a pu être reproduit en créant des applications autonomes.

(problèmes de duplication des données)

Pour conserver la convivialité de l'interface graphique tout en centralisant les données, on utilise l'architecture 2 tiers (ou client/serveur)

C'est dans ce concept que se situe VisualAge RPG (un des éléments de 5722WDS)


revoyons la fameux schéma du gartner's group lié à cette architecture :

Données
Données
Données
Données
Données
Traitement
Traitement
 
Traitement
présentation
 
Données
Traitement
Traitement
Traitement
Présentation
Présentation
Présentation
Présentation
Présentation
présentation distribuée
(rewamping)
présentation distante (X11) Gestion distante des données
(client/serveur)
traitement distribué
(proc. cataloguées)
bases de données distribuées



puis vint le réseau et particulièrement l'Internet

Le but est de fournir au clients (Internet Explorer, Netscape, Opera etc...) des pages HTML à afficher.

|

Le standard HTML est un langage SGML (comme UIM sur l'AS/400) qui est interprété complétement par la navigateur sur le poste client:

par exemple

voici un texte en <b>GRAS</b> dont une partie est <font color="#FF0000">
rouge</font><br>(suivi d'un passage &agrave; la ligne)

s'affiche :

voici un texte en GRAS dont une partie est rouge
(suivi d'un passage à la ligne)

Une page WEB sous WDS client

l'onglet source affiche le source HTML


En V5R10, vous avez donc le choix , de fait, entre deux serveurs WEB.

HTTP Server for AS/400 (original) : celui de la version 3.7

HTTP Server for AS/400 (powered by Apache) : le petit nouveau

Au passage l'administration graphique du(des) serveur(s) WEB a été revue et intègre parfaitement ces nouveautés.
(il s'agit du serveur *ADMIN, accessible sur le port 2001, à lancer par STRTCPSVR)

pour créer votre premier serveur Apache, tapez comme url ":http://votreas400:2001/HTTPAdmin",
et dans le menu de gauche, choisissez (Create New HTTP server)


Très vite il a fallut insérer dans ces pages HTML des données entreprise
(commandes en attente, stock disponible etc...).
Pour cela la norme initiale fut CGI, qui permet l'appel d'un programme sur le serveur, chargé de générer du HTML en réponse. La technique est assez rugueuse mais cela fonction (sur l'AS/400 avec des programmes C ou RPG).

Pour Utiliser CGI en RPG, vous disposez des API suivantes (GAP4 Uniquement)

  • QtmhGetEnv lire le contenu d'une variable d'environnement
  • QtmhRdStin   lire STDIN (le flot en entré)
  • QtmhCvtDb découper STDIN suivant le format d'un fichier BD
  • QtmhWrStout écrire dans STDOUT (le flot en sortie)
    vous devez gnérer un flot commencant par :

    - "content-type : text/html", suivi par du flot HTMLà afficher.
    - "location : http://uuuuuuu", uuuuu étant l'adresse du fichier à afficher (l'url)

 

Pour alléger l'écriture de pgm CGI, la plupart des plates-formes proposent des langages de script ou l'on mélange dans un fichier texte, du HTML, du code (propriétaire) et des ordres d'accès à la base.
Le fournisseur proposant un pgm CGI déjà écrit traitant ces fichiers en fournissant au navigateur la page HTML après avoir remplacé les ordres d'accès aux données par les données elle même.

 

Cela s'appelle PHP dans le monde linux (souvent associé à la base MYSQL), ASP pour Microsoft (avec IIS) et Net.Data avec les bases DB2 chez IBM.

Net.Data est basé sur la notion de section, une section représenatnt soit un page HTML
(un fichier Net;Data contenant donc plusieurs pages) ou une fonction à exécuter (SQL principalement)

Exemple :

%{================================================================%}
%{=                MACRO NET.DATA                                =%}
%{=                                                              =%}
%{= affichage d'une liste sans sélection (sans page d'appel)     =%}
%{=                                                              =%}
%{= But général : afficher la liste des appellations    (BDVIN1) =%}
%{================================================================%}             

%{******************************************************************************%} %{* SQL1: génère la liste des appellations dans un tableau HTML *%} %{******************************************************************************%} %function (DTW_SQL) Fsql1() { %{* Requête SQL *%} %{*--------------*%} select Appellation, Region_code from BDVIN1.Appellations order by Appellation fetch first 50 rows only %{* traitement du résultat *%} %{*------------------------*%} %report{ <table border ="1"> <tr> <th><b>Appellation</th> <th>Region_code</th> </tr> {* pour chaque ligne retournée *%} %{*-----------------------------*%} %row{ <tr> <td>$(V1)</td> <td>$(V2)</td> </tr> %} </table> %} %} %{*************************************************************************%} %{* PAGE1: page HTML liste des appellations (utilise SQL1) *%} %{*************************************************************************%} %html (page1) { <html> <body> <p align="center"> <font size="5" face = "Arial"><b>LISTE des APPELLATIONS<br></b></font> </p> @Fsql1() <BR> </body> </html> %}

Affiche la liste des 50 premieres appellations vinicoles, trièes par nom.

  • page1 est la page HTML à afficher, (@Fsql1 sera remplacé par le résultat produit, c'est à dire la liste elle même.
  • Fsql1 est la fonction SQL, lancant l'ordre Select et mettant en page le résultat.

 

Pour terminer, l'état de l'art est aujourd'hui de travailler dans une architecture dite 3 tiers, c'est à dire en découplant le serveur de traitement (les programmes souvent placés avec le serveur WEB) des données (pouvant être situées sur un serveur éloigné).

Cette technique est implémentée avec les serveurs d'application (Websphere Application Server ou TOMCAT)

Qu'est-ce qu'un serveur d'applications ?

•L'API Servlet 2.2 a été développée afin de permettreà un serveur de traiter des requêtes dans un environnement distribué et plus particulièrement des requêtes HTTP. Les servlet sont ansi un remplacement idéal (basé sur Java) des script CGI.

•L'API java Server Pages 1.1 apporte une solution à l'un des problèmes soulevé par les servlets HTTP: l'imbrication du code HTM dans le code JAVA. (une page JSP est transformée en servlet à la volée)

•le troisème volet souvent associé à ces deux premiers est JDBC, pemettant un accès universel aux bases de données hétérogènes.

Tomcat est un conteneur de servlet (ou serveur d'application) et implémente ces APIs (et quelques autres) comme le produit commercial IBM : Webspshere Application Server.

Ils peuvent offrir en plus, suivant la version, de nombreux avantages comme les pools de connexion (mutualisation des accès base de données), la gestion de la montée en charge, etc...

 

Il s'agit d'écrire des programmes JAVA s'exécutant sur le serveur et non sur le poste client , le serveur d'application assurant le lien entre le serveur WEB et la JVM (machine virtuelle java).Ces programmes java pouvant être des classes autonomes (servlet) générant du HTML :


ou contenus dans des pages JSP : pages HTML faisant références à des objets externes [des beans].

Les pages JSP permettant d'intégrer du HTML (conçu par un graphiste) et du code JAVA (écrit par un développeur) dans un même fichier.

Dans la pratique, il ne faut pas opposer Servlet et JSP et nous rencontrerons souvent l'architecture Modèle/Vue/Controleur ou MVC.


Aujourd'hui, pour une application WEB, l'architecture logique doit être :

Vient s'inscrire dans ce cadre, la perspective WEBFACING du produit WDSc :



Il s'agit de transformer vos DSPF en pages JSP,

Les classes fournies par IBM peuvent s'exécuter dans n'importe quel serveur d'application (WAS, TOMCAT) sur n'importe quelle palteforme.
Elles établirons un dialogue réseau avec le serveur (à démarrer par strtcpsvr *webfacing) qui lui se substituera à votre DSPF face aux programmes RPG ou Cobol qui restent inchangés.

il faut donc commencer par indiquer les DSPF à convertir



Puis la commande de lancement


Résultat :


Pour personnaliser ces écrans, vous pouvez :

  1. modifier la page JSP génerée (attention aux écrasement, si vous regénéré le projet)
  2. Modifier la feuille de style
  3. travailler en amont en insérant dans le code SDD avec CODE DESIGNER des ordres destinés à Webfacing.

|

XML


Soit une liste des cours AF400( en HTML)

<h3>Liste des cours AF400 (&copy; Volubis)</h3>
<ul>
<li>&pound;C01.120 <em>(module &pound;cursuspgm)</em> ESPACE ADRESSABLE UNIQUE</li>
<li>&pound;C01.130 <em>(module &pound;cursuspgm)</em> INIT OS/400 (notion d'objet, biblioth&egrave;que)</li>
<li>etc...</li>
</ul>

ce qui s'affiche :

Liste des cours AF400 (© Volubis)

imaginons maintenant la même liste XML

(voir le fichier complet, le source du pgm ayant réalisé cela)

Voici la manière dont WDS client, montre ce fichier :

Les règles du jeu XML


Elles sont extrêmement simples. Les informations doivent être :

par exemple, tout le paramétrage et tous les filtres WDSc sont mémorisés dans des fichiers xmi
(en fait du xml, dédié au produit). La perspective "ressource", permet d'accèder à ces fichiers de paramétrage :

 

La spécification XML ( traduction française) se trouve à babel.alis.com/web_ml/xml/REC-xml.fr.html

• Les langages de présentation (style) : CSS et XSL


Comme il a été dit, la philosophie d'XML consiste à bien séparer les données/documents (le fichier XML proprement dit) des traitements/présentations. Un document donné sera, lors de sa création, balisé uniquement en fonction de son contenu (sa sémantique) intrinsèque et indépendamment de sa restitution future (papier, écran, terminal Braille, synthèse vocale ou autre) — comme d'ailleurs de tout autre traitement automatique qui pourra lui être appliqué.

Cette indépendance par rapport aux applications qui vont le traiter en général, et par rapport à celles chargées de sa restitution en particulier, va lui conférer :

Le langage normalisé de feuille de style XSL (Extensible Style Language) va permettre ensuite de spécifier comment un type de document (= une DTD "orientée restitution") donné va être restitué sur un support donné. C'est à ce niveau que seront réglés les problèmes du type "saut de page", notes présentées en bas de page ou en fin de chapitre, etc., que les liens de navigation seront fabriqués (hyperliens pour les versions électroniques, renvoi à un n° de page ou de paragraphe ou de note pour les versions papier...)

Voir la spécification à www.w3.org/TR/WD-xsl

Une feuille de style XSL est appelée à partir d'un document XML par une "processing instruction" (PI) comme suit :

<?xml-stylesheet href="biblio.xsl" type="text/xsl" ?>


Le langage normalisé de feuille de style CSS (Cascading Style Sheets) déjà utilisé avec HTML, pourra également être utilisé concurremment où à la place de XSL.

Une feuille de style CSS est appelée à partir d'un document XML par :

<?xml-stylesheet href="biblio.css" type="text/css" ?>

Exemple :

Fichier XSL destiné au fichier "liste des cours AF400" :

La partie template représente un modèle de mise en forme HTML et s'applique à l'ensemble du document (/)

For-each, s'applique à chaque COURS (dans AF400)

l'attribut NOM sera placé entre <H2> et </H2>, suivi de l'attribut MODULE.

Toujours sous WDS client, réalisons cette transformation :

Résultat :

 


Vous pourrez aussi développer à base d'API livrées avec l'OS/400, particulièrement :
(objet *SRVPGM contenant des API utilisables en ILE)

OU bien utiliser XML DB2 Extender offrant :

|

Copyright © 1995,2003 VOLUBIS