Synchronisation und Asynchronität von Prozessen

Die Welt kann viel von Programmierern lernen. Er lernt bereits, aber nicht falsch. Ich habe zum Beispiel Prozesse und Algorithmen verwendet, aber einen solchen Ansatz wie Asynchronität nicht bemerkt.

Jeder Programmierer versteht, was Synchronität und Asynchronität sind. So viel versteht der Programmierer, so dass es für normale Prozessentwickler unverständlich ist.

Synchrone Aktionen eines Prozesses sind solche, die im Hauptthread innerhalb einer Prozessinstanz ausgeführt werden. Der Hauptunterschied zwischen dem synchronen Modus: Die nächste Aktion beginnt erst, wenn die vorherige abgeschlossen ist. Dementsprechend steht der Prozess auf dem Spiel, bis eine Aktion abgeschlossen ist.

Asynchrone Aktionen sind solche, die parallel zum Hauptthread ausgeführt werden, entweder in derselben Prozessinstanz oder in einem anderen Prozess insgesamt. Der Hauptunterschied zwischen dem asynchronen Modus: die parallele Ausführung von zwei oder mehr Zweigen des Prozesses.

Synchrone Prozesse sind wie Programme viel einfacher zu schreiben und zu debuggen, daher ist dieser Ansatz für das Prozessdesign sehr verbreitet. Es gibt viel mit Asynchronität zu tun, insbesondere mit der Festlegung von Übergangspunkten zur parallelen Ausführung und der Rückkehr zum Mainstream. Es gibt keine Versprechen im Leben.

Zum Beispiel der gleiche Beschaffungsprozess auf Anfrage. Es wird als Standardsequenz von Aktionen gezeichnet: Ein Antrag wurde angezeigt, der Lieferant wählt den Lieferanten aus, fordert Zeit und Kosten an, stimmt mit dem Verkäufer oder der internen Kontrollabteilung überein, erstellt eine Bestellung für den Lieferanten, fordert die Beurteilung der Gegenpartei in der Rechtsabteilung oder in der Buchhaltungsabteilung an, erstellt eine Zahlungsaufforderung, wartet auf diese Zahlung, überwacht die Bestellung, organisiert oder verfolgt dann die Buchung im Lager, sodass die Anwendung am Ende geschlossen wird. Der Prozess ist vollständig synchronisiert.

Stellen Sie sich nun vor - in unserem Informationssystem ist der Service der Lieferantenbewertung nicht verbunden. Die Rechtsabteilung muss also Informationen aus offenen Quellen sammeln. Dies bedeutet, dass die Bewertung Zeit braucht. Angesichts der Warteschlange der Anträge bei Anwälten vergehen drei Tage.

Was wird zu diesem Zeitpunkt mit dem Prozess geschehen? Nach synchroner Logik steht es auf dem Spiel. Der Lieferant, der ein echtes Element des Systems ist, wird keinen Finger bewegen, bis er die Bewertung des Lieferanten erhält - insbesondere wenn Sanktionen für die Arbeit mit nicht überprüften Gegenparteien vorgesehen sind.

Können wir hier Asynchronität hinzufügen? Natürlich. In diesem Moment, wenn der Lieferant den Lieferanten ausgewählt hat, kann er einen Antrag auf Bewertung des Kontrahenten an die Rechtsabteilung senden und während der Verhandlungen Preise und Bedingungen vereinbaren. Wenn er bereit ist, eine Bestellung aufzugeben, wird die Bewertung rechtzeitig eintreffen. Der Prozess endet vor drei Tagen.

Natürlich können Anwälte empört sein - wofür werden wir den Lieferanten bewerten, wenn Sie sich dort noch nicht klar entschieden haben, werden Sie ihn bei ihm bestellen? Was sollen sie antworten?

Die Lösung bietet sich an, wir haben sie bereits oben angegeben - um den Lieferantenbewertungsdienst anzuschließen. Jetzt verstehen wir noch besser, warum dies erforderlich ist - um Asynchronität zu gewährleisten und den Prozess zu beschleunigen. Obwohl der Dienst wahrscheinlich nur synchron sein wird. Was denkst du?

