4.5. Plugins - Services

Das Plugin-API stellt mehrere Services bereit, um mit SmartMES zu interagieren. 

Aus einem Plugin heraus können diese über die Klasse SmartMES aufgerufen werden. Beispielsweise für den "Machinen-Service":

SmartMES.getService().machines()

Standard Services

Application-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Anwendungen (API-Zugangsdaten)

Schnittstelle:

SmartMES.getService().applications()

Bom-Condition-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Stücklisten-Bedingungen.

In der Regel werden diese vom System erstellt und verwaltet.

Schnittstelle:

SmartMES.getService().bomConditions()

Bom-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Stücklisten. Eine Stückliste besteht dabei aus mindestens einer Bom-Version, welche die konkreten Informationen enthält. 

Über den Bom-Master kann die Bom-Version für diese Stückliste geändert werden und damit dann auch die konkreten Informationen, die vom System für diese Stückliste verwendet werden sollen.

Schnittstelle:

SmartMES.getService().boms()

Bom-Version-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Stücklisten-Versionen. Jeder Version gehört zu einer Stückliste (siehe oben). Die Versionen beinhalten jedoch die konkreten Informationen für die Stückliste.

Entsprechend können hier Bom-Version erstellt, aktualisiert oder neue Versionen erstellt werden. Das klonen einer anderen Version ist hier ebenfalls möglich. Des Weiteren können hier Stücklisten-Dateien oder der Arbeitsplan verwaltet werden.

Schnittstelle:

SmartMES.getService().bomVersions()

Client-Service

Ermöglicht das Abfragen aller oder bestimmter Clients, die aktuell per GUI mit dem System verbunden sind (Interne Verbindungen, bspw. über die API, werden nicht berücksichtigt).

Des Weiteren ist es möglich, bestimmte Kommandos (Actions) an die Clients zu senden. Neben Nachrichten, die an Clients geschickt werden können, können Clients auch automatisch ein- oder ausgeloggt werden, oder zu einer bestimmten Seite geschickt werden.

Schnittstelle:

SmartMES.getService().clients()

Dashboard-Service

Erlaubt das Verwalten von eigenen Dashboards und entsprechenden Widgets. Plugins können auch eigene Widgets bereitstellen. Hierzu bitte die gesonderte Dokumentation unter 4.3. Plugins - Views beachten.

Schnittstelle:

SmartMES.getService().dashboards()

Device-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Geräten und deren Zuordnungen zu anderen Assets. Des Weiteren können Aktionen zu einzelnen Geräten (z.B. ein Restart) durchgeführt werden, sofern die Geräte dies unterstützen.

Eigene Geräte-Typen mit eigenen Parametern, Verbindungsprotokollen etc. können ebenfalls durch ein Plugin vorgegeben werden, siehe hierzu: 4.4.3 DeviceExtension

Schnittstelle:

SmartMES.getService().devices()

Location-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Orten. Des Weiteren können hierüber Geräte oder Dinge abgefragt werden, die an einem Ort erkannt wurden.

Schnittstelle:

SmartMES.getService().locations()

File-Service

Dient zum Abfragen, Löschen oder Hochladen von Dateien. Alle Dateien, wie z.B. Stücklisten-Dateien oder Arbeitsplan-Dateien, werden zentral verwaltet und können hierüber abfragt werden.

Schnittstelle:

SmartMES.getService().files()

Machine-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Maschinen und Maschinengruppen. Des Weiteren können hierüber Berechtigungen verwaltet werden.

Schnittstelle:

SmartMES.getService().machines()

Operator-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Personen und Personengruppen.

Schnittstelle:

SmartMES.getService().operators()

Plugin-Service

Ermöglicht den Zugriff auf andere Plugins, deren Einstellungen und erlaubt das Steuern von Plugins (starten, stoppen etc.)

Schnittstelle:

SmartMES.getService().plugins()

Production-Job-Service

Dient zum Abfragen von konkreten Arbeitsschritten, die zu einem Artikel aus einem Produktionsauftrag gehören. Im Gegensatz dazu gibt es die "ProductionPlanJob", die nicht zu einem konkreten Artikel bzw. Produktionsauftrag gehören, sondern die Vorlage aus der Stückliste darstellen. 

Das heißt, dass das smartMES hier explizit zwischen einem Plan (ProductionPlanJob) und den in Produktion befindlichen Arbeitsschritten (ProductionJob) unterscheidet. Folglich werden diese "ProductionJob" zu einem Zeitpunkt aus der Vorlage, den "ProductionPlanJob" erzeugt. Daher stehen diese ProductionJob-Arbeitsschritte auch erst dann zur Verfügung, wenn der Auftrag bzw. der Artikel soweit geplant ist, dass dieser nicht mehr "In Vorbereitung" ist.  Erst mit dem Wechsel des Auftrags von "In Vorbereitung" zu "In Planung" wird dann der konkrete Arbeitsplan für diesen Auftrag aus der Vorlage erzeugt.

