FlowDrop Node Session
No security coverage
Flowdrop ecosystem
This module allows FlowDrop playground sessions to be initialized with Drupal entity data, such as nodes or terms. You can also optionally load specific entity revisions and launch the playground with entity context through URL parameters.
FlowDrop Node Session provides entity context support for FlowDrop playground sessions, allowing workflows to be initialised with a Drupal entity (node, term, etc.) as context.
This module was born during the Drupal AI Hackathon - Play to Impact 2026, organized by the European Commission.
Key Features
- Entity-Context Sessions: Create playground sessions pre-loaded with entity data
- Revision Support: Optionally load specific entity revisions
- URL-based Playground: Launch playground with entity context via URL parameters
Installation
drush en flowdrop_node_session -y drush cr
Usage
1. Add EntityContext Node to Workflow
In the FlowDrop editor, add an EntityContext node. It outputs:
entity: Full serialized entity (fields, metadata)entity_type,entity_id,bundle,revision_idis_default_revision: Boolean
2. Launch Playground with Entity Context
Visit the URL with query parameters:
/admin/flowdrop/workflows/{workflow_id}/playground/entity?entity_type=node&entity_id=1
Optional parameters: bundle, revision_id, session_name
3. API Endpoint
POST /api/flowdrop-node-session/workflows/{workflow_id}/sessions Content-Type: application/json { "entity_type": "node", "entity_id": "1", "revision_id": "5", // optional "bundle": "article", // optional "name": "Session Name" // optional }
Creating URLs Programmatically
Route: flowdrop_node_session.playground.entity
use Drupal\Core\Url; // Basic URL $url = Url::fromRoute('flowdrop_node_session.playground.entity', [ 'workflow_id' => 'my_workflow', ], [ 'query' => [ 'entity_type' => 'node', 'entity_id' => '123', ], ]); // With revision $url = Url::fromRoute('flowdrop_node_session.playground.entity', [ 'workflow_id' => 'my_workflow', ], [ 'query' => [ 'entity_type' => 'node', 'entity_id' => '123', 'revision_id' => '456', 'bundle' => 'article', 'session_name' => 'My Session', ], ]); // Get URL string $urlString = $url->toString(); // In Twig {{ url('flowdrop_node_session.playground.entity', { 'workflow_id': 'my_workflow' }, { 'query': { 'entity_type': 'node', 'entity_id': node.id } }) }}
Route Parameters
Parameter Type Descriptionworkflow_id
route
Workflow machine name
entity_type
query
Entity type ID (required)
entity_id
query
Entity ID (required)
revision_id
query
Revision ID (optional)
bundle
query
Bundle for validation (optional)
session_name
query
Custom session name (optional)
Services
// Get the service $nodeSessionService = \Drupal::service('flowdrop_node_session.service'); // Create session with entity context $session = $nodeSessionService->createSessionWithEntityContext( $workflow, 'node', '123', 'article', // bundle (optional) '456' // revision_id (optional) ); // Check if session has entity context $hasContext = $nodeSessionService->hasEntityContext($session); // Get entity context from session $context = $nodeSessionService->getEntityContext($session);