War ein System, das eine Regelmotor enthielt, jemals wirklich erfolgreich? [abgeschlossen

StackOverflow https://stackoverflow.com/questions/206425

  •  03-07-2019
  •  | 
  •  

Frage

Unser System (Exotic Commodity Derivat Trade Capture und Risikomanagement) wird in Kürze saniert. Ein Vorschlag, den ich gehört habe, ist, dass eine Regelmotor die Endbenutzer (Rohstoffhändler, die so ziemlich raffiniert) erleichtert, bestimmte Änderungen an der Geschäftslogik zu erleichtern.

Ich bin ein wenig skeptisch gegenüber Regelnmotoren. Der Agilist in mir fragt sich, ob sie nur eine technische Lösung für ein Prozessproblem sind ... dh. Es dauert zu lange, bis unsere Entwickler auf den Bedarf des Unternehmens nach Veränderung reagieren. Die Lösung für dieses Problem sollte ein kollaborativerer Ansatz für die Entwicklung, eine bessere Testberichterstattung und eine agilere Praktiken rundum sein.

Es wäre sicher hilfreich, zu hören über Situationen, in denen eine Regelmotor wirklich ein Segen war (insbesondere in einem Handelsumfeld).

War es hilfreich?

Lösung

Ich habe zwei Anwendungen gesehen, die den Blaze RETE Engine von Fair Issac verwendeten.

Eine Anwendung knallte Tausende von Regeln in eine einzige Wissensbasis, hatte schreckliche Gedächtnisprobleme, ist zu einer schwarzen Box geworden, die nur wenige verstehen. Ich würde das nicht als Erfolg bezeichnen, aber es läuft in der Produktion.

Bei einer anderen Anwendung wurden Entscheidungsbäume verwendet, um in der Reihenfolge von Hunderten von Fragen in einer medizinischen Form zur Disposition von Kunden zu vertreten. Dies wurde elegant gemacht, dass Geschäftsleute die Regeln nach Bedarf aktualisieren können, ohne einen Entwickler einbeziehen zu müssen. (Muss jedoch immer noch von einem eingesetzt werden.) Ich würde das einen großen Erfolg nennen.

Es hängt also davon ab, wie gut das Problem, die Größe des Regelsatzes, das Wissen der Entwickler ist. Mein Vorurteil ist, dass es wahrscheinlich kein guter Ansatz ist, einfach einen Regeln zu einem einzigen Fehler zu machen und Regeln zu entwerfen. Ich würde mit einem datengesteuerten oder tabelgesteuerten Ansatz beginnen und wachsen, bis eine Rules-Engine benötigt wurde. Ich würde mich auch bemühen, die Rules -Engine als Teil des Verhaltens eines Objekts zu verkörpern. Ich würde die Rules -Engine vor den Benutzern verstecken und versuchen, den Regeln in das Domänenmodell zu partitionieren.

Andere Tipps

Ich weiß nicht, ob ich sagen würde, dass sie jemals wirklich ein Segen sind, aber ich denke, sie können sicherlich wertvoll sein. Ich habe einige Jahre in der Versicherungsbranche an einem System gearbeitet, in dem eine Rules -Engine recht erfolgreich eingesetzt wurde, um den Geschäftsnutzern Regeln zu erstellen, die feststellten, welche Richtlinien je nach Staat legal waren.

Wenn Sie beispielsweise in bestimmten Staaten einen Copay haben mussten oder bestimmte Kombinationen von Selbstbehalt und Copay weder aufgrund von Produktüberlegungen oder weil es aufgrund des staatlichen Rechts einfach illegal war.

Die Zahl der Staaten, in denen das Unternehmen zusammen mit der ständigen Änderung der Regeln (vierteljährlich) betrieben wurde, würde dies zu einer schwindelerregenden Codierungspraxis machen. Noch wichtiger ist, dass es nicht im Fachwissen eines Programmierers liegt. Es fügt eine besonders sinnlose Kommunikation hinzu, bei der der Endbenutzer die Regel für einen Programmierer beschreibt, der kein Experte für Versicherungsbranche ist, wie sie es sind.

Eine korrekte Regulierungsmotor kann weiterhin ein Workflow -System ermöglichen, das gute Tests ermöglicht. In diesem Fall wurden die Regeln in einer Datenbank gespeichert, und es gab QA- und Produktdatenbanken. So konnten die BAs ihre Regeln in der QA testen und sie dann zum Herstellen von Produkten fördern.

Wie bei irgendetwas geht es normalerweise um die Implementierung und nicht um die tatsächliche Technik.

Ja, Microsoft hat eine Geschäftsregel -Engine (BRE) in Biztalk, die seit Jahren erfolgreich eingesetzt wird. Ich habe gehört, dass Kunden BizTalk (sehr teuer) nur für den BRE kaufen lassen.

Nach meiner Erfahrung ist die Praktikabilität eines Unternehmensbenutzers die Regeln für keine nicht. Normalerweise braucht eine technische Person, um den Editor des Business Rules -Editors zu bearbeiten.

Eine Regel Engine ist kaum mehr als etwas, das deklarative Aussagen ausführt. Sie kommen mit zwei Hauptvorteilen (die ich sehe):

  1. Ihre Geschäftslogik wird von einem einzelnen Ort gepflegt, anstatt während des gesamten Anwendungscodes bestreut zu werden. Technisch gesehen sollte eine gut gestaltete Anwendung dies bereits mit der Architektur ausführen, unabhängig davon, ob eine Regelmotor vorhanden ist oder nicht.
  2. Sie müssen sich über Abhängigkeiten zwischen deklarativen Aussagen weniger Sorgen machen. Die Regel -Engine sollte klug genug sein, um die Reihenfolge zu entscheiden, um Regeln auf der Grundlage von Abhängigkeiten auszuführen. Sie können feststellen, dass einige Regelmotoren eine sequentielle Reihenfolge von Regeln in einem Regeln oder aufgerufene Regeln (Gruppen von Regeln) in einer bestimmten Reihenfolge unterstützen, dies ist jedoch nicht wirklich im Geiste der deklarativen Programmierung. Viele Regelmotoren verwenden RETE (einen Algorithmus), um zu entscheiden, wann die Ausführung von deklarativen Aussagen geplant werden soll.

Ich vermute, dass die meisten, wenn nicht alle, Regelmotoren mehr Gemeinkosten hinzufügen, als wenn Sie das bestmögliche Programm schreiben, das keine Regel -Engine verwendet. Dies ähnelt dem, wie das Schreiben von Code in der Baugruppe im Allgemeinen schneller ist als ein Compiler (aber Sie schreiben normalerweise keine Baugruppe, da es bequemer und produktiver ist, Abstraktionen auf höherer Ebene zu verwenden).

Wenn Sie hier anhalten würden, würden Sie wahrscheinlich Programmierer verwenden, um Regeln zu verwalten und eine Regel -Engine als bequeme Möglichkeit zu verwenden, um eine Geschäftslogikstufe in Ihrer Anwendung zu erstellen. Einige Regelmotoren bieten so genannte Vorlagen, mit denen Sie Vorlagen für Regeln definieren können. Der Vorteil hierfür ist, dass nicht-technische Benutzer in der Lage sein sollen, ihre eigenen Regeln zu schreiben und vorhandene Regeln zu ändern.

Eine Regel -Engine ist ein weiteres Werkzeug in Ihrer Werkzeugkiste, das bei ordnungsgemäßer Verwendung wertvoll sein kann.

Das Problem bei vielen dieser Regelmotoren ist die mangelnde Geschwindigkeit und die Tatsache, dass das Ersetzen oder Austausch von Regeln die bestehenden Arbeitsregeln auf subtile Weise aufbrechen kann. Daher müssen Sie das System nach jeder Regeländerung noch gründlich testen. Sie tauschen also im Grunde nur eine Computersprache gegen eine andere aus - eine mit einer viel kleineren Benutzerbasis. Wie ein weiteres Poster erwähnte, habe ich noch keinen Business -Analyst eine Regel -Engine erfolgreich verwendet. Sie brauchen trotzdem einen Programmierer.

Ich habe es sicherlich, aber nicht öffentlich über sie sprechen, aber es ist wahrscheinlich, dass Sie dieses Jahr mehrmals mit einem interagiert haben;)

