Tipos de Bloques

Categorías de Bloques de Análisis

Explore diferentes tipos de bloques incluyendo filtros, calculadoras y configuraciones de alertas. Conozca las capacidades de cada tipo, opciones de configuración y puntos de creación.

Bloques de Filtro

POST /api/{tenantId}/{projectId}/block/filter

Los bloques de filtro aplican criterios de filtrado de datos a conjuntos de datos, reduciendo los datos mediante condiciones como rangos de fechas, filtros de valores o expresiones lógicas. Son la base para un análisis enfocado en subconjuntos de datos específicos.

Capacidades

  • Filtrado por Rango de Fechas: Filtrar datos dentro de periodos de tiempo específicos
  • Filtrado por Actividad: Incluir o excluir actividades de proceso específicas
  • Filtrado por Atributo de Caso: Filtrar basado en propiedades y metadatos del caso
  • Filtrado por Rango de Valores: Aplicar condiciones numéricas y de texto
  • Lógica Compleja: Combinar múltiples filtros con operaciones AND/OR

Cuerpo de la Solicitud

{
  "notebookId": "660e8400-e29b-41d4-a716-446655440000",
  "blockTitle": "Filtro por Rango de Fechas",
  "blockDescription": "Filtra datos de proceso para los últimos 30 días"
}

Ejemplos de Configuración

// Configuración de filtro por rango de fechas
{
  "filterType": "dateRange",
  "startDate": "2024-01-01T00:00:00Z",
  "endDate": "2024-01-31T23:59:59Z",
  "dateField": "timestamp"
}

// Configuración de filtro por actividad
{
  "filterType": "activity",
  "include": ["Order Created", "Payment Processed"],
  "exclude": ["System Log"]
}

// Configuración de filtro por atributo de caso
{
  "filterType": "caseAttribute",
  "attribute": "customerType",
  "operator": "equals",
  "value": "Premium"
}

Bloques de Calculadora

POST /api/{tenantId}/{projectId}/block/calculator

Los bloques de calculadora realizan operaciones matemáticas y cálculos analíticos sobre conjuntos de datos. Calculan métricas, agregaciones, medidas estadísticas y valores derivados para el análisis de minería de procesos.

Capacidades

  • Cálculos de Duración: Tiempos de ciclo y tiempos de entrega de procesos
  • Análisis de Frecuencia: Tasas y patrones de ocurrencia de actividades
  • Métricas de Rendimiento: Rendimiento, eficiencia y utilización
  • Análisis Estadístico: Media, mediana, percentiles y distribuciones
  • Fórmulas Personalizadas: Expresiones matemáticas complejas y KPIs

Cuerpo de la Solicitud

{
  "notebookId": "660e8400-e29b-41d4-a716-446655440000",
  "blockTitle": "Calculadora de Duración de Proceso",
  "blockDescription": "Calcula la duración promedio del caso y tiempos de ciclo"
}

Ejemplos de Configuración

// Configuración de cálculo de duración
{
  "calculationType": "duration",
  "startActivity": "Order Created",
  "endActivity": "Order Completed",
  "unit": "hours",
  "aggregation": "average"
}

// Configuración de cálculo de frecuencia
{
  "calculationType": "frequency",
  "groupBy": "activity",
  "timeWindow": "daily",
  "metric": "count"
}

// Configuración personalizada de cálculo KPI
{
  "calculationType": "custom",
  "formula": "(completedCases / totalCases) * 100",
  "resultUnit": "percentage",
  "name": "Tasa de Finalización"
}

Bloques de Alerta

POST /api/{tenantId}/{projectId}/block/alert

Los bloques de alerta monitorean condiciones de datos y disparan notificaciones cuando se cumplen criterios específicos. Proporcionan monitoreo automatizado y detección de excepciones para flujos de minería de procesos y requisitos de cumplimiento.

Capacidades

  • Monitoreo de Umbrales: Alertar cuando las métricas exceden límites definidos
  • Detección de Patrones: Identificar patrones inusuales en el comportamiento del proceso
  • Monitoreo de Cumplimiento: Rastrear el cumplimiento de reglas de negocio
  • Alertas de Rendimiento: Monitorear violaciones de SLA y degradación del rendimiento
  • Notificaciones en Tiempo Real: Alertas inmediatas para condiciones críticas

Cuerpo de la Solicitud

{
  "notebookId": "660e8400-e29b-41d4-a716-446655440000",
  "blockTitle": "Alerta de Violación de SLA",
  "blockDescription": "Alertas cuando la duración del caso excede el umbral de SLA"
}

Ejemplos de Configuración

// Configuración de alerta por umbral
{
  "alertType": "threshold",
  "metric": "caseDuration",
  "operator": "greaterThan",
  "threshold": 48,
  "unit": "hours",
  "severity": "high"
}

// Configuración de alerta por desviación de patrón
{
  "alertType": "patternDeviation",
  "baselinePattern": "Order -> Payment -> Fulfillment",
  "deviationTolerance": 0.1,
  "minOccurrences": 10
}

// Configuración de alerta de cumplimiento
{
  "alertType": "compliance",
  "rule": "approvalRequired",
  "condition": "amount > 1000",
  "requiredActivity": "Manager Approval"
}

Comparación de Tipos de Bloques

Elija el tipo de bloque adecuado para sus necesidades de análisis:

