Skip to Content

Prozesse deployen

Diese Seite zeigt, wie Sie BPMN-Prozessmodelle zur ProcessCube® Engine hochladen und deployen.

Grundlegendes Beispiel

import { Client } from '@processcube/client'; import * as fs from 'fs'; import * as path from 'path'; const client = new Client('http://localhost:8000'); async function deployProcess() { console.log('Deploye Sample-Prozess'); // BPMN-Datei laden const pathToProcess = path.resolve(process.cwd(), 'processes/my-process.bpmn'); const processXml = fs.readFileSync(pathToProcess, 'utf-8'); // Zur Engine deployen await client.deployProcess(processXml, { overwriteExisting: true }); console.log('Prozess erfolgreich deployed!'); } deployProcess() .then(() => console.log('Fertig!')) .catch((error) => console.log('Fehler aufgetreten:', error.message));

Deployment-Optionen

Existierende Prozesse überschreiben

await client.deployProcess(processXml, { overwriteExisting: true });

Achtung: overwriteExisting: true überschreibt das existierende Prozessmodell. Verwenden Sie dies nur in Entwicklungsumgebungen!

Neue Version erstellen

await client.deployProcess(processXml, { overwriteExisting: false });

Dies erstellt eine neue Version des Prozessmodells ohne die alte zu überschreiben.

Mehrere Prozesse deployen

import { glob } from 'glob'; async function deployAllProcesses() { // Alle BPMN-Dateien finden const bpmnFiles = await glob('processes/**/*.bpmn'); console.log(`Deploye ${bpmnFiles.length} Prozesse...`); for (const file of bpmnFiles) { const xml = fs.readFileSync(file, 'utf-8'); await client.deployProcess(xml, { overwriteExisting: true }); console.log(`✓ ${path.basename(file)} deployed`); } }

BPMN-XML validieren

Bevor Sie einen Prozess deployen, können Sie das XML validieren:

function validateBpmnXml(xml: string): boolean { // Grundlegende Validierung if (!xml.includes('<bpmn:definitions')) { throw new Error('Ungültiges BPMN-XML: <bpmn:definitions> fehlt'); } if (!xml.includes('<bpmn:process')) { throw new Error('Ungültiges BPMN-XML: <bpmn:process> fehlt'); } return true; } const xml = fs.readFileSync('process.bpmn', 'utf-8'); validateBpmnXml(xml); await client.deployProcess(xml);

Best Practices

Fehlerbehandlung

try { await client.deployProcess(processXml, { overwriteExisting: true }); console.log('Deployment erfolgreich'); } catch (error) { if (error.code === 'INVALID_BPMN') { console.error('Ungültiges BPMN-Diagramm:', error.message); } else if (error.code === 'PROCESS_EXISTS') { console.error('Prozess existiert bereits (verwenden Sie overwriteExisting: true)'); } else { console.error('Deployment fehlgeschlagen:', error.message); } throw error; }

CI/CD Integration

import { Client } from '@processcube/client'; import * as fs from 'fs'; async function ciDeployment() { const client = new Client( process.env.ENGINE_URL, { clientId: process.env.CLIENT_ID || '', clientSecret: process.env.CLIENT_SECRET || '', authorityUrl: process.env.AUTHORITY_URL || '', } ); const xml = fs.readFileSync(process.env.BPMN_FILE || '', 'utf-8'); try { await client.deployProcess(xml, { overwriteExisting: process.env.ALLOW_OVERWRITE === 'true', }); console.log('✓ Deployment erfolgreich'); process.exit(0); } catch (error) { console.error('✗ Deployment fehlgeschlagen:', error.message); process.exit(1); } }

Nächste Schritte