Plugin idea: Visualize the action widgets as workflow graph

Now that we have HTTP request and Local LLM AI, I want to make a “Workflow” like coze.com or BPMN but runs inside wiki, and use Action widget as node in the graph (that executes something).

Combine multiple action widget seems like a common idea, do you know any prier works?

For me, there need to be

  1. A new action widget that executes all action widgets in another tiddler, or tiddlers from a list widget
    1. so we can share Workflow using plugin
    2. this feels like UGC/GPTs and SubGraph
  2. Need to use plain wikitext to express Graph structure (or at least DAG or Tree, and use the action widget described above to refer to itself to play in a loop)
    1. Currently, action widgets can warp other action widget to express “sequental execution”, like A → B → C is <$A> <$B> <$C /> </$B> </$A>
    2. and parallel execution C ← A → B is <$A> <$B/> <$C/> </$A>
    3. this can quickly become unreadable, so need to use a visual editor for it
    4. user don’t know most of the action widgets (I have to read tw5-com every time), so a GUI can help search for them and autocomplete fields)
  3. Some trigger like Is there a way to trigger an action on navigation? and Alarm Daemon to trigger daily actions
    1. it can ask local LLM to scan for possible wikilink to add, after wiki open and idle for 5min
    2. or auto update some todo tiddler’s status to Archive (update its fields) based on last modified date
  4. And a layout to organize these Workflows, like camunda marketplace

I’m still thinking how this will look like, so I will start this in half a year, inputs are welcome!

1 Like

@linonetwo I cant follow all your ideas here however I think you will see more answers and opportunities as you learn TiddlyWiki. A few thoughts;

  • As a rule actions widgets need a trigger, the basic trigger is a button but there is also navigation actions on clicking links to open tiddlers, the startup actions and some community members have created other triggers like timer based ones.
    • I point this out because in many ways a discussion about actions is incomplete without discussing their triggers.
    • Even using buttons as triggers there is more to know about how you code them and the order of operation.
  • However as demonstrated when using the actions= parameter, the actions we refer to can be defined in macros and procedures. This means you can write macros or procedures that include conditions and list widgets that themselves contain action widgets.
    • This means you can write procedures that accept parameters and can replace the more verbose action widget code in you code because you hide the complexity away in the procedure definition.

I have done a lot of related research on this subject and happy to discuss further however we need to discuss this a piece at a time.

So this plugin is going to add some new triggers, by adding some start-up module that adding message handlers.

  1. Allow send message to trigger a file of action, so we can use button to trigger a workflow graph
  2. Time-based trigger, I haven’t use any of them yet, maybe I need to write one?

I won’t use procedure to manage workflow, because I need to filter workflows, only tiddler can be filtered, procedure can’t be easily filtered and displayed as table.

None of your assertions sound correct here @linonetwo but I find it hard to demonstrate given I only see words and not minimal code examples of a problem.

You say file of action[s]?

<$button actions={{my-actions-tiddler}}>
Go button
</$button>

The above will transclude a tiddler “my-actions-tiddler” containing multiple action widgets on click of the “Go button”.

  • The my-actions-tiddler tiddler can even have the actions wrapped in conditional lists widgets and the will work. For example we need to do this to make use of the modifier variable

Look at @EricShulman’s timer solution, perhaps don’t reinvent the wheel, put your skills into missing features instead.

I think a workflow is the visualization of the “my-actions-tiddler” tiddler you described above. Its UI is like https://bpmn.omniworkflow.com/ , the branching is acturally “actions wrapped in conditional lists widgets”.

While I’m not sure if widget tree can have an exact mapping to a graph.

And there need to be a way to invoke a tiddler of actions without button, because I can make use of <$action-timeout> from It's About Time! — TiddlyTools: "Small Tools for Big Ideas!" (tm) to call the tiddlers itself, to create a loop, which corresponding to a circle in the workflow.

I’m deciding between two options:

  1. use bpmn-server library as runtime
    1. it will be a big library
    2. it support branching and loop out of box
    3. it save the workflow as json or xml, not tiddler with action widgets
  2. only use bpmn editor
    1. no additional dependency, directly execute action widgets
    2. need to use conditional syntax for branching, and use a widget to call tiddler itself for loop
    3. need to save the graph as a tiddler of actions, which might be difficult and prone to error.