Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prozessablauf in einem Datenbankmodell hinterlegen (https://www.delphipraxis.net/168189-prozessablauf-einem-datenbankmodell-hinterlegen.html)

borwin 9. Mai 2012 11:46

Datenbank: Firebird • Version: 2.5 • Zugriff über: egal

Prozessablauf in einem Datenbankmodell hinterlegen
 
Folgende Aufgabe liegt an:
Der Prozessablauf einer Produktion soll in einem Datenbankmodell gespeichert werden. Dieser Ablauf soll dynamisch sein und ist ständigen Veränderungen ausgesetzt. Mein erster Ansatz war eine Baumstruktur. Das klappt aber nur, wenn der Prozess in einer Richtung verläuft. In diesem Fall gibt es aber Rücksprünge, der dann auch noch neue Zweig eröffnet in denen der Prozess parallel weiter verläuft und sich dann wieder verbindet. Vielleicht so ähnlich wie beim Programmablaufplan in der Programmierung. Meine Frage, gibt es Erfahrungen oder auch bekannte Modelle mit denen man das in einer Datenbankstruktur einfach und flexibel abdecken kann.
Vielleicht kennt jemand hierzu auch eine passenden Komponente zum visualisieren. Das ist aber erst mal sekundär.

Schon mal vielen Danke

Gruß Borwin

Viele Bausteine ergeben ein fertiges Haus

stahli 9. Mai 2012 16:45

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Wie speicherintensiv wird denn das Ganze und wie schnell soll das sein?`

Vielleicht wäre der Einsatz eines ORM zweckmäßig? Du könntest Die gesamte Logik in Objekten verarbeiten und diese unteranander über Id´s referenzieren.

Die DB würde letztlich nur als Datenlager dienen. Der Zugriff würde über Objekte erfolgen.
Natürlich bringt das einen gewissen Aufwand mit sich (sowohl in der Programmierung als auch zur Laufzeit), sollte aber eine Übverlegung Wert sein.

mjustin 9. Mai 2012 17:54

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Eine fertige Komponente(nsammlung) bzw. Framework gibt es von TMS:

TMS Workflow Studio

Zitat:

"Add workflow/BPM (Business Process Management) capabilities to your applications."
Die Speicherung der Prozesse erfolgt vermutlich nicht normalisiert in einer relationalen Datenbank.

Ist aber bei dieser Materie auch eher ungünstig - eine Vektorgrafik würde ich auch nicht unbedingt in Pfade zerlegen und diese dann in Tabellenspalten speichern, höchstens bei einem 3D Actionspiel :)

Furtbichler 9. Mai 2012 18:21

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Ich habe Prozessabläufe über Zustandsübergänge definiert.
Der Tabellenaufbau ist selbsterklärend:
Code:
ProduktID | VonProzessID | NachProzessID
Damit sind jedoch die Sonderprozessketten, etwa bei Reklamationen, Versuchen, Iterationen oder Nachbearbeitungen nicht abgedeckt. Dies müsste durch eine Funktion definiert werden, die prüft, in welchen Prozessschritt ein Produkt in Abhängigkeit seines Zustandes wechseln darf.

Als gerichteter Graph taugen die Zustandsübergänge allemal.

Baumstrukturen sind wegen der fehlenden zyklischen Abbildungsmöglichkeiten jedoch nicht geeignet.

borwin 10. Mai 2012 14:32

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Erst mal vielen Dank für die Antworten. Wird mir weiterhelfen.

stahli
Der Vorschlag mit den Objekten hört sich gut an aber ist für diese wohl Aufgabe nicht geeignet.
An den Prozessen werden noch weitere Daten aus der Datenbank angehangen. Da wird es dann doch schwierig bei den Abfragen.

mjustin
Das WorkflowStudio von TMS ist ein guter Ansatz. Ich muss es mir jetzt noch in der Praxis anschauen ob alle Kriterien erfüllt werden. Das DB-Model ist übersichtlich und für meine Zwecke wohl ausreichend.
Leider kann der Zugriff für die Visualisierungskomponente nur über ADO erfolgen.

Furtbichler
Ist auch eine Variante und denke drüber nach ob ich die Prozesse damit alle abbilden kann.

Eine andere Komponente als die von TMS habe ich nicht gefunden. Da gibt es wohl nicht sehr viele.

Gruß Borwin

jobo 10. Mai 2012 14:47

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Warum ist die Baumstruktur so problematisch? Aus (Vor-)Produkt Perspektive ergibt sich zwangsläufig ein linearer Ablauf, wie er von Furtbichler dargestellt wurde.
Betrachtet man den Baum als Menge der möglichen Wege, muss sich am Ende je "Prozess" ein linearer Ablauf ergeben.
In einer konkreten Produktionsplanung kommen natürlich Kapazitätsfragen dazu (Prozesszeiten versus Arbeitsplatz-/ Maschinenkapazitäten), aber das ist glaub ich nicht gemeint? Oder doch:
Zitat:

Zitat von borwin (Beitrag 1165585)
.. der dann auch noch neue Zweig eröffnet in denen der Prozess parallel weiter verläuft ..


borwin 10. Mai 2012 17:10

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Zitat:

In einer konkreten Produktionsplanung kommen natürlich Kapazitätsfragen dazu (Prozesszeiten versus Arbeitsplatz-/ Maschinenkapazitäten), aber das ist glaub ich nicht gemeint? Oder doch:
Nein das ist nicht gemein.

jobo
Das hört sich interessant an. Habe ich aber nicht ganz verstanden. Kannst Du das näher erklären?
So ganz linear geht es nicht. Wenn sich der Herstellungsprozess zeitweilig aufspaltet und dann wieder zusammenführt sehe ich keine Möglichkeit das mit einer Baumstruktur darzustellen. Lasse mich aber gerne überzeugen.

Gruss Borwin

Furtbichler 10. Mai 2012 17:53

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Zitat:

Zitat von jobo (Beitrag 1165909)
Warum ist die Baumstruktur so problematisch? Aus (Vor-)Produkt Perspektive ergibt sich zwangsläufig ein linearer Ablauf, wie er von Furtbichler dargestellt wurde.

Nein. Er kann Schleifen beinhalten. Das ist mit einem Baum nicht darstellbar.

jobo 10. Mai 2012 20:15

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Ich behaupte einfach, man kann den Baum als Präsentation aller möglichen Prozessknoten verwenden. Ein konkreter Prozess für ein konkretes Teil wäre ein definierter Pfad durch den Baum. Der konkrete Pfad würde auch Iteration (Zyklen) beinhalten, Aufspaltung kann ich mir allerdings real nicht vorstellen (Kenn das Thema nur aus 2. Hand).
Vielleicht nennst Du einfach mal ein reales Beispiel, das hilft sicher mehr, als dass ich rumfantasiere.

sx2008 11. Mai 2012 04:57

AW: Prozessablauf in einem Datenbankmodell hinterlegen
 
Schritt 1:
Überlegen die der Graph des Prozessablauf aussehen kann (gerichteter Graph, sind Mehrfachkanten erlaubt?,... ).
Welche Zusatzdaten werden innerhalb des Graph benötigt?
Gibt es Inputdaten von Aussen, die den Prozessablauf beeinflussen?
Wie flexibel muss das Modell sein?
Geht es eher in Richtung eines Scripts mit Kontrollstrukturen (if, while, for, break)?
Schritt 2:
Überlegen, wie das Modell in einer relationalen Datenbank abgespeichert werden könnte.
Macht es wirklich Sinn jede Kante des Graphs als einzelnen Datensatz abzuspeichern
oder reicht es nicht aus das gesamte Model als Blob abzulegen?

Ganz offensichtlich muss man Schritt 1 vor Schritt 2 vornehmen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz