- Überblick
- Python-Funktionen
- Bereitstellen und ausführen
Eine Python-Funktion besteht aus drei Teilen: einer typisierten Eingabe, einer typisierten Ausgabe und einer Einstiegspunktfunktion, die die eine der anderen zuordnet. Diese Seite behandelt jede von ihnen sowie die Fehlerbehandlung und das Bereitstellen mehrerer Funktionen aus einem Projekt.
Eingegebene Eingabe und Ausgabe
Definieren Sie Input und Output als typisierte Pythons. Verwenden Sie pydantic.dataclasses.dataclass – was die SDK-Beispiele verwenden – damit die Laufzeit die eingehende Nutzlast validiert und ein sauberes JSON-Schema exportiert, auch für optionale, geschachtelte und selbstreferenzierende Felder. Ein pythTische BaseModel verhält sich genauso; Eine Stdlib @dataclass wird ebenfalls akzeptiert und ist für einfache, flache Eingaben in Ordnung, führt aber keine Validierung durch und exportiert weniger vollständige Schemas für komplexe Typen. Jede Aufrufoberfläche rendert dieses exportierte Schema, um Variablen zu binden – eine Serviceaufgabe von Maestro, eine Aktivität Run Job in Orchestrator oder eine Aktivität Run Job von Studio. Der Einstiegspunkt kann eine Synchronisierung von def oder async def sein – beide werden unterstützt.
from pydantic.dataclasses import dataclass
@dataclass
class Input:
document_id: str = ""
amount: float = 0.0
@dataclass
class Output:
result_id: str = ""
status: str = ""
def main(input: Input) -> Output:
# business logic
return Output(result_id="123", status="success")
from pydantic.dataclasses import dataclass
@dataclass
class Input:
document_id: str = ""
amount: float = 0.0
@dataclass
class Output:
result_id: str = ""
status: str = ""
def main(input: Input) -> Output:
# business logic
return Output(result_id="123", status="success")
Unterstützte Typen
- Primitive:
str,int,float,bool - Arrays:
list[str],list[dict] - Geschachtelte Datenklassen oder pylastische Modelle
- NULL-fähige Felder:
Optional[X]
Geben Sie Felder Standardwerte an, damit das Schema sauber generiert wird und die Funktion bei teilweiser Eingabe einfach aufgerufen werden kann.
Einstiegspunkte
Die Datei uipath.json deklariert, welche Funktionen aufrufbar sind:
{
"functions": {
"main": "main.py:main"
}
}
{
"functions": {
"main": "main.py:main"
}
}
Mehrere Einstiegspunkte
Ein einzelnes Projekt kann mehrere Funktionen bereitstellen. Listen Sie jede in uipath.json auf:
{
"functions": {
"extract": "main.py:extract_data",
"validate": "main.py:validate_data",
"post_erp": "main.py:post_to_erp"
}
}
{
"functions": {
"extract": "main.py:extract_data",
"validate": "main.py:validate_data",
"post_erp": "main.py:post_to_erp"
}
}
Führen Sie uipath init nach dem Hinzufügen von Einstiegspunkten aus, um die Eingabe-/Ausgabeschemas neu zu generieren.
Fehlerbearbeitung
Eine Funktion kann auf zwei Arten einen Geschäftsfehler signalisieren. Beide werden unterstützt – wählen Sie basierend auf der Art und Weise aus, wie der aufrufende Prozess Fehler behandelt:
- Geben Sie es in der Ausgabe zurück. Fügen Sie Felder wie ein Status-Flag oder ein
error_messagezu IhremOutputhinzu. Der Auftrag wird erfolgreich abgeschlossen und der Aufrufer – z. B. ein Maestro-Prozess – verzweigt sich in diesen Feldern. - Löst eine Ausnahme aus. Der Auftrag schlägt mit einem Fehler der Kategorie
USERfehl und Ihre Ausnahmemeldung wird im Fehler gespeichert, sodass der Aufrufer sie im Vorfeld behandeln kann – z. B. mit einem angehefteten Ereignis in einem Maestro-Prozess.
Um einen Fehler in der Ausgabe zurückzugeben, fügen Sie die benötigten Felder hinzu und füllen Sie sie im Fehlerpfad aus:
from pydantic.dataclasses import dataclass
@dataclass
class Output:
result_id: str = ""
status: str = ""
error_type: str = ""
error_message: str = ""
def main(input: Input) -> Output:
try:
result = process_data(input)
return Output(result_id=result, status="success")
except ValidationError as exc:
return Output(status="error", error_type="VALIDATION_ERROR", error_message=str(exc))
from pydantic.dataclasses import dataclass
@dataclass
class Output:
result_id: str = ""
status: str = ""
error_type: str = ""
error_message: str = ""
def main(input: Input) -> Output:
try:
result = process_data(input)
return Output(result_id=result, status="success")
except ValidationError as exc:
return Output(status="error", error_type="VALIDATION_ERROR", error_message=str(exc))
Erfassen Sie nur die Ausnahmen, die Sie aussagekräftig beschreiben können. Lassen Sie unerwartete Fehler so werden, dass die Auftragsfehler auftreten – dass sie im Orchestrator-Auftragsverlauf mit der ursprünglichen Nachricht angezeigt werden.
Nächste Schritte
- Zugriff auf Plattformdienste – Lesen Sie Assets und Dateien zur Laufzeit.
- Nachverfolgung und Beobachtbarkeit – machen Ausführungsschritte in der Ablaufverfolgung sichtbar.