Exécutez le processus Blue Prism en utilisant Python (SOAP)

introduction

Blue Prism expose les processus (robots) en tant que WebServices qui peuvent être exécutés en externe. Dans cet article, je vais écrire un client en Python et appeler le processus Blue Prism.

Il existe deux prérequis pour exécuter un processus exposé en tant que WebService. [Article séparé](https://qiita.com/muuuuuwa/items/8fdd65eb0e0b71263644#blue-prism-%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3% 83% BC% E3% 82% B5% E3% 83% BC% E3% 83% 93% E3% 82% B9% E3% 82% 92% E8% B5% B7% E5% 8B% 95% E3% 81% Définissons les prérequis en faisant référence à 99% E3% 82% 8B).

  • A. Le service serveur Blue Prism est en cours d'exécution
  • B. Il y a une ressource d'exécution démarrée sur le commutateur public

Publier le processus en tant que WebService

Dans le client interactif, ouvrez l'onglet "Système" et sélectionnez "Traiter> Publier". Cliquez sur "Publier le processus" affiché sur le côté droit de l'écran. publish_process_00.jpg

Sélectionnez le processus que vous souhaitez publier en tant que WebService (ici "logSample") et cliquez sur le bouton "Suivant". publish_process_01.jpg

Confirmez le "Nom public du processus" et cliquez sur le bouton "Terminer". publish_process_02.jpg

Compte tenu de l'opération réelle, il semble nécessaire de séparer le corps principal du processus long et du processus qui n'accepte que le processus, et de faire en sorte que la réponse soit renvoyée de manière synchrone au client WebService.

Créer un client en Python

Téléchargez le WSDL.

Le WSDL du processus publié est publié par ** Runtime Resources ** (il n'y a pas d'API pour que le serveur renvoie un WSDL, n'est-ce pas?). Cette fois, nous exposons les ressources d'exécution sur le port 8183, alors ouvrez http: //127.0.0.1: 8183 / ws / dans votre navigateur. Ensuite, une liste des processus publiés en tant que WebService sera affichée comme indiqué ci-dessous. webservice_list.jpg

Cette fois, téléchargez et utilisez le fichier WSDL depuis cette page. Enregistrez-le sous `` logSample.xml '' dans le répertoire où vous développez le script Python.

Installez les modules Python requis

Préparez l'environnement de développement de scripts Python avec Pipenv.

% pipenv --python 3.7
Creating a virtualenv for this project…
Pipfile: /Users/m-nakamura/Documents/blueprism-process-invoker_/Pipfile
Using /Users/m-nakamura/.pyenv/versions/3.7.4/bin/python3 (3.7.4) to create virtualenv…
⠹ Creating virtual environment...Using base prefix '/Users/m-nakamura/.pyenv/versions/3.7.4'
New python executable in /Users/m-nakamura/.local/share/virtualenvs/blueprism-process-invoker_-30X4pztG/bin/python3
Also creating executable in /Users/m-nakamura/.local/share/virtualenvs/blueprism-process-invoker_-30X4pztG/bin/python
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter /Users/m-nakamura/.pyenv/versions/3.7.4/bin/python3

✔ Successfully created virtual environment!
Virtualenv location: /Users/m-nakamura/.local/share/virtualenvs/blueprism-process-invoker_-30X4pztG
Creating a Pipfile for this project…

Installez les bibliothèques requises. Pour utiliser SOAP en Python, Zeep semble être recommandé, alors utilisez ceci. Zeep est pratique!

% pipenv install zeep
Installing zeep…
Adding zeep to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (663ec6)!
Installing dependencies from Pipfile.lock (663ec6)…
    ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 15/15 — 00:00:03
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

L'une des fonctionnalités de Zeep est la possibilité d'inspecter le contenu d'un WSDL (https://python-zeep.readthedocs.io/en/master/index.html#getting-started). Si vous essayez, vous verrez que les paramètres d'entrée et de sortie du processus sont de type xsd: string```.

% pipenv run python -m zeep logSample.xml 

Prefixes:
     xsd: http://www.w3.org/2001/XMLSchema
     ns0: urn:blueprism:webservice:logsample

Global elements:


Global types:
     xsd:anyType
     xsd:ENTITIES
     xsd:ENTITY
     xsd:ID
     xsd:IDREF
     xsd:IDREFS
     xsd:NCName
     xsd:NMTOKEN
     xsd:NMTOKENS
     xsd:NOTATION
     xsd:Name
     xsd:QName
     xsd:anySimpleType
     xsd:anyURI
     xsd:base64Binary
     xsd:boolean
     xsd:byte
     xsd:date
     xsd:dateTime
     xsd:decimal
     xsd:double
     xsd:duration
     xsd:float
     xsd:gDay
     xsd:gMonth
     xsd:gMonthDay
     xsd:gYear
     xsd:gYearMonth
     xsd:hexBinary
     xsd:int
     xsd:integer
     xsd:language
     xsd:long
     xsd:negativeInteger
     xsd:nonNegativeInteger
     xsd:nonPositiveInteger
     xsd:normalizedString
     xsd:positiveInteger
     xsd:short
     xsd:string
     xsd:time
     xsd:token
     xsd:unsignedByte
     xsd:unsignedInt
     xsd:unsignedLong
     xsd:unsignedShort

Bindings:
     Soap11Binding: {urn:blueprism:webservice:logsample}logSampleSoapBinding

Service: logSampleService
     Port: logSampleSoap (Soap11Binding: {urn:blueprism:webservice:logsample}logSampleSoapBinding)
         Operations:
            logSample(message: xsd:string) -> outmessage: xsd:string

Créez un script Python avec le nom `` logsample.py '' dans le même répertoire où vous avez enregistré le fichier WSDL avec le nom logsample.xml.

from pathlib import Path
from zeep import Client

from requests import Session
from requests.auth import HTTPBasicAuth
from zeep.transports import Transport

# Définir les informations d'identification Blue Prism
session = Session()
session.auth = HTTPBasicAuth('admin', 'admin_password_xxxxxx')

# Récupère le chemin du fichier WSDL enregistré dans le même répertoire
wsdl = Path.cwd() / "logSample.xml"
client = Client(str(wsdl), transport=Transport(session=session))
service = client.service

# Spécifiez les paramètres d'entrée du service logSample avec des arguments nommés
res = service.logSample(message="hogehoge")

# Les paramètres de sortie à chaîne unique sont renvoyés directement en tant que réponse
print(type(res))
print(res)

Exécutez le processus

Exécutez le script dans le répertoire où le logSample.py '' que vous avez créé précédemment est stocké. Les paramètres de sortie du processus sont sortis et vous pouvez confirmer que le processus a été exécuté.

% pipenv run python logSample.py
<class 'str'>
exec at 04/01/20 23:25:12hogehoge

Vous pouvez également voir qu'il a été exécuté à partir du client interactif. Ouvrez l'onglet "Contrôles" et ouvrez "Gestion de session> Aujourd'hui". process_results.jpg

problème

Après avoir essayé la fonction, j'étais préoccupé par les points suivants.

Recommended Posts

Exécutez le processus Blue Prism en utilisant Python (SOAP)
Essayez d'utiliser le module Python Cmd
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
Derrière le flyer: utiliser Docker avec Python
Tweet à l'aide de l'API Twitter en Python
Où est écrit le processus d'instanciation python?
Travailler avec OpenStack à l'aide du SDK Python
Redémarrez le routeur en utilisant Python, Selenium, PhantomJS
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Définissez le nom du processus du programme Python
python setup.py tester le code en utilisant le multiprocessus
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
Agréger les résultats des tests à l'aide de la bibliothèque Python QualityForward
vprof - J'ai essayé d'utiliser le profileur pour Python
[Python] Exécutons le module régulièrement en utilisant schedule
Création d'un processus de numérotation à l'aide de python dans le processus de numérotation locale DynamoDB
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Jusqu'à ce que l'exemple de changefinder s'exécute sur python
Essayez d'utiliser le framework Web Python Tornado Partie 1
Envoyer Gmail à la fin du processus [Python]
J'ai essayé d'utiliser le module Datetime de Python
Pré-traiter l'index en Python à l'aide de ScriptUpdateProcessor de Solr
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Essayez d'utiliser le module de collections (ChainMap) de python3
Exécutez des fichiers Python à partir de HTML en utilisant Django
Essayez d'utiliser le framework Web Python Tornado Partie 2
Exécutez des scripts Python à partir d'Excel (en utilisant xlwings)
Essayez d'utiliser l'API DropBox Core avec Python
Commencez à utiliser Python
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
Découpez une partie de la chaîne à l'aide d'une tranche Python
[AWS IoT] Enregistrer des éléments dans AWS IoT à l'aide du SDK AWS IoT Python
Exécutez avec CentOS7 + Apache2.4 + Python3.6 pour le moment
Le processus d'installation d'Atom et de l'exécution de Python
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Via un proxy d'authentification pour la communication à l'aide de python urllib3
Déterminer le seuil à l'aide de la méthode P-tile en python
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Explication du concept d'analyse de régression à l'aide de Python Partie 1
Écrire des données dans KINTONE à l'aide du module de requêtes Python
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
Traiter les données csv avec python (traitement du comptage à l'aide de pandas)
[Python] Masquez l'image dans un cercle à l'aide de Pillow
[Introduction à Python] Comment arrêter la boucle en utilisant break?
Explication du concept d'analyse de régression à l'aide de Python Extra 1
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Étude de Python Hour8: Utilisation de packages
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~