# DigiWF S3 Integration
Die DigiWF S3 Integration ermöglicht es, Dateianhänge in Prozessen zu verwenden. Mit dieser Integration können Prozessentwickler Formulare entwickeln, in denen Dateien hoch- und heruntergeladen werden können. Auch weitere Services können Dateien erzeugen und diese über einen Prozess in einer Dateiablage ablegen, sodass andere Services diese wieder verwenden können. Ein gutes Beispiel hierfür ist die Erzeugung eines PDF-Dokuments und der Versand dieses über E-Mail.
Der entsprechende Service bietet diese Funktionalität als Integration (also asynchron via Messaging) an und via REST ( also für die synchrone Verwendung).
# Verwendung
Die Bibliothek bietet mehrere Funktionalitäten an. Wir haben einige Beispiele zusammengestellt, um die Verwendung zu demonstrieren:
Sie sind im Ordner example-s3-integration-client (opens new window) zu finden.
# Synchrone Verwendung via REST
Um die Funktionalität synchron zu nutzen, wurde ein spezieller Client aufgebaut. Jede Methode des Clients kommuniziert direkt mit der entsprechenden Methode des S3-Integration-Dienstes. Der Client kann in zwei unterschiedlichen Modi betrieben werden:
- Die URL des S3-Integration-Dienstes wird aus einem Parameter (property) ausgelesen.
- Die URL des S3-Integration-Dienstes wird in die jeweilige Methode durch den Aufrufer übergeben. Damit können mehrere Dienste aus demselben Client aufgerufen werden.
# Einbindung
Der spezielle Client kann in die Anwendung ganz einfach angebunden werden. Dazu muss
die digiwf-s3-integration-client-starter
-Abhängigkeit hinzugefügt werden:
Mit Maven:
<dependency>
<groupId>de.muenchen.oss.digiwf</groupId>
<artifactId>digiwf-s3-integration-client-starter</artifactId>
<version>${digiwf.version}</version>
</dependency>
2
3
4
5
6
Mit Gradle:
implementation group: 'de.muenchen.oss.digiwf', name: 'digiwf-s3-integration-client-starter', version: '${digiwf.version}'
Und der Wert der Eigenschaft digiwf.s3.client.document-storage-url
muss auf die Lokation des
S3-Integration-Dienstes zeigen.
# Asynchrone Verwendung via Messaging
Neben der synchronen Verwendung kann die S3 Integration auch im Rahmen einer asynchronen nachrichtenbasierten
Anbindung verwendet werden. Dabei werden per Nachricht eine Anfrage für die Erstellung der vor-signierten URL für
Dateizugriff versandt und als Korrelationsnachricht dazu eine Antwort empfangen. Die vor-signierten URLs sind dann in
der Regel 7 Tage gültig. (Die Eigenschaft im Dienst io.muenchendigital.digiwf.s3.presignedUrlExpiresInMinutes
steuert
diesen Zeitraum, 7 Tage = 10080 min)
Um eine vor-signierte URL für den Zugriff auf eine Datei oder ein Verzeichnis zu bekommen, muss die folgende
Nachricht CreatePresignedUrlEvent
versandt werden:
{
"action": "GET",
"path": "/path/to/your/file/or/directory"
}
2
3
4
Valide Werte für das Feld action
sind GET
, POST
, PUT
und DELETE
. Als Antwort in Form einer korrelierten
Nachricht werden vor-signierte URLs im folgenden Format versendet:
{
"presignedUrls": [
{
"url": "the-presigned-url",
"path": "/path/to/your/file/or/directory",
"action": "GET"
}
]
}
2
3
4
5
6
7
8
9
Diese URLs können direkt benutzt werden oder an andere Integrationen weitergegeben werden, um auf die Dateien zuzugreifen.
# Fehlerbehandlung
Bei der Fehlerbehandlung wird zwischen BPMN Errors und Incident Errors unterschieden. BPMN Errors können im Prozess behandelt werden, während Incident Errors nicht im Prozess behandelt werden können und einen Incident erzeugen. Dieser deutet auf einen durch Benutzer nicht behebbaren Fehler hin, unterbricht die Prozessausführung und ist danach im Camunda Cockpit sichtbar.
Nachfolgend sind die BPMN Errors aufgeführt, die von der S3 Integration geworfen werden können:
# BPMN Error
Error Code | Error Message | Beschreibung | Handlungsempfehlung |
---|---|---|---|
VALIDATION_ERROR | Fehlermeldung der auftretenden ValidationException | Die übergebenen Anforderungen an Dateioperationen sind nicht valide. | Korrigieren Sie die Daten und versuchen es erneut |
FILE_DOES_NOT_EXIST_ERROR | Fehlermeldung der auftretenden FileExistenceException | Die übergebenen Anforderungen referenzieren eine nicht existierende Datei oder Ordner. | Überprüfen Sie, ob die Daten valide sind und versuchen es erneut. |
Alle anderen Fehler im Zugriff auf die S3 werden als Incidents reported.
# Weitere Ressourcen
Um die Prozessentwicklung zu beschleunigen, können Sie die Element-Templates sendMail.json in einer Call Activity verwenden, um diese Integration zu verwenden.
# DigiWF S3 Integration Dienst betreiben und anpassen
Die DigiWF S3 Integration wird als Spring Boot Starter Projekt bereitgestellt. Um die S3 Integration an Ihre Bedürfnisse
anzupassen, können Sie das Starter-Modul verwenden und die bereitgestellten @Bean
s überschreiben sowie eigene @Bean
s
hinzufügen.
Den digiwf-s3-integration-starter
können Sie wie folgt in Ihr Projekt einbinden
Mit Maven:
<dependency>
<groupId>de.muenchen.oss.digiwf</groupId>
<artifactId>digiwf-s3-integration-starter</artifactId>
<version>${digiwf.version}</version>
</dependency>
2
3
4
5
6
Mit Gradle:
implementation group: 'de.muenchen.oss.digiwf', name: 'digiwf-s3-integration-starter', version: '${digiwf.version}'
# Konfiguration
Zusätzlich zu den allgemeinen Konfigurationen für DigiWF Integrationen, die unter Eigene Integration erstellen beschrieben sind, können Sie die folgenden Konfigurationen für die DigiWF S3 Integration verwenden:
Eigenschaft | Bedeutung |
---|---|
io.muenchendigital.digiwf.s3.bucketName | Name des S3 Buckets |
io.muenchendigital.digiwf.s3.secretKey | Secret für den Zugriff auf den Bucket |
io.muenchendigital.digiwf.s3.accessKey | Access Key für den Zugriff auf den Bucket |
io.muenchendigital.digiwf.s3.url | URL des S3 Servers |
io.muenchendigital.digiwf.s3.initialConnectionTest | Optionale Eigenschaft ('true', 'false') um den Verbindungstest zu S3 während des Starts durchzuführen. |
# S3 proxy
Wenn der Zugriff auf S3 Speicher nicht direkt möglich ist, kann dieser über einen Proxy versendet werden. Dazu muss die Verwendung des Proxies aktiviert und die Proxy URL konfiguriert werden.
io:
muenchendigital:
digiwf:
s3:
proxyEnabled: true
proxyUrl: http://localhost:9000
2
3
4
5
6
Standardmäßig ist kein Proxy konfiguriert. Mehr Details zur Arbeit mit Dateien erfahren Sie unter https://digiwf.muenchendigital.io/resources/documentation/concept/filehandling/ (opens new window).