Ich sehe es in 2 Camps: die Logikprogrammierer und die Geschäftsanwender. Verschiedene Tools zielen auf verschiedene Sätze ab, einige beide. Die erfolgreichen Fälle von Geschäftsnutzern haben erst gearbeitet, als es sich um eine Teilmenge der Logik handelte, und sie hatten auch eine Möglichkeit, Testfälle zu definieren und sie selbst zu führen (und sie sind bereit, logisch zu denken). Logikprogrammierer sind seltener, können jedoch häufig aus nicht imperativen Programmierhintergründen stammen (sie sind auch die Art von Menschen, die funktionales Programmieren intuitiv finden).

Denken Sie am Ende des Tages auch bei visuellen Werkzeugen daran, wenn Sie einem Computer sagen, er solle etwas tun, das noch programmiert wird.

Ich arbeite mit vielen Anbietern im Raum und eines der großartigen Dinge daran ist, dass ich mit vielen ihrer Kunden sprechen kann. Also, ja, Hunderte von Unternehmen haben bekommen exakt Die Vorteile, die sie versprochen wurden - erhöhte Beweglichkeit, bessere Geschäfts-/IT -Zusammenarbeit, einfachere Einhaltung der behördlichen Einhaltung, bessere Konsistenz der Entscheidungsfindung, niedrigere Wartungskosten, schnellere Zeiten des Marktes usw.

