Führen Sie den Blue Prism-Prozess mit Python (SOAP) aus.

Einführung

Blue Prism macht Prozesse (Roboter) als WebServices verfügbar und kann extern ausgeführt werden. In diesem Artikel schreibe ich einen Client in Python und rufe den Blue Prism-Prozess auf.

Es gibt zwei Voraussetzungen für die Ausführung eines Prozesses, der als WebService verfügbar gemacht wird. [Separater Artikel](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% Stellen wir die Voraussetzungen unter Bezugnahme auf 99% E3% 82% 8B) ein.

  • A. Der Blue Prism-Serverdienst wird ausgeführt
  • B. Auf dem öffentlichen Switch wurde eine Laufzeitressource gestartet

Veröffentlichen Sie den Prozess als WebService

Öffnen Sie im interaktiven Client die Registerkarte "System" und wählen Sie "Prozess> Veröffentlichen". Klicken Sie auf "Veröffentlichungsprozess", der auf der rechten Seite des Bildschirms angezeigt wird. publish_process_00.jpg

Wählen Sie den Prozess aus, den Sie als WebService veröffentlichen möchten (hier "logSample") und klicken Sie auf die Schaltfläche "Weiter". publish_process_01.jpg

Bestätigen Sie den "öffentlichen Namen des Prozesses" und klicken Sie auf die Schaltfläche "Fertig stellen". publish_process_02.jpg

In Anbetracht der tatsächlichen Operation scheint es notwendig zu sein, den Hauptteil des langen Prozesses und den Prozess, der nur den Prozess akzeptiert, zu trennen und so zu gestalten, dass die Antwort synchron an den WebService-Client zurückgegeben wird.

Erstellen Sie einen Client in Python

Laden Sie die WSDL herunter.

Die WSDL des veröffentlichten Prozesses wird von ** Runtime Resources ** veröffentlicht (es gibt keine API für den Server, um eine WSDL zurückzugeben, nicht wahr?). Dieses Mal stellen wir die Laufzeitressourcen auf Port 8183 zur Verfügung. Öffnen Sie daher `http: //127.0.0.1: 8183 / ws /` in Ihrem Browser. Anschließend wird eine Liste der als WebService veröffentlichten Prozesse angezeigt (siehe unten). webservice_list.jpg

Laden Sie dieses Mal die WSDL-Datei von dieser Seite herunter und verwenden Sie sie. Speichern Sie es als `` `logSample.xml``` in dem Verzeichnis, in dem Sie das Python-Skript entwickeln.

Installieren Sie die erforderlichen Python-Module

Bereiten Sie die Python-Skriptentwicklungsumgebung mit [Pipenv] vor (https://pipenv-ja.readthedocs.io/ja/translate-ja/).

% 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…

Installieren Sie die erforderlichen Bibliotheken. Um SOAP in Python zu verwenden, wird Zeep empfohlen. Verwenden Sie diese Option. Zeep ist bequem!

% 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.

Eine der Funktionen von Zeep ist die Möglichkeit, den Inhalt einer WSDL zu überprüfen (https://python-zeep.readthedocs.io/en/master/index.html#getting-started). Wenn Sie es versuchen, werden Sie feststellen, dass die Eingabe- und Ausgabeparameter des Prozesses vom Typ `` `xsd: string``` sind.

% 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

Erstellen Sie ein Python-Skript mit dem Namen `` `logsample.py``` in demselben Verzeichnis, in dem Sie die WSDL-Datei unter dem Namen logsample.xml gespeichert haben.

from pathlib import Path
from zeep import Client

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

# Legen Sie die Anmeldeinformationen für Blue Prism fest
session = Session()
session.auth = HTTPBasicAuth('admin', 'admin_password_xxxxxx')

# Ruft den Pfad der WSDL-Datei ab, die im selben Verzeichnis gespeichert ist
wsdl = Path.cwd() / "logSample.xml"
client = Client(str(wsdl), transport=Transport(session=session))
service = client.service

# Geben Sie die Eingabeparameter des logSample-Dienstes mit benannten Argumenten an
res = service.logSample(message="hogehoge")

# Ausgabeparameter für einzelne Zeichenfolgen werden direkt als Antwort zurückgegeben
print(type(res))
print(res)

Führen Sie den Prozess aus

Führen Sie das Skript in dem Verzeichnis aus, in dem die zuvor erstellte `` `logSample.py``` gespeichert ist. Die Ausgabeparameter des Prozesses werden ausgegeben, und Sie können bestätigen, dass der Prozess ausgeführt wurde.

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

Sie können auch sehen, dass es vom interaktiven Client ausgeführt wurde. Öffnen Sie die Registerkarte "Steuerelemente" und öffnen Sie "Sitzungsverwaltung> Heute". process_results.jpg

Problem

Nachdem ich die Funktion ausprobiert hatte, war ich besorgt über die folgenden Punkte.

Recommended Posts

Führen Sie den Blue Prism-Prozess mit Python (SOAP) aus.
Versuchen Sie es mit dem Python Cmd-Modul
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Hinter dem Flyer: Docker mit Python verwenden
Tweet mit der Twitter-API in Python
Wo ist der Python-Instanziierungsprozess geschrieben?
Arbeiten mit OpenStack mit dem Python SDK
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
Legen Sie den Prozessnamen des Python-Programms fest
python setup.py testet den Code mit Multiprocess
[Python] Smasher hat versucht, den Video-Ladevorgang mithilfe eines Generators zu einer Funktion zu machen
Aggregieren Sie die Testergebnisse mithilfe der QualityForward Python-Bibliothek
vprof - Ich habe versucht, den Profiler für Python zu verwenden
[Python] Lassen Sie uns das Modul regelmäßig nach Zeitplan ausführen
Erstellen eines Nummerierungsprozesses mit Python im lokalen DynamoDB-Nummerierungsprozess
Python: Versuchen Sie, die Benutzeroberfläche von Pythonista 3 auf dem iPad zu verwenden
Bis das Changefinder-Sample auf Python läuft
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Senden Sie Google Mail am Ende des Vorgangs [Python]
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Verarbeiten Sie den Index in Python mit dem ScriptUpdateProcessor von Solr vor
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Führen Sie Python-Dateien mit Django aus HTML aus
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Führen Sie Python-Skripte in Excel aus (mit xlwings).
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Starten Sie Python
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
Der Prozess der Installation von Atom und der Ausführung von Python
Grundeinstellungen bei Verwendung der foursquare-API mit Python
Über einen Authentifizierungs-Proxy für die Kommunikation mit Python urllib3
Bestimmen Sie den Schwellenwert mithilfe der P-Tile-Methode in Python
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Verarbeiten Sie CSV-Daten mit Python (Zählverarbeitung mit Pandas)
[Python] Maskiere das Bild mit Pillow zu einem Kreis
[Einführung in Python] Wie stoppe ich die Schleife mit break?
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
Verwenden Sie die Such-API der National Parliament Library in Python
Studie aus Python Hour8: Verwenden von Paketen
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~