Système d'approbation. Comment nous avons inventé le vélo



Nous continuons à parler de la façon dont nous améliorons la vie non seulement de nos clients et partenaires, mais aussi des employés de l'entreprise. Il s'agira de la mise en œuvre du système d'harmonisation. Je n'ai pas consciemment indiqué la coordination de «quoi», car à l'avenir, il deviendra clair que, purement théoriquement, la coordination de «tout».

Réflexions sur le système d'approbation


Initialement, dans notre entreprise, ainsi que dans beaucoup d'autres, où je devais travailler, et où j'étais «invité» ou tout simplement entendu de mes amis, l'accord a été négocié (et au moment de la rédaction de l'article est toujours en cours), au moyen d'une correspondance régulière en courrier. Naturellement, cela convient aux entreprises avec un petit nombre de personnel et de sous-traitants. Il n'est pas particulièrement nécessaire de concevoir et de mettre en œuvre des systèmes en raison de la signature d'un ou deux accords par mois (voire même un an) avec le PDG seul qui décide de signer. Une situation similaire a été observée avec le paiement des factures. Chaque employé qui interagit avec des contreparties et doit payer quelque chose, demande une facture et l'envoie par courrier au service comptable avec une demande de «payer». Dans le même temps, la comptabilité ne paie pas toujours les factures sans l'approbation préalable du paiement avec le supérieur immédiat du salarié et / ou de la direction de l'entreprise. Sous certaines conditions, la chaîne d'approbations peut être «raccourcie» ou vice versa «allongée».

Jusqu'à présent, il n'y a pas beaucoup d'employés et tout le monde connaît tous ses collègues qui est qui et qui est le leader - il n'y a pas de problèmes particuliers. En mode manuel et sous certaines conditions, les demandes de paiement sont négociées en mode correspondance et payées (ou rejetées). Mais notre entreprise se développe et à partir d'un certain moment nous avons franchi cette ligne invisible, après quoi il faut penser à l'automatisation de ces processus et à la nécessité d'introduire quelque chose de nouveau.

Notre liste de souhaits


