Beispiele
Vollständige Beispiele und Use Cases für das App-SDK.
Das AppTemplate enthält ein vollständiges Starter-Projekt mit Engine, Authority, BPMN-Prozessen und AppSDK-Beispielen. Besonders empfehlenswert:
- App-Aufbau — Projektstruktur einer AppSDK-Anwendung
- UserTasks — User Task Handling im Praxis-Beispiel
- External Tasks — External Task Worker im AppTemplate
- Beispielprozess — End-to-End Grußprozess
Quick Examples
User Task Liste mit Server Component
app/tasks/page.tsx
import { getWaitingUserTasks } from '@5minds/processcube_app_sdk/server';
import Link from 'next/link';
export default async function TasksPage() {
const { userTasks } = await getWaitingUserTasks();
return (
<div>
<h1>Meine Aufgaben</h1>
{userTasks.length === 0 ? (
<p>Keine wartenden Aufgaben</p>
) : (
<ul>
{userTasks.map((task) => (
<Link key={task.flowNodeInstanceId} href={`/tasks/${task.flowNodeInstanceId}`}>
<li>
<strong>{task.flowNodeName}</strong> — {task.processName}
</li>
</Link>
))}
</ul>
)}
</div>
);
}Prozess starten mit Server Action
app/start/page.tsx
import { startProcess } from '@5minds/processcube_app_sdk/server';
import { redirect } from 'next/navigation';
export default function StartPage() {
async function handleStart(formData: FormData) {
'use server';
const result = await startProcess({
processModelId: 'OrderProcess',
startEventId: 'StartEvent_1',
initialToken: { orderId: formData.get('orderId') },
});
redirect(`/processes/${result.correlationId}`);
}
return (
<form action={handleStart}>
<input name="orderId" placeholder="Bestell-Nr." required />
<button type="submit">Prozess starten</button>
</form>
);
}External Task Handler
app/send_email/external_task.ts
import { ExternalTaskConfig } from '@5minds/processcube_app_sdk/server';
export const config: ExternalTaskConfig = {
lockDuration: 5000,
maxTasks: 3,
};
interface EmailPayload {
recipient: string;
subject: string;
body: string;
}
export default async function sendEmail(payload: EmailPayload) {
await fetch('https://api.example.com/send', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
});
return { success: true, sentAt: new Date().toISOString() };
}Authority Client in External Task
app/onboarding/external_task.ts
import { AuthorityClient } from '@5minds/processcube_app_sdk/server';
export default async function onboardUser(payload: { email: string; role: string }) {
const authority = new AuthorityClient();
await authority.addGroup(payload.email, 'Registered-Users');
await authority.addScope(payload.email, 'app_access');
await authority.updateClaim(payload.email, 'role', payload.role);
return { onboarded: true };
}Weiterführende Dokumentation
- Installation — Projekt einrichten
- Authentifizierung — User-Identity und Server-Identity
- Server-Funktionen — Alle Engine-Funktionen
- Komponenten — React-Komponenten
- External Tasks — Worker-Architektur und Handler