Obtener el Grafo de Contexto del Proceso

El grafo de contexto del proceso es un documento JSON único que describe cómo se ejecuta realmente su proceso, construido a partir del registro de eventos de su proyecto: qué es un caso, cómo comienzan y terminan los casos, los pasos y los traspasos entre ellos, las rutas que siguen los casos, los puntos donde se dividen y las reglas que explican la división, qué sale mal, cuánto tiempo toman las cosas y quién hace qué. Cada parte indica la cantidad de datos en la que se basa.

"Grafo de contexto del proceso" es un nombre que el mercado usa sin un estándar definido detrás. Esto es lo que mindzie entiende por ello: un valor predeterminado que definimos, hecho a partir de cosas que el proyecto ya puede responder, puesto en un solo documento con una forma fija para que un agente pueda cargarlo y una persona pueda revisarlo. El proyecto puede responder mucho más de lo que contiene el grafo; Sus propios informes y JSON trata sobre eso.

Dos tipos de agente se conectan a través del grafo. El agente interno - el agente mindzie que se ejecuta en el proyecto - lo construye cuando se ejecuta el informe Grafo de Contexto del Proceso. Un agente externo - su propio agente codificado, trabajando desde su máquina - solicita el archivo al proyecto en una sola llamada. Conectar su propio agente le guía desde cero, con la imagen de cómo ambos encajan.

Para qué sirve

  • Un agente lo carga antes de trabajar en su proceso, para que conozca los nombres reales de los pasos, la ruta normal, los puntos de decisión y las excepciones, sin tener que descubrirlos pregunta a pregunta.
  • Una persona lo revisa. El mismo contenido se exporta como un informe en la pantalla de Informes, con un mapa del proceso, una tabla de decisiones para cada decisión explicada y la evidencia junto a cada afirmación. Las tablas del informe y el JSON se generan a partir de los mismos datos, por lo que no pueden decir cosas diferentes.

Es una descripción y solo una descripción. No recomienda nada, ni indica lo que alguien puede hacer.

Obténgalo en dos pasos

Paso 1 - Ejecute el informe Grafo de Contexto del Proceso una vez

En la pantalla: abra la pantalla Informes del proyecto, haga clic en Crear informe en la tarjeta Grafo de Contexto del Proceso, luego en Iniciar. Vea Informes.

Desde su propio agente: con el proyecto iniciado y sus datos cargados, el agente encuentra la tarjeta y la inicia:

mz reports cards
mz jobs create-agent --card process-context-graph
mz jobs run --slug process-context-graph
mz jobs status --slug process-context-graph

mz jobs create-agent --card responde con el slug del trabajo, que toman los dos comandos siguientes; en un proyecto donde la tarjeta nunca ha corrido es process-context-graph. La ejecución es un trabajo de IA: usa sus créditos de IA del proyecto. Cuando termina, el informe se publica en la pantalla de Informes como cualquier otro.

Espere. En un registro de 1.6 millones de eventos y unos 250,000 casos, la ejecución tomó 45 minutos, así que planee hasta una hora para un registro de ese tamaño. mz jobs status dice running hasta que dice done; no muestra progreso intermedio. Los trabajos en un proyecto se ejecutan uno por vez, por lo que cualquier otro que se inicie mientras espera.

Ejecutarlo de nuevo más tarde publica la siguiente versión del mismo informe. La versión anterior y su JSON permanecen exactamente como estaban.

Paso 2 - Recupere el grafo en una llamada

mz reports context-graph > process-context-graph.json

Esto escribe el grafo de contexto del proceso actual del proyecto en el archivo como JSON: el documento publicado más reciente que tiene la forma mindzie.process-context-graph. Nada se calcula de nuevo y no se usa IA – la llamada lee el informe ya publicado. El mismo documento es el archivo process-context-graph.json que lleva el informe de la tarjeta, por lo que mz reports attachment --slug process-context-graph --name process-context-graph.json devuelve exactamente los mismos bytes.

Si el informe nunca se ha ejecutado en este proyecto, la llamada se rechaza y menciona los comandos que lo crean (Paso 1). Nunca inicia la ejecución por sí misma, porque eso consumiría sus créditos de IA sin solicitud.

En Windows, ejecute esto en el Símbolo del sistema: Windows PowerShell recodifica el texto enviado a un archivo con >. Para comprobar el archivo contra la definición, vea Revise un grafo usted mismo, abajo. Cómo su agente obtiene mz y su clave está explicado en Conectar su propio agente.

Cómo es uno real

El grafo a continuación fue hecho por la tarjeta Grafo de Contexto del Proceso en un registro real de compra a pago: 1,593,532 eventos en 251,658 casos, un caso por línea de pedido. Su JSON mide unos 300 KB y contiene 44 pasos, 188 traspasos, 16 variantes, 25 puntos de decisión, 48 reglas de secuencia, 48 excepciones, 4 escalaciones, 25 políticas, 20 supuestos y 7 preguntas abiertas. Cumple la definición al final de esta página.

