Getting Started
Das ProcessCube® App-SDK ermöglicht die schnelle Entwicklung von Next.js-basierten Anwendungen mit direkter Integration zur ProcessCube® Engine.
Voraussetzungen
Node.js Installation
- Node.js 18 oder neuer
- macOS, Windows und Linux werden unterstützt
Next.js Projekt
Ein bestehendes Next.js Projekt (Version 13+ mit App Router empfohlen)
Falls noch kein Projekt vorhanden ist:
npx create-next-app@latest my-processcube-app
cd my-processcube-appInstallation
App-SDK installieren
Installieren Sie das ProcessCube® App-SDK in Ihrem Next.js Projekt:
npm install @5minds/processcube_app_sdk@latestDas App-SDK ist kompatibel mit Next.js 13, 14 und 15.
Next.js Konfiguration
Für Next.js 14.2.2+
Fügen Sie in der next.config.js folgende Konfiguration hinzu:
const nextConfig = {
experimental: {
serverComponentsExternalPackages: ['esbuild'],
},
};
module.exports = nextConfig;Für Next.js 15+
Fügen Sie in der next.config.ts folgende Konfiguration hinzu:
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
serverExternalPackages: ['esbuild'],
};
export default nextConfig;Diese Konfiguration ist erforderlich, damit das App-SDK korrekt mit Next.js Server Components funktioniert.
Environment Variables
Erstellen Sie eine .env.local Datei im Projekt-Root:
# ProcessCube Engine
PROCESSCUBE_ENGINE_URL=http://localhost:10560
# ProcessCube Authority (optional, bei Authentifizierung)
PROCESSCUBE_AUTHORITY_URL=http://localhost:11235Wenn die Engine auf dem Standard-Port 10560 läuft, kann die Variable weggelassen werden.
Weitere Environment Variables finden Sie in der Configuration.
Erste Schritte
User Tasks abrufen
Erstellen Sie eine einfache Seite, die wartende User Tasks abruft:
import { getWaitingUserTasks } from '@5minds/processcube_app_sdk/server';
export default async function Page() {
// User Tasks von der Engine abrufen
const userTaskList = await getWaitingUserTasks();
return (
<div>
<h1>Wartende User Tasks</h1>
<ul>
{userTaskList.userTasks.map((userTask) => (
<li key={userTask.flowNodeInstanceId}>
{userTask.flowNodeName}
</li>
))}
</ul>
</div>
);
}Development Server starten
npm run devÖffnen Sie http://localhost:3000 im Browser. Sie sollten nun eine Liste der wartenden User Tasks sehen.
API Struktur
Das App-SDK bietet zwei Import-Pfade:
Server-Side Functions
Für Next.js Server Components und Server Actions:
import {
getWaitingUserTasks,
finishUserTask,
startProcessInstance
} from '@5minds/processcube_app_sdk/server';Client-Side Components
Für React Client Components:
import {
RemoteUserTask,
SplitterLayout
} from '@5minds/processcube_app_sdk/client';Server-Side Functions sollten bevorzugt werden, da sie keine Authentifizierung im Browser erfordern.
Vollständiges Beispiel
Ein vollständiges Beispiel mit User Task Handling:
import { getWaitingUserTasks, finishUserTask } from '@5minds/processcube_app_sdk/server';
import { revalidatePath } from 'next/cache';
export default async function TasksPage() {
const userTaskList = await getWaitingUserTasks();
// Server Action zum Abschließen einer Task
async function handleFinishTask(flowNodeInstanceId: string) {
'use server';
await finishUserTask({
flowNodeInstanceId,
userTaskResult: { completed: true },
});
// Seite neu laden
revalidatePath('/tasks');
}
return (
<div className="container mx-auto p-4">
<h1 className="text-2xl font-bold mb-4">Meine Aufgaben</h1>
{userTaskList.userTasks.length === 0 ? (
<p className="text-gray-500">Keine wartenden Aufgaben</p>
) : (
<div className="space-y-4">
{userTaskList.userTasks.map((task) => (
<div
key={task.flowNodeInstanceId}
className="border rounded-lg p-4"
>
<h3 className="font-semibold">{task.flowNodeName}</h3>
<p className="text-sm text-gray-600">
Prozess: {task.processName}
</p>
<form action={handleFinishTask.bind(null, task.flowNodeInstanceId)}>
<button
type="submit"
className="mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"
>
Abschließen
</button>
</form>
</div>
))}
</div>
)}
</div>
);
}Mit Authentifizierung
Wenn Ihre Engine mit ProcessCube® Authority abgesichert ist:
import { getWaitingUserTasks } from '@5minds/processcube_app_sdk/server';
import { getServerSession } from 'next-auth';
export default async function TasksPage() {
// Session abrufen (z.B. mit NextAuth.js)
const session = await getServerSession();
if (!session) {
return <div>Bitte melden Sie sich an</div>;
}
// User Tasks mit Access Token abrufen
const userTaskList = await getWaitingUserTasks({
accessToken: session.accessToken,
});
return (
<div>
{/* Tasks anzeigen */}
</div>
);
}Mehr zur Authentifizierung finden Sie in den Examples.
Project Structure
Empfohlene Projektstruktur:
my-processcube-app/
├── app/
│ ├── tasks/ # User Task Seiten
│ ├── processes/ # Prozess-Verwaltung
│ └── page.tsx # Homepage
├── components/ # Shared Components
├── lib/ # Helper Functions
├── .env.local # Environment Variables
├── next.config.ts # Next.js Config
└── package.jsonNächste Schritte
- Configuration - Environment Variables und Plugin System
- Components - Vorgefertigte React Components
- Functions - Alle verfügbaren Helper Functions
- Examples - Vollständige Beispiele und Use Cases
Troubleshooting
esbuild Error
Problem: Error: Cannot find module 'esbuild'
Lösung: Fügen Sie die serverComponentsExternalPackages bzw. serverExternalPackages Konfiguration hinzu (siehe oben).
Engine nicht erreichbar
Problem: ECONNREFUSED oder Cannot connect to engine
Lösungen:
- Prüfen Sie, ob die Engine läuft
- Überprüfen Sie
PROCESSCUBE_ENGINE_URLin.env.local - Testen Sie die Engine-URL:
curl http://localhost:10560
Type Errors
Problem: TypeScript-Fehler beim Import
Lösung: Stellen Sie sicher, dass Sie die neueste Version des App-SDK installiert haben:
npm install @5minds/processcube_app_sdk@latestBest Practice: Verwenden Sie Server Components wann immer möglich - sie sind performanter und sicherer als Client Components.