Portal Community

The Boundary

DimensionApp StudioFlow Studio
LayerUI / PresentationBusiness Logic / Orchestration
Primary artifactApp (visual UI)Workflow (process definition)
User interacts withApp Studio runtime (browser)App Studio UI triggers Flow Studio; HIL panels
Executes onBrowser (frontend SPA)C# process engine (backend)
PersistenceApp definition in AIExtension.ServiceWorkflow state in process engine store
Designed inApp Studio builder (this tool)Flow Studio canvas
Roles involvedApp designers, business analystsProcess engineers, architects

How They Work Together

The typical integration pattern is: App Studio triggers → Flow Studio executes.

1

User Interacts with App Studio

A user clicks "Approve" on a button widget in an App Studio dashboard. The button has a trigger-workflow action configured.

2

App Studio Fires Trigger Action

App Studio's action executor calls POST /api/workflows/{processId}/execute with the current app variables as input (e.g., { entityId: "{{ route.id }}" }).

3

Flow Studio Workflow Executes

The process engine picks up the trigger, runs the workflow nodes (validations, notifications, database updates, sub-workflows), and produces output.

4

App Studio Reflects the Result

On workflow completion, App Studio can navigate to a success page, show a notification, or refresh a DataGrid — all configured in the action chain.

Human-in-the-Loop (HIL) Integration

When a Flow Studio workflow reaches a HIL (Human-in-the-Loop) suspension point — requiring a human to review and approve before proceeding — the HIL task appears in the user's WorkDesk inbox. App Studio can be configured to display HIL tasks inline by embedding the WorkDesk HIL widget, or users access their tasks via the WorkDesk standalone application.

Rule of Thumb

If a user can see it and click it, it belongs in App Studio. If it needs to happen automatically, in sequence, with retries, conditionally, or asynchronously — it belongs in Flow Studio.

What NOT to Do

Do Not Put Business Logic in Custom JS

App Studio Custom JS is sandboxed and designed for UI transformations only (sorting, formatting, conditional display). Do not put business rules, validation logic, or data processing in Custom JS. That belongs in Flow Studio nodes or the AIExtension.Service layer.

Do Not Duplicate Data in App Variables

App variables are UI state — they are lost on page refresh unless URL-synced. Do not use them to store business data that should be persisted. Persist data through the AIExtension.Service (form submit actions or workflow triggers).