Zum Inhalt springen

PAP: Datei erstellung durch Datenbank abfrage


Empfohlene Beiträge

Geschrieben

Guten Abend zusammen,

ich hoffe ich bin hier richtig...

Mache grade meine technische Dokumentation für mein Abschlussprojekt.

Da ich das ganze in C mache, verwende ich kein UML - ausser ein Use-Case - sondern stelle das ganze im PAP dar.

Hab da jetzt aber ne kleine Frage.

Ist mein PAP richtig?!

Was ich darstellen wollte war:

1. wird in einer Oracle Forms Maske ein Auftrag bearbeitet und anschließend alle Daten in die Tabelle Eild_Auftr gespeichert.

2. Jetzt wird zyklisch in diese Tabelle nach Aufträgen geguckt. Ist was drin gehts dann weiter.

Was ich mich jetzt nur Frage, ob das auch so ersichtlich ist. Weil irgendwie sieht das so alleinstehend und ohne Anstoss aus.

Ich weiss nicht wie ich das besser darstellen soll. Habt ihr da einen Vorschlag?

Vielen Dank!

post-48393-14430448313631_thumb.jpg

Geschrieben

Wenn ich dich richtig verstehe, hast du 2 Prozesse am laufen, einerseits die einstellung der Aufträge und zweitens davon unabhängig die Überprüfung. Beide Prozesse nutzen nur die gleichen Ressourcen.

Wenn dem so ist, dann ist deine Darstellung nicht korrekt.

Geschrieben (bearbeitet)

Ok, danke schonmal für die zügige Antwort!

Anscheind hast du mich besser verstanden, als ich mich selber... :)

In der Tat läuft die Speicherung der Daten in die Tabelle unabhängig von dem Lesen.

Das lesen wird von einer 3., übergeordneten Funktion aufgerufen. Diese ruft allerdings noch andere Funktionen auf. Ist halt so ne "Manager-Funktion".

Eigentlich müsste ich ja dieses PAP in mehrere Aufteilen.

1. kleines für's speichern der Daten in die DB

2. eins zum lesen - quasi den Rest, dieses PAP's

... und dann noch die "Manager-Funktion"? Das würde so ohne weiteres gar nicht auf ein Blatt passen und sähe nebenbei auch ziemlich ****e aus...

Wie würdest du das machen? Die 3. Funktion kurz erwähnen?... wobei.. ist ja nur der Funktionsaufruf.... der interessiert ja gar nicht. - Toller Monolog. :D

Kann ich die "lesen-der-DB-Funktion" so lassen wie sie jetzt dargestellt wird?

Quasi, über der Anweisung "Lesen der Tabelle Eild_Auftr" nen Startpunkt setzen? Ist die Schleife denn sonst so richtig?

Sorry, für die merkwürdigen Gedankengänge. Kommt wohl vom zuvielen lernen...

Hab das jetzt nochmal als *.jpg angehangen. Ist das so richtig?

post-48393-14430448314043_thumb.jpg

post-48393-14430448314185_thumb.jpg

Bearbeitet von kritza
Geschrieben

Eigentlich müsste ich ja dieses PAP in mehrere Aufteilen.

1. kleines für's speichern der Daten in die DB

2. eins zum lesen - quasi den Rest, dieses PAP's

...

Die 3. Funktion kurz erwähnen?

ja, genau so. Damit die gleiche Ressourcennutzung gut herauskommt, kannst du beide nebeneinander zum laufen bringen (auf einem Blatt). Die Managerfunktion nur als Managerfunktion zum Starten des 2. Prozesses erwähnen (es war ja nicht dein Anteil, sondern extern)

Kann ich die "lesen-der-DB-Funktion" so lassen wie sie jetzt dargestellt wird?

Quasi, über der Anweisung "Lesen der Tabelle Eild_Auftr" nen Startpunkt setzen? Ist die Schleife denn sonst so richtig?

Lesen- funktion sieht fast gut aus, jedoch wird permanent gelesen (ohne Pause) oder immer nur nach anschubsen durch den Manager? Dann wäre bei nein beendet.

