ONYX - 9.0 - Utilisation - mapSoapRunStreamFromPost

Différence entre versions

De MappingDoc
(Open Api Specification 3)
(Open Api Specification 3)
Ligne 65 : Ligne 65 :
  
  
===Open Api Specification 3===
+
===Open Api Specification 3 (YAML)===
  
 
+
openapi: "3.0.0"  
openapi: "3.0.0"
+
info:
 
+
  title: mapSoapRunStreamFromPost
 
+
  description: Send a file to Mapping
info:
+
  version: "0.0.0"
  title: mapSoapRunStreamFromPost
+
servers:
  description: Send a file to Mapping
+
  - url: "{protocol}://{server}:{port}/mapsoapserver.exe"
  version: "0.0.0"
+
    description: Local Server
 
+
paths:
 
+
  /mapSoapRunStreamFromPost:
servers:
+
    post:
 
+
      summary: Send a file to a Mapping Workflow
  - url: "{protocol}://{server}:{port}/mapsoapserver.exe"
+
      tags:
    description: Local Server
+
        - mapSoapRunStreamFromPost
 
+
      parameters:  
 
+
        - name: workflow
paths:
+
          in: query
 
+
          required: false
 
+
          description: Name of the workflow to call
  /mapSoapRunStreamFromPost:
+
          schema:
    post:
+
            type: string
      summary: Send a file to a Mapping Workflow
+
            example: my_workflow
      tags:
+
        - name: metadatas
        - mapSoapRunStreamFromPost
+
          in: query
      parameters:  
+
          required: false
        - name: workflow
+
          description: array of metadatas [key/value]
          in: query
+
          schema:
          required: false
+
            type: array
          description: Name of the workflow to call
+
            items:
          schema:
+
              type: object
            type: string
+
              properties:
            example: my_workflow
+
                key:
        - name: metadatas
+
                  type: string
          in: query
+
                value:
          required: false
+
                  type: string
          description: array of metadatas [key/value]
+
      responses:
          schema:
+
        '200':
            type: array
+
          description: List of queues
            items:
+
          content:
              type: object
+
            application/xml:
              properties:
+
              schema:
                key:
+
                type: object
                  type: string
+
                xml:  
                value:
+
                  name: 'Envelope'
                  type: string
+
                  prefix: 'soap'
      responses:
+
                  namespace: "http://schemas.xmlsoap.org/soap/envelope/"
        '200':
+
                properties:
          description: List of queues
+
                  Body:
          content:
+
                    type: object
            application/xml:
+
                    xml:
              schema:
+
                      prefix: soap
                type: object
+
                    properties:
                xml:  
+
                      mapSoapRunStreamFromPostResponse:
                  name: 'Envelope'
+
                        type: object
                  prefix: 'soap'
+
                        properties:
                  namespace: "http://schemas.xmlsoap.org/soap/envelope/"
+
                          mapSoapRunStreamFromPostResult:
                properties:
+
                            type: object
                  Body:
+
                            properties:
                    type: object
+
                              document:
                    xml:
+
                                type: string
                      prefix: soap
+
                                format: byte
                    properties:
+
                                description: base64 content (if synchronous use)
                      mapSoapRunStreamFromPostResponse:
 
                        type: object
 
                        properties:
 
                          mapSoapRunStreamFromPostResult:
 
                            type: object
 
                            properties:
 
                              document:
 
                                type: string
 
                                format: byte
 
                                description: base64 content (if synchronous use)
 

Version du 21 mai 2019 à 17:29

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

Utilisation

  • Methode POST
  • Contrairement à la méthode mapUploadFile, l'utilisation de mapSoapRunStreamFromPost permet d'invoquer un workflow
  • Le contenu du fichier doit être passé directement à la place de l'enveloppe XML, tel quel (pas d'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)
  • Dans le workflow :
    • Les couples key/value sont récupérables sous forme de variables [%xxxx%]
    • Le fichier est identifié par [%MAP_FILE_IN%]

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"


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"

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
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: metadatas
          in: query
          required: false
          description: array of metadatas [key/value]
          schema:
            type: array
            items:
              type: object
              properties:
                key:
                  type: string
                value:
                  type: string
      responses:
        '200':
          description: List of queues
          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 (if synchronous use)