Bin ich überhaupt auf dem richtigen Weg?
am 24.01.2012 - 06:24 Uhr in
Guten Morgen zusammen,
erstmal möchte ich um Entschuldigung für diesen sehr "allgemein" gehaltenen Titel bitten, aber ich muss mal in meinem "Projekt" kurz stoppen und die Experten hier fragen ob ich vielleicht viel zu kompliziert denke. Ich habe vor Jahren mal ein Intranet mit PHP-Anwendungen für meine Firma geschrieben und dies ist mittlerweile doch ein ordentliches Chaos geworden. Desweiteren weden Info's immer noch per Mail geschrieben und diverse Dateinen irgendwo in den tiefen des internen Netzwerkes abgelegt. Ich wollte nun mit Drupal alles unter einen Hut bringen...dies mal zur Info was ich hier überhaupt bastel.
Ich hatte gehofft mit Modulen meinen Programmieraufwand überschaubar zu halten, aber sofort für die ersten 3 Sachen mußte ich eigene Module entwickeln.
Beim ersten geht es um das einscannen von Lieferscheinen morgens..hier geht unser Fahrer (wir haben mehrere) hin...wählt seine Tour (Select-Feld aus einer DB-Tabelle eingelesen) und scannt reihenweise seine Lieferscheine für diesen Tag ein (können 40- 60 Stück sein..max). Nach jedem Scan werden die Daten inkl Erfassungszeit und Tag in einer eigene Tabelle gespeichert.
Das zweite Modul war eine Wareneingangsanforderung...hier können Mitarbeiter den Wareneingang informieren das eine Lieferung schnell zugebucht werden muß.
Erst dachte ich man kann hier einen Inhaltstypen erstellen, aber da am Ende der Erfassung eine Mail an den Wareneingang erfolgen muss habe ich auch hier ein eigenes Modul geschrieben.
Das driite Modul dient einer Lieferterminsteuerung. Hier können Mitarbeiter der Logistik mitteilen wann welcher Kunde beliefert werden möchte. Auch hier mußte ich
(meiner Meinung nach) ein eigenes Modul schaffen, da hier u.a. eine PLZ aus einem Dropdown-Feld gewählt wird....aus dier PLZ automatisch die entsprechende LKW-Tour ermittelt wird und nach Nennung der Uhrzeit (weiteres Dropdown) wird automatisch geprüft ob der Termin noch frei ist...also viele automatische DB-Abfragen die ich mit Ajax auch gut lösen konnte, nur stelle ich mir langsam die Frage ob ich viel zu kompliziert denke (habe ein Talent dafür) oder war das bisher alles in Ordnung?
Meine nächsten Sachen sind eine Art Ticketsystem und der Import von CSV-Dateien. Die CSV-Dateien müssen aber beim/vor dem Imort bearbeitet werden...so ist in einem Fall die Berechnung der Kalöenderwoche nötig...muss ich hier auch wieder Hand anlegen? Empfiehlt es sich wirklich beim CSV-Import immer eigene Inhaltstypen mit einzelnen Nodes zu erstellen? Ich rede hier von etlichen tausenden die da zusammen kommen können...oder macht Drupal das ncihts aus?
Wäre nett wenn sich jemand mal zu dem Mamut-Text äußert und mir einen Schubs in die richtige Richtugn geben kann.
Vielen Dank
Ati
- Anmelden oder Registrieren um Kommentare zu schreiben
Schau mal
am 24.01.2012 - 08:04 Uhr
Rules an
Mit Feeds und tamper_feeds könnte das CSV-Thema lösen.
Zu Ticketsystemen gibt es verschiedene Ansätze.
Aber auch hier sind Rules und Taxonomy mit Views wohl der richtige Ansatz.
Drupal hat keine Probleme mit tausenden von Nodes.
Das sind jetzt erstmal ein paar Brocken.
Grüße
Ronald
Nun gut...der Hinweis mit
am 25.01.2012 - 04:55 Uhr
Nun gut...der Hinweis mit tamper_feeds war schonmal hilfreich...acuh wenn ich da wohl noch was händisch ändern muss. Alles andere war wohl zu allgemein gehalten, so das ich mir jedes Problem einzeln nehmen und bei Frage hier posten werde.
Ich bin nicht doof....ich denk nur anders
Das liegt einfach am Thema
am 25.01.2012 - 07:37 Uhr
Das ist so weit, dass eine Komplettlösung nicht so schnell in ein Post zu fassen ist.
Beschäftigen mit Drupal ist eh' Voraussetzung, damit man etwas lösen kann.
Das Meiste geht mit Konfiguration ein kleinen Stilanpassungen. Wirklich programmieren muss man nur, wenn man etwas ausgefallenes realisieren möchte.
Grüße
Ronald
Hi Ati, ich denke Du bist auf
am 25.01.2012 - 08:07 Uhr
Hi Ati,
ich denke Du bist auf dem richtig Weg wenn Du dir
überlegst in deinem Wirtschafts Sysetem nicht
für jeden Zettel eine Node anzulegen.
Du kannst es so machen (für die Entitäten die in die 10'000 gehen):
- Für jede Entität machst Du nur einen Inhaltstypen und einen Node.
- Für jede Entität machst Du ein Modul welche über die Node Hooks die nötigen Operationen auf deinen Tabellen ausführt.
Damit hast du für alles nur einen Node und kannst dein eigenes Datenmodell benutzen.
Gruss und viel Spass
Rob
PS:
Das gilt für Drupal 6, bei 7 musst du den EntityController beerben.
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Danke erstmal für die
am 25.01.2012 - 11:15 Uhr
Danke erstmal für die weiteren Antworten...mein Ursprungspost war ja wirklich allgemein gehalten.
Bezüglich der CSV-Importierungen möchte ich kurz mal drei Varianten anfügen die ich umsetzen muss.
1.) per Cronjob werden jede Nacht Bestandsdateinen generiert (als csv). Hier gibt es verschiedenen Varianten wobei die größte schonmal
30.000 Datensätze beinhalten kann. Ich denke hier wäre tamper_feeds eine gute Lösung oder? Ich müßte es aber hinbekommen das die
"alten" Datensätze erst gelöscht werden. Alternativ kann ich selber eine Tabelle anlegen und über ein eigenes Modul auch den Import machen.
2.) Ich bekomme jeden Montag die kommissionierten Positionen pro Mitarbeiter der vorherigen Woche (ca. 50 Datensätze pro Woche). Ich möchte gerne
beim Import in einer Spalte festhalten um welche Kalenderwoche es sich hierbei handelt. Hierbei muß vor dem Import aber logischerweise auch geprüft werden
ob evtl. schon Daten für diese Kalenderwoche eingespielt wurden (kann ja mal doppelt laufen). Hier muss dann entweder ein erneuter Import abgelehtn
werden oder aber die alten Datensätze erst gelöscht werden.
3.) diese Variante ist fast wie die vorherige...hier geht es allerdings um die erfassten Auftragspositionen ud der entsprechende Tag ist im Dateinamen
enthalten..hier bräuchte ich dann auch die entsprechende Kalenderwoche.
Ist das speziell genug ;-). Mir geht es hier wirklich darummich und meine Denkweise mal auf den Prüfstand zu stellen. Aus der Macht der Gewohnheit möchte ich alles von Hand speziell nach unseren Bedürfnissen erstellen. Es könnte ja aber sein das man das eine oder andere eleganter mit den hauseigenen Modulen bzw. bereits existierende Module bewerkstelligen kann...fühlt euch also bitte nicht gegängelt.
Ati
Ich bin nicht doof....ich denk nur anders
Mit feeds und tamper_feeds
am 25.01.2012 - 11:26 Uhr
lassen sich auch bestehende Datensätze aktualisieren.
Es muss natürlich einen eindeutigen Schlüssel geben, an dem der Datensatz erkannt werden kann.
Grüße
Ronald
Hi Ati, zu 1.) Du bist im
am 25.01.2012 - 11:39 Uhr
Hi Ati,
zu 1.)
Du bist im Intranet, warum spielst Du die 30.000 Datensätze nicht per
direkter Verbindung in Datenbank?
Bei den 30.000 Datensätzen müsstest Du (je nach grösse der Datensätze)
aufgrund der Speicherlimits die Daten in Batches via BatchAPI einspielen.
Für einen grossen Import ist PHP nicht geeignet (schon gar nicht der XAMP Stack).
Lass den cron job über JAVA laufen.
2.) Auch hier verpasse den Daten einen Timestamp und speichere Direkt in die Datenbank wenn
Timestamp aktueller.
3.) Auch das wäre gelöst wenn Du das direkt in Deine DB einspielst.
LG
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
@Hyp1 zu 1.) es gibt keine
am 25.01.2012 - 12:07 Uhr
@Hyp1
zu 1.) es gibt keine direkte Verbindung zu unserem Warenwirtschaftssystem
zu 2.) was nützt mir ein Timestamp wenn ich z.b. heute erst die Daten aus der ersten Kalenderwoche einspiele?
Ich bin nicht doof....ich denk nur anders
@Ati 1.) Ich dachte Du
am 25.01.2012 - 12:19 Uhr
@Ati
1.) Ich dachte Du hättest oben geschrieben im Intranet,
Ich meinte ausserdem die Drupal lMYSQL Datenbank nicht das Warenwirtschaftssystem.
Du möchtest die Daten ja in Drupal haben.
Im intranet sollte es wohl vollkommen unkritisch sein eine direkte Verbindung auf Port 3306
zur Datenbank machen zu können.
2. Vom Wirtschaftssystem hast Du bestimmt einen Timestamp der letzten Änderungen eines Datensatzes.
Beim Import scheust Du obe dieser vorhanden ist oder grösser als der der schon in der Drupal DB ist.
Wenn nicht speicherst Du diesen Datensaötz mit Timestamp in der Drupal DB ab.
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Ne ich habe keinen Timestamp
am 25.01.2012 - 12:23 Uhr
Ne ich habe keinen Timestamp in den csv-Dateien..leider
Wie man merkt ist es nicht ganz so einfach unser jetziges Gebilde auf Drupal abzubilden..bin aber trotzdem
der Meinung mit diesem Projekt auf dem richtigen Weg zu sein.
Ich bin nicht doof....ich denk nur anders
Also, wenn Du keinen
am 25.01.2012 - 12:47 Uhr
Also,
wenn Du keinen Timestamp hast wirst Du keinen Weg haben
festzustellen ob ein Datensatz schon aktuell ist oder nicht.
d.H. Du wirst jeden Tag sowieso alle Daten einspielen müssen.
In allen Systemen die ich kenne gibt es ein Aktualisierungs Datum eines Datensatzes.
Ich denke der Import Export der Daten ist von der Seite nicht sehr gur überlegt worden.
Denn wenn sich von den 30,000 Datensätzen nur ein kleiner Teil geändert hat (sagen wir 10), musst
Du dann 30'000 Inserts anstatt 10 machen.
Das ist nicht Redundant und auch nicht Performant für eine solche Schnittstelle.
Allerdings ist 30'000 Datensätze wirklich nicht viel.
Gruss
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Den Part mit den 30.000 hast
am 25.01.2012 - 12:54 Uhr
Den Part mit den 30.000 hast Du jetzt falsch verstanden...die sollen sowieso jeden Tag gelöscht und neu importiert werden.
Es geht um die Kommissionierleistung..sowie Tagesumsatzprotokoll...aber vielleicht kann ich ja meinen Code aus unseren aktuellem Intranet
in ein neues Modul einbauen...wenn ich denn extra ein Modul schreiben werde.
Ich bin nicht doof....ich denk nur anders