{"nodes":{"jflz4k8otvjtjun86fq4fbb25d5ox6yc":{"type":"start","x":0,"y":0,"properties":{"title":"1 Understanding Nodes","excerpt":"","author":"GraVersal","license":"CC BY 4.0","channel":"chat","category":"Tutorial - Basics","post":"## How GraVersal Flows Work: Nodes, State, and Properties\n\nIn **GraVersal**, flows are built from **nodes**. Each node can both **hold knowledge** and **perform actions**. For example, a **Message Node** can send a message directly to the chat.\n\n### When does a node become active?\n\nA node only becomes **active** if it’s **directly or indirectly connected to the Start Node**. If it isn’t connected, it stays **inactive** which makes it easy to spot parts of a flow that can’t be reached.\n\n### State: what a node knows about itself\n\nNodes also track knowledge about themselves, called **state**. If you click a node, you can inspect its state like seeing which messages have already been sent or whether the last question has been answered.\n\nState matters because it can be referenced in **edges** to decide **which path the flow should take next**. And because state can change repeatedly, paths can be **enabled or disabled dynamically** over time.\n\n### Properties: stable configuration\n\nIn addition to state, nodes have **properties**. You edit these in the editor, and they remain **stable throughout a session**. In short: anything you can actively configure on a node is a **property**.\n\nThat’s the core idea: nodes act, state drives decisions, and properties define stable behavior.","slug":""}},"tw29mfd6qsr0fmq3s570kctr18fg0wqp":{"type":"message","x":316.38653197268565,"y":-67.84643904090338,"properties":{"text":"In GraVersal, __nodes__ contain knowledge and perform actions.","repeatOnReentry":true}},"krs4iepqo9gaji9l6ybdcjsjk1c3mwik":{"type":"message","x":-431.80317972380055,"y":-75.22042307259879,"properties":{"text":"new message","repeatOnReentry":true}},"shc5cjflbr8zr9adi41p1prapar6u4gm":{"type":"conclusion","x":-402.12856573422664,"y":165.4313558327483,"properties":{}},"kxuwer3iw3n4pxhw5osxt4ral8e24301":{"type":"question","x":-228.6817679345899,"y":326.36780589370636,"properties":{"text":"Question","repeatOnReentry":true,"reviewable":true}},"fm3xc4ftyroyaxl2x5dmqvynjqs9gh7y":{"type":"prompt","x":-153.13870476836055,"y":-290.5695077785618,"properties":{"placeholder":"Type your message"}},"84kdc5z81nrfyr9oviws3neuvboj5eb7":{"type":"number","x":152.65436967408039,"y":-309.2444150154339,"properties":{}},"0qu8wlekie6nkrqqpldbhp0jdwr6tc0y":{"type":"timer","x":106.98853279408328,"y":273.8532136125767,"properties":{"seconds":"10"}},"ervoly033eshtyy1qk3j4jb6vppvj03f":{"type":"message","x":474.9722738467991,"y":183.09410006361847,"properties":{"text":"For example, a message node can send a message to the chat.","repeatOnReentry":true}},"547bdwcpng03z3z054lww8g5ku8pum37":{"type":"message","x":371.01469350055686,"y":452.49136425542383,"properties":{"text":"A node can only become active if it is directly or indirectly **connected to the start node**.","repeatOnReentry":true}},"dd3ho798snubva0zecaf0xcb3a8yior1":{"type":"message","x":103.16808205987289,"y":581.4336807826511,"properties":{"text":"As you can see, some nodes are inactive because they are not connected.","repeatOnReentry":true}},"1tmojayhssbvln3myiq27srehzd5v2g0":{"type":"question","x":-221.1037558043726,"y":608.8077437081078,"properties":{"text":"Would you like to know more?","repeatOnReentry":true,"reviewable":true}},"8ov6n810lesyv9q3kduewqoqczv3zog2":{"type":"suggestion","x":-435.2385301974906,"y":544.3646679738263,"properties":{"value":"","label":"Yes"}},"dn321fnz21gqzjhb46l64syx50wcnmcc":{"type":"message","x":-694.8765782134844,"y":109.79405250574692,"properties":{"text":"**Click on a node** to see its state. You can see that some messages have already been sent and that the last question has been answered.","repeatOnReentry":true}},"326xx1hquwfr85x5pv79h4b8q9yssyn4":{"type":"message","x":-640.308344207798,"y":348.11521560209866,"properties":{"text":"Nodes contain knowledge about themselves. We call this **state**.","repeatOnReentry":true}},"v1knj6oladhtirx32vevivez9lqt4y6e":{"type":"message","x":-704.8029417485067,"y":-139.9582132256992,"properties":{"text":"States are very important because they can be used in edges to **decide which path to take**.\n\nStates can change over and over again, enabling or disabling paths.","repeatOnReentry":true}},"kpb9hoop6de2u1f0w95n4s2so5fbuoks":{"type":"question","x":-590.0275014127756,"y":-344.145429602521,"properties":{"text":"Do you want to know more now?","repeatOnReentry":true,"reviewable":true}},"ifjabkczq8ojl2kmewhpl5x6mo5kl8xr":{"type":"suggestion","x":-428.52077382763247,"y":-473.67253329035407,"properties":{"value":"","label":"Yes"}},"2e0nbn3xd9oly8fsmxw3pca52qd91zld":{"type":"message","x":-209.5495869686348,"y":-574.947542766962,"properties":{"text":"Nodes also have **properties**. You can edit these in the editor. Properties are stable and do not change over the course of a session.","repeatOnReentry":true}},"3owooa0cd81nb9wwnbah8olau2pc4iax":{"type":"message","x":74.1029721212347,"y":-604.0924742131818,"properties":{"text":"Anything you can actively configure on a node is a property.","repeatOnReentry":true}},"vzsvnxs95d6miuphsc402if4urqkg326":{"type":"message","x":316.7372708741676,"y":-573.186418191144,"properties":{"text":"Okay. Now you know about nodes, states, and their properties.","repeatOnReentry":true}},"zwb4sme6g0v99v0zp7prvzj2kmniym5m":{"type":"jump","x":593.4061547566872,"y":-377.6495601034612,"properties":{"label":"Back to tutorial start","flow":"https://platform.graversal.io/api/flows/xnggg7ykv5sppva649cd73r6zh2zfedg"}}},"edges":{"h08chh4qaqpz7i78ct4zzoxfaqia8svv":{"type":"may","from":"jflz4k8otvjtjun86fq4fbb25d5ox6yc","to":"tw29mfd6qsr0fmq3s570kctr18fg0wqp","properties":{"priority":4}},"yu1heku9j0rrrs8w741oxa7c1z6g3tzu":{"type":"may","from":"tw29mfd6qsr0fmq3s570kctr18fg0wqp","to":"ervoly033eshtyy1qk3j4jb6vppvj03f","properties":{"priority":4,"condition":"arrived"}},"vq3z39nam7wtxtkgj9105rkkk0m992b1":{"type":"may","from":"ervoly033eshtyy1qk3j4jb6vppvj03f","to":"547bdwcpng03z3z054lww8g5ku8pum37","properties":{"priority":4,"condition":"arrived"}},"tfi7a4qd0qaw3aa8kgfi3yx57eapjtbt":{"type":"may","from":"547bdwcpng03z3z054lww8g5ku8pum37","to":"dd3ho798snubva0zecaf0xcb3a8yior1","properties":{"priority":4,"condition":"arrived"}},"fq9vixtv2uq5srreooa3r9qkvnyefhtn":{"type":"may","from":"dd3ho798snubva0zecaf0xcb3a8yior1","to":"1tmojayhssbvln3myiq27srehzd5v2g0","properties":{"priority":4,"condition":"sent"}},"oi7zindlkb9bh8i3lpyamouccwroyp96":{"type":"may","from":"1tmojayhssbvln3myiq27srehzd5v2g0","to":"8ov6n810lesyv9q3kduewqoqczv3zog2","properties":{"priority":4,"condition":""}},"pa85vzx3dwxir8o37kc8q0i8yp6ksykw":{"type":"may","from":"8ov6n810lesyv9q3kduewqoqczv3zog2","to":"326xx1hquwfr85x5pv79h4b8q9yssyn4","properties":{"priority":4,"condition":"selected"}},"mqq85v41yztkw2brh7gzb6m8az7ujdrl":{"type":"may","from":"326xx1hquwfr85x5pv79h4b8q9yssyn4","to":"dn321fnz21gqzjhb46l64syx50wcnmcc","properties":{"priority":4,"condition":"arrived"}},"bo4vbae0o02yieikz9c316jrktl0t1sl":{"type":"may","from":"dn321fnz21gqzjhb46l64syx50wcnmcc","to":"v1knj6oladhtirx32vevivez9lqt4y6e","properties":{"priority":4,"condition":"arrived"}},"r58u2ratce10bi1qwucf8g3xqhavlubs":{"type":"may","from":"v1knj6oladhtirx32vevivez9lqt4y6e","to":"kpb9hoop6de2u1f0w95n4s2so5fbuoks","properties":{"priority":4,"condition":"arrived"}},"cj1yumm6lpeizc3ehp5azxesojrqxrl5":{"type":"may","from":"kpb9hoop6de2u1f0w95n4s2so5fbuoks","to":"ifjabkczq8ojl2kmewhpl5x6mo5kl8xr","properties":{"priority":4,"condition":""}},"yhrjya944ei2awviqkfmd4jjj6ob7k1b":{"type":"may","from":"ifjabkczq8ojl2kmewhpl5x6mo5kl8xr","to":"2e0nbn3xd9oly8fsmxw3pca52qd91zld","properties":{"priority":4,"condition":"selected"}},"vqq4xneugkn1ugw4sjphtrgvzzagyh5h":{"type":"may","from":"2e0nbn3xd9oly8fsmxw3pca52qd91zld","to":"3owooa0cd81nb9wwnbah8olau2pc4iax","properties":{"priority":4,"condition":"arrived"}},"jr50dszuqh8pmvj37oyhu7bbq51q4nfj":{"type":"may","from":"3owooa0cd81nb9wwnbah8olau2pc4iax","to":"vzsvnxs95d6miuphsc402if4urqkg326","properties":{"priority":4,"condition":"arrived"}},"36bdpd7ggfxobrb3588uxxj670fe5ox5":{"type":"may","from":"vzsvnxs95d6miuphsc402if4urqkg326","to":"zwb4sme6g0v99v0zp7prvzj2kmniym5m","properties":{"priority":4,"condition":"arrived"}}}}