Server Actions
Server Actions sind für den Aufruf aus Client Components oder Formularen gedacht.
import {
startProcess,
finishUserTask,
finishManualTask,
finishUntypedTask,
finishTask,
navigateToUrl,
} from '@5minds/processcube_app_sdk/server';Verfügbare Actions
| Action | Beschreibung |
|---|---|
startProcess(...) | Startet eine Prozessinstanz (Argumente wie Engine-Client) |
finishUserTask(flowNodeInstanceId, result, identity?) | Schließt eine User Task ab |
finishManualTask(flowNodeInstanceId, identity?) | Schließt eine Manual Task ab |
finishUntypedTask(flowNodeInstanceId, identity?) | Schließt eine generische bpmn:Task ab |
finishTask(flowNodeInstanceId, flowNodeType) | Universelle Finish-Funktion (erkennt Task-Typ) |
navigateToUrl(url) | Server-seitige Weiterleitung via Next.js redirect() |
Beispiel: Server Action in einem Formular
app/tasks/page.tsx
import { finishUserTask, getWaitingUserTasks } from '@5minds/processcube_app_sdk/server';
import { revalidatePath } from 'next/cache';
export default async function TasksPage() {
const { userTasks } = await getWaitingUserTasks();
async function handleFinish(flowNodeInstanceId: string) {
'use server';
await finishUserTask(flowNodeInstanceId, { approved: true });
revalidatePath('/tasks');
}
return (
<ul>
{userTasks.map((task) => (
<li key={task.flowNodeInstanceId}>
{task.flowNodeName}
<form action={handleFinish.bind(null, task.flowNodeInstanceId)}>
<button type="submit">Abschließen</button>
</form>
</li>
))}
</ul>
);
}Unterschied zu direkten Funktionen
Server Actions (startProcess, finishUserTask, …) sind Wrapper um die direkten Funktionen (getWaitingUserTasks, getProcessInstanceById, …), die speziell für den Aufruf aus Client Components optimiert sind:
- Sie nutzen
'use server'intern - Sie können direkt in
<form action={...}>verwendet werden - Sie behandeln die Identity automatisch