Userface

Finden von Gerätenomenklaturen in der SIS01DBS und im Nameserver

[tbs]

Zuordnen der Nomenklaturen zur Zugriffsart (Netman oder Corba)

Im Userface-client unter VMS befindet sich eine Geräteliste (map), in der die Zuordnung der Nomenklatur zu einem Zustand csInfo: CS_INFO_TYPE gehalten wird. Die Geräteliste ist beim Start der Anwendung zunächst leer und wird bei jedem Zugriff auf ein Gerät abgefragt und ggf. aktualisiert. Diese Aufgabe übernimmt die Procedure Devicegeneration in Devgener.mod.

Die Vorgehensweise dabei:
PROCEDURE DeviceGeneration  ( nomen: UF_Str) : CS_Info_Type;

 IF (devInList)
   csInfo= deviceInfo(nomen)                    ! holt csInfo aus der Liste
 ELSE 
   csInfo = CS_unknown                          ! neues Gerät, noch nicht in der Liste
 END                               
 IF (csInfo = CS_unknown)                       ! Gerät ist noch nicht in der List oder es wird als "unknown" geführt
                                                ! konnte bisher nicht zugeordnet werden, inzwischen "online" ?
   IF (inSIS01DBS AND (devNr != 0))             ! Gerät steht in der SIS01DBS mit einer Gerätenummer ungleich 0 
     csInfo = CS_1stGeneration                  ! altes Kontrollsystem
   ELSE IF (deviceInNameserver)                 ! im Nameserver suchen, falls Gerät nicht oder mit devNr 0 in SIS01DBS
     csInfo = CS_2ndGeneration                  ! neues Kontrollsystem
   ELSE
     csInfo = CS_unknown                        ! konnte keinem der beiden KS zugeordnet werden
   END
   devList[nomen] = csInfo                      ! in devListe eintragen
   IF (csInfo = CS_unknown AND NOT(inSI01DBS))  ! weder im Nameserver noch in der SIS01DBS
      csInfo = CS_nowhwere
   END
 END
 RETRUN csInfo

Der Rückgabewert csInfo bedeutet:
CS_nowhere: Gerät taucht in keiner Datenbasis auf, weder in SIS01DBS noch im Nameserver, Zugriff nicht möglich
CS_unknown: Gerät steht in der SIS01DBS, hat dort aber keine gültige Adresse und wurde auch im Nameserver nicht gefunden
CS_1stGeneration: Gerät steht in der SIS01DBS und hat dort eine Gerätenummer. Zugriff über Netman
CS_2ndGeneration: Gerät wurde im Nameserver gefunden. Zugriff über Userface-Server und Corba-Interface

Gerätezugriffe im Userface

Im Userface wird die Procedure vor jedem Gerätezugriff benutzt: Jede Nomenklatur im Command-array wird überprüft.

mindestens ein Nomen 1stGeneration, kein Nomen 2ndGeneration weiter wie altes Kontrollsystem
mindestens ein Nomen 2ndGeneration, kein Nomen 1stGeneration Aufruf Userface-Server
alle Nomenklaturen CS_nowhere ufStatus = UFCMsg.UF$_NOMATCH_NOMEN
sowohl CS_1stGeneration als auch CS_2ndGeneration in einem commmand-array ufStatus = UFCMsg.UF$_MIX_ADDRESS
alle Nomenklatur CS_nowhere oder CS_unknown ufStatus = UFCMsg.UF$_DEVICE_OFFLINE

Bemerkungen

Ablauf für Geräte, die schon einmal überprüft wurden:
  • Geräte der 1stGeneration bleiben 1stGeneration.
  • Geräte der 2ndGeneration bleiben 2nd Generation. Referenzen werden nicht gespeichert. Probleme, fass sich diese ändern sollte, gibt es also nicht.
  • Falls ein Gerät umziehen sollte vom alten ins neue Kontrollsystem oder umgekehrt merkt Userface das nicht. Geht vorerst nur mit Restart der Operatingprogramme. Falls ein Zugriff schief gehen sollte (devNr wird 0, wo überall im Userface muss man da gucken??) könnte man in nächster Release ein update der Liste vorsehen. (Eintrag ändern in CS_unknown)
  • Solange Nomenklaturen nicht zugeordnet werden können (CS_unknown) wird immer wieder gesucht.

-- GudrunSchwarz - 26 Aug 2008
Topic revision: r5 - 18 Aug 2011, UnknownUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback