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
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.
Sélectionnez le processus que vous souhaitez publier en tant que WebService (ici "logSample") et cliquez sur le bouton "Suivant".
Confirmez le "Nom public du processus" et cliquez sur le bouton "Terminer".
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.
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.
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.
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 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".
Après avoir essayé la fonction, j'étais préoccupé par les points suivants.
Recommended Posts