Oder gibt es einen Zeitraum der dazwischen liegt? Dann ist irgendwo ein Sleep einzubauen. Bisher ist es resourcenfressend (insbesondere Speicherfressend) und ohne Grund.

Geschrieben (bearbeitet)

du bist zu schnell ^^

Also, oben jetzt immernoch die aktuelle Version.

Lesen- funktion sieht fast gut aus, jedoch wird permanent gelesen (ohne Pause) oder immer nur nach anschubsen durch den Manager? Dann wäre bei nein beendet.

Oder gibt es einen Zeitraum der dazwischen liegt? Dann ist irgendwo ein Sleep einzubauen. Bisher ist es resourcenfressend (insbesondere Speicherfressend) und ohne Grund.

Die Funktion besitzt nen Sleep. Aber den nehm ich wohl raus. Zumindest für die Quellcodeauszüge. Weil, schön ist anders ^^

Der Manager ist ne große Switch-Funktion. In meiner Variante hab ich nen Break, im Falle keiner Daten in der DB.

Ansonsten, gehts halt weiter.

Soll ich diesen Break befehl auch erwähnen? ... Müsste ich ja eigentlich. PAP's sollen ja Vorlage für den Programmierer sein, und ohne wärs ziemlich blöde... Aber dann muss man auch vorher erwähnen, dass meine Funktion durch nen Switch aufgerufen wird.

Wo erwähne ich den sowas? Als eine Art Anmerkung im PAP, oder dort lieber gar nicht, sondern lieber in der tech. Doku selbst?!

----------

Toll, wenn man sich die Antworten selbst erklären kann. Aber drüber sprechen bringt einen manchmal auf Idee die man alleine sonst nicht hätte...

Hier ne neue Version.

Bleibt noch die Frage, wo ich erwähne, dass die aufrufende Funktion eine Switch-Anweisung ist.

Aber wahrscheinlich ist das nur Geschmackssache, oder?

post-48393-14430448314563_thumb.jpg

Bearbeitet von kritza
Geschrieben
Der Manager ist ne große Switch-Funktion. In meiner Variante hab ich nen Break, im Falle keiner Daten in der DB.

Ansonsten, gehts halt weiter.

Soll ich diesen Break befehl auch erwähnen? ... Müsste ich ja eigentlich.

Genau: Im Falle keiner Daten ist halt ENDE.

Wo erwähne ich den sowas? Als eine Art Anmerkung im PAP, oder dort lieber gar nicht, sondern lieber in der tech. Doku selbst?!
Ich würde es in der Beschreibung erwähnen, dass es durch andere Funktionen (die Managerfunktion) aufgerufen wird. Der Aufruf selbst hat in deinen Prozessen (sie gehen von Start bis Ende) nix zu suchen, denn der Aufruf geschieht unmittelbar davor (also vor deinem Start).

EDIT: sieht schon besser aus, dein 3. Vorschlag, jetzt nur noch mein letzter Satz umgesetzt.

Toll, wenn man sich die Antworten selbst erklären kann. Aber drüber sprechen bringt einen manchmal auf Idee die man alleine sonst nicht hätte...
Dafür sind wir ja da - nur zuhören und verwirrende Fragen stellen ;)

Bleibt noch die Frage, wo ich erwähne, dass die aufrufende Funktion eine Switch-Anweisung ist.

Aber wahrscheinlich ist das nur Geschmackssache, oder?

siehe oben.

Verknüpfe bitte beide Prozesse über die gemeinsame Ressource, so hast du wieder ein Gebilde, welches systematisch irgendwo zusammenhängt und keinen Kruschtladen geschustert.

Geschrieben (bearbeitet)

Verknüpfe bitte beide Prozesse über die gemeinsame Ressource, so hast du wieder ein Gebilde, welches systematisch irgendwo zusammenhängt und keinen Kruschtladen geschustert.

Meinst du so?

Eigentlich brauche ich ja 2 Startpunkte, da das ja auch 2 unabhängige Funktionen sind. Aber macht man das so? Darf man das so machen? Muss ich nicht zumindest irgendwie die beiden Sachen voneinander abgrenzen? Durch nen Rahmen, oder so?

