You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Compose for Desktop app that can be used to view Workflow traces.
3
+
A Compose for Desktop application that visualizes and debugs Workflow execution traces. This tool
4
+
helps developers understand the hierarchical structure and execution flow of their Workflow
5
+
applications by providing both file-based and live streaming trace visualization.
4
6
5
7
## Running
6
8
@@ -10,20 +12,75 @@ It can be run via Gradle using:
10
12
./gradlew :workflow-trace-viewer:run
11
13
```
12
14
13
-
By Default, the app will be in file parsing mode, where you are able to select a previously recorded workflow trace file for it to visualize the data.
15
+
## Usage Guide
14
16
15
-
By hitting the bottom switch, you are able to toggle to live stream mode, where data is directly pulled from the emulator into the visualizer. A connection can only happen once. If there needs to be rerecording of the trace, the emulator must first be restarted, and then the app must be restarted as well. This is due to the fact that any open socket will consume all render pass data, meaning there is nothing to read from the emulator.
17
+
By default, the app will be in file parsing mode, where you are able to select a previously recorded
18
+
workflow trace file for it to visualize the data. Once the workflow tree is rendered
19
+
in [File](#file-mode) or [Live](#live-mode) mode, you can switch frames (
20
+
see [Terminology](#Terminology)) to see different events that fired. All nodes are color coded based
21
+
on what had happened during this frame, and a text diff will show the specific changes. You can open
22
+
the right node panel and left click a box get a more detailed view of the specific node, or right
23
+
click to expand/collapse a specific node's children.
16
24
17
-
It is ***important*** to run the emulator first before toggling to live mode.
A connection can only happen once. There is currently no support for a recording of the trace data
58
+
due to the fact that an open socket will consume all render pass data when a connection begins. To
59
+
restart the recording:
60
+
61
+
1. (optional) Save the current trace
62
+
2. Switch out of Live mode
63
+
3. Restart the app
64
+
4. Switch back to Live mode, and the
18
65
19
66
### Terminology
20
67
21
-
**Trace**: A trace is a file — made up of frames — that contains the execution history of a Workflow. It includes information about render passes, how states have changed within workflows, and the specific props being passed through. The data collected to generate these should be in chronological order, and allows developers to step through the process easily.
68
+
`Trace`: A trace is a file — made up of frames — that contains the execution history of a Workflow.
69
+
It includes information about render passes, how states have changed within workflows, and the
70
+
specific props being passed through.
22
71
23
-
**Frame**: Essentially a "snapshot" of the current "state" of the whole Workflow tree. It contains relevant information about the changes in workflow states and how props are passed throughout.
72
+
`Frame`: Essentially a "snapshot" of the current "state" of the whole Workflow tree. It contains
73
+
relevant information about the changes in workflow states and how props are passed throughout.
24
74
25
-
- Note that "snapshot" and "state" are different from `snapshotState` and `State`, which are idiomatic to the Workflow library.
75
+
- Note that "snapshot" and "state" are different from `snapshotState` and `State`, which are
76
+
idiomatic to the Workflow library.
26
77
27
78
### External Libraries
28
79
29
-
[FileKit](https://github.com/vinceglb/FileKit) is an external library made to apply file operations on Kotlin and KMP projects. It's purpose in this app is to allow developers to upload their own json trace files. The motivation for its use is to quickly implement a file picker.
80
+
[FileKit](https://github.com/vinceglb/FileKit) is an external library made to apply file operations
81
+
on Kotlin and KMP projects. This simplified the development process of allowing file selection
82
+
83
+
## Future
84
+
85
+
This app can be integrated into the process of anyone working with Workflow, so it's highly
86
+
encouraged for anyone to make improvements that makes their life a little easier using this app.
0 commit comments