it-at-m / digiwf-core

central workflow automation and integration platform based on the free process framework Camunda.
MIT License
19 stars 7 forks source link

Synchrone Anbindung eines domänen spezifischen S3 Storages für Integrationen #734

Closed lmoesle closed 7 months ago

lmoesle commented 11 months ago

Kontext

Wenn eine Integration mit dem S3 Storage interagieren muss, dann werden in einem eigenen Prozessschritt zuerst PresignedUrls erzeugt und anschließend an die Integration übergeben.

grafik

Hierbei kann in der Prozesskonfiguration eingestellt werden, welche S3 Integration verwendet werden soll:


{
  "key": "MeinProzessKey",
  "statusConfig": [  ],
  "configs": [
    [...]
    {
      "key": "app_file_s3_sync_config",
      "value": "http://my-document-storage-service:8080"
    },
      {
      "key": "app_instance_schema_key",
      "value": "myschemakey"
    },
    [...]
  ]
}

Wenn man jetzt in einer Integration synchron (also ohne PresignedUrls) auf den S3 Storage zugreifen möchte, dann muss die Prozessconfig synchron aus der Engine geladen werden. Hierfür haben wir die digiwf-process-api erweitert (see 8f76fe04fb2c563fea1073193fa2546637e99425).

Problem:

Das Problem hierbei ist, dass die Integration keine Möglichkeit hat an den ProcessDefinitionKey zu kommen und deswegen die Bibliothek nicht nutzen kann. Der Hintergrund hierbei ist, dass die Integration über die CallActivity StreamingTemplateV02 aufgerufen wird und dementsprechend vom digiwf-connector die ProcessInstanceId von der CallActivity übergeben wird. Wir benötigen jedoch die ProcessInstance vom aufrufenden Prozess.

Note: Den Connector können wir mit wenig Aufwand anpassen, dass neben ProcessInstanceId auch ProcessDefinitionKey und ProcessDefinitionId weitergegeben werden. Hier besteht aber dasselbe Problem.

Describe the solution you'd like

Wir können die ProcessDefinitionId bzw. ProcessDefinitionKey (des aufrufenden Prozesses) als Prozessvariablen an die CallActivity (StreamingTemplateV02) weitergeben und im digiwf-connector auslesen und als Kafka Header an die Integration übergeben.

Describe alternatives you've considered

Die Konfigurationen für den domänen spezifischen S3 aus der Prozessconfig könnten wir bei Prozessstart auslesen und als Prozessvariablen global speichern und durch den Prozess schleifen.

Acceptane criteria

dominikhorn93 commented 11 months ago

Finde das soweit passend. Eventuell könnten wir uns aber davor über das Thema "Bundle" Gedanken machen und schauen ob wir das schon damit kompatibel umsetzen können. @darenegade was meinst du?

darenegade commented 11 months ago

Ich würde hier gerne nochmal die Alternativen durchgehen. Vielleicht können wir das einfach nach einem Daily mal gemeinsam machen 😊

darenegade commented 10 months ago

Hängt auch mit #468 zusammen (Hier als Alternative Lösung)

lmoesle commented 8 months ago

Das Ticket ist auf impediment, bis wir das Vorgehen geklärt haben

darenegade commented 8 months ago

Abstimmung zur Lösung 15.01.

Fachliche Definition: Es gilt immer die Konfig. vom obersten Prozess. Dieser Key soll an die Integrationen weitergereicht werden, sodass diese damit z.B. Configs nachladen können. Es erfolgt kein Merge oder Überschreiben von Configs auf Sub-Prozessen

darenegade commented 8 months ago

Mögliche Lösung: Der Connector lädt den Key nach

darenegade commented 8 months ago

Hey team! Please add your planning poker estimate with Zenhub @darenegade @dominikhorn93 @lehju @lmoesle @markostreich @simonhir @StephanStrehlerCGI @zambrovski

lmoesle commented 7 months ago

PR ist auch #1168