
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 :.
- un environnement et des classes de base écrites en JAVA et multi-plateforme
(Win32 et Unix)
- La possibilité de travailler en équipe (pour gérer
les versions, utilisez CVS
)
- Un éditeur de source
- de quoi écrire des PLUG-IN ou outils additionnels
Au dessus d'éclipse, IBM vend un produit WSSDA
, successeur de Websphere studio et de VisualAge pour JAVA.
il vous permet
- de concevoir des applications JAVA
- de concevoir des pages HTML avec un éditeur WYSIWYG et WebART Designer
(graphisme etc..)
- de gérer des instances de serveur d' applications (WAS 4.0 intégré
au produit ou TOMCAT)
- de concevoir des pages JSP avec divers assistants.
WDSc, est la version OS/400 de ce produit, comprenant :
- WSSDA
- RSE (un "plug-in" pour travailler avec des applications traditionnelles
de l'AS/400),
- et toujours les produits CODE/400 (particulièrement
Code designer pour les DSPF/PRTF)
- et VisualAge RPG déjà livré
sur les versions précédentes.
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). |
 |
- Objets ISeries, vous permet de créer des filtres (des listes
à produire) dans la branche QSYS
- Commandes iseries, permet de mémoriser et de passer des
commandes.
- Travaux iseries affiche vos travaux (très pratique pour
le debug)
- Fichiers IFS, vous affiche vos fichiers (toujours sur AS/400) hors
QSYS.
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 à 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
- la configuration est stockée dans un fichier de QUSRSYS
- pour modifier la configuration en mode caractère, utilisez WRKHTTPCFG
HTTP Server for AS/400 (powered by Apache) : le petit nouveau
- la configuration est stockée dans IFS (fichier httpd.conf)
- pour éditer la configuration, utilisez la commande EDTF ( wrklnk,
puis option 2)
Apache est disponible sur AS/400 depuis la V4R50 via une GROUP PTF, la
SF99035
(en V5r10, pour être au dernier niveau, commandez la SF99156)
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.
- Il s'agit d'une page html/jsp contenant un formulaire (comme
CGI)
- le formulaire invoque une servlet (par <form action="xxx">) qui
en fonction des paramètres construit un/des objets java (bean) réalisant
les accès base de données (JDBC)
et encapsulant ces dernières .
(ce sont des données Modélisées, d'où le modèle)
- puis la servlet demande l'affichage d'une page JSP ou d'une autre (rôle
d'aiguilleur ou de contrôleur), page constituant la réponse à afficher
(par getRequestDispatcher("/example/ma-page.jsp") )
la page JSP correpond à à la mise en forme des
données et utilise le/les beans générés.
cela permet de retrouver la séparation du traitement et de l'affichage
que nous connaissons sur l'AS/400,
la servlet représentant le programme et la page JSP le DSPF.(la notion
d'objet en plus bien sûr !).
Aujourd'hui, pour une application WEB, l'architecture logique doit être
:
- 3 tiers
- la couche présentation (html, wap, pda, ...)
- la logique applicative
- un serveur Web (Apache par ex.)
- un serveur d'application rendant possible l'exécution de
servlets et de pages JSP.
- une base de données (avec eventuellement du traitement :
procédures cataloguées)
un ensemble de normes autour de Java (origine SUN) , représente
l'illustration parfaite de ce modèle : J2EE
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 :
- modifier la page JSP génerée (attention aux écrasement,
si vous regénéré le projet)
- Modifier la feuille de style
- travailler en amont en insérant dans le code SDD avec CODE DESIGNER
des ordres destinés à Webfacing.
- N tiers
- la couche présentation (html, wap, pda, ...)
- la logique applicative
- un serveur Web (Apache par ex.)
- un serveur d'application rendant possible l'exécution de
servlets et de pages JSP (programmes JAVA tournant
derrière le serveur Web)
- les servlets allant consommer un(des) service(s)
sur n serveurs.
ce service pouvant être :
- un calcul effectué par un serveur spécialisé.
- un information retournée :
- carte sous forme d'image pour aller d'un point à
un autre (voir MapPoint
de Microsoft)
- un prix retourné par chaque agence de voyage pour
une recherche de billet d'avion
- etc...
- un appel à un programme (utilisant ou non une base de
données), sur un serveur central.
- cette philosophie offrant le grand avantage de :
- réutiliser au maximum (particulièrement les applications
lourdes et historiques),
- d'utiliser chaque système pour ce qu'il sait faire au mieux
(calcul intensif, stockage BD, gestion d'images)
- s'intégrer parfaitement à la notion de portail
> un service rendu, sur les protocoles standards
de l'internet (plus quelques petits nouveau)
est appelé Web Service (au pluriel, Web Services
ou servicizzze avec l'accent).
Les web services sont des briques logicielles "en
ligne" et permettent de créer des applications distribuées
et accessibles depuis n'importe quel navigateur xml. Ces briques sont
référencés dans l'annuaire UDDI, décrite
selon la norme WSDL (dérivée de XML) et opérent
avec d'autres briques selon le protocole SOAP. |
|
XML
Soit une liste des cours AF400( en HTML)
<h3>Liste des cours AF400 (© Volubis)</h3> <ul> <li>£C01.120 <em>(module £cursuspgm)</em> ESPACE ADRESSABLE UNIQUE</li> <li>£C01.130 <em>(module £cursuspgm)</em> INIT OS/400 (notion d'objet, bibliothèque)</li> <li>etc...</li> </ul>
|
ce qui s'affiche :
Liste des cours AF400 (© Volubis)
- £C01.120 (module £cursuspgm) ESPACE ADRESSABLE UNIQUE
- £C01.130 (module £cursuspgm) INIT OS/400 (notion d'objet,
bibliothèque)
- etc...
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
:
- soit encadrées par des balises ouvrantes(ex. <LIVRE>) et fermantes
(ex. </LIVRE>) (contrairement à HTML où ses ces dernières
n'étaient pas toujours obligatoires). On parle alors d'éléments.
Les éléments doivent s'imbriquer proprement les uns dans les
autres : aucun chevauchement n'est autorisé.
Les éléments vides sont permis, selon le format <ELEMENTVIDE/>.
- soit incluses à l'intérieur même des balises : on parle
alors d'attributs. Exemple : <LIVRE SUJET="XML">.
Ici l'attribut SUJET de l'élément LIVRE a la valeur "XML"
. En XML, contrairemet à HTML, les valeurs des entités doivent
toujours être encadrées par des guillemets (simples
ou doubles).
- Soit encore définies sous forme d'entités. Les entités
sont des abréviations. Par ex; si "Extensible Markup Language"
est déclaré comme une entité associée à
la notation "xml"; cette chaîne de caractères pourra
être abrégée en "&xml;" dans tout le fichier
XML.
Une entité peut aussi représenter un fichier XML externe tout
entier. (inclusion de fichier XML)
- La DTD (Définition de Type de Document). La structure arborescente
du document XML (intitulé des balises, imbrications des balises, caractère
obligatoire ou facultatif des balises et de leur ordre de succession…) peut
être déclarée formellement dans le corps du document XML
ou dans un fichier à part.
Cette déclaration s'appelle une Définition de Type de Document
(DTD). Elle s'effectue selon un formalisme particulier défini lui-aussi
dans la spécification XML. Cette déclaration étant facultative,
on n'écrira donc une DTD que lorsqu'il y aura vraiment intérêt
à le faire (par exemple pour contraindre la saisie/mise à jour
du document XML) .0
Lorsqu'un document XML possède une DTD associée et la respecte,
on dit qu'il est valide.
Lorsqu'il respecte seulement les règles de la grammaire XML (balises
fermées, correctement imbriquées…) on dit qu'il est bien
formé.
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 :
- une très grande interopérabilité (le même document
XML va pouvoir être affiché sur le Web et/ou produit en version
papier, alimenter un SGBD, etc.)
- une très grande durabilité/réutilisabilité
(le document ne deviendra pas obsolète avec l'évolution des
techniques informatiques ; il pourra sans difficulté être incorporé,
en tout ou partie, dans des documents de nature très différente,
être traité par des applications non prévues, voire non-existantes
au départ...).
En ce qui concerne sa restitution, un deuxième degré d'indépendance
par rapport aux applications pourra être apporté par l'utilisation
du langage de transformation normalisé XSLT (XSL Transformation)
qui va permettre, si nécessaire, de transformer une DTD (un arbre XML)
"orientée contenu" en une autre DTD (un autre arbre XML)
"orientée restitution" (c'est-à-dire constituée
d"objets formateurs" (formatting objects).
C'est à ce niveau que l'ordre de restitution final sera établi
(par exemple, que la bibliographie sera classée par ordre alphabétique
d'auteurs), que les légendes seront ajoutées, que seront fabriqués
automatiquement les tables des matières, index alphabétiques,
liens (logiques) de navigation, etc.).
On peut même envisager avec XSLT des transformations en PDF, à
destination des Palms, etc...
Voir la spécification à www.w3.org/TR/WD-xslt
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)
- QXML4PR310
Parser XML version 3.10 pour langage procéduraux
- QXML4C310
Parser XML version 3.10 pour C ++
- QXML4CINT
Parser XML version 3.50 pour C ++
OU bien utiliser XML DB2 Extender offrant :
- de nouveaux types de champs (UDT) :
- XMLCLOB : champ large contenant du XML
- XMLVARCHAR : champ texte contenant du XML
- XMLFile : champ Datalink qui référence un fichier STREAM
contenant du XML
- et de nombreuses procédures stockées, permettant, l'importation
et l'exportation de données
|
Copyright © 1995,2003 VOLUBIS