Consommer un Web Service Sage 1000

De Wiki1000
(Différences entre les versions)
 
(4 révisions intermédiaires par un utilisateur sont masquées)
Ligne 8 : Ligne 8 :
 
*Création du paquet de stéréotype "Service Local"
 
*Création du paquet de stéréotype "Service Local"
 
*Occuper le paquet,  
 
*Occuper le paquet,  
*Ajouter deux classes de stéréotype "Classe non persistantes" maClassParamIn et maClassParamOut (cette étape n'est pas obligatoire, on peut utiliser des types simples)
+
*Ajouter deux classes de stéréotype "Classe non persistantes" maClassParamIn et maClassParamOut (cette étape n'est pas obligatoire, on peut utiliser des types simples)
 
*Ajouter une classe de stéréotype "Classe support de service local"
 
*Ajouter une classe de stéréotype "Classe support de service local"
*Sur cette classe ajouter une opération de service Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;
+
*Sur cette classe ajouter une opération de service '''Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;'''
 +
 
 
<source lang='delphi'>
 
<source lang='delphi'>
 
//Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;
 
//Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;
 
begin
 
begin
 
  result := maClassParamOut.Create;
 
  result := maClassParamOut.Create;
  result.monAttribut := 'echo' + aParamIn.monAttribut;
+
  result.monAttribut := 'echo ' + aParamIn.monAttribut;
 
end;
 
end;
 
</source>
 
</source>
 +
 
*Libérer le paquet et le publier dans le référentiel
 
*Libérer le paquet et le publier dans le référentiel
 
*redémarrer le service, on constate à l'adresse '''http://[hôte]/[service]/server/soap.l1000?wsdl''' que le web service est disponible
 
*redémarrer le service, on constate à l'adresse '''http://[hôte]/[service]/server/soap.l1000?wsdl''' que le web service est disponible
Ligne 24 : Ligne 26 :
  
 
[[image:ConsommerWS 1.png]]
 
[[image:ConsommerWS 1.png]]
 +
 
[[image:ConsommerWS 2.png]]
 
[[image:ConsommerWS 2.png]]
 +
 
[[image:ConsommerWS 3.png]]
 
[[image:ConsommerWS 3.png]]
 +
 
[[image:ConsommerWS 4.png]]
 
[[image:ConsommerWS 4.png]]
  
Ligne 42 : Ligne 47 :
  
 
[[image:ConsommerWS 6.png]]
 
[[image:ConsommerWS 6.png]]
 +
 
[[image:ConsommerWS 7.png]]
 
[[image:ConsommerWS 7.png]]
 +
 
[[image:ConsommerWS 8.png]]
 
[[image:ConsommerWS 8.png]]
 +
 
[[image:ConsommerWS 9.png]]
 
[[image:ConsommerWS 9.png]]
  
Ligne 49 : Ligne 57 :
  
 
<source lang='csharp'>
 
<source lang='csharp'>
//obtention de la session
+
            //obtention de la session grâce au token
 
             Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient auth = new Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient();
 
             Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient auth = new Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient();
 
             String session = auth.LocalServiceLoginToken("2E235A772C0D0105F4D1670CD60000005562BD0A1D2A13345A4A84A7D98DC9B7B736B0396E60E957ED499DD29EA3D2F86B832C7B571228B5BC612741A3EA7F17D9162C1E7122DD8DD3F88A8BEC2D6A337D2054DFDEE5331AD760D0C475FA3EBEA4D4A61C72D8ED99BE9006A0BB6BD7D67C8241E12AABEBC31E80D71EA0F7EC96F12731010E9520797256AF74C58AE37E31A5A5C6F83859DCA442DCD36DA814C53F3A66D52F7EC02A53A512D1E077FBEB6F5B85905CA9CA0E479250AE1C514AD12D138A80630AB84D12293CB7D63F7999C88AB211FDCDF29D1635CD1D2290BE1E5FEF7894B8D493BB");
 
             String session = auth.LocalServiceLoginToken("2E235A772C0D0105F4D1670CD60000005562BD0A1D2A13345A4A84A7D98DC9B7B736B0396E60E957ED499DD29EA3D2F86B832C7B571228B5BC612741A3EA7F17D9162C1E7122DD8DD3F88A8BEC2D6A337D2054DFDEE5331AD760D0C475FA3EBEA4D4A61C72D8ED99BE9006A0BB6BD7D67C8241E12AABEBC31E80D71EA0F7EC96F12731010E9520797256AF74C58AE37E31A5A5C6F83859DCA442DCD36DA814C53F3A66D52F7EC02A53A512D1E077FBEB6F5B85905CA9CA0E479250AE1C514AD12D138A80630AB84D12293CB7D63F7999C88AB211FDCDF29D1635CD1D2290BE1E5FEF7894B8D493BB");
 
             try
 
             try
 
             {
 
             {
 +
                //Cet objet permet de passer la session lors de l'appel
 
                 ServiceTest.SessionHeader sessionHeader = new ServiceTest.SessionHeader();
 
                 ServiceTest.SessionHeader sessionHeader = new ServiceTest.SessionHeader();
 
                 sessionHeader.sessionId = session;
 
                 sessionHeader.sessionId = session;
Ligne 68 : Ligne 77 :
 
             finally
 
             finally
 
             {
 
             {
                 auth.LocalServiceLogout(session);//ne pas oublier de se déconnecter à l'issue
+
                 auth.LocalServiceLogout(session);//ne pas oublier de se déconnecter à l'issue, sinon on risque la pénurie de licence
 
             }
 
             }
 
</source>
 
</source>

Version actuelle en date du 30 janvier 2015 à 10:37

Nous allons créer un paquet de service local et l'utiliser avec .NET.

Création du paquet de service local

Les étapes sont :

  • Création du paquet de stéréotype "Service Local"
  • Occuper le paquet,
  • Ajouter deux classes de stéréotype "Classe non persistantes" maClassParamIn et maClassParamOut (cette étape n'est pas obligatoire, on peut utiliser des types simples)
  • Ajouter une classe de stéréotype "Classe support de service local"
  • Sur cette classe ajouter une opération de service Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;
//Function monOperationDeService(aParamIn:maClassParamIn):maClassParamOut;
begin
 result := maClassParamOut.Create;
 result.monAttribut := 'echo ' + aParamIn.monAttribut;
end;
  • Libérer le paquet et le publier dans le référentiel
  • redémarrer le service, on constate à l'adresse http://[hôte]/[service]/server/soap.l1000?wsdl que le web service est disponible
  • le wsdl est visible à l'adresse http://[hôte]/[service]/server/soap.l1000?wsdl=TestServiceLocal
  • on remarque en bas du wsdl la ligne <soap:address location=... qui représente le endpoint soap.

ConsommerWS 1.png

ConsommerWS 2.png

ConsommerWS 3.png

ConsommerWS 4.png

Création du token d'authentification

Outre les combinaisons utilisateur/mot de passe, il est possible de s'authentifier auprès d'un service web grâce à un token. Cette méthode est préférable, elle évite la divulgation du mot de passe et permet la révocation d'un token sans révoquer l'utilisateur.

ConsommerWS 5.png


Consommation du paquet de service local créé

Le web service d'authentification est disponible à l'adresse http://[hôte]/[service]/server/soap.l1000?wsdl=Sage1000Authentication


ConsommerWS 6.png

ConsommerWS 7.png

ConsommerWS 8.png

ConsommerWS 9.png


            //obtention de la session grâce au token
            Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient auth = new Sage1000Auth.TdbmLocalServiceAuthenticationPortTypeClient();
            String session = auth.LocalServiceLoginToken("2E235A772C0D0105F4D1670CD60000005562BD0A1D2A13345A4A84A7D98DC9B7B736B0396E60E957ED499DD29EA3D2F86B832C7B571228B5BC612741A3EA7F17D9162C1E7122DD8DD3F88A8BEC2D6A337D2054DFDEE5331AD760D0C475FA3EBEA4D4A61C72D8ED99BE9006A0BB6BD7D67C8241E12AABEBC31E80D71EA0F7EC96F12731010E9520797256AF74C58AE37E31A5A5C6F83859DCA442DCD36DA814C53F3A66D52F7EC02A53A512D1E077FBEB6F5B85905CA9CA0E479250AE1C514AD12D138A80630AB84D12293CB7D63F7999C88AB211FDCDF29D1635CD1D2290BE1E5FEF7894B8D493BB");
            try
            {
                //Cet objet permet de passer la session lors de l'appel
                ServiceTest.SessionHeader sessionHeader = new ServiceTest.SessionHeader();
                sessionHeader.sessionId = session;
 
                ServiceTest.maClassParamIn paramIn = new ServiceTest.maClassParamIn();
                paramIn.monAttribut = "hello world";
 
                //invocation du service
                ServiceTest.maClasseSupportServiceLocalPortTypeClient srv = new ServiceTest.maClasseSupportServiceLocalPortTypeClient();
                ServiceTest.maClassParamOut paramOut = srv.monOperationDeService(sessionHeader, paramIn);
 
                MessageBox.Show(paramOut.monAttribut);
            }
            finally
            {
                auth.LocalServiceLogout(session);//ne pas oublier de se déconnecter à l'issue, sinon on risque la pénurie de licence
            }



Web Services (ws)Développement DSM

Outils personnels