Frage

Ich versuche, das Domain-Modell eines Managementsystems zu machen. Ich habe die folgende Art von Menschen in diesem System:

employee
manager
top mananger

ich beschlossen, eine User zu definieren, von wo aus Employee, Manager und Top Manager wird spezialisieren aus. Nun, ich weiß nicht, welche Art von Spezialisierung Hierarchie soll ich wählen. Ich kann nicht zwischen den folgenden Möglichkeiten entscheiden:

oder

Welche vorzuziehen sein könnte und warum?

Wie lange Coder, jedes Mal wenn ich versuche, ein Domain-Modell zu tun, ich habe gegen die Idee zu kämpfen versuchen, in zu denken, wie ich das Code werde. Von dem, was ich verstanden habe, soll ich denke nicht, über diese Angelegenheiten in dem Domäne-Modell, nur in Objektbeziehungen. Ich muss nicht glauben, der Code-Duplizierung oder jede dieser Art von Details hier, so dass ich eine der Optionen über den anderen wählen kann nicht wirklich.

Danke

EDIT:

Ich werde ein bisschen deutlicher sein: Dies ist ein Programm Arbeiterurlaubspläne zu verwalten. Mit diesem Programm kann ein Mitarbeiter den Satz von Urlaubstag für das Jahr wählen. Dann könnte der Manager genehmigt oder nicht, diese Tage für jeden der Mitarbeiter und am Ende des Tages sollten die Top-Manager genehmigen oder die Entscheidungen der Manager mißbilligen. Dies ist alle Benutzer meines Programms sollen tun können. Es gibt keine andere Aufgaben.

War es hilfreich?

Lösung

Das kommt vor allem auf eine Frage, wie Sie Ihre Begriffe definieren. Die grundlegende Frage ist, ob ein Manager für einen Mitarbeiter unter allen möglichen Umständen ersetzt werden kann - und ohne zu wissen, die präzise Regeln des Arbeitsplatz modelliert werden, ist es unmöglich, eine Möglichkeit zu sagen, oder die andere darüber.

Eine allgemeine Vorstellung ist, dass ja, zumindest bis zu einem bestimmten Punkt in einem Manager kneifen sollte in der Lage sein, den Job von einem seiner Untergebenen zu tun (zumindest eine Ebene unter, und möglicherweise zwei oder drei).

Auf der anderen Seite, in einigen Orten mit vielen Vereinigung getriebenen Regeln eingeführt, die nicht der Fall überhaupt sein können. Selbst wenn eine Person zu tun, einen Job durchaus in der Lage ist, können Regeln sie verhindern überhaupt in dieser Position aus zu ersetzen. In einigen Fällen ist dies von Zertifizierungsanforderungen entsteht und so (zB kann der Manager eine qualifizierte gewesen, die Arbeit zu tun, aber die erforderliche Zertifizierung abgelaufen ist) oder von Dingen wie Union Regeln (zum Beispiel ein Freund von mir, weil einmal gerügt wurde er trug eine Taschenlampe Glühbirne und Batterie aus dem Unternehmen zu speichern zurück in seinem Labor statt eine Vereinigung bekommen Materialien Handler, dass für ihn zu tun).

Andere Tipps

Im wirklichen Leben Manager sind auch Mitarbeiter. Das ist also sicher nur eine Kette von zunehmender Spezialisierung:

User -> Employee -> Manager -> Top Manager 

Bearbeiten

"Das ist ein Programm zur Verwaltung der Urlaubspläne der Arbeitnehmer. "

Sie Unternehmen tun Manager nehmen Urlaub geplant? Sicher tun sie. Und ebenso sicher sind Sie keine separate Anwendung gehen zu bauen, dass zu verwalten. Also, was Sie wirklich brauchen, ist dies:

User -> Requester
     -> Approver

Jeder Benutzer wird ein Anforderer in einer Genehmigungskette sein. (Sie können für den CEO Sonderregelungen benötigen). Darüber hinaus werden einige Benutzer sein Genehmiger in einer oder mehreren Ketten. Der letzte Genehmiger wird wahrscheinlich nach dem Grad der Anforderer variieren je: der CEO wollen sich nicht die Mühe mit den Ferien Anordnungen der janitorial Personal Genehmigung

.

Sie werden einige Regeln brauchen, um durchzusetzen, die den Urlaub genehmigende irgendwelcher gegebenen Anforderer sein kann. Sofern Sie eine außerordentlich flache Organisation haben werden feststellen, dass Sie eine Hierarchie der Arbeiter und Manager haben. Zum Beispiel kann ein Teamleiter oder Vorarbeiter - Personen, die in anderer Hinsicht „Arbeiter“ sind eher als „Manager“ - kann in der Kette sein. Auch müssen Sie möglicherweise andere Aspekte der Organisation berücksichtigen. Fr Beispiel, wenn die Arbeitnehmer tragen mögen im nächsten Jahr verlassen über die Genehmigung von der HR-Abteilung benötigen kann, jemand, der normalerweise überhaupt keine Führungsverantwortung für die Mitarbeiter hat.

Edit 2

Okay, so modellieren wir eine beliebige Menge von Regeln eher als ein realistisches Szenario.

Lassen Sie uns sehen. Jeder Benutzer passt in eine einzige Kategorie, die durch diese Aufgaben definiert:

  • Ein Mitarbeiter kann Urlaubsantrag
  • Ein Manager kann Genehmigung oder ablehnen Abwesenheitsantrag
  • ein Top-Manager kann eine Genehmigung oder Ablehnung annehmen oder Kipp

Manager und Top-Manager haben keine Verhaltensweisen gemeinsam. Folglich ist das erste Modell der richtigen.

Ich würde diese als Schauspieler modellieren. Sie sind nicht die Domäne des Systems, aber die Benutzer des Systems. Möchten Sie einen Shop Inventar-System mit ‚Schule-Kind, das Süßigkeiten will‘ modellieren, ‚Schule-Kind der Eltern, die Tabak will‘, ‚Schreiber‘ etc? Obwohl nur ein Filialleiter (Schauspieler) Erstattungen ohne Quittung geben kann, was auf der Systemebene zählt, ist, dass das System den Schlüssel des Store Manager erkennt, und dann ist es, dass eine Genehmigung Token, die in der Software ist eher als Rolle nimmt der Schauspieler.

Die Domäne des Systems Sie beschreiben, ist Urlaubsanträge und das Benutzerkonto, und einige der Anwendungsfälle bedeuten, dass einige der Konten Erlaubnis bestimmten Zustand Transformationen auf einen Urlaubsantrag zu erfüllen haben.

Der Unterschied bei der Modellierung User / Manager / Mitarbeiter als Schauspieler und Rollen ist, dass man auf der Modellierung konzentrieren kann, was Sie brauchen in das System zu bringen, so muß nicht über Hierarchien von Akteuren - Sie beginnen mit Abstraktion bei der Verwendung Fall und Systementität Ebene, anstatt in den Schauspielern. Es ist nicht immer eine schlechte Idee zu denken ‚wie würde diese Arbeit in Code‘, zumindest so weit wie die Frage, ‚warum diese Unterscheidung plagt Codierung‘.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top