ONYX - 9.0 - Usage

mapSoapRunStreamFromPost

De MappingDoc
Révision datée du 29 octobre 2019 à 10:27 par Rdal (discussion | contributions) (Page créée avec « *Contrary to the mapUploadFile method, mapSoapRunStreamFromPost lets you call a workflow *The content of the file should be passed in the body, without envelope and withou... »)
Autres langues :
English • ‎français

Introduction

mapSoapRunStreamFromPost est une méthode du WebService "mapsoapserver.exe"

Cas d'usage :

  • Send a file to Mapping and get a response file synchronously (e.g. sending an XML file and receiving a PDF in return).
  • Send a large file to Mapping asynchronously. All file types are supported.

Usage

  • POST method
  • Parameters:
- Workflow: name of the Mapping workflow that will be called
- key/value combination: metadata
- File sent
- Response type (XML with base64 encoded file, or direct file)
Examples: XML, PDF, XPS, TXT, CSV, EXE, JPG, PNG, ZIP etc.
  • Contrary to the mapUploadFile method, mapSoapRunStreamFromPost lets you call a workflow
  • The content of the file should be passed in the body, without envelope and without base64 encoding
  • All <key/value> parameters should be passed in the URL exclusively (no XML envelope)
  • In the workflow:
    • The key/value combinations are used in the workflow as [%xxxx%] variables
    • The file is identified using the [%MAP_FILE_IN%] variable
  • If the "getobject=1" parameter is added to the URL, the body of the response contains the file from the workflow without XML envelope nor base64 encoding.

Exemple de requête SOAP

Avec un fichier PDF

curl -u mapadmin:mapadmin -X POST --data-binary "@/tmp/mon_fichier.pdf" "http://192.168.100.14:8002/cgi-bin/mapsoapserver.exe/mapSoapRunStreamFromPost?key=workflow&value=testsoap&key=macle1&value=mavaleur1&key=macle2&value=mavaleur2"

Avec un fichier XML

curl -u mapadmin:mapadmin -X POST --data "@/tmp/mon_fichier.xml" "http://192.168.100.14:8002/cgi-bin/mapsoapserver.exe/mapSoapRunStreamFromPost?key=workflow&value=testsoap&key=typdoc&value=facture&key=enseigne&value=mag_paris&getobject=1"


Remarques :

  • Le paramètre "worfklow", permet de spécifier le nom du workflow à invoquer. S'il n'est pas renseigné, c'est le workflow "root" qui est appelé.
  • "macle1", "mapcle2", "typdoc" et "enseigne" sont des exemples de méta données récupérables dans le workflow, permettant à Mapping d'effectuer le traitement adapté au fichier.
  • La présence du @ dans l'option --data-binary permet de spécifier qu'il s'agit d'un fichier.
  • Dans le premier exemple, le fichier transmis étant un PDF, l'option utilisée est --data-binary , mais pour les fichiers "texte", comme l'exemple XML, l'option pourrait être "--data"
  • Dans le 2ème exemple, le paramètre "getobject=1" permet d'avoir une réponse de type "octet-stream", sans enveloppe XML ni encodage en base64

Exemple de workflow pour traitement asynchrone

  • La variable param1 récupère le contenu de macle1 (boite paramètre)
  • La variable param2 récupère le contenu de macle2 (boite paramètre)
  • La boite "Print" permet d'envoyer le fichier dans la file d'attente "MON_ENTRY" (boite "Imprimer")
    • Le fichier transmis dans le flux du WebService est [%MAP_FILE_IN%]
    • La coche "Ajouter les paramètres courants" permettent de transmettre les variables param1 et param2 avec le fichier dans la file d'attente "MON_ENTRY"


            

Exemple de workflow pour traitement synchrone

  • La variable param1 récupère le contenu de macle1 (boite paramètre)
  • La variable param2 récupère le contenu de macle2 (boite paramètre)
  • Composition du document XML en XPS (boite Designer)
  • Conversion du XPS en PDF (Boite de conversion vers PDF)
  • Envoi du résultat dans la réponse de la requête SOAP (Boite "Affichage dans le navigateur")


Warning-300px.png La boite permettant de renvoyer le résultat au consommateur doit se trouver dans le Workflow déclenché par le WebService. Elle ne peut en aucun cas se trouver dans un sous workflow invoqué par un "call".


Open Api Specification 3 (YAML)

 openapi: "3.0.0" 
 info:
   title: mapSoapRunStreamFromPost
   description: Send a file to Mapping
   version: "0.0.0"
 servers:
   - url: "{protocol}://{server}:{port}/mapsoapserver.exe"
     description: Local Server
     variables:
       protocol:
         default: 'http'
       server:
         default: '127.0.0.1'
       port:
         default: '8002'
 paths:
   /mapSoapRunStreamFromPost:
     post:
       summary: Send a file to a Mapping Workflow
       tags:
         - mapSoapRunStreamFromPost
       parameters: 
         - name: workflow
           in: query
           required: false
           description: Name of the workflow to call
           schema:
             type: string
             example: my_workflow
         - name: key
           in: query
           required: false
           description: key
           explode: true
           style: form
           schema:
             type: array
             items:
               type: string
             example: my_key
         - name: value
           in: query
           required: false
           description: value
           explode: true
           style: form
           schema:
             type: array
             items:
               type: string
             example: my_value
       requestBody:
         required: true
         content:
           application/octet-stream:
             schema:
               type: string
               format: binary
       responses:
         '200':
           description: Base64 response sent by the Workflow
           content:
             application/xml:
               schema:
                 type: object
                 xml: 
                   name: 'Envelope'
                   prefix: 'soap'
                   namespace: "http://schemas.xmlsoap.org/soap/envelope/"
                 properties:
                   Body:
                     type: object
                     xml:
                       prefix: soap
                     properties:
                       mapSoapRunStreamFromPostResponse:
                         type: object
                         properties:
                           mapSoapRunStreamFromPostResult:
                             type: object
                             properties:
                               document:
                                 type: string
                                 format: byte
                                 description: base64 content