Kürzlich haben wir einen Antrag auf Bilanzierung der Kommunikation in der Region unter der kostenlosen Apache 2.0-Lizenz veröffentlicht. auf IONDV implementiert. Framework - Open Source-Lösung basierend auf node.js für die schnelle Entwicklung von Webanwendungen. Die Kommunikation in den Regionen ist eine wichtige Voraussetzung für die Entwicklung des Territoriums und ein angenehmes Leben. Es wird ein Beispiel sein, das auf dem Gebiet Chabarowsk basiert. Und obwohl unser Territorium mit Spanien und Portugal zusammen vergleichbar ist, wird es in der gesamten baltischen Region bleiben (wir werden nicht über Bären auf den Straßen von Chabarowsk scherzen - Sie werden selbst Videos auf Youtube finden), aber wir haben immer noch keine Mobilfunkkommunikation und kein Internet in abgelegenen besiedelten Gebieten der Region oder ihre Qualität lässt zu wünschen übrig. Die Anwendung ist überall anwendbar und kann ohne Einschränkungen verwendet werden.
Wie kann der aktuelle Kommunikationszustand analysiert werden? Wie kann man Problembereiche schnell verstehen? Wie kann die spätere Entwicklung der Kommunikation in der Region geplant werden? Erstellen einer Lösung vom Typ Registrierung zur Verwaltung von Brancheninformationen, Erstellung von Analyseberichten auf deren Grundlage und Formulierung von Entwicklungsplänen.

Kommunikations-Webanwendung
IONDV. Telekommunikation oder wie wir es im Team nennen, Kommunikation ist eine auf IONDV basierende Softwarelösung. Rahmen für die Organisation, Aufzeichnung, Speicherung und Anzeige von Daten zur Verfügbarkeit von Kommunikationsdiensten (Internet, Mobilkommunikation, Fernsehen, Post usw.) in den besiedelten Gebieten der Region, einschließlich der Verfügbarkeit von Kommunikation in Einrichtungen des Gesundheits- und Bildungssektors. Die App ist auf GitHub öffentlich verfügbar. Traditionell gibt es für alle Repositorys auf github eine Anweisung im README-Repository, aber wir haben Demosysteme zur Überprüfung ohne Registrierung bereitgestellt: https://telecom-ru.iondv.com .
Sie können sich auch ein kurzes Video ansehen, das nur auf dieser Demo aufgenommen wurde.
Einige technische DetailsDie Demo wird auf dem Server mit 2 CPU-Kernen und 2 GB Speicher in der Yandex-Cloud bereitgestellt. Und auf dieser virtuellen Maschine gibt es Dutzende solcher Demo-Anwendungen. In einem anderen Artikel haben wir ein ähnliches System auf derselben Ressource getestet: „Erfahrung darin, die Softwareimplementierung des sozialen Projekts„ Remember Everyone “auf Open Source zu bringen
" Https://habr.com/de/post/451092/ - hat bis zu 400 Anfragen pro Sekunde erhalten. Das Kommunikationssystem verfügt über mehr Metadaten - bis zu 3-4 Tiefenstufen.
Beispielsweise hat ein Kommunikationsobjekt 10 verwandte Entitäten (Mobilfunk, Internet, Post, Fernsehen usw.). Jedes davon ist 3-5 mehr - für die Mobilfunkkommunikation ist es ein Standard, eine Art von Verbindung, ein Betreiber, eine Siedlung usw. Und der Betreiber hat auch eine Verschachtelung.
Aber selbst auf diesen Ressourcen verhält es sich recht reaktionsschnell, obwohl MongoDb nicht sehr gut zum Abrufen verwandter Daten geeignet ist. Wir haben die Metriken verwendet - um 10 Objekte in der Liste zu erhalten (in denen Daten einschließlich zugehöriger Daten angezeigt wurden), wurden bis zu 1000-1500 Datenbankabfragen durchgeführt. Gleichzeitig beträgt die Standardzeit für den Benutzer im Browser etwa 600-700 ms.
Die Anwendung basiert auf der IONDV- Technologie . Framework Dies ist das Open Source-Framework node.js zum Erstellen von Metadaten-basierten Webanwendungen auf hoher Ebene, für das keine ernsthaften Programmierkenntnisse erforderlich sind. Der Kern des Frameworks ist ein unabhängiges Datenmodell, Kernel-APIs, Funktionsbausteine und Präsentationsvorlagen. MongoDb wird für das DBMS verwendet - es speichert Anwendungseinstellungen, Metadaten und die Daten selbst. Das Framework wird in Node.js ausgeführt. Alles zusammen bietet ein plattformübergreifendes Framework.
Diese Anwendung ist übrigens der Schlüssel für das Framework - sie hat die produktive Nutzung der neuen Version auf node.js mit mongoDB gestartet. Insgesamt dauerte die Entwicklung der Framework-Komponenten für das Projekt (Geomodul, Verfeinerung des Berichtsmoduls) und der Anwendungsmetadaten 2643 Stunden.
Ein wenig über das Prinzip der Erstellung einer Anwendung auf dem Framework. Alles ist sehr einfach - Framework + Module + Metadaten = Anwendung. Schneller Anwendungsentwicklungsansatz in der Entwicklung.
Die Kernfunktionalität der meisten IONDV-Anwendungen. Framework erstellt eine Datenregistrierung - das Register-Modul. Dies ist ein Schlüsselmodul, das speziell für die Arbeit mit Daten entwickelt wurde, die auf Metadatenstrukturen basieren.
Ein Anwendungsframework besteht im Wesentlichen aus den Metadatenstrukturen, die für das Registrierungsmodul initiiert werden. Es eignet sich auch hervorragend für das Rapid Prototyping einer Anwendung - die Implementierung einer grundlegenden Geschäftslogik.
Gleichzeitig wird alles, was nicht in das typische Verhalten des Systems passt, durch HTML-Vorlagen oder das Schreiben neuer Module in JavaScript erweitert. Gleichzeitig gibt es ein typisches Portalmodul, in dem es bequemer ist, spezielle Schnittstellen mit einem beliebigen praktischen Front-End-Framework zu erstellen.
Auch in dieser Anwendung werden verwendet:
- Analysemodul für die Berichterstellung,
- Dashboard-Modul zur Anzeige von Informationen in Form von Widgets,
- Geodatenmodul zur Anzeige auf der Karte von Siedlungen mit Daten zu Branchen, die manuell reguliert werden,
- Verwaltungsmodul zum Verwalten von Benutzern und Zugriffsrollen. Admin-Systemsteuerung.
In der Anwendung IONDV. Das Telekommunikationsregister-Modul wird verwendet, um die Schlüsselentitäten des Systems zu erstellen und zu bearbeiten. In Metadaten werden sie als Klassen bezeichnet: Community, Kommunikation, Gesundheitswesen und Bildung sowie grundlegende und zusätzliche Informationen.
Beispiele für Schlüsselentitäten
Zum Beispiel ein Ort, der Informationen über den Ort enthält und anschließend verwendet wird, um alle Buchhaltungseinheiten zu verknüpfen - zum Beispiel Kommunikations- oder Bildungseinrichtungen. Der Screenshot zeigt die Bildschirmform.

