Skip to main content

BPMN reporting decorator for Azure Functions

Project description

BPMN Reporting Decorator

A Pythonic decorator to track function execution and report events (STARTED, COMPLETED, ERROR) in the background.

Features

  • Non-blocking: Uses asyncio.create_task to fire events while your code runs.
  • Async & Sync: Works with both async def and standard def functions.
  • Masking: Built-in support for Mustache-based payload transformation.
  • Error Tracking: Automatically reports exceptions before re-raising them.

Usage

1. Basic Setup

Wrap any function to track its lifecycle.

import asyncio
from bpmn_reporting import bpmn_element

@bpmn_element(id="User_Task_01", process_id="Order_Process")
async def my_business_logic(data):
    # Do work here
    return {"status": "processed"}


# Execute
if __name__ == "__main__":
    asyncio.run(my_business_logic({"id": 123}))

2. Masking & Transformations

Use mask_params to remove sensitive data or reformat payloads using Mustache templates or functions.

@bpmn_element(
    id="Process_Payment",
    mask_params={
        "password": None,  # Removes field from reporting
        "total": "{{amount}} {{ccy}}",  # Recomputes field using Mustache
        "user": lambda p: p['email']  # Recomputes using a function
    }
)
async def process_payment(payload):
    # original payload: {"password": "123", "amount": 10, "ccy": "EUR", "email": "mario@test.com"}
    return {"tx_id": "ABC-123"}

Configuration

Set the following environment variables in your local .env or Azure Function App settings:

Variable Required Description Default
REPORTING_SERVER true Base URL of the reporting API
REPORTING_PROCESS_ID Default Process ID if not set in decorator
REPORTING_PROCESS_VERSION Version of the process 1.0
REPORTING_PROCESS_DEBUG Set to true to see event logs false

Testing

python3 -m pytest tests/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

process_reporting-1.1.4.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

process_reporting-1.1.4-py2.py3-none-any.whl (9.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file process_reporting-1.1.4.tar.gz.

File metadata

  • Download URL: process_reporting-1.1.4.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for process_reporting-1.1.4.tar.gz
Algorithm Hash digest
SHA256 4fa0dd3d28b5b4cce9662ad52084a500e0d0ef0327efcdd1dbbadd4654d35843
MD5 d072a46c1533f4f1b3fb757958818985
BLAKE2b-256 0eaee63c316baca8b85d716d707df9df9b36d2934fea695ac6d783fd8c00377c

See more details on using hashes here.

File details

Details for the file process_reporting-1.1.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for process_reporting-1.1.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 552f9ec38bccdb2b3d56a3d5a573181c4f1ffee5887344f139b1511573a6209a
MD5 b48aef41bdebf3a2c3c794c78f0b9d78
BLAKE2b-256 1e316477601df8e0b29e7eadb21ccc3c128ca40e8b67a97309ab95df6bdecef8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page