Nous avions nos propres exigences système minimales:

  • Interface conviviale et hautement souhaitable orientée Web (sans avoir besoin d'installer des clients)
  • Flexibilité de configuration
  • Bien que nous ne soyons pas cliniques, nous sommes paranoïaques. Par conséquent, nous voulons conserver les services dans lesquels des informations confidentielles peuvent apparaître dans notre périmètre fermé

Dans un premier temps, nous avons analysé les produits de la famille des «systèmes de gestion électronique de documents» qui sont sur le marché. Nous avons examiné les systèmes bien connus: 1C: Gestion des documents, «BUSINESS», «THESIS». Nous avons également examiné les systèmes créés sur commande pour d'autres sociétés, ainsi que les nouveaux produits tels que Allware.

Je ne peux pas dire que les systèmes sont mauvais. En fait, presque tous les systèmes nous permettent de remplir notre liste de souhaits principale et même plus que ce dont nous avons besoin. Mais, comme d'habitude, le diable est dans les détails.

Tout d'abord - l'interface. Nous n'avons pas l'habitude d'utiliser l'interface de style «1C». Nous avons besoin d'une interface simple et intuitive dans laquelle nous effectuerons un minimum d'actions pour obtenir le résultat maximum (et qui ne veut pas?).
Deuxièmement, le prix (payé en même temps, puis le coût de possession du produit dans son ensemble). Nous n'avons pas besoin de tout dans les systèmes qui sont offerts prêts à l'emploi. Mais en même temps, vous devez tout de suite payer pour tout. Et comme beaucoup passent maintenant à un système d'abonnement, vous devez payer constamment et le montant, comme d'habitude, dépend de nombreuses conditions (nombre d'utilisateurs / connexions, possibilité de travailler dans le cloud, options supplémentaires, modules, etc.). Et pour «sauter» du système, si du coup le prix a cessé de convenir - problématique.
Troisièmement, il n'y a aucun moyen de «gérer» votre «liste de souhaits».

Implémentation


Je n'écrirai pas longtemps sur comment et pourquoi finalement nous nous sommes décidés à «monter un vélo» et à écrire notre propre système de gestion électronique des documents. La décision est prise - vous devez le faire. Nous avons déjà traversé la maladie d'essayer de mettre en œuvre le produit sans exigences, donc le processus d'écriture des savoirs traditionnels et de son harmonisation a d'abord commencé. Heureusement, sous nos yeux, nous avions des exemples d'implémentations, la formation s'est donc déroulée sans douleur.

La seule chose dont nous avons eu à briser les lances, c'est que dans le processus de développement de l'architecture, nous ne devrions pas succomber à la tentation de satisfaire les exigences «telles quelles», au détriment de la flexibilité et de la facilité d'utilisation. La tentation était grande, en particulier pour le client principal, car la période de mise en œuvre et de mise en œuvre serait réduite de 2 fois. Mais nous avons réussi à convaincre la direction et nous-mêmes qu '«il vaut mieux perdre une journée, puis voler en 5 minutes». Et je pense que nous avons fait le bon choix.
Il vaut mieux perdre une journée, puis voler en 5 minutes.
La pile «standard» est .Net Core 2 et EntityFramework, Angular 4, MS SQL, car nous avons une expérience assez large dans l'application des outils et des technologies. Bien que le SGBD ne nous importe pas vraiment pour des raisons évidentes. Si nécessaire, passons à ce que nous souhaitons.
Le résultat est un produit qui répond aux exigences importantes pour nous:

  • Un flux de travail - différentes parties à l'accord (associé au paragraphe suivant)
  • Conditions pour sauter l'étape d'approbation dans des conditions spécifiées (n'importe quel champ de la demande peut être ajouté à une condition avec une vérification donnée et, en fonction de la validité de la condition, la nécessité de passer à l'étape d'approbation suivante ou son «saut» est déterminé)
  • Notre interface «propriétaire»

Fonctionnalités pratiques et utiles telles que:

  • Définition des valeurs par défaut pour les répertoires (utilisateur et système). Un guide de l'utilisateur est une entité qui permet aux utilisateurs de définir eux-mêmes des éléments. Les articles créés ne seront disponibles que pour lui. Dans le même temps, dans un tel répertoire, l'administrateur système peut saisir des éléments communs qui seront disponibles pour tous les utilisateurs du système
  • Déterminer les éléments d'annuaires les plus fréquemment utilisés pour chaque utilisateur et former des listes dans l'interface à partir de ces statistiques (tri)
  • Entièrement personnalisable à partir des diagrammes du panneau d'administration (structure et propriétés des champs à remplir) et des vues (disposition des éléments dans le formulaire) de chaque type de demande d'approbation
  • ACL flexible
  • Chaque utilisateur recherche des applications personnalisables par différents ensembles de paramètres. Les paramètres peuvent être toutes les propriétés des modèles d'application avec la possibilité de sélectionner la condition qui doit être imposée à ce champ pendant le filtrage. Dans ce cas, vous pouvez créer autant d'ensembles pour le filtrage. Pratique pour une recherche rapide dans différentes sections
  • Validation des valeurs saisies sur la base d'un modèle donné pour un champ d'application spécifique

Bien sûr, il y avait aussi des «curiosités». Tout d'abord, nous parlons de la configuration du workflow. Nous avons d'abord décidé que nous avions besoin de pouvoir configurer l'arborescence du processus métier. Qu'à partir d'un point (étape) de coordination, il était possible d'aller sur différentes branches, selon le choix de l'utilisateur (Coordination). Logique et flexible. Mais après avoir réalisé cette opportunité et lancé le système en production, il nous a semblé que nous n'avions vraiment pas besoin de donner à l'utilisateur le droit de choisir (l'opportunité de réfléchir). Pour lui, tout doit se passer au niveau «D'accord», «Refus». Sinon, nous ne pourrons pas nous éloigner du principe de compréhension des subtilités d'interaction des salariés dans l'entreprise. Et pour satisfaire cette condition, le flux de travail doit être linéaire .
Bien sûr, il y avait aussi des «curiosités».
En conséquence, nous avons trouvé un compromis - l'architecture de la solution et la mise en œuvre du flux de travail étaient laissées sous forme d'arborescence, mais l'utilisation du point de vue de la configuration a été fixée au niveau de «l'accord». Et ils l'ont bien fait. Depuis lors, lors de l'analyse des tâches associées au lancement de nouveaux types d'approbations, il est devenu clair qu'à certaines étapes, pour des types spécifiques de demandes, nous devons donner au coordinateur la possibilité de choisir différentes actions.

Maintenant, parlons un peu de notre «savoir-faire» (du moins nous y croyons). Afin d'atteindre la linéarité et en même temps de pouvoir utiliser un flux de travail pour un schéma d'approbation (par le schéma j'entends des entités qui nécessitent une implication et l'ordre des différents rôles - un contrat, un compte de paiement, etc.), nous avons réfléchi et mis en œuvre un mécanisme de conditions sauter la ou les étapes suivantes de l'approbation. Pour créer les conditions, nous pouvons utiliser n'importe quelle entité de la carte de rapprochement et la comparer avec «n'importe quoi».

Par exemple, nous avons les entités suivantes: Initiateur, Montant, Devise, Contrepartie. Et nous en avons besoin avec un montant inférieur à 100 000 roubles. la coordination ne passait pas par l'employé A; dans les paiements en devises étrangères, elle était nécessairement liée à la coordination B, et si l'initiateur est l'employé C, une coordination supplémentaire de l'employé D est nécessaire. De plus, par employés, nous entendons à la fois des individus et un certain groupe. Pour implémenter ces points, nous ajoutons tous les points correspondants «en ligne». C'est-à-dire: Initiateur-> A-> B-> D-> ...

Ensuite, les conditions d'une transition «réussie» vers chacun des points de coordination sont formées. Par exemple, sur le Transition Initiator-> A, la condition «Montant <100 000» est configurée, sur (Initiator) A-> B - Currency = «Rouble», (Initiator, A, B) -> D - Initiator! = C.

Pourquoi les transitions sont-elles indiquées entre parenthèses? Parce que les conditions peuvent être remplies dans un complexe et «sous le capot», si nous formons une condition pour une transition vers un point de coordination, nous générons automatiquement une transition système qui «contourne» ce point (ici, notre architecture de flux de travail en forme d'arbre nous a aidé et il n'y avait rien «Béquille»).

Eh bien, une petite mouche dans la pommade. Nous n'avons pas réussi à implémenter un mécanisme de gestion des alertes configurable. Bien qu'initialement, il était inscrit dans l'architecture du projet. Comme d'habitude, pour accélérer le processus de démarrage, j'ai dû «coder en dur temporairement» un peu, et pour le moment ce code est conservé. Et l'idée était de créer un mécanisme similaire à jira, qui vous permet de créer votre propre schéma de notification, dans lequel vous pouvez définir des déclencheurs (événements) et les associer à des groupes ou des employés spécifiques et être en mesure de le "joindre" à n'importe quel type d'application.
Pour accélérer le processus de lancement, j'ai dû «coder temporairement en dur» un peu.

Interfaces


Quelques interfaces de notre système, pour une compréhension de ce qui a été généralement discuté

Tableau de bord


tableau de bord


La première chose que voit l'utilisateur du système lors de son ouverture (si vous ne tenez pas compte du processus d'authentification) est un tableau de bord. Il affiche uniquement les approbations actives (incomplètes). De plus, les applications sont divisées en 2 segments:

  • Applications nécessitant l'approbation de l'utilisateur (je suis l'interprète)
  • Applications initiées par l'utilisateur (je suis l'auteur)

Créer une nouvelle application


Créer une demande


L'interface de création d'une nouvelle application peut avoir une représentation (le nombre et la disposition des éléments) absolument quelconque. Voici une interface simple qui démontre la possibilité de saisir des nombres, de sélectionner dans la liste, le drapeau (case à cocher), la date, les pièces jointes.
La seule chose à laquelle vous pouvez prêter attention est l'option «Créer plus». Lorsqu'elle est activée, après avoir créé l'application en cours, nous ne sommes pas dans le tableau de bord ou dans la fiche de l'application nouvellement créée, mais le formulaire de création d'une nouvelle application du même type que celle qui vient d'être créée s'ouvre immédiatement. Il a été mis en place à la demande de nos collaborateurs, qui doivent «bundler» créer le même type d'application.

Étape d'approbation


Étape d'approbation


Cette interface n'est pas très différente du formulaire de création d'application. Mais il possède un certain nombre de caractéristiques fonctionnelles fondamentales:

  1. Au lieu des boutons de création, des boutons apparaissent, des clics sur lesquels transférer l'application dans l'un des états du processus métier. Dans le cas dégénéré, comme décrit ci-dessus, il s'agit de «Rejeter» et «D'accord»
  2. Les pièces jointes, les commentaires et une nouvelle entité de journal (historique des actions) sont placés dans des onglets séparés
  3. Par défaut, tous les champs de l'application, à l'exception du commentaire, ne sont pas modifiables. Dans le même temps, nous avons défini la fonctionnalité qui nous permet de fournir à une étape particulière de la coordination la possibilité d'ajuster uniquement un ensemble donné de champs.
  4. Si vous êtes l'initiateur de la candidature (vous pouvez toujours accéder à la fiche d'approbation) et que vous avez l'option "Créer un duplicata", lorsque vous cliquez dessus, le formulaire de création de candidature s'ouvre, dont les valeurs de champ (sauf pour les pièces jointes) dupliquent les valeurs de champ de la candidature en cours.

