SOA Interopérabilité entre SII de partenaires commerciaux Espace Informatique Neuchâtelois Jeudi 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émonstrateur Principes 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 linterface 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 linteropérabilité de divers BPMS Business Process Management Systems For 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 davancement 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énario Principes
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 10 Simulation des tâches Principes Chaque tâche réalisée par le SII dun 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états Principes 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érence ID (Clé primaire) de lobjet du message c/o lexpéditeur Réponse de message ID (clé primaire) de lobjet 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érence ID (Clé primaire) de lobjet du message c/o le destinataire
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 13 MCD - Détaillant Base dialogue N/Réf V/Réf
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 14 MCD - Producteur Base dialogue N/Réf V/Réf
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 15 MCD - Transporteur Base 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
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 17 Démonstrateur – Environnement de développement Fonctionnalités Environnement de développement Base de donnéesOracle Designer Applications Web/PLSQLOracle Designer Réalisation et publication des services Web Oracle JDeveloper Console de visualisation Oracle Designer AJAX Modélisation de scénarios, dorchestration 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
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 19 Exemple de lenvoi de la commande du détaillant au producteur Service
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 IS VL_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 Web Service
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="orderitems" type="tns:ProdPackOrderitemUser" nillable="true" minOccurs="0" maxOccurs="unbounded"/> … Service
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 23 Exemple denveloppe de message SOAP envoyé au SII du producteur Service
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 24 Exemple de message SOAP de retour du SII du producteur Service 742 </env:Envelope
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 25 Procédure PL/SQL dinvocation de service Web c/o le détaillant (1) FUNCTION NEWORDER (PE_RETAILERID IN INTEGER,PE_ORDERITEMS IN INVWSPROD_PACK.TYPE_ORDERITEMS ) RETURN INTEGER IS VL_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=" 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 dinvocation 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 => ' ' ||PE_ORDERITEMS(i).IDPROD||' ' ||PE_ORDERITEMS(i).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=" RETURN VL_NUMCMDPROD; END; Remarque: PARAMETRAGE.VG_ISNAME contient lURL du serveur dapplication 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é à laide de diagrammes dactivités dUML Notre processus global implique des interactions pair- à-pair entre les 3 partenaires sans chef dorchestre Définition dune chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 28 Vue globale Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 29 1 er fragment Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 30 2 ème fragment Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 31 3 ème fragment Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 32 4 ème fragment Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 33 5 ème fragment Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 34 6 ème fragment Chorégraphie
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 35 7 ème fragment Choré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é à laide de diagrammes états et transitions dUML Le SII de chaque partenaire organise la partie de processus qui lui est propre Définition dune orchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 37 Détaillant Orchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 38 Producteur Orchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 39 Transporteur Orchestration
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 40 Réalisation de linterface de visualisation
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 41 Modèle Etats –Activités –Actions Transitions –Gardes Visualisation
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 42 Structure générale du code Javascript Visualisation
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 43 Rendu partiel de page Visualisation 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 raffraichi Visualisation 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 dinterrogation détat dune commande du détaillant Visualisation 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(' '); htp.p(' ' || VL_ETAT ||' '); htp.p(' '); … END;
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 47 Requête REST dinterrogation détat dun 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(' '); htp.p(' ' || VL_ETAT ||' '); htp.p(' '); … END;
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 48 Message SOAP dinterrogation détat dun objet de partenaire (commande producteur) Visualisation 1182
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 49 Message SOAP de réponse détat dun objet de partenaire (commande producteur) Visualisation RECUE PAR DETAILLANT
22 novembre 2007 / p.-a. sunier SOA - Interopérabilité entre SII de partenaires commerciaux 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 jours pour le développement et la documentation de lapplication et des services des 3 partenaires –Env. 10 jours pour la conception, le développement et la documentation de linterface 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: Rubriques: Ra&D Sagex Enseignement Méthodologie Modélisation Le site renvoie à dautres références plus complètes.