Hab sowas mit PAP's noch nicht gemacht.

Mal so aus Interesse.. dachte PAP's und Strukturgramme können immer gleich verwendet werden. Aber sowas kann man doch gar nicht in nem Struk. darstellen, oder doch? => nicht sooo wichtig ^^

Edit1: 2. Ende hinzugefügt

Edit2: Rahmen zur Funktionsabgrenzung. Ist jetzt nur die Frage ob das nicht "zu bunt" ist.

post-48393-14430448314881_thumb.jpg

post-48393-14430448315259_thumb.jpg

Bearbeitet von kritza
Geschrieben

Ich würde es so akzeptieren. Teil 2 hat schon mal einen Rahmen (einen weiteren kannst du sicher auch noch). Du verknüpfst die beiden Prozesse doch nur über die verwendeten Ressourcen. Zur schematischen Darstellung der Zusammenhänge finde ich die Verknüpfung einfach passender.

Bei deiner zweiten Schleife solltest du vielleicht nur ein Ende machen, also von oben nach unten einen langen Pfeil ziehen. Dann hast du genau einen Start - und einen Endpunkt. In der Programnmierung geht es dann über ein Break (irgendwie unschön) oder über eine if[ähnliche]-Verknüpfung (die in einem Fall nix mehr macht) oder über ein Goto (aber das schmerzt schon beim schreiben).

also ich würde so programmieren:

if [irgendetwas zu verarbeiten]{

verarbeite;

}

ende

Geschrieben (bearbeitet)

also ich würde so programmieren:

if [irgendetwas zu verarbeiten]{

verarbeite;

}

ende

So ähnlich hab ich das auch. Nur anders ^^... Habe, aus gründen der ggf. auftretenden Fehler beim DB-connect noch nen else-zweig und im if-zweig dann break. Aber prinzipiell halt gleich.

Ich füg mal nen Auszug an. Aber is echt nicht schön. Bin auch am Überlegen, ob ich den im Antrag erwähnten Codeauszug nicht rausnehmen soll...


[...]

retrn = get_next_ups_bea_auftr(&ups_bea);

		if ( retrn != 0 )

		{

			if ( retrn == ORA_NOT_FOUND )  /* kein Auftrag vorhanden */

			{

				break;

			}

			else 

			{ /* anderer Fehler als ORA_NOT_FOUND */

				sprintf(hBuf, "Oracle-Fehler bei lesen aus MFGPRO Tabelle %d", retrn);

				ERROR_MSG_STR(MNAME, hBuf, 0, NULL);

			}

			ora_rollback ();


			// Wenn beim lesen von FOSS ein Fehler auftrat, dann lieber einen Reconnect machen

			oracle_disconnect();

			Sleep(120000); // 120 Sec.


			//----------------------------------------------------------------

			// Oracle öffnen                                       

			//----------------------------------------------------------------

			//ku 08.11.05 Passwort steht verschlüsselt in einer Datei

			char szBenutzer[100], szPasswort[100];

			if ( (retrn = decode_passwort(SB_FindProgText("TP_PASSWORTDATEI"), 

				szBenutzer,

				100,

				szPasswort,

				100)) != 0)

			{

				WinPrintf(hWndMain, "Fehler beim entschlüsseln des Passwortes %d",retrn);

				return;

			}

			else

			{

				retrn = oracle_connect(szBenutzer,szPasswort,"walt");

				if (retrn != 0)

				{

					WinPrintf(hWndMain, "Fehler beim öffnen von Oracle-DB %d",retrn);


					return;

				}

			}

			break;

		}

		ora_commit();


		// Suche nach Auftrag in Datenbank

		sprintf(whereClause, "where aunr='%s' and palnr='%s'", ups_bea.aunr, ups_bea.palnr);

		retrn = paket_select(&paket, whereClause);


		// Schreiben der Trackingnummber zum Auftrag

		sprintf(paket.trackingnr, "%s", ups_bea.trackingnr);

[...]

Aber den ganzen Spass muss ich eigenltich auch noch darstellen... Das ist viel zu groß für ein PAP. Das ist ja auch nur ein AUSZUG aus EINER Funktion... *******e....

