ONYX - 9.0 - Utilisation

mapSoapRunStreamFromPost

De MappingDoc
Cette page contient des modifications qui ne sont pas marquées pour la traduction.

Autres langues :
English • ‎français

Introduction

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

Cas d'usage :

  • Envoyer un fichier à Mapping pour récupérer de manière synchrone un fichier réponse (par exemple transmission d'un XML et réception d'un PDF en retour).
  • Envoyer un fichier de grande taille à Mapping, pour un traitement asynchrone. Tous types de fichiers sont acceptés.

Utilisation

  • Methode POST ou GET
Si la méthode POST est à privilégier, il reste cependant possible d'utiliser également la méthode GET. Cette dernière étant nécessaire pour passer les paramètres dans l'URL en cas d'invocation du WebService directement à partir d'un formulaire HTML pour réaliser des opérations simples et sans upload de fichier : <form action="http://mappingserver/cgi-bin/mapsoapserver.exe/mapSoapRunStreamFromPost" method="get">
  • Paramètres :
- Workflow : nom du workflow Mapping à invoquer
- Couples key/value : méta données
- Fichier à envoyer
- Type de réponse (XML avec fichier encodé en base64, ou directement le fichier)
Exemples : XML, PDF, XPS, TXT, CSV, EXE, JPG, PNG, ZIP etc...
  • Contrairement à la méthode mapUploadFile, l'utilisation de mapSoapRunStreamFromPost permet d'invoquer un workflow
  • Le contenu du fichier doit être passé directement dans le corps, sans enveloppe et sans encodage en base64.
  • Tous les paramètres <key/value> doivent être passés exclusivement dans l'URL (il n'y a pas d'enveloppe XML pour le corps, ni de prise en charge du multipart/form-data)
  • Dans le workflow :
    • Les couples key/value sont utilisables dans le workflow sous forme de variables [%xxxx%]
    • Le fichier est identifié par la variable [%MAP_FILE_IN%]
  • Si le paramètre "getobject=1" est ajouté à l'URL, le corps de la réponse contient directement le fichier issu du workflow sans enveloppe XML ni encodage en base64.

Exemple de requête SOAP ou REST

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?workflow=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?workflow=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)

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
      operationId: mapSoapRunStreamFromPost
      parameters: 
        - name: workflow
          in: query
          required: false
          description: Name of the workflow to call
          schema:
            type: string
            example: my_workflow
        - name: getobject
          in: query
          required: false
          description: Response type. 0:application/xml (SOAP)   1:octet-stream (pdf, raw file, binary data...)
          schema:
            type: string
          example: 1
        - name: key
          in: query
          required: false
          description: key
          explode: true
          style: form
          schema:
            type: array
            items:
              type: string
          example: ["my_key1","my_key2"]
        - name: value
          in: query
          required: false
          description: value
          explode: true
          style: form
          schema:
            type: array
            items:
              type: string
          example: ["my_value1","my_value2"]
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Successful response from 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
            application/octet-stream:
              schema:
                type: string
                format: binary