I can run simple workflow

This commit is contained in:
2025-07-06 22:53:18 +02:00
parent e183584f52
commit 14be07720f
9 changed files with 282 additions and 8 deletions

View File

@@ -184,11 +184,13 @@ class WorkflowDesigner(BaseComponent):
WorkflowPlayer,
settings_manager=self._settings_manager,
tabs_manager=self.tabs_manager,
player_settings=WorkflowsPlayerSettings(workflow_name),
player_settings=WorkflowsPlayerSettings(workflow_name,
list(self._state.components.values())),
boundaries=boundaries)
player.run()
self.tabs_manager.add_tab(f"Workflow {workflow_name}", player, player.key)
# player.start(self._state.selected_component_id)
return self.tabs_manager.refresh()
def on_processor_details_event(self, component_id: str, event_name: str, details: dict):
@@ -436,9 +438,9 @@ class WorkflowDesigner(BaseComponent):
Fieldset(
Legend("Presenter", cls="fieldset-legend"),
Input(type="text",
name="presenter",
value=component.properties.get("filter", ""),
placeholder="Enter filter expression",
name="columns",
value=component.properties.get("columns", ""),
placeholder="Columns to display, separated by comma",
cls="input w-full"),
P("Comma separated list of columns to display. Use * to display all columns, source=dest to rename columns."),
cls="fieldset bg-base-200 border-base-300 rounded-box border p-4"

View File

@@ -1,12 +1,14 @@
import pandas as pd
from fasthtml.components import *
from components.BaseComponent import BaseComponent
from components.datagrid_new.components.DataGrid import DataGrid
from components.datagrid_new.settings import DataGridSettings
from components.workflows.commands import WorkflowPlayerCommandManager
from components.workflows.constants import WORKFLOW_PLAYER_INSTANCE_ID
from components.workflows.constants import WORKFLOW_PLAYER_INSTANCE_ID, ProcessorTypes
from components.workflows.db_management import WorkflowsPlayerSettings
from core.utils import get_unique_id, make_safe_id
from workflow.engine import WorkflowEngine, TableDataProducer, DefaultDataPresenter
grid_settings = DataGridSettings(
header_visible=True,
@@ -36,6 +38,20 @@ class WorkflowPlayer(BaseComponent):
grid_settings=grid_settings,
boundaries=boundaries)
def run(self):
engine = WorkflowEngine()
for component in self._player_settings.components:
if component.type == ProcessorTypes.Producer and component.properties["processor_name"] == "Repository":
engine.add_processor(TableDataProducer(self._session, self._settings_manager, component.properties["repository"], component.properties["table"]))
elif component.type == ProcessorTypes.Presenter and component.properties["processor_name"] == "Default":
engine.add_processor(DefaultDataPresenter(component.properties["columns"]))
res = engine.run_to_list()
data = [row.as_dict() for row in res]
df = pd.DataFrame(data)
self._datagrid.init_from_dataframe(df)
def __ft__(self):
return Div(
self._datagrid,

View File

@@ -44,6 +44,7 @@ class WorkflowsDesignerState:
@dataclass
class WorkflowsPlayerSettings:
workflow_name: str = "No Name"
components: list[WorkflowComponent] = None
@dataclass