Genehmigungssystem. Wie wir das Fahrrad erfunden haben



    Wir sprechen weiterhin darüber, wie wir nicht nur das Leben unserer Kunden und Partner, sondern auch der Mitarbeiter des Unternehmens verbessern können. Es wird um die Umsetzung des Harmonisierungssystems gehen. Ich habe bewusst nicht auf die Koordination von „was“ hingewiesen, da in Zukunft klar wird, dass rein theoretisch „alles“ koordiniert wird.

    Überlegungen zum Genehmigungssystem


    Zunächst wurde in unserer Firma sowie in vielen anderen, in denen ich arbeiten musste und in denen ich ein „Gast“ war oder nur von meinen Freunden gehört wurde, die Vereinbarung durch regelmäßige Korrespondenz in (und zum Zeitpunkt des Schreibens des Artikels ist noch im Gange) ausgehandelt Mail. Dies passt natürlich zu Unternehmen mit einer geringen Anzahl von Mitarbeitern und Auftragnehmern. Aufgrund der Unterzeichnung von ein oder zwei Vereinbarungen pro Monat (oder sogar eines Jahres), bei denen allein der CEO die Entscheidung zur Unterzeichnung trifft, besteht keine besondere Notwendigkeit, Systeme zu entwickeln und zu implementieren. Eine ähnliche Situation wurde bei der Zahlung von Rechnungen beobachtet. Jeder Mitarbeiter, der mit Gegenparteien interagiert und etwas bezahlen muss, fordert eine Rechnung an und sendet diese per Post an die Buchhaltungsabteilung mit der Aufforderung zum „Bezahlen“. Dabei, Das Rechnungswesen zahlt nicht immer Rechnungen ohne vorherige Genehmigung der Zahlung mit dem unmittelbaren Vorgesetzten des Mitarbeiters und / oder der Unternehmensleitung. Unter bestimmten Bedingungen kann die Zulassungskette „verkürzt“ oder umgekehrt „verlängert“ werden.

    Bisher gibt es nicht viele Mitarbeiter und jeder kennt alle seine Kollegen, wer wer ist und wer der Anführer ist - es gibt keine besonderen Probleme. Im manuellen Modus und unter bestimmten Bedingungen werden Zahlungsanträge im Korrespondenzmodus ausgehandelt und bezahlt (oder abgelehnt). Aber unser Unternehmen wächst und ab einem bestimmten Moment haben wir diese unsichtbare Grenze überschritten. Danach müssen wir über die Automatisierung dieser Prozesse und die Notwendigkeit nachdenken, etwas Neues einzuführen.

    Unsere Wunschliste


    Wir hatten unsere eigenen Mindestsystemanforderungen:

    • Benutzerfreundliche Oberfläche und äußerst wünschenswert weborientiert (ohne dass Clients installiert werden müssen)
    • Konfigurationsflexibilität
    • Obwohl wir nicht klinisch sind, sind wir paranoid. Daher möchten wir die Dienste, in denen vertrauliche Informationen erscheinen können, in unserem geschlossenen Bereich behalten

    Zunächst haben wir die auf dem Markt befindlichen Produkte der Familie „Electronic Document Management System“ analysiert. Wir haben uns die bekannten Systeme angesehen: 1C: Dokumentenmanagement, „BUSINESS“, „THESIS“. Wir haben uns auch Systeme angesehen, die auf Bestellung für andere Unternehmen erstellt wurden, sowie neue Produkte wie Allware.

    Ich kann nicht sagen, dass die Systeme schlecht sind. Tatsächlich ermöglichen uns fast alle Systeme, unsere Hauptwunschliste zu erfüllen und sogar mehr als wir brauchen. Aber wie immer steckt der Teufel im Detail.

    Zuallererst - die Schnittstelle. Wir sind es nicht gewohnt, die Benutzeroberfläche im 1C-Stil zu verwenden. Wir benötigen eine einfache, intuitive Benutzeroberfläche, in der wir ein Minimum an Aktionen ausführen, um das maximale Ergebnis zu erzielen (und wer möchte das nicht?).
    Zweitens der Preis (gleichzeitig gezahlt und dann die Betriebskosten des gesamten Produkts). Wir brauchen nicht alles in den Systemen, die sofort angeboten werden. Gleichzeitig muss man aber sofort für alles bezahlen. Und da viele jetzt auf ein Abonnementsystem umsteigen, müssen Sie ständig bezahlen und der Betrag hängt wie üblich von vielen Bedingungen ab (Anzahl der Benutzer / Verbindungen, Fähigkeit, in der Cloud zu arbeiten, zusätzliche Optionen, Module usw.). Und vom System zu „springen“, wenn der Preis plötzlich nicht mehr passt - problematisch.
    Drittens gibt es keine Möglichkeit, Ihre "Wunschliste" zu "verwalten".

    Implementierung


    Ich werde nicht lange darüber schreiben, wie und warum wir uns am Ende für die Entscheidung entschieden haben, „ein Fahrrad zu entwickeln“ und unser eigenes elektronisches Dokumentenmanagementsystem zu schreiben. Die Entscheidung wurde getroffen - zu tun. Wir haben bereits die Krankheit durchgemacht, das Produkt ohne Anforderungen zu implementieren, daher wurde zuerst mit dem Schreiben von TK und seiner Harmonisierung begonnen. Glücklicherweise hatten wir vor unseren Augen Beispiele für Implementierungen, so dass die Formation ziemlich schmerzlos verlief.

    Das einzige, womit wir die Speere zerschlagen mussten, war, dass wir bei der Entwicklung der Architektur nicht der Versuchung erliegen sollten, die Anforderungen „wie sie sind“ zu erfüllen, was sich nachteilig auf die Flexibilität und die weitere Benutzerfreundlichkeit auswirkt. Die Versuchung war groß, insbesondere für den Hauptkunden, da sich die Implementierungs- und Implementierungsdauer um das Zweifache verkürzen würde. Aber wir haben es geschafft, sowohl das Management als auch uns selbst davon zu überzeugen, dass „es besser ist, einen Tag zu verlieren und dann in 5 Minuten zu fliegen“. Und ich denke, wir haben die richtige Wahl getroffen.
    Es ist besser, einen Tag zu verlieren und dann in 5 Minuten zu fliegen.
    Der „Standard“ -Stack ist .Net Core 2 und EntityFramework, Angular 4, MS SQL, da wir einen ziemlich großen Hintergrund in der Anwendung von Tools und Technologien haben. Obwohl uns das DBMS aus offensichtlichen Gründen nicht wirklich wichtig ist. Fahren wir bei Bedarf mit dem fort, was wir möchten.
    Das Ergebnis ist ein Produkt, das die für uns wichtigen Anforderungen erfüllt:

    • Ein Workflow - verschiedene Vertragsparteien (im Zusammenhang mit dem nächsten Absatz)
    • Bedingungen für das Überspringen der Genehmigungsphase unter bestimmten Bedingungen (jedes Feld im Antrag kann mit einer bestimmten Prüfung zur Bedingung hinzugefügt werden, und basierend auf der Gültigkeit der Bedingung wird die Notwendigkeit bestimmt, mit dem nächsten Genehmigungsschritt fortzufahren oder dessen „Überspringen“).
    • Unsere "proprietäre" Schnittstelle

    Bequeme und nützliche Funktionen wie:

    • Festlegen von Standardwerten für Verzeichnisse (sowohl Benutzer als auch System). Ein Benutzerhandbuch ist eine Entität, mit der Benutzer Elemente selbst festlegen können. Erstellte Gegenstände stehen nur ihm zur Verfügung. Gleichzeitig kann der Systemadministrator in einem solchen Verzeichnis gemeinsame Elemente eingeben, die allen Benutzern des Systems zur Verfügung stehen
    • Bestimmen der am häufigsten verwendeten Elemente von Verzeichnissen für jeden Benutzer und Erstellen von Listen in der Benutzeroberfläche basierend auf diesen Statistiken (Sortieren)
    • Vollständig anpassbar aus den Admin-Panel-Diagrammen (Struktur und Eigenschaften der zu füllenden Felder) und Ansichten (Anordnung der Elemente im Formular) für jede Art von Genehmigungsanforderung
    • Flexible ACL
    • Jeder Benutzer kann die Suche nach Anwendungen anhand verschiedener Parametersätze anpassen. Parameter können beliebige Eigenschaften von Anwendungsvorlagen sein, mit der Möglichkeit, die Bedingung auszuwählen, die diesem Feld während der Filterung auferlegt werden muss. In diesem Fall können Sie beliebig viele Sätze zum Filtern erstellen. Praktisch für die schnelle Suche in verschiedenen Abschnitten
    • Validierung der eingegebenen Werte anhand einer bestimmten Vorlage für ein bestimmtes Anwendungsfeld

    Natürlich gab es auch einige „Kuriositäten“. Zunächst geht es um die Konfiguration des Workflows. Wir haben uns zunächst entschieden, dass wir das Baumdiagramm des Geschäftsprozesses konfigurieren müssen. Von einem Punkt (Stufe) der Koordination an war es möglich, je nach Wahl des Benutzers (Koordination) auf verschiedene Zweige zu gehen. Logisch und flexibel. Nachdem wir diese Gelegenheit erkannt und das System in die Produktion eingeführt hatten, schien es uns, dass wir dem Benutzer nicht das Wahlrecht geben mussten (Gelegenheit zum Nachdenken). Für ihn sollte alles auf der Ebene von „Zustimmen“, „Ablehnen“ geschehen. Andernfalls können wir uns nicht vom Prinzip des Verständnisses der Feinheiten der Mitarbeiterinteraktion im Unternehmen entfernen. Um diese Bedingung zu erfüllen, sollte der Workflow linear sein .
    Natürlich gab es auch einige „Kuriositäten“.
    Als Ergebnis haben wir einen Kompromiss gefunden - die Lösungsarchitektur und die Implementierung des Workflows wurden baumartig belassen, aber die Verwendung unter dem Gesichtspunkt der Konfiguration wurde auf der Ebene der „Übereinstimmung“ festgelegt. Und sie haben es richtig gemacht. Seitdem wurde bei der Analyse der mit dem Start neuer Arten von Genehmigungen verbundenen Aufgaben klar, dass wir dem Koordinator in bestimmten Phasen für bestimmte Arten von Anträgen die Möglichkeit geben müssen, verschiedene Maßnahmen auszuwählen.

    Nun ein wenig zu unserem „Know-how“ (zumindest glauben wir daran). Um Linearität zu erreichen und gleichzeitig einen Workflow für ein Genehmigungsschema verwenden zu können (mit einem Schema meine ich Unternehmen, die eine Beteiligung und die Reihenfolge verschiedener Rollen erfordern - einen Vertrag, ein Zahlungskonto usw.), haben wir einen Mechanismus von Bedingungen durchdacht und implementiert Überspringen der nächsten Genehmigungsstufe (n). Bei der Erstellung der Bedingungen können wir jede Entität der Abstimmungskarte verwenden und sie mit „irgendetwas“ vergleichen.

    Zum Beispiel haben wir die folgenden Entitäten: Initiator, Betrag, Währung, Gegenpartei. Und das brauchen wir mit einer Menge von weniger als 100.000 Rubel. Die Koordination erfolgte nicht über Mitarbeiter A, bei Zahlungen in Fremdwährung war sie notwendigerweise mit Koordination B verbunden. Wenn der Initiator Mitarbeiter C ist, ist eine zusätzliche Koordination von Mitarbeiter D erforderlich. Unter Mitarbeitern verstehen wir außerdem sowohl Einzelpersonen als auch eine bestimmte Gruppe. Um diese Punkte zu implementieren, fügen wir alle übereinstimmenden Punkte "in Linie" hinzu. Das heißt: Initiator-> A-> B-> D-> ...

    Als nächstes werden die Bedingungen für das "Überspringen" des Übergangs zu jedem der Koordinationspunkte gebildet. Beispielsweise ist auf dem Übergangsinitiator-> A die Bedingung "Betrag <100.000" konfiguriert, auf (Initiator) A-> B - Währung = "Rubel", (Initiator, A, B) -> D - Initiator! = C.

    Warum sind Übergänge in Klammern angegeben? Da die Bedingungen in einem Komplex und „unter der Haube“ erfüllt werden können, generieren wir automatisch einen Systemübergang, der diesen Punkt „umgeht“, wenn wir eine Bedingung für einen Übergang zu einem Koordinationspunkt bilden (hier hat uns unsere baumartige Workflow-Architektur geholfen, und es gab nichts "Krücke").


    Nun, eine kleine Fliege in der Salbe. Wir sind noch nicht dazu gekommen, einen konfigurierbaren Alarmverwaltungsmechanismus zu implementieren. Obwohl es ursprünglich in die Architektur des Projekts gelegt wurde. Um den Startvorgang zu beschleunigen, musste ich wie üblich ein wenig „vorübergehend fest codieren“, und im Moment bleibt dieser Hardcode erhalten. Die Idee war, einen Mechanismus ähnlich wie jira zu erstellen, mit dem Sie Ihr eigenes Benachrichtigungsschema erstellen können, in dem Sie Auslöser (Ereignisse) festlegen und diese Gruppen oder bestimmten Mitarbeitern zuordnen und sie an jede Art von Anwendung „anhängen“ können.
    Um den Startvorgang zu beschleunigen, musste ich ein wenig „vorübergehend fest codieren“.

    Schnittstellen


    Einige Schnittstellen unseres Systems, damit verstanden wird, was allgemein diskutiert wurde

    Dashboard


    Dashboard


    Das erste, was der Benutzer des Systems beim Öffnen sieht (wenn Sie den Authentifizierungsprozess nicht berücksichtigen), ist ein Dashboard. Es werden nur aktive (unvollständige) Genehmigungen angezeigt. Darüber hinaus sind die Anwendungen in zwei Segmente unterteilt:

    • Bewerbungen, die vom Benutzer genehmigt werden müssen (ich bin der Darsteller)
    • Vom Benutzer initiierte Anwendungen (ich bin der Autor)

    Erstellen Sie eine neue Anwendung


    Anfrage erstellen


    Die Schnittstelle zum Erstellen einer neuen Anwendung kann eine beliebige Darstellung (Anzahl und Anordnung der Elemente) aufweisen. Hier ist eine einfache Oberfläche, die die Möglichkeit demonstriert, Zahlen einzugeben, aus der Liste auszuwählen, Flag (Kontrollkästchen), Datum, Anhänge.
    Das einzige, worauf Sie achten können, ist die Option „Mehr erstellen“. Wenn es aktiviert ist, befinden wir uns nach dem Erstellen der aktuellen Anwendung nicht im Dashboard oder auf der Karte der neu erstellten Anwendung, sondern das Formular zum Erstellen einer neuen Anwendung des gleichen Typs wie die gerade erstellte wird sofort geöffnet. Es wurde auf Wunsch unserer Mitarbeiter implementiert, die den gleichen Anwendungstyp „bündeln“ müssen.

    Genehmigungsphase


    Genehmigungsphase


    Diese Schnittstelle unterscheidet sich nicht wesentlich vom Formular zur Anwendungserstellung. Es weist jedoch eine Reihe grundlegender Funktionsmerkmale auf:

    1. Anstelle der Erstellungsschaltflächen werden Schaltflächen angezeigt, auf die die Anwendung in einen der Zustände des Geschäftsprozesses übertragen wird. Im entarteten Fall, wie oben beschrieben, ist es "Ablehnen" und "Zustimmen".
    2. Anhänge, Kommentare und eine neue Journalentität (Aktionsverlauf) werden auf separaten Registerkarten platziert
    3. Standardmäßig können alle Anforderungsfelder mit Ausnahme des Kommentars nicht bearbeitet werden. Gleichzeitig haben wir die Funktionalität festgelegt, die es uns ermöglicht, in einem bestimmten Schritt der Koordination nur einen bestimmten Satz von Feldern anzupassen.
    4. Wenn Sie der Initiator der Anwendung sind (Sie können jederzeit zur Genehmigungskarte gehen) und die Option "Duplikat erstellen" haben, wird beim Klicken darauf das Formular zur Anwendungserstellung geöffnet, dessen Feldwerte (mit Ausnahme von Anhängen) die Feldwerte der aktuellen Anwendung duplizieren.

    Wenn Sie genau hinschauen, werden Sie ein orangefarbenes Element mit einem Plus vor dem Auswahlfeld Zähler bemerken. Dies ist die Funktionalität zum Verwalten eines persönlichen Verzeichnisses. Wenn Sie auf dieses Element klicken, wird das Formular zum Hinzufügen eines Verzeichniselements geöffnet.



    Da es sich in diesem Fall um die Gegenpartei handelt, enthält das Verzeichniselement in uns zwei Details - Name und TIN. Nach der Erstellung kann der Benutzer dieses Element sofort aus der Dropdown-Liste auswählen.

    Suche




    Bei der Suche nach Anwendungen wird oben eine Reihe von Eigenschaften angezeigt, deren Werte Sie auswählen müssen. Sets können von jedem Benutzer nach seinen Bedürfnissen konfiguriert werden, wobei schnell zwischen ihnen gewechselt werden kann.

    Geschäftsprozessverwaltung


    Im Rahmen der Verwaltung eines Geschäftsprozesses können wir beliebig viele Wegpunkte erstellen und Übergänge anzeigen. Als Ergebnis wird ein Übergangsgraph gebildet. Und für jeden Koordinationspunkt können wir Folgendes festlegen:

    • Wer passt zu einem bestimmten Punkt?
    • Berechtigungen zum Ausführen von Aktionen an einem bestimmten Punkt der Route
    • Bedingungen für das Überspringen dieses Punktes (Genehmigungsphase)

    Matching



    Auf der Registerkarte "Koordinatoren" können Sie Gruppen und Benutzer hinzufügen, denen sie den Genehmigungsprozess zu einem bestimmten Zeitpunkt im Geschäftsprozess ausführen können.

    Aktionsberechtigungen




    Bei Berechtigungen können Sie etwas mehr verweilen. Um die Aktionen von Koordinatoren im Zusammenhang mit der Änderung der Werte von Feldern (Entitäten) in der Anwendung einzuschränken, wurde ein Berechtigungsmechanismus eingeführt. Derzeit haben wir 4 Berechtigungen eingegeben:

    • Anhänge herunterladen
    • Anhänge anzeigen
    • Kommentieren
    • Ändern Sie die Werte der Anwendungsfelder

    Wenn die ersten drei mehr oder weniger klar sind, muss die Berechtigung zum Ändern der verfügbaren Felder kommentiert werden. Standardmäßig können Verhandlungsführer keine Feldwerte in der Anwendung ändern. Es ist nur der Ansichtsmodus verfügbar. Wenn das Ändern einzelner Anwendungsfelder an einem bestimmten Genehmigungspunkt zugelassen werden muss, ist diese Option aktiviert und es können aus der Liste der Anwendungsfelder nur diejenigen ausgewählt werden, deren Werte in die entsprechenden geändert werden können.

    Obwohl ein wenig weit hergeholt, kann dies beispielsweise erforderlich sein, wenn Sie eine separate Position haben, "ein Prüfer der Richtigkeit des Füllens des Betrags", und ihm dann die Möglichkeit geben, nur den Betrag in der Anwendung und nichts weiter zu ändern.

    Überspringbedingungen




    Überspringbedingungen, die ich oben beschrieben habe. Die Funktionalität ist erforderlich, um einen einzigen linearen Geschäftsprozess für alle Benutzer des Systems zu bilden und gleichzeitig die Bewegung der Anwendung entlang der Route auf unterschiedliche Weise auszuführen, abhängig von der gegebenen Bedingung und ohne Benutzereingriff.

    Auf dem Bildschirm wird eine Einstellung vorbereitet, mit der Sie diesen Routenpunkt überspringen können, wenn sich der Initiator in bestimmten Gruppen befindet und die Währung dem russischen Rubel entspricht.

    Anstelle einer Schlussfolgerung


    Derzeit hat unser Unternehmen nur eine Art von Zulassung eingeführt. Dank der Flexibilität der Anpassung, die in das System eingebettet ist, verfügen wir über Tools, mit denen Sie beliebige Anwendungskarten konfigurieren können, in denen Sie eine beliebige Anzahl von Feldern, eine beliebige Darstellung der Anwendungskarte und einen beliebigen Weg für die Koordination mit verschiedenen Bedingungen angeben können.

    Sie müssen lediglich mit den Analysen arbeiten, um die Anforderungen zu erfassen und sie dann über die Administrationsoberfläche an das System zu übertragen. Was machen wir jetzt?

    Das Produkt ist am Leben, wir nehmen regelmäßig Änderungen auf Wunsch unserer Mitarbeiter vor, wodurch seine Leistungsfähigkeit und Benutzerfreundlichkeit zunimmt, und die implementierten Funktionen erfüllen die Aufgabe, vor der unser Unternehmen steht, und wir können immer mit Zuversicht sagen, dass die angeforderte Funktionalität im Falle von implementiert wird wenn überhaupt möglich.

    Jetzt auch beliebt: