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
- Prozesse starten - Deployed Prozesse ausführen
- Prozesse auflisten - Deployments überprüfen