UiPath Documentation
functions
latest
false
Guía del usuario de funciones
  • Información general
    • Acerca de las funciones
  • Funciones de Python
  • Implementar y ejecutar

Crear funciones de Python

Una función de Python tiene tres partes: una entrada con tipo, una salida con tipo y una función de punto de entrada que asigna una a la otra. Esta página cubre cada uno, además de la gestión de errores y la exposición de múltiples funciones de un proyecto.

Entrada y salida escritas

Define Input y Output como Python escrito. Usa pydantic.dataclasses.dataclass, lo que usan las muestras de SDK, para que el runtime valide la carga útil entrante y exporte un esquema JSON limpio, incluso para campos opcionales, anidados y autorreferenciales. Un pydantic BaseModel se comporta de la misma manera; también se acepta una stdlib @dataclass y está bien para entradas simples y planas, pero no realiza validación y exporta esquemas menos completos para tipos complejos. Cada superficie de invocación representa ese esquema exportado para vincular variables: una tarea de servicio de Maestro, una actividad Ejecutar trabajo de Orchestrator o Ejecutar trabajo de Studio. El punto de entrada puede ser una sincronización def o una async def: ambos son compatibles.

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")

Tipos compatibles

  • Primitivas: str, int, float, bool
  • Matrices: list[str], list[dict]
  • Clases de datos anidadas o modelos pydantic
  • Campos anulables: Optional[X]

Asigna valores predeterminados a los campos para que el esquema se genere de forma limpia y la función sea fácil de invocar con entrada parcial.

Puntos de entrada

El archivo uipath.json declara qué funciones son invocables:

{
  "functions": {
    "main": "main.py:main"
  }
}
{
  "functions": {
    "main": "main.py:main"
  }
}

Múltiples puntos de entrada

Un solo proyecto puede exponer varias funciones. Enumere cada uno en uipath.json:

{
  "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"
  }
}

Ejecuta uipath init después de añadir puntos de entrada para regenerar los esquemas de entrada/salida.

Administración de errores

Una función puede señalar un error empresarial de dos maneras. Ambos son compatibles: elige en función de cómo el proceso de llamada maneja los fallos:

  • Devuélvelo en la salida. Añade campos como un marcador de estado o un error_message a tu Output. El trabajo se completa correctamente y la persona que llama, por ejemplo, un proceso de Maestro, se ramifica en esos campos.
  • Lanza una excepción. El trabajo falla con un error de categoría USERy tu mensaje de excepción se conserva en el fallo, por lo que la persona que llama puede manejarlo en sentido ascendente, por ejemplo, con un evento de límite en un proceso de Maestro.

Para devolver un error en la salida, añade los campos que necesitas y rellénalos en la ruta de error:

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))

Captura solo las excepciones que puedes describir de forma significativa. Deja que los errores inesperados se propaguen para que el trabajo falle: eso los muestra en el historial de trabajos de Orchestrator con el mensaje original intacto.

Próximos pasos

  • Entrada y salida escritas
  • Tipos compatibles
  • Puntos de entrada
  • Múltiples puntos de entrada
  • Administración de errores
  • Próximos pasos

¿Te ha resultado útil esta página?

Conectar

¿Necesita ayuda? Soporte

¿Quiere aprender? UiPath Academy

¿Tiene alguna pregunta? Foro de UiPath

Manténgase actualizado