soa interopérabilité entre sii de partenaires commerciaux espace informatique neuchâtelois jeudi...
Post on 03-Apr-2015
102 Views
Preview:
TRANSCRIPT
SOAInteropérabilité entre SII de partenaires commerciaux
Espace Informatique NeuchâteloisJeudi 22 novembre 2007
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 2
Plan
Projet de recherche HES-SO
DémonstrateurPrincipes
Base du dialogue entre les SII des 3 partenaires
Plate-forme technique
Environnement de développement
Service
Chorégraphie du processus global
Orchestration du processus de chaque partenaire
Réalisation de l’interface de visualisation
Conclusions
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 3
Projet HES-SO
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 4
BPMS – 4 - SME Projet HES-SO
• Plate-forme de compétences
• Démonstrateur montrant l’interopérabilité de divers BPMS
Business Process Management SystemsFor Small To Medium-Sized Enterprises
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 5
Cas pratique Projet HES-SO
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 6
Démonstrateur
Une page Web, pour garantir la portabilité, permet de visualiser simultanément l’état des processus internes de chacun des 3 partenaires
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 7
Démonstrateur - Principes
Le démonstrateur est un modèle de simulation
• Un modèle est une simplification de la réalité
• Un modèle privilégie un point de vue
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 8
Entités informatiques
• 3 SII distincts – Détaillant– Producteur– Transporteur
• SII Détaillant– Console de visualisation d’avancement du processus
global– Console de saisie de commande
Principes
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 9
ScénarioPrincipes
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 10
Simulation des tâchesPrincipes
Chaque tâche réalisée par le SII d’un des
partenaires est simulé par une temporisation de
30s
Chaque tâche réalisée par le SII d’un des
partenaires est simulé par une temporisation de
30s
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 11
Notification de changement d’étatsPrincipes
Démonstrateur
Transporteur
Etat du processus
Détaillant Producteur
Etat du processus
Etat du processus
La console de visualisation réinterroge les SII des partenaires
toutes les 10s
La console de visualisation réinterroge les SII des partenaires
toutes les 10s
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 12
Base du dialogue entre SII des 3 partenaires
• Envoi de message | N/Réf – Notre référenceID (Clé primaire) de l’objet du message c/o l’expéditeur
• Réponse de messageID (clé primaire) de l’objet créé par le destinataire et qui servira de référence pour les échanges ultérieurs (V/Réf)
• Envoi de message | V/Réf – Votre référenceID (Clé primaire) de l’objet du message c/o le destinataire
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 13
MCD - DétaillantBase dialogue
N/Réf
V/Réf
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 14
MCD - ProducteurBase dialogue
N/Réf
V/Réf
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 15
MCD - TransporteurBase dialogue
N/Réf
V/Réf
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 16
Démonstrateur – Plate-forme technique
Démonstrateur
Serveur d’application (iAS)
Base de données Oracle
SchémaDétaillant
SchémaTransporteur
SchémaProducteur
CartoucheWeb PL/SQL
Services WebProducteur
Services WebTransporteur
Services Web Détaillant
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 17
Démonstrateur – Environnement de développement
FonctionnalitésEnvironnement de développement
Base de données Oracle Designer
Applications Web/PLSQL Oracle Designer
Réalisation et publication des services Web
Oracle JDeveloper
Console de visualisationOracle DesignerAJAX
Modélisation de scénarios, d’orchestration et de chorégraphie
IBM Rational Rose
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 18
Démonstrateur – Service
Exécution du codeassocié aux services
ApplicationDétaillant
ApplicationProducteur
Services WebProducteur
Publication des services offerts
Invocationd’un service
Functions et procédures
Réalisation des services
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 19
Exemple de l’envoi de la commande du détaillant au producteurService
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 20
Procédure PL/SQL Créer commande c/o le producteur
FUNCTION NEWORDER (RETAILERID IN NUMBER ,ORDERITEMS IN PROD_PACK.TYPE_ORDERITEMS ) RETURN INTEGER ISVL_NUMCMD NUMBER(9);
BEGIN -- Recherche séquence de la commande SELECT CMD_SEQ.NEXTVAL INTO VL_NUMCMD FROM DUAL ; -- Insertion commandes INSERT INTO COMMANDES (NUMERO, DET_NUMERO, DATE_RECEPTION, ETAT) VALUES (VL_NUMCMD, RETAILERID, SYSDATE, 'OUVERTE'); -- Insertion des lignes de commandes FOR i IN 1..ORDERITEMS.COUNT LOOP INSERT INTO LIGNECOMMANDES (CMD_NUMERO, PROD_NUMERO, QUANTITE) VALUES (VL_NUMCMD, ORDERITEMS(i).IDPROD, ORDERITEMS(i).QUANTITE); END LOOP ; COMMIT; RETURN VL_NUMCMD;END;
Service
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 21
Transformation de la procédure PL/SQL Créer commande en service WebService
Station de développementJDeveloper
ApplicationProducteur
Services WebProducteur
Publication des services offerts
Functions et procédures
Réalisation des services
1. Reprise des signaturesdes procédures et fonctions à publier comme services
2. Réalisation et publication des services
Lien entre réalisationet code exécutable
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 22
Extraits du fichier WSDL de définition du service Web Créer commande
… <element name="neworderElement"> <complexType> <sequence> <element name="retailerid" type="decimal" nillable="true"/> <element name="orderitems" type="tns:ProdPackOrderitemUser" nillable="true" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> </element> <element name="neworderResponseElement"> <complexType> <sequence> <element name="result" type="int" nillable="true"/> </sequence> </complexType> </element>… <service name="WSProductor_newOrder"> <port name="WSProductor_newOrderSoapHttpPort" binding="tns:WSProductor_newOrderSoapHttp"> <soap:address location="http://iasprod.ig.he-arc.ch:80/BPMSPROD_WS-newOrder-
context-root/WSProductor_newOrderSoapHttpPort"/> </port> </service>
Service
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 23
Exemple d’enveloppe de message SOAP envoyé au SII du producteurService
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body xmlns:ns1="http://bpmsprod_prod10g/WSProductor_newOrder.wsdl/types/"> <ns1:neworderElement> <ns1:retailerid>2000</ns1:retailerid> <ns1:orderitems> <ns1:idprod>9001</ns1:idprod> <ns1:quantite>1</ns1:quantite> </ns1:orderitems> </ns1:neworderElement> </soap:Body></soap:Envelope>
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 24
Exemple de message SOAP de retour du SII du producteurService
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://bpmsprod_prod10g/WSProductor_newOrder.wsdl/types/"> <env:Body> <ns0:neworderResponseElement> <ns0:result>742</ns0:result> </ns0:neworderResponseElement> </env:Body></env:Envelope
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 25
Procédure PL/SQL d’invocation de service Web c/o le détaillant (1)
FUNCTION NEWORDER (PE_RETAILERID IN INTEGER ,PE_ORDERITEMS IN INVWSPROD_PACK.TYPE_ORDERITEMS ) RETURN INTEGER ISVL_REQUEST SOAP_API.T_REQUEST;VL_NUMCMDPROD INTEGER(9);VL_RESPONSE SOAP_API.T_RESPONSE;
BEGIN VL_REQUEST := SOAP_API.new_request(p_method => 'ns1:neworderElement', p_namespace => 'xmlns:ns1="http://bpmsprod_prod10g/WSProductor_newOrder.wsdl/types/"', p_envelope_tag => 'soap'); -- Ajout du paramètre id détaillant SOAP_API.add_parameter( p_request => VL_REQUEST, p_name => 'ns1:retailerid', p_type => 'xsd:decimal', p_value => PE_RETAILERID);
Service
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 26
Procédure PL/SQL d’invocation de service Web c/o le détaillant (1)
-- Ajout du paramètre commande FOR i IN 1..PE_ORDERITEMS.COUNT LOOP SOAP_API.add_parameter( p_request => VL_REQUEST, p_name => 'ns1:orderitems', p_type => 'tns:ProdPackOrderitemUser', p_value => '<ns1:idprod>'||PE_ORDERITEMS(i).IDPROD||'</ns1:idprod><ns1:quantite>'||PE_ORDERITEMS(i).QUANTITE||'</ns1:quantite>'); END LOOP; VL_RESPONSE := SOAP_API.invoke( p_request => VL_REQUEST, p_url => PARAMETRAGE.VG_IASNAME||'/BPMSPROD_WS-newOrder-context-root/WSProductor_newOrderSoapHttpPort', p_action => 'neworderResponseElement'); VL_NUMCMDPROD := SOAP_API.get_return_value(p_response => VL_RESPONSE, p_name => 'ns0:result', p_namespace => 'xmlns:ns0="http://bpmsprod_prod10g/WSProductor_newOrder.wsdl/types/"'); RETURN VL_NUMCMDPROD;END;
Remarque: PARAMETRAGE.VG_ISNAME contient l’URL du serveur d’application iAS
Service
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 27
Démonstrateur – Chorégraphie du processus global
• Normes – WSCI (Web Services Choregraphy Interface)
– WS-CDL (Web Services Choregraphy Description Language)
• Chorégraphie du démonstrateur réalisé à l’aide de diagrammes d’activités d’UML
Notre processus global implique des interactions pair-à-pair entre les 3 partenaires sans chef d’orchestre
Définition d’une chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 28
Vue globaleChorégraphie
A
B
GH
D
Mode de saisie
Saisie commande par un moyen externe
Saisie commande par le démonstrateur
cdedet : CommandeDetai llant
[Ouverte]
cdedet : CommandeDetai llant
[Livraison avisée]
* Envoi commande au producteur
cdedet : CommandeDetai llant
[Envoyée]
* Réception de la marchandise
cdedet : CommandeDetai llant
[Livrée]
Mise à jour commande
cdedet : CommandeDetai llant
[Chargement en route]
Créer commande
Insertion commande
Mise à jour commande
Créer commande
* Demander un transport
cdeprod : CommandeProducteur
[Ouverte]
cdeprod : CommandeProducteur
[Transport demandé]
cdeprod : CommandeProducteur
[Transport confirmé]
cdeprod : CommandeProducteur
[Chargement conditionné]
cdeprod : CommandeProducteur
[Prise en charge]
cdeprod : CommandeProducteur
[Recue par le détaillant]
Mise à jour commande
* Conditionnement du chargement
Mise à jour commande
Mise à jour commande
Informer détail lant de la livraison
trsp : DemandeTransport
[Ouverte]
* Traiter demande
trsp : DemandeTransport
[Programmée]
* Chargement de la marchandise
trsp : DemandeTransport[Marchandise conditionnée]
trsp : DemandeTransport
[En route]
trsp : DemandeTransport
[Quittancée]
Créer demande de transport
Mise à jour demande
Mise à jour demande
C
FF2
E
: Transporteur : Producteur : Détaillant : Collaborateur du détaillant
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 29
1er fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 30
2ème fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 31
3ème fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 32
4ème fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 33
5ème fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 34
6ème fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 35
7ème fragmentChorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 36
Démonstrateur – Orchestration du processus de chaque partenaire
• Normes – BPEL4WS ou WS-BPEL (Business Process Execution
Language For Web Services)
• Orchestration des processus internes de chaque partenaires du démonstrateur réalisé à l’aide de diagrammes états et transitions d’UML
Le SII de chaque partenaire organise la partie de processus qui lui est propre
Définition d’une orchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 37
DétaillantOrchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 38
ProducteurOrchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 39
TransporteurOrchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 40
Réalisation de l’interface de visualisation
1
2
3
4
5
6
7
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 41
Modèle
Etats– Activités– Actions
Transitions– Gardes
Visualisation
...
Saisie commande
exit/ Crée(cdeDet)
Préparation envoi au producteur
do/ Raffraichiexit/ Crée (cdeProd)
[ cdeDet=Ouverte ] / Focus Détaillant
Demande de transport
do/ Raffraichiexit/ Crée(trsp)
[ cdeDet=Envoyee ] / Focus Producteur
Conditionnement de la marchandise
do/ Raffraichi
Chargement et transport
do/ Raffraichi
[ cdeProd=Chargement conditionné ] / Focus Transporteur
Réception de la marchandise
entry/ Raffraichi
[ trsp=En route ] / Focus Détaillant
Traiter demande de transport
do/ Raffraichi
[ cdeProd=Transport demandé ] / Focus Transporteur
[ trsp=Programmé ] / Focus Producteur
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 42
Structure générale du code JavascriptVisualisation
demarre SaisieDemonstrateur
Mode
demarre EcouteSeule
demarre SaisieIntefaceiAS
enregistre Saisie
Saisie val idée
traite Saisie
Fin traitement SII détai llant
raffraichi
recherche NouvelleCommande
trouvé?
[ Oui ] / Attente 10s
traite NouvelleCommande
[ Non ]
traite Raffraichissement
chge Focus
Processus terminé?
[ Non ] / Attente 10s
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 43
Rendu partiel de pageVisualisation
• AJAX – Asynchronous Javascript And XML
function newXMLHttpRequest(){
try {return new XMLHttpRequest(); }
catch(e) {
try {var aObj = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {
try {var aObj = new ActiveXObject("Microsoft.XMLHTTP");}
catch(e) {return false;}
}
}
return aObj;
};
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 44
Rendu partiel de page synchroniséVisualisation
function executeXMLHttpRequest(procServeur, param, foncExecute){
var http = newXMLHttpRequest() ;
…
http.open("POST",procServeur,false) ; // false pour une requête synchrone
http.setRequestHeader("Content-Type","application/x-www-form-urlencoded") ;
http.send(param) ;
…
var docXML = http.responseXML.documentElement;
…
if (http.status == 200) {
eval(foncExecute);
} else {
alert("L'erreur suivante est survenue: " + http.status);
};
};
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 45
Fonction raffraichiVisualisation
function raffraichi() {
…
// pour autant que la commande du détaillant soit enregistrée
if (commandeDetNum != "") {
var donnee = "PE_NUMERO=" + commandeDetNum;
executeXMLHttpRequest ("det_module.rendEtat",
donnee, "traiteRaffraichissement(docXML,DETAILLANT)");
…
// pour autant que la commande du producteur soit enregistrée
if (commandeProdNum != "") {
var donnee = "PE_NUMERO=" + commandeProdNum;
executeXMLHttpRequest ("det_module.rendEtatProd",
donnee, "traiteRaffraichissement(docXML,PRODUCTEUR)");
…
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 46
Requête REST d’interrogation d’état d’une commande du détaillantVisualisation
PROCEDURE RENDETAT
(PE_NUMERO IN VARCHAR2
) IS
VL_ETAT COMMANDES.ETAT%TYPE;
BEGIN
SELECT ETAT INTO VL_ETAT FROM COMMANDES
WHERE NUMERO = PE_NUMERO;
owa_util.mime_header('text/xml', true);
htp.p ( co_declarationXML);
htp.p('<reponse>');
htp.p('<etat>' || VL_ETAT ||'</etat>');
htp.p('</reponse>');
…
END;
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 47
Requête REST d’interrogation d’état d’un objet de partenaire (commande producteur)Visualisation
PROCEDURE RENDETATPROD
(PE_NUMERO IN VARCHAR2
) IS
VL_ETAT COMMANDES.ETAT%TYPE;
BEGIN
VL_ETAT := INVWSPROD_PACK.ETATCOMMANDE(PE_NUMERO);
owa_util.mime_header('text/xml', true);
htp.p ( co_declarationXML);
htp.p('<reponse>');
htp.p('<etat>' || VL_ETAT ||'</etat>');
htp.p('</reponse>');
…
END;
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 48
Message SOAP d’interrogation d’état d’un objet de partenaire (commande producteur)Visualisation
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://bpmsprod_prod10g/WSProductor_etatCommande.wsdl/types/">
<ns1:etatcommandeElement>
<ns1:peIdcmdprod>1182</ns1:peIdcmdprod>
</ns1:etatcommandeElement>
</soap:Body>
</soap:Envelope>
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 49
Message SOAP de réponse d’état d’un objet de partenaire (commande producteur)Visualisation
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://bpmsprod_prod10g/WSProductor_etatCommande.wsdl/types/"> <env:Body> <ns0:etatcommandeResponseElement> <ns0:result>RECUE PAR DETAILLANT</ns0:result> </ns0:etatcommandeResponseElement> </env:Body></env:Envelope>
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 50
7. Conclusions
• Ne nécessite pas une refonte des applications et le recours à des logiciels spécifiques
• Soigner le référencement des objets des tiers impliqués
• Charge de travail relativement restreinte– Env. 20-30 jours pour le développement et la
documentation de l’application et des services des 3 partenaires
– Env. 10 jours pour la conception, le développement et la documentation de l’interface de démonstration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 51
Références
Site du laboratoire de génie logiciel de la HE-Arc:http://lgl.isnetne.ch/
Rubriques:Ra&D
Sagex-18305
EnseignementMéthodologie
Modélisation
Le site renvoie à d’autres références plus complètes.
top related