Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
plugin_pipeline.h
1#pragma once
2
3#include <QObject>
4#include <QSet>
5#include <mutex>
6
7#include "pipeline_action.h"
8#include "pipeline_context.h"
9#include "pipeline_graph.h"
10#include "result.h"
11
12class Pipeline;
13
14namespace maki
15{
17
18class PluginPipeline : public QObject
19{
20 Q_OBJECT
21
22public:
23 PluginPipeline(Pipeline* pipeline, QObject* parent = nullptr);
24 ~PluginPipeline();
25
26 VoidResult run(const PipelineGraph& graph, PipelineContext& context, bool clearCache);
27
28 PipelineActionRegistry* registry() const;
29 bool isRunning() const;
30 VoidResult abort();
31
32signals:
33 void nodeStarted(const QString& nodeId, const QString& displayName);
34 void nodeFinished(const QString& nodeId);
35 void nodeFailed(const QString& nodeId, const QString& error);
36 void pipelineStarted();
37 void pipelineFinished(const QString& generationDir);
38
39private:
40 PipelineActionRegistry* mRegistry = nullptr;
41 Pipeline* mPipeline;
42 QStringList mExecutionOrder;
43 int mCurrentIndex;
44 QString mCurrentGroup;
45 PipelineContext mContext;
46 PipelineGraph mGraph;
47 QString mProgressId;
48
49 mutable std::mutex mStateMutex;
50 enum class State
51 {
52 Idle,
53 Running,
54 Aborting
55 } mRunning;
56
57 std::optional<PipelineNode> findNode(const PipelineGraph& graph, const QString& nodeId) const;
58 VoidResult validateInputs(const IPipelineAction& action, const PipelineContext& context) const;
59 Result<QList<QString>> executionOrder(const PipelineGraph& graph) const;
60
61 VoidResult runNextNode();
62 VoidResult continueAfterNode();
63 void done(const QString& message);
64
65 int mInitialCount = 0;
66 QVector<QPointer<QWidget>> mOldWidgets = {};
67 QWidget* progressWidget() const;
68};
69
70} // namespace maki
Executes and manages a sequence of external processes.
Definition pipeline.h:22
Definition plugin_action_registry.h:13
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition generator.h:10
Definition pipeline_graph.h:38