suchen
HeimJavajavaLernprogrammSo implementieren Sie ein Prozessorchestrierungs-Framework in Java

Prozessregistrierung

Wir haben bereits erwähnt, dass wir das Registrierungsprozessmodell in Form von YML, Eigenschaften, XML, JSON und Schnittstellen unterstützen müssen, um das widerzuspiegeln. Single-Responsibility-PrinzipWir müssen die Logik des Parsens eines Formats unabhängig verarbeiten. Um das -Prinzip der Erweiterungsentwicklung und des Abschlusses von Modifikationen widerzuspiegeln, definieren wir zunächst eine Reihe von Schnittstellen und übergeben Sie dann die Fabrikmodell-Formel. Stellen Sie die entsprechende Implementierungslogik bereit. Hier ist die Fabrik der Benutzer, der die spezifische Implementierung über die Schnittstelle aufruft, und die Implementierung hier ist der Anbieter, der ebenfalls eine Reihe von # ist. 🎜🎜#Strategiemuster.

So implementieren Sie ein Prozessorchestrierungs-Framework in Java

Prozessladen


Prozessladen Wir müssen mehrere andere erforderliche Funktionspunkte kennen: 1. Unified bereitstellen 2. Bereitstellung von Ausführungsdatensätzen und Ausführungszeit. 3. Verschiedene Prozessknoten müssen unterschiedliche Parser definieren. 5. Prozessknoten werden der Reihe nach ausgeführt.

So implementieren Sie ein Prozessorchestrierungs-Framework in Java

Führen Sie verschiedene Parsing-Methoden über verschiedene Knotentypen aus. Es ist offensichtlich, dass zum Erstellen von Parsing-Klassen der

Werksmodus erforderlich ist. , und es muss für die Entwicklung und Änderung externer Erweiterungen geschlossen werden. Um Knoten hinzuzufügen, müssen Sie keine andere Codelogik verwenden. Sie müssen lediglich einen Knotenparser in der Factory-Funktion hinzufügen. Gleichzeitig definieren wir hier eine Kartensammlung zur Verwendung in Das Analyseobjekt wird beim Laden der Factory-Funktion erstellt, anstatt bei jeder Analyse einen Parser zu erstellen, wodurch unnötiger Speicher reduziert wird

Der Code ist wie folgt:

<code>public class NodeComponentFactory {<br><br>    private final static Map<string> cacheParser = new HashMap();<br><br>    static {<br>        cacheParser.put(NodeParserEnum.method.name(),new MethodNodeComponent());<br>        cacheParser.put(NodeParserEnum.bean.name(),new BeanNodeComponent());<br>        cacheParser.put(NodeParserEnum.condition.name(),new ConditionNodeComponent());<br>        cacheParser.put(NodeParserEnum.service.name(),new ServiceNodeComponent());<br>        cacheParser.put(NodeParserEnum.subflow.name(),new SubFlowNodeComponent());<br>    }<br><br>    public static NodeParser getNodeInstance(String nodeName){<br>        return cacheParser.get(nodeName);<br>    }<br>}<br></string></code>
Wenn wir festgestellt haben, dass jeder Knoten-Parsing-Typ die Parser-Schnittstelle implementieren muss und jeder Knoten ähnliche Schritte hat, müssen wir hier die Verwendung einer abstrakten Fabrik in Betracht ziehen, die auch mit a konsistent ist

Abhängigkeitsinversion Das Designprinzip besteht darin, dass auf das obere Modul über die abhängige Schnittstelle zugegriffen wird. Das nächste Modul erbt die abstrakte Klasse und verwendet auch Strategiemuster, um Schnittstellenaufrufe durchzuführen. Im logischen Implementierungsprozess werden wir feststellen, dass viele Schritte wiederholt werden, z. B. das Initialisieren von Eingabeparametern und das Ausführen von Datensätzen. Wir fügen den gesamten wiederholten Inhalt in abstrakte Klassen ein und verwenden Vorlagenmodus, um dies zu ermöglichen Prozessknoten konzentrieren sich nur auf die Analyseebene.

<code>public abstract class AbstractNodeComponent implements NodeParser{<br><br>    public Map<string node> nodeMap;<br><br><br>    /**<br>     * 初始化参数<br>     * @param inputUrl<br>     * @param baseInput<br>     * @return<br>     */<br>    public BaseInput initInput(String inputUrl, BaseInput baseInput){<br>        BaseInput baseInputTarget = ClassUtil.newInstance(inputUrl, BaseInput.class);<br>        BeanUtils.copyProperties(baseInput,baseInputTarget);<br>        return baseInputTarget;<br>    }<br><br><br>    /**<br>     * 解析节点信息<br>     * @param node 节点信息<br>     * @param baseInput 请求参数<br>     * @param baseTemp 临时上下文<br>     * @return<br>     */<br>    public BaseOutput parserNode(Node node, BaseInput baseInput, BaseTemp baseTemp){<br>        baseTemp.setFlowRecord(baseTemp.getFlowRecord().append(FlowConstants.NODEKEY+FlowConstants.NODE+FlowConstants.COLON+node.getId()));<br>        BaseOutput baseOutput = parser(node, baseInput, baseTemp);<br>        return baseOutput;<br>    };<br><br>    @Override<br>    public void setNodeMap(Map<string node> nodeMap) {<br>        this.nodeMap = nodeMap;<br>    }<br><br>    @Override<br>    public abstract BaseOutput parser(Node node, BaseInput baseInput, BaseTemp baseTemp);<br><br>}</string></string></code>
Prozessladereihenfolge

Wir müssen die Komponenten für die Prozessausführung sehr sorgfältig aufteilen Implementiert eine Funktion in eine Komponente, um das

Prinzip der Einzelverantwortung widerzuspiegeln. Nur durch eine sehr feine Aufteilung der Ausführungsfunktionen können sie in jedem Prozess der Prozessausführung flexibel kombiniert werden , Sie können mehrere Komponenten sehen. Die erste ist der Eingang zur einheitlichen Ausführung des Prozesses. Es gibt zwei Orte, an denen sie verwendet wird, die erste ist die Schnittstelle für externe Aufrufe, die zweite ist der Einstiegspunkt für untergeordnete. Die zweite Komponente ist die einheitliche Ladeverwaltungskomponente, die oben erwähnte Factory-Klasse. Der Parser wird verwendet, um die Operationen verschiedener Knotentypen während des Entwurfsprozesses zu implementieren Prozesse, Management und Knoten müssen bekannt sein, um die Kopplung zu reduzieren. Nur so können verschiedene Komponenten flexibel zusammengestellt werden.

So implementieren Sie ein Prozessorchestrierungs-Framework in Java

Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein Prozessorchestrierungs-Framework in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.