Wenn der Dienst nicht verbunden ist, kann diese Bewertung durch die Arbeit der "zukünftigen Verwendung" gerechtfertigt werden. Wenn Ihr Informationssystem über einen Ort verfügt, an dem die Bewertungsdaten aufgezeichnet werden können, müssen Sie sich bei der nächsten Zusammenarbeit mit diesem Lieferanten nicht mehr an die Rechtsabteilung wenden. Natürlich hat eine Bewertung ein Ablaufdatum, kann jedoch innerhalb bestimmter angemessener Grenzen verwendet werden.

Bei der Asynchronität ist das Fehlen von Garantien normalerweise beängstigend, dh das Risiko eines negativen Ergebnisses in einem der parallelen Zweige des Prozesses. Was ist, wenn die Abstimmung fehlschlägt?

Hier benötigen Sie Statistiken. Wenn Sie mit einem vorhandenen Prozess arbeiten, stellen Sie sich ungefähr oder genau vor, wie oft bestimmte Aktionen negativ enden - beispielsweise die Koordination. Aus dieser Wahrscheinlichkeit heraus sollte man mit der parallelen Ausführung fortfahren.

Asynchronität bittet direkt um alle Koordinationsprozesse. Wenn Sie dort nur synchron arbeiten und sogar der Führung der Koordinatoren folgen, werden lange, voneinander abhängige Ketten aufgebaut, die Bürokratie und gegenseitige Verantwortung erzeugen.

Ein typisches Beispiel: "Ich werde erst zustimmen, wenn er zustimmt." Oder "Ich werde diesen Vertrag erst nach den Finanziers prüfen." Laut Statistik und gesundem Menschenverstand sind solche Aussagen jedoch nicht gerechtfertigt und nur ein Weg, die Verantwortung zu verlagern.

Die Hauptsache hier ist, sich keine Sorgen zu machen und nicht alles auf einmal anzugehen. Versuchen Sie, zuerst den asynchronen Modus für einen Koordinationszweig auszuwählen. Es kann notwendig sein, die Aufgabe und die Koordinierungsparameter zu überarbeiten, um gegenseitige Abhängigkeiten zu beseitigen.

Lassen Sie beispielsweise die Finanzabteilung, die in der Vertragsgenehmigungskette steht, nur die Zahlungsbedingungen betrachten. Lassen Sie ihn seine eigenen klaren Bewertungskriterien haben. Es ist besser, wenn sie in Form eines Mustervertrags formalisiert werden - zum Beispiel 100% Nachzahlung für Lieferanten, 100% Vorauszahlung für Käufer. In diesem Fall werden Verträge, die die Kriterien erfüllen, jeweils verschoben. Und Finanziers werden keinen Grund haben, auf eine Beurteilung durch dieselben Anwälte zu warten.

Wichtig ist nur, dass asynchrone Prozesse ohne Automatisierung nur sehr schwer zu implementieren sind. Wenn Prozesse, deren Ausführung und Nachverfolgung nur auf Papier implementiert werden, werden sie durch Hinzufügen paralleler Zweige in Chaos verwandelt. Brauchen Sie Automatisierung.

Das Prinzip "Auto Task" eignet sich am besten für eine solche Automatisierung. Obwohl Sie mit den Standardmethoden zum Zeichnen von Prozessen auf modernen Plattformen auskommen können, müssen Sie nur basteln.

Beim standardmäßigen "Zeichnen" von Prozessen müssen Sie den gesamten Prozess, alle Zweige und Beziehungen identifizieren. Wenn der Vorgang komplex und langwierig ist, tritt ein Problem auf - er passt einfach nicht mehr in der Breite auf den Bildschirm. Wenn Sie als Programmierer am Institut studiert haben, beachten Sie diese Regel für das Entwerfen von Algorithmen: nicht mehr als drei parallele vertikale Zweige. Die Regel wurde nicht nur erfunden - wenn es mehr Zweige gibt, ist es problematisch, das Algorithmusschema zu verstehen.

Auto-Tasks beseitigen dieses Problem - es gibt überhaupt kein Bild des Prozesses, weil Es gibt keine solche Einheit - einen Prozess. Es gibt Aufgaben. Wenn Sie wirklich wollen, können Sie einen Prozess daraus zusammenstellen. Aber nicht umgekehrt. Eine Art deduktive Methode zum Zeichnen von Prozessen.

Neben der Asynchronität gibt es eine noch leistungsfähigere Optimierungsmethode - die Prozesspufferung. Über ihn - ein anderes Mal.

Source: https://habr.com/ru/post/de453192/


All Articles