Immer wieder sehe ich über alle wichtigen Anbieter und Open -Source -Player, die korrekt verwendet wurden - um operative Entscheidungen mit hohem Volumen mit vielen Regeln zu automatisieren und zu verbessern Ein hoher Geschäftsdomäneninhalt - Geschäftsregulierungsmanagementsysteme funktionieren.

Wirklich.

Meine Erfahrung beschränkt sich auf (i) nicht viel und (ii) Prolog; Ich kann jedoch mit Sicherheit sagen, dass eine Regel Engine Ihnen helfen kann, aussagekräftige Konzepte auszudrücken, die viel sauberer als den Verfahrenscode sind.

Regelnmotoren werden routinemäßig im Versicherungsgeschäft eingesetzt. Ich habe an Systemen mit Hunderten (600) Regeln gearbeitet, die in einer Regeln -Engine implementiert wurden. Es hat sehr gut funktioniert.

Haben Sie eine Bonität? EIN Fico Punkte vielleicht? Das ist FLuft ichSAAC CORoration, die Entwickler der Blaze Regeln Engine.

Für eine Weile arbeitete ich für das pitzenverteilte Computerprojekt, das ein System zur Berechnung von atmosphärischen Daten mit hohem Volumen mit hohem Volumen entwickelte. Das System enthielt drei Teile: der Datenmanager, den Scheduler und die Algorithmusausführungskomponente. Es könnte eine beliebige Anzahl von diesen Komponenten geben, die alle über Webdienste erfolgen, aber es war für verschiedene Forscher, willkürliche Arbeitsplätze gegen willkürliche Daten auszuführen, und es ermöglichte auch, dass unterschiedliche Planungsmechanismen als geänderte Anforderungen angeschlossen werden.

Ich habe das Projekt verlassen, bevor es zu weit vom Boden gerichtet war, aber dies scheint möglicherweise zum Szenario zu passen und als ein weiteres Beispiel für eine Art Regelmotor zu dienen. Trotzdem, wenn die ursprünglichen Entwickler immer noch die Algorithmen zum Ausführen sein, kann ich bei der Einführung einer Regelmotor nicht zu viel Nutzen sehen, es sei denn Es ist eigen.

Dies klingt nach etwas mehr als eine einfache Regelmotor, aber eine solche Architektur könnte auch für eine Regelmotor gilt.

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