Representado como imagen

El flujo principal de un grafo de contexto del proceso real, dibujado desde su JSON

Esta imagen se dibujó directamente desde el JSON, mediante un pequeño script, para mostrar qué contiene. Muestra los pasos y los traspasos más frecuentes - cada uno tomado por al menos el 4 % de los casos - en las propias etapas del grafo, con cuántos casos toman cada traspaso y la espera típica. Las líneas gruesas son el flujo principal, las líneas punteadas otras rutas, y las líneas rojas punteadas lo que el grafo marca como excepciones. Se puede leer que el 72 % de los ítems terminan con Factura Liquidada y la espera típica más larga es desde la recepción de la factura hasta liquidarla, 36 días.

El JSON, abreviado

Tal cual lo recibió el agente, con la mayoría de listas truncadas a una entrada y 14 de las 22 partes omitidas, como indica la última línea. Cada afirmación lleva su evidencia: cuántos casos, de cuántos, cómo se midió y qué tan fuerte es.

{
  "schema": "mindzie.process-context-graph",
  "schema_version": "1.0",
  "source": {
    "data_version": "v0001",
    "log_digest": "4804d5916fc0",
    "case_notion": "una línea de pedido (número de pedido más número de ítem)",
    "cases": 251658,
    "events": 1593532,
    "period_start": "2015-03-08",
    "period_end": "2020-04-09",
    "time_basis": "clock"
  },
  "success_criteria": [
    {
      "id": "sc:cleared",
      "statement": "El ítem está pagado: el caso termina con Factura Liquidada.",
      "test": "último evento del caso es Factura Liquidada",
      "share_met": 0.7203,
      "evidence": {
        "cases": 181257,
        "of_cases": 251658,
        "share": 0.7203,
        "strength": "counted",
        "method": "conteo directo de casos cuyo último evento es Factura Liquidada"
      }
    }
  ],
  "outcomes": [
    {
      "id": "out:clear-invoice",
      "end_activity": "Clear Invoice",
      "kind": "success",
      "cases": 181257,
      "share": 0.7203
    },
    {
      "id": "out:record-invoice-receipt",
      "end_activity": "Record Invoice Receipt",
      "kind": "open",
      "cases": 23089,
      "share": 0.0917
    }
  ],
  "edges": [
    {
      "id": "edge:record-invoice-receipt>clear-invoice",
      "from": "act:record-invoice-receipt",
      "to": "act:clear-invoice",
      "kind": "normal",
      "cases": 132667,
      "share_of_from": 0.6575,
      "median_wait_hours": 865.617,
      "slow_wait_hours": 2479.663,
      "evidence": {
        "cases": 132667,
        "of_cases": 211303,
        "share": 0.6279,
        "strength": "counted",
        "method": "casos con este traspaso al menos una vez, sobre casos con el primer paso; las proporciones del primer paso cuentan cada visita"
      }
    }
  ],
  "decisions": [
    {
      "id": "dec:block-purchase-order-item",
      "at": "act:block-purchase-order-item",
      "branches": [
        {
          "to": "end",
          "cases": 163,
          "share": 0.3417
        },
        {
          "to": "act:delete-purchase-order-item",
          "cases": 131,
          "share": 0.2746
        },
        {
          "to": "act:reactivate-purchase-order-item",
          "cases": 111,
          "share": 0.2327
        },
        {
          "to": "act:change-quantity",
          "cases": 72,
          "share": 0.1509
        }
      ],
      "baseline_share": 0.3417,
      "rules": [
        {
          "id": "rule:block-purchase-order-item-1",
          "when": [
            "El área de gasto no es Comercio y Product End",
            "El valor de la orden (EUR) está entre 502.5 y 2884.5"
          ],
          "then": "act:delete-purchase-order-item",
          "cases": 113,
          "holds": 0.708,
          "evidence": {
            "cases": 80,
            "of_cases": 113,
            "share": 0.708,
            "strength": "weak",
            "method": "regla ajustada por árbol de decisión sobre los traspasos contados aquí; la proporción indica cuántas veces coincidió el siguiente paso"
          }
        }
      ],
      "explained": true,
      "evidence": {
        "cases": 477,
        "of_cases": 499,
        "share": 0.6688,
        "strength": "weak",
        "method": "primera visita al paso en cada caso; las reglas anotan 67% frente a 34% por siempre adivinar el siguiente paso más común; explicado requiere al menos 10 puntos más"
      }
    }
  ],
  "policies": [
    {
      "id": "pol:create-purchase-order-item-record-goods-receipt-within-30-days",
      "kind": "service_level",
      "statement": "Posible nivel de servicio, inferido: Crear Ítem de Orden de Compra -> Registrar Recepción de Mercancías en 30 días (88% de 74,809 casos terminan dentro; 8.1% terminan en el cuartil límite justo adentro, 4.0% justo afuera)",
      "threshold_hours": 720.0,
      "share_met": 0.8839,
      "evidence": {
        "cases": 66126,
        "of_cases": 74809,
        "share": 0.8839,
        "strength": "hypothesis",
        "method": "proporción de esperas positivas al o bajo el límite; se cuenta un límite cuando al menos la mitad de las esperas lo cumple y el doble cae en el cuartil justo adentro que just afuera"
      }
    }
  ],
  "...": "y 14 partes más"
}