Muss man das so detailiert machen. Muss ja auch die DB-Verbindung, und die Beendigung zb. auch darstellen... oder etwa nicht?

Weil, wie gesagt, soll ja dem Programmierer als Vorlage dienen und "eigentlich" alles enthalten... aber doch nicht jede Zeile...

post-48393-14430448315651_thumb.jpg

Bearbeitet von kritza
Geschrieben

Danke für die Hilfe nochmal! hab ich im Laufe des Gefechtes ganz vergessen.

Hab das jetzt noch ein bisschen erweitert und dabei ist mir was aufgefallen. Kann ich das überhaupt so machen?

Wenn die Tabelle gelesen wird, wird anschließend der Datensatz aus der Tabelle in eine ArchivTabelle verschoben. Ich finde das sieht aber irgendwie komisch aus. müsste in dem roten DB-Bereich nicht auch soetwas wie die Start, bzw. Stopp Elemente rein?!

Danke!

post-48393-14430448319314_thumb.jpg

Geschrieben
Wenn die Tabelle gelesen wird, wird anschließend der Datensatz aus der Tabelle in eine ArchivTabelle verschoben. Ich finde das sieht aber irgendwie komisch aus. müsste in dem roten DB-Bereich nicht auch soetwas wie die Start, bzw. Stopp Elemente rein?!
Das macht doch dann aber dein zweiter Prozess, so dass du ihn zumindest vor dem einen Ende dazufügen musst. Dieser 2. Prozess startet deinen roten Prozess und ist erst nach dessen Beendigung abgearbeitet.

Ansonsten sieht es doch schick und gewaltig (genug für die Prüfung) aus.

Geschrieben (bearbeitet)
Das macht doch dann aber dein zweiter Prozess, so dass du ihn zumindest vor dem einen Ende dazufügen musst. Dieser 2. Prozess startet deinen roten Prozess und ist erst nach dessen Beendigung abgearbeitet.

Also meinst du, dass ist ok so?... was mich am meisten stört, dass es halt irgendwie so in "leere" läuft... aber es wird nun mal gelesen, geschrieben, gelöscht... und dann gehts weiter im grünen.

aber wenn du meinst, dass ist ok so, dann glaub ich dir das.

Danke!

#################

Bevor ich jetzt nen 2. Thread aufmache schreib ich ejtzt einfach hier drunter, auch wenns nicht zum PAP gehört.

Ich mache auch nen Use-Case. Da ich mein Projekt in C mache würde ich sagen, folgt alles irgendwie auf einander. Muss ich auch Sachen "includen", bzw. "extenden"?

Oder anders, ist mein use-case richtig?

UND: kommen da auch Sachen rein, die nicht programmiert werden? wie. z.B., dass der Anwender das ausgedruckte Etikett anbringen muss?... oder ist das zu vernachlässigen?

post-48393-14430448319729_thumb.jpg

Bearbeitet von kritza
Geschrieben (bearbeitet)
Also meinst du, dass ist ok so?... was mich am meisten stört, dass es halt irgendwie so in "leere" läuft... aber es wird nun mal gelesen, geschrieben, gelöscht... und dann gehts weiter im grünen.

aber wenn du meinst, dass ist ok so, dann glaub ich dir das.

Nein, du sollst den roten Teil in den zweiten Teil einbauen und nicht leer stehenlassen. Er gehört doch eindeutig zum zweiten Prozess, der erst nach diesem Übertrag abgearbeitet ist.

PS: Ich glaube kaum, ass du nach unserem Dialog hier noch weitere Meldungen zum Use-Case bekommen wirst ;). Ich mache mich heute abend mal etwas schlauer dazu.

*Ich frage mich gerade, warum du so etwas hineinarbeiten willst, dein PAP ist doch aussagefähig, jedoch wirst du mit mehr gleichartigen Erklärungen nur mehr Angriffspunkte bei dem Fachgespräch bieten.*

(Das hast du aber nicht von mir - es ist löblich, fleissig zu sein!)

