Die Entscheidung, ob eine Schnittstelle für nicht technisches Personal zur Änderung von Geschäftsregeln verfügbar gemacht werden soll, hängt weitgehend von mehreren Faktoren ab, einschließlich der Projektziele, der Projektkosten, der Projektlaufzeit und des Verhältnisses von Bekannten zu Unbekannten in der EU Projekt.
Wenn ich zum Beispiel glaubte, dass niemand die Regelschnittstelle verwenden würde, würde ich mich wahrscheinlich gegen die Implementierung entscheiden. Wenn ich jedoch Grund zu der Annahme hätte, dass Änderungen häufig sind und unterschiedliche Endbenutzer unterschiedliche Regeln erwarten würden, würde ich in Betracht ziehen, an der Erstellung solcher Funktionen zu arbeiten.
Ich habe mich für ein Projekt entschieden, und es dauerte Jahre, bis die Funktion jemals weit verbreitet war. Ich vermutete, dass wir irgendwann Endbenutzer haben würden, die die Dinge selbst anpassen möchten, also haben wir diese Funktionalität in Teilen implementiert.
Es begann als etwas, das nur bestimmte Leute, wie Entwickler oder Administratoren, verwenden konnten. Die Benutzeroberfläche war klobig, aber verwendbar, wenn Sie wussten, was Sie taten. Als sich das Produkt jedoch der Fertigstellung näherte, erwies sich die Backend-Logik der Regelengine als nützlich, und unser Designteam gab ihr eine schöne, kundenorientierte Benutzeroberfläche.
Wenn ich es anders machen würde, könnte ich eine andere Datenbankarchitektur wählen, nur weil die Lernkurve hoch ist. Kurz gesagt, die frühzeitige Erstellung führte später zu vielen kundenorientierten Funktionen, ohne dass Sie erneut in den Code zurückkehren und ihn so umgestalten mussten, dass alle dynamischen Regeln enthalten waren.
Wenn ich dies tun würde, würde ich eine domänenspezifische Sprache erstellen, um die Regeln auszudrücken, und den Geschäftstypen möglicherweise eine Benutzeroberfläche geben, um sie auf Anfrage zu ändern. Verwenden Sie dann eine funktionale Sprache (wie Haskell, Lisp oder Erlang), um die Regeln zu bewerten.
Wenn massive Parallelität erforderlich wäre, würde ich mich für Erlang entscheiden, das Parallelität sehr gut macht. Die Verwendung von Erlang lässt sich gut von 1 Knoten auf 100 oder mehr skalieren.
Wenn Sie sich die Regeln als eine Algebra vorstellen, die auf ein Dataset angewendet wird, ist es viel einfacher, die Anforderungen in Ihrem Code zu logisieren und sich selbst (oder Ihren Managern) zu beweisen, dass sie korrekt sind. Dies ist einer der Orte, an denen eine funktionale Sprache zu Ihren Gunsten funktioniert.
quelle
Ich habe eine Anwendung geschrieben, die auf WF (Windows Workflow Foundation) basiert. Mein Chef (ein DBA) war überzeugt, dass WF Multithreading durchführen kann, ohne dass Parallelität geplant werden muss. Das Gedächtnis war gründlich geteilt, aber es gab so viele Probleme, dass ich es nicht in nur wenigen Absätzen erklären kann, und es hängt nur geringfügig mit Ihrer Frage zusammen ... also fahre ich fort.
Fähigkeit, BL zu iterieren:
WF macht das gut.
Erlauben Sie Nontechies, "eine App zu erstellen":
WF macht das gut, WENN die Architektur funktioniert UND Nontechies technische Einschränkungen verstehen ... Unsere haben es nicht getan.
Fähigkeit, Geschäftsregeln im Allgemeinen zu verstehen:
Es gibt einige Add-Ins, die einige grundlegende Aufgaben ausführen können, ähnlich wie Sharepoint Workflows automatisieren kann. Ich bin nicht auf diese Dinge eingegangen.
Qualität von Software-Versionen:
Mittelmäßig. WF hat für unsere Zwecke keine gute Leistung erbracht, aber das System war schlecht konstruiert und meine Hände waren gebunden.
Geschwindigkeit der Bewerbungen:
Schleppend. Die Lernkurve ist für Entwickler und Endbenutzer gleichermaßen ziemlich steil. Die Art und Weise, wie WF-Speicher (App-Domains, wenn ich mich recht erinnere) die Thread-übergreifende Kommunikation, Mutexe und andere Threading-Konzepte kludgy machte oder einfach überhaupt nicht funktionierte.
Letztendlich habe ich einen Prototyp geschrieben, um zu beweisen, dass WF bei der Implementierung versagt. Ich habe es durch gewöhnliches Multithreading ersetzt. Leistung und Lesbarkeit des Codes wurden verbessert. Nehmen Sie dies mit einem Körnchen Salz, da dies meine erste professionelle WF-Anwendung war.
Nontechs können glauben, dass praktisch alles möglich ist, ohne dass ein Programmierer erforderlich ist. Dies ist ein potenziell großer Nachteil für den gesamten "Dummy Down" von BL. Soziologische Probleme im Zusammenhang damit töteten das Projekt.
Wenn ich zurückgehen und es auf meine Weise tun könnte : Verwenden Sie traditionelles Gewinde und das BL-Formteil, das über das Dekorationsmuster erzielt wird . Ich habe einen Proof of Concept geschrieben, der diese Technologien verwendet und gut funktioniert hat. UND das BL-Mapping sollte in eine EINFACHE Benutzeroberfläche eingebunden werden.
Update
Ich habe einen alten Beitrag gefunden, den ich bei der Bearbeitung von Parallelitätsproblemen geschrieben habe. Der Code zeigt, wie das Drucken von "Hallo Welt" in parallelen Workflows nicht funktioniert, ohne zu verstehen, was unter den Deckblättern vor sich geht (was den gesamten Zweck der WF-Abstraktion zunichte macht). Der MSDN-Moderator erklärt einen allgemeinen Überblick darüber, wie parallele Aktivitäten wirklich sequentiell sind. Er schließt mit "Sie müssen das gesamte Handbuch lesen", um etwas so Grundlegendes zu tun. http://social.msdn.microsoft.com/Forums/de/windowsworkflowfoundation/thread/8a1fa165-ad5c-4cd2-b489-7ea5fc31fed8
Viel Glück.
quelle
Ich habe eine weniger als perfekte Erfahrung mit der Verbindung von Java-Code zu einer Oracle-Regel-Engine. Einiges davon mag auf Unerfahrenheit der Regelautoren zurückzuführen sein, aber das ist es, womit ich konfrontiert war.
Ich denke nicht, dass die Wahl, eine Regel-Engine zu verwenden (oder nicht), eindeutig ist. Ich schlage vor, dass Sie einen Prototyp eines Motors erstellen, den Sie verwenden möchten, und dann eine fundierte Entscheidung treffen. Sie sind sicherlich keine Silberkugel ...
quelle