Las partes

Parte Qué contiene
source De qué datos se construyó el grafo: versión de los datos, qué registro se leyó, qué es un caso, casos, eventos y período, tiempo de reloj o trabajo
process Qué representa un caso y para qué parece ser el proceso
success_criteria Cómo se reconoce un caso exitoso y la proporción de casos que cumple cada prueba
outcomes Todas las formas en que un caso termina, con sus casos y proporción
stages Las etapas por las que pasa un caso y las actividades en cada una
nodes Una entrada por actividad, además del inicio y fin: casos, eventos, repeticiones, tiempo típico al siguiente paso, roles
edges Una entrada por traspaso: casos, proporción, espera típica y la espera de los casos más lentos
variants La ruta principal, las variaciones permitidas y las rutas excepcionales con al menos un caso de cada cien
model Un modelo de proceso descubierto a partir de las rutas y la proporción de casos que acepta
decisions Cada punto donde los casos se dividen: ramas, y las reglas si-entonces que explican la división, si existen
sequence_rules Reglas de orden que casi siempre se cumplen, con la proporción de casos donde se cumplen
exceptions Pasos repetidos, saltados y fuera de orden, actividades raras y finales fallidos
escalations Pasos que aparecen principalmente después de una espera larga o un intento fallido
policies Límites de tiempo en los que la mayoría de casos se mantienen, y la proporción que cumple cada uno
roles Qué roles hacen qué actividades, cuando el registro indica quién hizo el trabajo
object_types, object_relations Los tipos de objeto y cómo se relacionan, para un registro centrado en objetos
evidence_levels Las cinco etiquetas de fuerza, definidas una vez cada una
assumptions, open_questions Lo que se decidió antes de empezar, lo que no pudo medirse y qué debe investigar el lector

Los conteos son números enteros, las proporciones son fracciones de 0 a 1 y los tiempos están en horas. Cada parte está presente en todo grafo; una lista sin datos está vacía en vez de faltante y ningún valor es nulo.

Algunas partes se cuentan mediante código: una segunda ejecución sobre los mismos datos da el mismo número. Otras son interpretación de los datos: qué representa un caso, qué finales cuentan como éxito, dónde están las etapas. El informe indica cuál es cuál.

Cuánto confiar en cada parte

Cada parte que hace una afirmación lleva un objeto evidence - cuántos casos la sustentan, cuántos podrían aplicarla, la proporción donde se cumple, cómo se midió - y una etiqueta de fuerza:

Etiqueta Significado
counted Conteo directo del registro
strong Se cumple en al menos el 95% de los casos relevantes y se basa en al menos 100 casos
moderate Se cumple en al menos el 80% y se basa en al menos 30 casos
weak Menos que lo anterior
hypothesis Deducido de nombres o tiempos de actividades, no probado como regla

Lea la fuerza primero: counted es un hecho sobre el registro; hypothesis es una idea que vale la pena revisar.

La definición completa

La forma es fija y versionada. Esta es la versión 1.0, y un documento que pasa una vez pasa para siempre; cualquier cambio en los campos es una nueva versión con su propio archivo esquema.

Descargar mindzie.process-context-graph-1.0.schema.json

El archivo esquema es la forma completa, como un JSON Schema (borrador-07) que cualquier validador lee. Cada grafo se chequea contra este cuando se publica su informe: un informe cuyo grafo no tenga la forma no se publica y el motivo nombra la parte y la falta.

Revise un grafo usted mismo

Coloque el archivo esquema junto al grafo y compruebe uno contra otro con cualquier validador JSON Schema. En Python, guarde esto como check_graph.py:

import json

import jsonschema

with open("process-context-graph.json", encoding="utf-8") as file:
    graph = json.load(file)
with open("mindzie.process-context-graph-1.0.schema.json", encoding="utf-8") as file:
    schema = json.load(file)

jsonschema.validate(graph, schema)
print("valid")

y ejecútelo:

pip install jsonschema
python check_graph.py

Imprime valid, o se detiene indicando la parte que no tiene la forma. Como el proyecto verifica cada grafo cuando se publica, un grafo publicado siempre pasa.

Próximo