Bearbeitet von Der Kleine
Geschrieben

Findest du echt, dass das so ausreicht? Ist ja nur der erste Teil. Ich hab ja noch ne 2ten PAP. Nur den wollte ich nicht posten. Mir ging's ja nur ums Prinzip, wie ich die einzelnen Sachen zu erstellen habe. In dem 2. ist zB auch ein Trigger drin... u.a.

Ich weiss nicht. Ich finde es natürlich nett von dir, dass du mir das sagst.. aber... jetzt habe ich das schon erstellt - auch wenn Anwendungsfalldiagramme recht schnell von der Hand gehen - und dann verwende ich das auch.

Wobei das natürlich nachvollziehbar ist. Aber ich hoffe, ich bin fit genug um die Fragen dann zu beantworten. Wobei ich mich sowieso frage, was da für Fragen gestellt werden...

Aber das ist extrem nett von dir, dass du dich nach Use-Case Diagrammen erkundigst! Hab da auch schon einige Seiten durch gelesen, aber zu diesen speziellen Problemen noch nichts gefunden.

Und auf der Arbeit macht sowieso niemand irgendwelche Diagramme.... :rolleyes:

Wie dem auch sein,

nochmals Danke für deine Hilfe!

Geschrieben
Aber das ist extrem nett von dir, dass du dich nach Use-Case Diagrammen erkundigst! Hab da auch schon einige Seiten durch gelesen, aber zu diesen speziellen Problemen noch nichts gefunden.
Nö, müsste passen, wie man leicht sieht.

Und auf der Arbeit macht sowieso niemand irgendwelche Diagramme.... :rolleyes:
Na, IMO ist so ein PAP bzw. ein Struktugramm nicht verkehrt - je nach Größe des Programmes.

Auch USe Case kann zur Problembeschreibung und zur Ausfgabenableitung ziemlich zielsicher eingesetzt werden. Denke vielleicht mal drüber nach, wo s wirklich helfen kann, vielleicht führst du dieses auf deiner Arbeit ein, getreu dem Motto: Ein Bild sagt mehr als 1000 Worte.

*Aber nicht bei jeder Kleinigkeit zu malen anfangen*

PS: Ich warte noch auf deine Aktualisierung des PAP.

Geschrieben

Finde eure Diskussion sehr interessant. Zum Grundproblem:

1. Du verknüpfst zwei Dinge

a) Programmablaufplan

B) Datenflußplan

B) zeigt, welche Dateien und Tabellen dein Programm braucht

a) zeigt, was das Programm macht

Insgesamt schöne, klassische (alte) strukturierte Programmierung. Gehört meiner Ansicht nach noch immer zum Umfang der Ausbildung, macht wohl kaum jemand. Man kann mal wenigstens die korrekten Symbole nachlesen :old

Geschrieben

genau das meinte mein lehrer heute auch. aber ich kriege es nicht hin, beide voneinander zu trennen.

Ich befürchte ich hab die ganze use-case sache nicht so richtig verstanden. Bzw. nur für "Schulaufgaben", bei denen man direkt drauf hingewiesen wird, was zu tun ist.

Ich hab jetzt auch nen 2. Thread drüber eröffnet:

http://forum.fachinformatiker.de/abschlussprojekte/127156-uml-diagramme-viele.html#post1140459

Jedoch wäre es mir lieber, nen Use-Case zu verwenden.

Geschrieben

Hallo,

ich denke, das ein PAP EINEN Einstiegs und EINEN Ausstiegspunkt haben sollte. Das wäre im Normalfall der Start der Anwendung und der Rücksprung in die nächst niedere Ebene(z.B Betriebssystem).

Wenn ich nach der guten alten Methode "top down- buttom up" denke, dann sind die hier diskutierten Prozesse Teil eines Programmes zum Paketversand.

Wenn ich ene Firma wäre und das kaufen wollte, wüsse ich gern, wie die dafür notwendigen Schritte umgesetzt werden.

Bisher werde ich aber aus den PAP allein noch nicht so recht schlau, weil die Ein- und Ausgangspunkte IMHO nicht so recht im Zusammenhang stehen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...