Add durable workflow triggers and waits
This commit is contained in:
@@ -37,6 +37,7 @@ from govoplan_core.core.workflows import (
|
||||
CAPABILITY_WORKFLOW_DEFINITION_CONTRIBUTIONS,
|
||||
CAPABILITY_WORKFLOW_ORCHESTRATION,
|
||||
CAPABILITY_WORKFLOW_RUNTIME_WORKER,
|
||||
CAPABILITY_WORKFLOW_TRIGGER_DISPATCHER,
|
||||
)
|
||||
from govoplan_core.db.base import Base
|
||||
from govoplan_workflow_engine.backend.db import models as workflow_models
|
||||
@@ -113,7 +114,11 @@ ROLE_TEMPLATES = (
|
||||
slug="workflow_designer",
|
||||
name="Workflow designer",
|
||||
description="Design, validate, and publish workflow definitions.",
|
||||
permissions=(DEFINITION_READ_SCOPE, DEFINITION_WRITE_SCOPE, INSTANCE_READ_SCOPE),
|
||||
permissions=(
|
||||
DEFINITION_READ_SCOPE,
|
||||
DEFINITION_WRITE_SCOPE,
|
||||
INSTANCE_READ_SCOPE,
|
||||
),
|
||||
),
|
||||
RoleTemplate(
|
||||
slug="workflow_operator",
|
||||
@@ -146,6 +151,14 @@ def _runtime_worker(context: ModuleContext):
|
||||
return SqlWorkflowRuntimeWorker(registry=context.registry)
|
||||
|
||||
|
||||
def _trigger_dispatcher(context: ModuleContext):
|
||||
from govoplan_workflow_engine.backend.triggers import (
|
||||
SqlWorkflowTriggerDispatcher,
|
||||
)
|
||||
|
||||
return SqlWorkflowTriggerDispatcher(registry=context.registry)
|
||||
|
||||
|
||||
def _definition_contribution_provider(context: ModuleContext):
|
||||
from govoplan_workflow_engine.backend.contributions import (
|
||||
SqlWorkflowDefinitionContributionProvider,
|
||||
@@ -218,6 +231,10 @@ manifest = ModuleManifest(
|
||||
version="1.0.0",
|
||||
),
|
||||
ModuleInterfaceProvider(name="workflow.runtime_worker", version=MODULE_VERSION),
|
||||
ModuleInterfaceProvider(
|
||||
name="workflow.trigger_dispatcher",
|
||||
version="1.0.0",
|
||||
),
|
||||
ModuleInterfaceProvider(name="workflow.bpmn_interchange", version="1.0.0"),
|
||||
ModuleInterfaceProvider(
|
||||
name=CAPABILITY_WORKFLOW_SERVICE_LAUNCHER,
|
||||
@@ -274,6 +291,7 @@ manifest = ModuleManifest(
|
||||
_definition_contribution_provider
|
||||
),
|
||||
CAPABILITY_WORKFLOW_RUNTIME_WORKER: _runtime_worker,
|
||||
CAPABILITY_WORKFLOW_TRIGGER_DISPATCHER: _trigger_dispatcher,
|
||||
CAPABILITY_WORKFLOW_ORCHESTRATION: _orchestration_provider,
|
||||
WORKFLOW_CONFIGURATION_CAPABILITY: _configuration_provider,
|
||||
CAPABILITY_WORKFLOW_SERVICE_LAUNCHER: _service_launcher,
|
||||
@@ -291,6 +309,9 @@ manifest = ModuleManifest(
|
||||
script_location=str(Path(__file__).with_name("migrations") / "versions"),
|
||||
retirement_supported=True,
|
||||
retirement_provider=drop_table_retirement_provider(
|
||||
workflow_models.WorkflowWaitState,
|
||||
workflow_models.WorkflowTriggerDelivery,
|
||||
workflow_models.WorkflowTrigger,
|
||||
workflow_models.WorkflowInstanceEvent,
|
||||
workflow_models.WorkflowInstanceStep,
|
||||
workflow_models.WorkflowInstance,
|
||||
@@ -310,6 +331,9 @@ manifest = ModuleManifest(
|
||||
workflow_models.WorkflowInstance,
|
||||
workflow_models.WorkflowInstanceStep,
|
||||
workflow_models.WorkflowInstanceEvent,
|
||||
workflow_models.WorkflowTrigger,
|
||||
workflow_models.WorkflowTriggerDelivery,
|
||||
workflow_models.WorkflowWaitState,
|
||||
label="Workflow",
|
||||
),
|
||||
),
|
||||
@@ -331,7 +355,13 @@ manifest = ModuleManifest(
|
||||
layer="available",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("operator", "module_admin", "power_user", "product_owner"),
|
||||
related_modules=("dataflow", "datasources", "tasks", "notifications", "audit"),
|
||||
related_modules=(
|
||||
"dataflow",
|
||||
"datasources",
|
||||
"tasks",
|
||||
"notifications",
|
||||
"audit",
|
||||
),
|
||||
order=76,
|
||||
),
|
||||
DocumentationTopic(
|
||||
@@ -368,9 +398,23 @@ manifest = ModuleManifest(
|
||||
maturity="vertical_slice",
|
||||
documentation_ref="docs/ENGINE_EDITOR_SPLIT.md",
|
||||
test_ref="tests/test_instance_service.py",
|
||||
known_limits=("Execution adapters support declared conformance profiles but do not cover every editable BPMN semantic.",),
|
||||
owned_concepts=("workflow definition", "workflow revision", "workflow instance", "work transition", "execution adapter binding"),
|
||||
non_owned_concepts=("visual editor", "domain action", "notification", "dataflow run"),
|
||||
known_limits=(
|
||||
"Execution adapters support declared conformance profiles but do not cover every editable BPMN semantic.",
|
||||
"Native schedules intentionally support one-time and bounded interval starts; cron requires a future governed scheduler adapter.",
|
||||
),
|
||||
owned_concepts=(
|
||||
"workflow definition",
|
||||
"workflow revision",
|
||||
"workflow instance",
|
||||
"work transition",
|
||||
"execution adapter binding",
|
||||
),
|
||||
non_owned_concepts=(
|
||||
"visual editor",
|
||||
"domain action",
|
||||
"notification",
|
||||
"dataflow run",
|
||||
),
|
||||
recovery_docs=("docs/CONCEPT.md",),
|
||||
security_docs=("docs/CONCEPT.md",),
|
||||
operations_docs=("README.md",),
|
||||
|
||||
Reference in New Issue
Block a user