A core function of Reworkd is AI powered workflow automation. This documentation covers key concepts within our workflow platform.

Frontend models

The workflow hierarchy follows a graph-like structure. The frontend models only prescribe the front-end view of the workflow.

  • A workflow is the graph itself. It represents the workflow in its entirety
  • A node is a single element within a workflow. It has a position
  • An edge represents a connection between two nodes of a workflow

Backend models

The backend models represent the mechanisms to actually perform work for a given node. Each frontend Node will have an associated Block. Node represents the frontend view / position while the Block represents what will actually happen when that Node is run. For example, a “SlackMessageBlock” is a Block that, when executed, would send a user a message on “Slack”.

Adding a new block

To add a new block, start by updating the frontend:

  • open next/src/services/workflow/node-block-definitions.ts
  • figure it out
  • (soon block definitions on frontend will be set from backend and edits won’t be needed here)

Then update the backend:

  • open platform/reworkd_platform/schemas/workflow/blocks
    • add a new file for your block
    • define the block’s input and output types as classes
    • add a class for the block with
      • attributes: type, description, image_url, and input
      • async method: run
  • install dependencies for your block with poetry add
  • open platform/reworkd_platform/web/api/workflow/blocks/web/init.py
    • import your block
    • add an if branch to get_block_runner
  • docker compose down; docker compose up --build

Node types

  • Triggers: Designate how workflows are run
  • Actions: Performs a concrete piece of “work”