Payroll-System-Design, Business-Logik in der SPs oder Application Layer (C#.Net), Wartbarkeit - Repost
Entwerfen wir ein Lohn-Generation-System für einen Kunden.
Die Organisation, die wir im Visier haben, hat eine Hierarchie wie folgt:
Unternehmens -> Cluster -> Business Unit (BU) -> Abteilung -> Mitarbeiter
Das Gehalt eines Mitarbeiters setzt sich aus verschiedenen lohnbestandteilen.
Jedes Gehalt-Komponente hat 3 Regeln zugeordnet, der eine Rechenregel (Berechnen Komponente als % der anderen Komponente, oder %, die eine Feste Zahl oder eine festgelegte Anzahl), Förderfähigkeit der Regel (ob ein Mitarbeiter/Dept ist berechtigt, für a-Komponente) und eine Einschränkung der Regel, die Grenzen tha max und min eine Komponente.
****Diese Regeln sind editierbar und können vom Benutzer bearbeitet werden end-user**. Auch diese Regeln werden von oben nach unten vererbt, aber wenn definiert auf einer niedrigeren Ebene, der unteren Ebene Regel Vorrang.**
Wir haben eine Datenbank, die hat Besuch, Blätter, Boni Tabellen und diese Regeln sollten auch für die Interaktion mit diesen Tabellen.
Den client generieren Gehaltsabrechnung für mehrere Mandanten jeder das hosting einer Separaten Datenbank-Instanz. Sie können sich durch eine unterschiedliche Auslegung der einzelnen Komponenten und kann mit anderen Komponenten.
Wir sind nur auf der Suche nach Unterstützung für SQL Server und Lohn-generation, eine offline-Aktivität.
Wir sind getrennt auf, wo die Logik, die verwendet wird, diese Regeln zu generieren, die einzelnen Steuer-Komponenten (das sind Steuerliche Abzüge, Steuerliche Abschreibungen, Wertberichtigungen, etc.).
Einige Leute befürworten magic SPs, die eine Mitarbeiter-Id und generieren Sie eine Abrechnung für diesen Monat.
Andere wollen die Logik aufgeteilt werden in separate Komponenten, die die abhängigen Daten für einen Mitarbeiter im application-layer und berechnen diese Komponenten gibt.
Die Reihenfolge unserer Prioritäten sind:
1. Die Fähigkeit, sich Veränderungen schnell neue Kunden
2. Langfristige Wartbarkeit
3. Leistung
1 und 2 überwiegen 3 hier von einem großen Faktor werden, es wird eine offline-Aktivität.
Wartbarkeit und Schnelle Anpassbarkeit sind sehr wichtig, wir werden mit der Bereitstellung der Anwendung für verschiedene Kunden.
Client A kann ein gehaltsbestandteil Regel als ((0.3 * Basic) + 800)
und Client B als (0.2 * Basic) + (0.1 * Atendance Bonus)
Wird SPs-Ursache für ein Durcheinander hier, wie die Regeln, die oben vorgeschlagen wird vom Endbenutzer spezifiziert und müssen sich dabei individuell über eine web-UI.
Wir haben zum Parsen der Formeln von SQL. Wie schwer oder einfach wird es sein?
Welche Vorteile dies zu tun, in den Application-Layer (C# .Net) haben über die Verwendung SPs?
Der original post ist hier:
Design-Hinweise, Payroll System...repost
...aber keine der Fragen wurden richtig beantwortet.
Anregungen und Hinweise zu bestehenden Systemen " - Architektur wird sehr hilfreich sein.
...und ja, wir werden mit LINQ to SQL an anderer Stelle im system.
Freundlichen GRÜßEN,
Ashish Sharma
- TLDR. Können Sie vereinfachen Ihre Frage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich versuche immer, zu scheuen, setzen Sie business Logik in der DB-Schicht. Es ist schwieriger zu schreiben, zu Debuggen und zu warten. Darüber hinaus, die DB ist in der Regel die teuerste Ebene zu skalieren. Wenn Sie am Ende brauchen, um Rindfleisch-up Ihr system, um mehr Benutzer unterstützen zu können, ist es relativ Billig und leicht zu hinzufügen neuer Webserver auf einem system, aber das hinzufügen von DB-instances wird teuer, da jede DB eine Lizenz benötigt und zusätzliche Unterstützung.
Wenn Sie speichern, werden die Formeln wie in Beispiel JEP (java), es ist nicht viel von einem problem. Halten Sie einfach die vollständige Formel als Zeichenfolge: ich.e: "zahlen=((0.3 * Basic) + 800) und dann analysieren und es in einen Baum.
Sehen Sie einige der Gep-Dokumentation für die info, und die Ideen von dort. Sollte nicht 2 problematisch zu implementieren, einfache Lösungsverfahren für die Formeln hast du hier gepostet.
Meine sugestion:
Wenn die Komplexität dieser Formeln nicht viel Sie tun können diese in jede Seite, die Sie wollen, da es nicht nehmen Sie viel Zeit, um es zu verarbeiten.
Wenn Sie auf der Suche für ein .Net-Lösung, die bewerten Formel dargestellt, in der Streicher, hier ist ein ausgezeichneter Artikel, der die Angaben über ANTLR und C# zum erstellen einer Berechnungs-engine. Es ist eine voll funktionsfähige Formel-interpreter Parsen von Zeichenfolgen, baut ein AST, dann der Ausdruck ausgewertet wird. Neben der Berechnungs-engine implementiert, mit dem Besucher-Muster, so dass, wenn Sie haben Funktionen, die Sie ausführen möchten, wie zum Beispiel Datenbank-lookups können Sie ganz einfach integrieren Sie die Anpassung in Ihre Lösung.
Haben Sie gehört, der Reflexion oder der Delegierte ?