Skip to Content

Portal-Beispiele

Praktische Beispiele für ProcessCube® Portal-Anwendungen.

Beispiel 1: UserTask-Portal

Einfaches Portal für UserTask-Bearbeitung.

Flow-Struktur

Seite 1: Dashboard

[ui-page: Dashboard] ├─ [ui-text: Welcome Message] ├─ [ui-chart: Task Statistics] └─ [ui-button: Go to Tasks]

Seite 2: Task-Liste

[ui-page: Tasks] ├─ [inject: load on page open] │ → [query-usertasks-node] │ → [ui-table: tasks] └─ [ui-table: row click] → [link-out: show-task]

Seite 3: Task-Formular

[ui-page: Task Details] ├─ [link-in: show-task] │ → [function: load task data] │ → [ui-form: dynamic form] └─ [ui-form: submit] → [finish-usertask-node] → [ui-notification: success]

Code-Beispiele

Function: Load Task Data

const taskId = msg.payload.id; const task = flow.get(`task_${taskId}`); msg.payload = { taskId: taskId, formFields: task.formFields, processName: task.processModelId }; return msg;

Function: Finish Task

msg.userTaskInstanceId = msg.payload.taskId; msg.payload = { approved: msg.payload.approved, comment: msg.payload.comment }; return msg;

Beispiel 2: Field Service App

Mobile App für Techniker im Außendienst.

Features

  • Auftrags-Liste: Offene Aufträge anzeigen
  • Navigation: GPS-Navigation zum Kundenstandort
  • Foto-Upload: Bilder vom Einsatzort hochladen
  • Unterschrift: Digitale Unterschrift des Kunden
  • Offline-Support: Arbeiten ohne Internet

Flow-Beispiel

[ui-page: Service Orders] ├─ [ui-table: orders] ├─ [ui-button: Navigate] // Opens Maps ├─ [ui-file-upload: photos] ├─ [ui-signature-pad: customer signature] └─ [ui-button: Complete Order] → [finish-usertask-node]

Beispiel 3: Process Monitoring Dashboard

Dashboard für Process-Überwachung.

Widgets

[ui-page: Monitoring] ├─ [ui-chart: Processes per Day] ├─ [ui-gauge: Active Processes] ├─ [ui-table: Recent Processes] └─ [ui-chart: Average Duration]

Data-Flow

[inject: every 10 seconds] → [query-process-instances-node] → [function: calculate statistics] → [ui-chart: update]

Statistics Function:

const processes = msg.payload; // Active Processes msg.activeCount = processes.filter(p => p.state === 'running').length; // Processes per Day const today = processes.filter(p => new Date(p.startedAt).toDateString() === new Date().toDateString() ).length; // Average Duration const finished = processes.filter(p => p.state === 'finished'); msg.avgDuration = finished.reduce((sum, p) => sum + (new Date(p.finishedAt) - new Date(p.startedAt)), 0 ) / finished.length / 1000 / 60; // in minutes return msg;

Beispiel 4: Approval Portal

Genehmigungs-Portal für Manager.

Features

  • Pending Approvals: Liste offener Genehmigungen
  • Details: Antrags-Details anzeigen
  • Quick Actions: Approve/Reject Buttons
  • Kommentare: Kommentar-Feld
  • History: Genehmigungs-Historie

Flow

[ui-page: Approvals] ├─ [ui-table: pending approvals] │ Columns: [Request, Requester, Amount, Date] ├─ [ui-table: row click] │ → [function: load details] │ → [ui-card: show details] └─ [ui-button-group] ├─ [Approve] → [finish-usertask: approved=true] └─ [Reject] → [finish-usertask: approved=false]

PWA-Konfiguration

Alle Beispiele als PWA konfigurieren:

manifest.json

{ "name": "ProcessCube Portal", "short_name": "Portal", "start_url": "/portal", "display": "standalone", "background_color": "#ffffff", "theme_color": "#f7a823", "icons": [ { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" } ] }

Best Practices

  1. Mobile-First Design: Immer für Mobile optimieren
  2. Offline-Support: Service Worker für Offline-Funktionalität
  3. Error Handling: UI-Notifications für Fehler
  4. Loading States: Progress-Indicator anzeigen
  5. Touch-Optimierung: Große Buttons (min. 44x44px)

Nächste Schritte