Und hier ist ein Fragment von Metadaten im JSON-Format.
{ "isStruct": false, "key": [ "okato" ], "semantic": "name", "name": "naselenniyPunkt", "version": "", "caption": " ", "ancestor": null, "container": "", "creationTracker": "", "changeTracker": "", "history": 0, "journaling": true, "compositeIndexes": null, "properties": [ { "orderNumber": 10, "name": "okato", "caption": "", "type": 0, "size": 11, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": false, "readonly": true, "indexed": true, "unique": true, "autoassigned": false, "hint": null, "defaultValue": null, "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null }, { "orderNumber": 30, "name": "name", "caption": "", "type": 0, "size": 128, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": true, "readonly": false, "indexed": true, "unique": false, "autoassigned": false, "hint": null, "defaultValue": null, "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null },
Metadatenklassen können übrigens vererbt werden. Für sie werden Ansichten separat festgelegt, die sich in den verschiedenen Schritten von Geschäftsprozessen und vielem mehr unterscheiden. Die Eigenschaft properties listet die Liste der Attribute auf. Erfahren Sie mehr über Metadaten. Sie können Metadaten auch in der Studio- Anwendung oder durch lokale Bereitstellung von einem Github erstellen. Sie sind auch unter der kostenlosen Apache 2.0-Lizenz verfügbar.
Entitätsdaten können leicht aktualisiert werden. Für eine Bildungseinrichtung wird beispielsweise nach Eingabe von Daten in die Basisattribute und Erstellen des Objekts die Registerkarte "Zusätzliche Informationen" angezeigt. Am interessantesten ist unserer Meinung nach die Implementierung des Attributs vom Typ "Geodaten". Im Screenshot der Objektkarte Bildung ist eine Karte. Die Adresse des Objekts wird aus dem Formular ersetzt und das System ermittelt automatisch die Koordinaten. Die Daten zu diesem Attribut werden in GeoJSON gespeichert - d. H. kann ein beliebiges Objekt in diesem Format sein - nicht nur ein Punkt, sondern auch ein Polygon oder eine Linie.

Wir werden die Funktionsweise des intuitivsten Moduls - Geomap oder Geodatenmodul - veranschaulichen, das die Yandex-API zum Anzeigen von Daten verwendet. Sie können die Demo hier testen und wir werden Ihnen sagen, was sie zeigt.

Auf der linken Seite befinden sich die Kartenebenen, in denen standardmäßig die Ebene „Siedlungen“ ausgewählt ist. Auf der Karte können Sie auf das Symbol mit dem Dorf klicken. Infolgedessen wird rechts eine Karte mit Informationen über das Vorhandensein von Informationen und Telekommunikation angezeigt.
Sie können zur Ebene „Kommunizieren über Siedlungen“ wechseln. Die im Analysemodul berechneten Zusammenfassungsdaten zu den Regionen der Region werden rechts angezeigt. Wenn Sie auf einen Distrikt doppelklicken - nur die Distriktdaten werden angezeigt - wird der Filter aktiviert. Wenn Sie erneut auf das Gebiet doppelklicken, wird die Übersichtskarte zurückgegeben.
Informationen zu den Layern sowie zum Abrufen von Daten werden in JSON in Form von Metadaten angegeben. Eine Möglichkeit zur Anzeige als HTML-Vorlage
Ein Beispiel für ein Fragment eines Popup-Fensters mit kurzen Informationen aus den Metadaten für eine 2G-Ebene.
"balloonContentLayoutClass" : "<div class='map-ajax-balloon' data-url='geomap/render/khv-svyaz-info/2gMobileKray/0/{{ properties.itemId }}?template=geo/balloon/2gMobile'><i class='fa fa-refresh fa-spin'></i></div>"
Ein Beispiel für eine EJS-Vorlage, bei der alle mobilen Daten im rechten Fenster angezeigt werden. Darin wird der Zugriff auf Daten durch Arbeiten mit dem Elementobjekt und seinen Eigenschaften bereitgestellt:
<% let result = { title: item.get('name') } if (item.get('chislennost')) { result.title += ' (' + item.property('chislennost').evaluate() + ' .)'; } let itemSvyaz = item.property('svyaz').evaluate(); if (itemSvyaz) { %> <ul class='balloon-attrlist' style='width:225px'> <li><%- result.title %></li> </ul> <ul class='mt10'> <table> <% let coll = itemSvyaz.property('mobile').evaluate(); if (coll && coll.length) { for (let elem of coll) { let collOp = elem.get('mobileOperator'); let collSt = elem.property('mobileStandart').evaluate(); if (collOp) { %> <tr> <td> <li><%- elem.property('mobileOperator').evaluate() %></li> </td> <td><% for (let element of collSt) { %> <%- element %> <% } %> </a></td> </tr> <% } } } } %> </table> </ul>
Daten aus dem System können zur Analyse in das BI-System hochgeladen werden. Zum Beispiel haben wir die Integration mit QlickView durchgeführt. Um die Arbeit der Analysten zu vereinfachen, verwendeten sie nicht das REST-API-System, sondern verbanden QlickView über den MongoDB Connector direkt mit dem DBMS. Die SQL-Emulation ist für diese Aufgaben von hoher Qualität.
Wie komme ich?
Unter Linux können Sie die Anwendung in einer Zeile installieren, wenn git, node.js und mongodb mithilfe des iondv-app- Installationsprogramms lokal installiert werden. Das Skript installiert die Umgebungsabhängigkeiten, klont alle erforderlichen Repositorys des Frameworks, der Module und Anwendungen von GitHub, sammelt, initiiert und startet die Anwendung:
bash <(curl -sL https://raw.githubusercontent.com/iondv/iondv-app/master/iondv-app) -q -i -m localhost:27017 telecom-ru
Wo anstelle von localhost: 27017 müssen Sie die Adresse von MongoDb angeben.
Sie können den Docker-Container auch starten:
# mongodb: docker run --name mongodb -v mongodb_data:/data/db -p 27017:27017 -d mongo # IONDV. Telecom docker run -d -p 80:8888 --link mongodb iondv/telecom-ru
Öffnen Sie nach dem Start den Link http: // localhost: 8888, über den die Demo-Daten auf dem Geolayer angezeigt werden. Unter http: // localhost: 8888 / registry ist das Backoffice mit dem Demo- Konto ion-demo password verfügbar.
Siehe auch das Anwendungshandbuch .
Was sind die Profis?
Der Hauptvorteil der IONDV-Kommunikationsregistrierung. Telekommunikation ist eine visuelle Darstellung des Entwicklungsstandes des Telekommunikationssektors in der Region, die es ermöglicht, die Qualität der Kommunikationsinfrastruktur planmäßig zu verbessern und diese Daten öffentlich zugänglich zu machen.
Die Lösung für die Buchhaltungskommunikation basiert auf dem Open-Source-IONDV-Framework. Framework, und dies ist Open-Source-JavaScript-Code und eine offene Metadatenstruktur in JSON, die vollständige Verfeinerungsfreiheit impliziert. Fast als Teil von Apache 2.0). Sie können definitiv reparieren, verbessern und verkaufen. Trotz der Tatsache, dass der Motor keine Ressourcen beansprucht, eignet er sich hervorragend für die Entwicklung zuverlässiger Geschäftsanwendungen in verschiedenen Größen.