Tipo de Bloque Propósito Principal Entrada Salida Casos de Uso
Filtro Reducción y enfoque de datos Conjunto de datos completo Conjunto filtrado Análisis por periodo de tiempo, caminos específicos del proceso
Calculadora Cálculo de métricas y KPIs Conjunto de datos (filtrado o completo) Valores/métricas calculadas Medición de rendimiento, análisis estadístico
Alerta Monitoreo y notificaciones Métricas o conjunto de datos Condiciones de alerta/notificaciones Monitoreo de SLA, detección de excepciones

Ejemplo: Flujo Completo de Bloques

Este ejemplo demuestra la creación de diferentes tipos de bloques para un análisis integral:

// Crear un bloque de filtro para enfocar en datos recientes
const createDateFilter = async (notebookId) => {
  const response = await fetch(`/api/${tenantId}/${projectId}/block/filter`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    body: JSON.stringify({
      notebookId: notebookId,
      blockTitle: 'Filtro Últimos 30 Días',
      blockDescription: 'Enfocar análisis en datos recientes del proceso'
    })
  });
  return await response.json();
};

// Crear un bloque de calculadora para computar métricas
const createDurationCalculator = async (notebookId) => {
  const response = await fetch(`/api/${tenantId}/${projectId}/block/calculator`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    body: JSON.stringify({
      notebookId: notebookId,
      blockTitle: 'Calculadora de Duración Promedio',
      blockDescription: 'Calcular el tiempo promedio de procesamiento de casos'
    })
  });
  return await response.json();
};

// Crear un bloque de alerta para monitoreo
const createSLAAlert = async (notebookId) => {
  const response = await fetch(`/api/${tenantId}/${projectId}/block/alert`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    body: JSON.stringify({
      notebookId: notebookId,
      blockTitle: 'Alerta de Violación de SLA',
      blockDescription: 'Monitorear incumplimientos de SLA'
    })
  });
  return await response.json();
};

// Construir flujo completo de análisis
const buildAnalysisWorkflow = async (notebookId) => {
  try {
    // 1. Filtrar datos al periodo reciente
    const filterBlock = await createDateFilter(notebookId);
    console.log('Bloque de filtro creado:', filterBlock.blockId);

    // 2. Calcular métricas de rendimiento
    const calculatorBlock = await createDurationCalculator(notebookId);
    console.log('Bloque calculadora creado:', calculatorBlock.blockId);

    // 3. Configurar alertas de monitoreo
    const alertBlock = await createSLAAlert(notebookId);
    console.log('Bloque de alerta creado:', alertBlock.blockId);

    return {
      filter: filterBlock,
      calculator: calculatorBlock,
      alert: alertBlock
    };
  } catch (error) {
    console.error('Error al construir el flujo de trabajo:', error);
    throw error;
  }
};

Implementación en Python

import requests
from typing import Dict, Any

class BlockTypeManager:
    def __init__(self, base_url: str, tenant_id: str, project_id: str, token: str):
        self.base_url = base_url
        self.tenant_id = tenant_id
        self.project_id = project_id
        self.headers = {
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        }

    def create_filter_block(self, notebook_id: str, title: str, description: str) -> Dict[str, Any]:
        """Crear un bloque de filtro para reducción de datos"""
        url = f"{self.base_url}/api/{self.tenant_id}/{self.project_id}/block/filter"
        payload = {
            'notebookId': notebook_id,
            'blockTitle': title,
            'blockDescription': description
        }
        response = requests.post(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def create_calculator_block(self, notebook_id: str, title: str, description: str) -> Dict[str, Any]:
        """Crear un bloque de calculadora para cómputo de métricas"""
        url = f"{self.base_url}/api/{self.tenant_id}/{self.project_id}/block/calculator"
        payload = {
            'notebookId': notebook_id,
            'blockTitle': title,
            'blockDescription': description
        }
        response = requests.post(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def create_alert_block(self, notebook_id: str, title: str, description: str) -> Dict[str, Any]:
        """Crear un bloque de alerta para monitoreo"""
        url = f"{self.base_url}/api/{self.tenant_id}/{self.project_id}/block/alert"
        payload = {
            'notebookId': notebook_id,
            'blockTitle': title,
            'blockDescription': description
        }
        response = requests.post(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def create_analysis_pipeline(self, notebook_id: str) -> Dict[str, Any]:
        """Crear un pipeline completo de análisis con todos los tipos de bloques"""
        pipeline = {}

        # Crear bloque de filtro
        pipeline['filter'] = self.create_filter_block(
            notebook_id,
            'Filtro de Datos',
            'Filtrar conjunto de datos para el alcance del análisis'
        )

        # Crear bloque calculadora
        pipeline['calculator'] = self.create_calculator_block(
            notebook_id,
            'Calculadora de Rendimiento',
            'Calcular métricas clave de rendimiento'
        )

        # Crear bloque de alerta
        pipeline['alert'] = self.create_alert_block(
            notebook_id,
            'Alerta de Rendimiento',
            'Monitorear umbrales de rendimiento'
        )

        return pipeline

# Ejemplo de uso
block_manager = BlockTypeManager(
    'https://your-mindzie-instance.com',
    'tenant-guid',
    'project-guid',
    'your-auth-token'
)

# Crear pipeline completo de análisis
pipeline = block_manager.create_analysis_pipeline('notebook-guid')
print(f"Pipeline creado con {len(pipeline)} bloques")

Notas Importantes

Dependencias de Bloques: Los bloques pueden encadenarse donde los bloques de filtro reducen los datos, los bloques calculadora calculan métricas y los bloques de alerta monitorean los resultados para detectar excepciones.

Mejores Prácticas: Comience con bloques de filtro para reducir el alcance de los datos, luego use bloques calculadora para análisis y finalmente agregue bloques de alerta para monitoreo continuo y notificaciones.