Im Vergleich zur Vorlage (ProductionPlanJob) enthalten diese ProductionJobs daher auch andere Informationen, die nur während der konkreten Produktion auftreten: z.B. die geplanten Zeitpunkte, die Ist-Zeiten und Ist-Mengen oder auch die Informationen aus der Zeitplanung: welche Maschine und welcher Mitarbeiter vom System von wann bis wann eingeplant wurden.

Schnittstelle:

SmartMES.getService().productionJobs()

Production-Order-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Produktionsaufträgen und zugehörigen Informationen (Artikel bzw. Positionen des Produktionsauftrags). 

Schnittstelle:

SmartMES.getService().productionOrders()

Production-Plan-Job-Service

Gibt Informationen über einen Arbeitsschritt zurück, die zu einem Arbeitsplan aus einer Stückliste gehören. Diese stellen lediglich die geplanten Arbeitsschritte mit Soll-Vorgaben da. Diese Arbeitsschritte haben daher keine Verbindung zu konkreten Aufträgen. Für die konkreten Arbeitsschritte, die zu einem Auftrag gehören siehe Production-Job-Service. 

Schnittstelle:

SmartMES.getService().productionPlanJobs()

Production-Process-Service

Ein Produktionsprozess wird für jeden Artikel eines Produktionsauftrags angelegt und stellt den aktuellen Status für diesen Artikel in der Produktion dar. Jeder ProductionOrderItem bekommt vom System eine "productionProcessId" zugeordnet, mit der dann dieser gesamte Prozess abgefragt werden kann. Entsprechend kann über diesen Service der aktuellen Zustand abfragt werden. Hierzu gehören die konkreten Arbeitsschritte, die aus dem Arbeitsplan erstellt wurden, welcher Arbeitsschritte gerade dran ist oder welcher Arbeitsschritt der nächste ist. 

Schnittstelle:

SmartMES.getService().productionProcesses()

Production-Process-Item-Container Service

Als Item-Container werden im allgemeinen alle Container, Boxen oder ähnliche Behälter abstrahiert. Die konkreten Item-Container können über Erweiterungen als Geräte (siehe 4.4.3 DeviceExtension) hinzugefügt werden. Mit diesem Service können diese Behälter verwaltet und zu Aufträgen hinzu gefügt oder von Aufträgen entfernt werden.

Schnittstelle:

SmartMES.getService().productionProcessesItemContainers()

Production-Stage-Service

Dient zur Abfrage von Aufträgen in einem bestimmten Status (z.B. "In Planung" oder "In Vorbereitung"). Dies entspricht den Zugriff auf die Aufträge und Artikel, wie sie auch im Production-Board (GUI unter "Produktion") dargestellt werden.

Schnittstelle:

SmartMES.getService().productionStages()

Storage-Service

Dient zum Speichern, Lesen und Aktualisieren von Daten, die dem Plugin zugeordnet werden. Plugins können hiermit eigene Daten in einem Key-Value-Store verwalten und damit dann dauerhaft persistieren, ohne das hierfür eine eigene Datenbank oder eigene Dateien notwendig sind. Entsprechend können serialisierbare Objekte gespeichert, abgefragt oder gelöscht werden.

Schnittstelle:

SmartMES.getService().storage()

User-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Benutzern und Benutzergruppen, sowie deren Verwaltung.

Schnittstelle:

SmartMES.getService().users()

Warehouse-Service

Dient zum Erstellen, Abfragen und Aktualisieren des Lager-Moduls. Entsprechend können Lager, Lagerorte und Fächer erstellt und dessen Inhalt erstellt und aktualisiert werden.

Schnittstelle:

SmartMES.getService().warehouse() 

Action-Sound-Service

Dient zum Erstellen, Abfragen und Aktualisieren von Sound-Dateien, die bei bestimmten Ereignissen vom System verwendet werden sollen und bspw. auf einem Client dann abgespielt werden.

Schnittstelle:

SmartMES.getService().actionSounds()

MQTT-Service

Hiermit kann man auf den internen MQTT-Server zugreifen, indem man MQTT-Nachrichten verschickt (publish) oder sich entsprechend als Abonnent für ein Topic registiert (subscribe). 

Dies setzt voraus, dass eingebettete MQTT-Service aktiviert ist!

Schnittstelle:

SmartMES.getService().mqtt()

Advanced Services

Es gibt einige Services, die im erweiterten Modus funktionieren. Hier ist es ggf. notwendig, dass zusätzliche andere Plugins bzw. Komponenten installiert sind. Sie stehen damit nicht immer zur Verfügung!