Si vous regardez attentivement, vous remarquerez un élément orange avec un plus à l'intérieur devant le champ de sélection Compteur. Il s'agit de la fonctionnalité de gestion d'un répertoire personnel. Lorsque vous cliquez sur cet élément, le formulaire d'ajout d'un élément de répertoire s'ouvre.



Étant donné que dans ce cas, il s'agit de la contrepartie, l'élément de répertoire en nous contient deux détails - Nom et TIN. Après la création, l'utilisateur peut immédiatement sélectionner cet élément dans la liste déroulante.

Chercher




Dans la recherche d'applications, un ensemble de propriétés s'affiche en haut, selon les valeurs que vous devez sélectionner. Les ensembles sont configurables par chaque utilisateur selon leurs besoins avec la possibilité de basculer rapidement entre eux.

Administration des processus d'affaires


Dans le cadre de la gestion d'un processus métier, nous pouvons créer un nombre illimité de points de cheminement et indiquer des transitions. En conséquence, un graphique de transition est formé. Et pour chaque point de coordination, nous pouvons définir:

  • Qui correspond à un moment donné
  • Autorisations pour effectuer des actions à un point donné de l'itinéraire
  • Conditions pour sauter ce point (étape d'approbation)

Matching



Dans l'onglet «Coordinateurs», vous pouvez ajouter des groupes, des utilisateurs ajoutés auxquels ils peuvent effectuer le processus d'approbation à un moment donné du processus métier.

Autorisations d'action




Sur les autorisations, vous pouvez vous attarder un peu plus. Pour limiter les actions des coordinateurs liées à la modification des valeurs des champs (entités) dans l'application, un mécanisme d'autorisation a été introduit. Actuellement, nous avons entré 4 autorisations:

  • Télécharger les pièces jointes
  • Afficher les pièces jointes
  • Commentant
  • Modifier les valeurs des champs d'application

Si les trois premiers sont plus ou moins clairs, l'autorisation de modifier les champs disponibles doit être commentée. Par défaut, les négociateurs ne peuvent modifier aucune valeur de champ dans l'application. Seul le mode d'affichage est disponible. S'il est nécessaire d'autoriser la modification de champs d'application individuels à un point d'approbation spécifique, cette option est activée et il est possible de sélectionner dans la liste des champs d'application uniquement ceux dont les valeurs peuvent être modifiées pour celui correspondant.

Bien qu'un peu tiré par les cheveux, mais par exemple, cela peut être nécessaire si vous avez un poste séparé «un vérificateur de l'exactitude du remplissage du montant», puis donnez-lui la possibilité de modifier uniquement le montant dans la demande et rien de plus.

Conditions de saut




Conditions de saut que j'ai décrites ci-dessus. La fonctionnalité est nécessaire pour former un processus métier linéaire unique pour tous les utilisateurs du système, et en même temps pour effectuer le mouvement de l'application le long du parcours de différentes manières, en fonction de la condition donnée et sans intervention de l'utilisateur.

Sur l'écran, un paramètre est préparé qui vous permettra de sauter ce point de route si l'initiateur est dans certains groupes et que la devise est équivalente au rouble russe.

Au lieu d'une conclusion


Actuellement, notre entreprise n'a lancé qu'un seul type d'approbation. Mais avec la flexibilité de la personnalisation, qui est intégrée dans le système, nous avons des outils qui vous permettent de configurer toutes les cartes d'application, où vous pouvez spécifier n'importe quel nombre de champs, n'importe quelle représentation de la carte d'application et n'importe quel itinéraire pour la coordination avec diverses conditions.

La seule chose requise est de travailler avec les analyses pour collecter les exigences, puis les transférer vers le système via l'interface d'administration. Que faisons-nous maintenant.

Le produit est vivant, nous effectuons périodiquement des changements à la demande de nos employés, à la suite desquels sa puissance et sa convivialité augmentent, et les fonctions mises en œuvre remplissent la tâche à laquelle notre entreprise est confrontée, et nous pouvons toujours dire avec confiance que la fonctionnalité demandée sera mise en œuvre en cas de si possible.

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


All Articles