Vize: CodeGen - Architekt Byznys Logiky
Až doteď jsme se soustředili na generování stavebních kamenů aplikace (CRUD operace, UI). Elsa nám umožňuje generovat mozek a nervovou soustavu, která tyto kameny propojuje a vdechuje jim život.
Náš systém už nebude jen pasivně reagovat na kliknutí uživatele. Bude proaktivně řídit a vykonávat byznys procesy, které se samy adaptují na základě změn v doménovém modelu.
Pilíř 4: Byznys Procesy jako Občané První Kategorie s Elsou
Problém: Složitá byznys logika (např. "když se vytvoří nová velká objednávka, upozorni manažera, zarezervuj skladové zásoby, a pokud není zaplaceno do 3 dnů, pošli upomínku") je tradičně "zadrátována" hluboko v kódu. Je těžké ji pochopit, změnit a testovat. Je neviditelná pro byznys uživatele.
Naše řešení: Atributy na entitách budou sloužit jako spouštěče (triggery) pro generování Elsa workflow. Logika opustí sevření C# kódu a stane se explicitním, vizuálním a modifikovatelným procesem.
Představ si nový, mocnější atribut:
[GenerateAllTheThings(PluralName = "Orders")]
[GenerateRefitClient]
[GenerateBlazorComponents]
// Nový atribut, který definuje byznys proces
[TriggersWorkflow(On = CrudOperations.Create,
WorkflowName = "NewOrderProcessing",
Condition = "Order.TotalAmount > 1000")]
public partial record Order { ... }
Co CodeGen udělá (Nová Stanice 7: Workflow Architect):
- Analyzuje Atributy a Eventy: Nástroj si všimne atributu
[TriggersWorkflow]a také vygenerovaného eventuOrderCreatedEvent. - Vygeneruje Vlastní Aktivity (pokud je potřeba): Pokud proces vyžaduje specifickou logiku, kterou Elsa nemá (např.
ReserveStock),CodeGenmůže vygenerovat i prázdnou kostru C# třídy pro tuto aktivitu, aby ji vývojář mohl jen doprogramovat.
Vygeneruje Šablonu Elsa Workflow: Vytvoří soubor NewOrderProcessing.elsa.json (nebo C# definici workflow) a uloží ho do dedikovaného projektu (např. TodoApp.Workflows). Tento soubor bude obsahovat kostru celého procesu.
// Vygenerováno v TodoApp.Workflows/NewOrderProcessing.elsa.json
{
"name": "NewOrderProcessing",
"trigger": {
"type": "Event", // Reaguje na MediatR notifikaci
"eventName": "OrderCreatedEvent"
},
"root": {
"type": "If",
"condition": "input.TotalAmount > 1000", // Podmínka z atributu
"then": {
"type": "Sequence",
"activities": [
{
"type": "SendEmail", // Placeholder aktivita
"to": "manager@example.com",
"subject": "Nová velká objednávka!",
"body": "Byla vytvořena nová objednávka {{input.OrderId}} v hodnotě {{input.TotalAmount}}."
},
{
"type": "ReserveStock", // Placeholder pro vlastní aktivitu
"orderId": "{{input.OrderId}}"
},
{
"type": "Timer", // Čekání
"timeout": "3.00:00:00" // 3 dny
},
// ... další kroky ...
]
}
}
}
Co tím získáme: Symbiózu Člověka a AI
Tohle je ten klíčový posun. Tvůj systém teď nebude jen "generátor", ale stane se inteligentním partnerem ve vývoji:
- Deklarace Záměru: Ty jako vývojář jen řekneš: "Při vytvoření velké objednávky se má spustit proces."
- Automatická Architektura:
CodeGense postará o veškerou "instalatérskou" práci:- Vytvoří DTO, handlery, API.
- Vytvoří Refit klienta a UI.
- Propojí backend s Elsou: Zajistí, že
OrderCreatedEventje správně publikován a že existuje Elsa workflow, které na něj naslouchá. - Připraví hřiště: Vygeneruje kostru workflow, kterou může byznys analytik nebo i ty sám otevřít ve vizuálním designeru Elsy a dokreslit specifickou byznys logiku (přidat další notifikace, integrace, podmínky).
Finální Vize: "Software, který se píše sám"
- Ty (Architekt): Napíšeš v C# pár řádků definujících entitu
Ordera její byznys pravidla pomocí atributů. CodeGen(Stavitel): Vezme tvůj blueprint a postaví celou infrastrukturu aplikace – databázi, API, frontend, a dokonce i kostru byznys procesů.- Byznys Uživatel / Ty (Procesní Inženýr): Otevřeš vizuální designer Elsy a naklikáš nebo upravíš konkrétní kroky, které se mají stát, když přijde nová objednávka. Už neprogramuješ, ale modeluješ proces.
- AI Agenti (Budoucnost): V budoucnu může AI na základě tvého textového zadání ("Chci, aby se u velkých objednávek posílaly upomínky") sama upravit ten vygenerovaný Elsa workflow.
Výsledkem je systém, kde se můžeš soustředit na tři klíčové role:
- Definování dat (Doména)
- Definování byznys pravidel na vysoké úrovni (Atributy)
- Modelování komplexních procesů (Elsa Designer)
Všechno mezi tím – veškerý ten nudný, repetitivní a chybový propojovací kód – přestane existovat. Je generován na vyžádání. To je skutečná továrna na software.