feat: `ActionGraph` vs. `StateGraph`

Abierto
#420 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Tranquilo
Stack tecnológico
python

Línea de trabajo

Comienza con el método .visualize() existente y sus opciones para aristas condicionales y valores de estado. Define cómo debe representar un grafo de estados los campos de estado como nodos, las acciones como aristas y los valores de sequence_id para la monitorización; el issue no nombra archivos de implementación ni pruebas, por lo que primero es necesario aclarar el diseño y los requisitos de rollback.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area/visualization kind/feature priority/low

Currently, the .visualize() method returns a graph where actions are nodes and transitions are edges. Parameters allow to display conditional edges and state values that are read/written. Let's call this the action graph. This helps understand the logic of the application and shows the previous/next action at runtime.

Here's an example:

image

Another relevant visualization would be the state graph where state fields are nodes and actions are edges. Currently, there are no visual tools to know all the state fields before execution. This puts emphasis on the dataflow of the application (converts a state machine graph to a dataflow, similar to Hamilton). During monitoring or debugging, we can number nodes with a sequence_id to know when it was last updated.

image

This graph being confusing is not indicative of the value of the plot, but rather that simplification could be made. It becomes obvious that feedback_history is redundant with the many persisted instance of feedback

(This other graph structure is key to create rollback mechanisms. If the field input_document is updated on sequence 1 and 7, and you want to rollback the value of input_document when at sequence 10, we know we have to rollback to sequence 1 (or do some diff with 7 rather "undo" each step from 10 to 1)

Lenguaje dominante
Python
Estrellas
2.6k
Forks
212
Merge medio
5 d 14 h
PR fusionados (30 d)
39

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/burr

Todos los issues de apache/burr

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.