Timer-Dienst (070212) Timer-Dienst (070212)...1 Voraussetzungen...1 Installation...1 Dienst konfigurieren...4 Dienst für mehrere Instanzen und / oder mehrere Datenbanken konfigurieren...5 Eventlog-Einträge generieren...6 Dienst starten...8 Automatisches Abrufen von Postfächern...10 Hinweis für Entwickler...11 Hinweis für Administratoren...11 Voraussetzungen Derzeit wird für den Timer-Dienst der User Webshop benötigt. Installation Starten Sie die Installation durch Doppelklick auf die Datei wfsetuptimerservice.msi. Seite 1 von 11
Geben Sie den Installationspfad an. Starten Sie dann die Installation. Seite 2 von 11
Warten Sie, bis die Installation beendet ist. Seite 3 von 11
Dienst konfigurieren Die Konfigurationsdatei für den Dienst finden Sie in dem bei der Installation angegebenen Verzeichnis (im Standard <C:\Programme\myfactory\wfSetupTimerService>). Öffnen Sie die Datei <app.config> z.b. mit dem Editor. Die Konfigurationsparameter finden Sie am Ende der Datei: <usersettings> <wftimerservice.my.mysettings> <setting name="appname" serializeas="string"> <value>myfactory30</value> <setting name="divisionnr" serializeas="string"> <value>1</value> <setting name="intervall" serializeas="string"> <value>60000</value> <setting name="wftimerservice_timerservice_timerservice" serializeas="string"> <value>http://localhost/myfactory30/services/timerservice.asmx</value> <setting name="url" serializeas="string"> <value>http://localhost/</value> <setting name="databasename" serializeas="string"> <value>wfdata</value> <setting name="webname" serializeas="string"> <value>myfactory30</value> <setting name="logevent" serializeas="string"> <value>0</value> </wftimerservice.my.mysettings> </usersettings> Die einzelnen Parameter bedeuten: Name der Instanz (AppName) Hierbei ist es ausreichend, den Namen der Instanz anzugeben. <setting name="appname" serializeas="string"> <value>myfactory30</value> Nummer der Betriebsstätte <setting name="divisionnr" serializeas="string"> <value>1</value> Anzahl der Millisekunden, in der die Verarbeitung aufgerufen wird (60.000 entspricht also einer Minute) <setting name="intervall" serializeas="string"> <value>60000</value> URL zum Server; hier kann zusätzlich noch ein Port angegeben werden <setting name="url" serializeas="string"> <value>http://localhost/</value> Seite 4 von 11
Befindet sich der Timer-Dienst auf dem gleichen Server wie die Anwendung, kann dieser Parameter leer bleiben, wie bspw. nachfolgend. Ist der Servername leer, wird an seiner statt automatisch http://localhost/ gesetzt. <setting name="url" serializeas="string"> <value></value> Sollte sich der Timer-Dienst auf einem anderen Server wie die Anwendung befinden, dann darf als URL lediglich der Servername eingetragen werden!! Die URL wird zusammengesetzt aus Servername + WebName + services/timerservice.asmx Beispielsweise kann dies wie folgt konfiguriert werden. <setting name="http://mf-services" serializeas="string"> <value>http://mf-services/myfactory30/services/timerservice.asmx</value> Name der Datenbank aus der wfglobal, Tabelle tsdatabases, Feld DatabaseName <setting name="databasename" serializeas="string"> <value>wfdata</value> Name der Instanz (WebName) - dieser ist in der Regel gleich dem Name der Instanz (AppName). Ist hier kein Name der Instanz angeben gilt: WebName = AppName <setting name="webname" serializeas="string"> <value>myfactory30</value> Sollten Sie die Konfigurationsdatei ändern, so muss danach der Dienst neu gestartet werden, damit die Änderungen wirksam werden. Dienst für mehrere Instanzen und / oder mehrere Datenbanken konfigurieren Mit dieser neuen Version des Timer-Dienstes ist es möglich, mehrere Instanzen zu verwalten. Hierbei müssen bei der Konfiguration der Datei <app.config> lediglich drei Felder zusätzlich zu den oben erwähnten beachtet werden. 1. Name der Instanz (AppName) / Name der Instanz (WebName): In diesem Statement konnte bisher die Instanz hinterlegt werden, welche über den Timer-Dienst angesprochen wurde. Mit dieser Version des Timerdienstes können hier mehrere Instanzen hinterlegt werden. Diese Instanznamen müssen jedoch Zwangsweise in der Schreibweise mit $;$ getrennt sein. <setting name="appname" serializeas="string"> <value>myfactory30$;$myfactory31</value> 2. URL zum Server; hier kann zusätzlich noch ein Port angegeben werden Ebenso wie bei dem Namen der Instanz ist hier die URL zu der entsprechenden Instanz zu hinterlegen. Bitte beachten Sie, dass zu jeder Instanz eine URL hinterlegt werden muss, um einen reibungslosen Ablauf zu gewährleisten. Werden also, wie in diesem Beispiel, zwei Instanzen hinterlegt, so müssen auch zwei URL eingetragen sein, selbst wenn sich diese auf die gleiche Quelle beziehen. <setting name="url" serializeas="string"> <value>http://localhost/$;$http://localhost</value> Seite 5 von 11
3. Name der Datenbank aus der wfglobal, Tabelle tsdatabases, Feld DatabaseName Mit dieser Eingabe haben Sie die Möglichkeit, eine, mehrere oder alle angehängten Datenbanken automatisiert abzurufen. Eine Datenbank berücksichtigen: <setting name="databasename" serializeas="string"> <value>wfdata</value> Alle Datenbanken berücksichtigen (keinen Datenbanknamen hinterlegen): <setting name="databasename" serializeas="string"> <value></value> Mehrere Datenbanken berücksichtigen (zur Trennung $;$ verwenden): <setting name="databasename" serializeas="string"> <value>wfdata$;$wfuser_myfactory$;$wfuser_frankfurt</value> Eventlog-Einträge generieren Der Timer-Dienst generiert nach der Installation keine separaten Eventlog-Einträge. Um zusätzliche Informationen bei evtl. auftretenden Störungen zu bekommen, können über die Konfiguration entsprechende Einträge hervorgerufen werden. Dies kann in der bereits oben beschriebenen Datei App.Config geschehen, indem der im Default gesetzte Wert 0 auf den Wert -1 gesetzt wird. <setting name="logevent" serializeas="string"> <value>-1</value> Weiterhin können zwei Kommentare in der Datei TimerService.asmx einkommentiert werden. Nachfolgend ein Auszug aus der Datei TimerService.asmx im Verzeichnis C:\Programme\myfactory\myfactory30\ASP\services. Die beiden hervorgehobenen Kommentare müssen einkommentiert werden. Im ersten Fall wird ein Eventlog generiert, ob eine Anmeldung am Dienst möglich ist. Im zweiten Fall wird ein Eintrag generiert, ob ein Mailabruf möglich ist. Seite 6 von 11
Try oclientinfoglobal = ClientInfoMethods.goCreateClientInfo("WebShop", _ gsencryptstring("web"), _ sappname) 'oclientinfoglobal.logsysevent("timerservice: Tick executed:" & Now.ToString) Try rs = DataMethods.grsGetDBRecordset(oClientInfoGlobal, "*", "tsdatabases", sclause,,, wfdatasourceglobal) Do While Not rs.eof sclientid = Tools.gsLoginUser("WebShop", _ "web", _ rs.item("databasename").svalue, _ sappname, _ ldivisionnr, _ Date.Now) If sclientid Is Nothing Then oclientinfoglobal.logsysevent("timerservice: No ClientID") End If oclientinfo = ClientLogin.goGetClientInfo(sClientID, sappname) If oclientinfo Is Nothing Then oclientinfoglobal.logsysevent("timerservice: No ClientInfo") End If sparams = "<VALUES>" & _ "<DBName>" & rs.item("databasename").svalue & "</DBName>" & _ "<DivisionNr>" & ldivisionnr & "</DivisionNr>" & _ "</VALUES>" 'oclientinfo.osessioncache.gbsetvalue("timerservice", "Mail", "DebugMessages", -1) If Not SysEvents.gbRaiseBeforeEvent(oClientInfo, "TimerService", "Event", sparams, serror) Then oclientinfo.logsysevent("timerservice: " & serror) End If Call ClientLogin.gbLogoff(oClientInfo.sClientID, sappname) rs.movenext() Loop Catch ex As Exception oclientinfoglobal.logsysevent("timerservice Error : " & ex.message) End Try Seite 7 von 11
Dienst starten Den installierten Dienst finden Sie nun in der Dienstverwaltung unter <Start / Systemsteuerung / Verwaltung / Dienste> unter wftimerservice. Rufen Sie die Eigenschaften des Dienstes auf und starten Sie den Dienst über die entsprechende Schaltfläche. Wählen Sie den Starttyp Automatisch, so wird der Dienst nach jedem Neustart des Servers automatisch gestartet. Seite 8 von 11
Im Default wird im Setup des Timerdienstes der Dienst unter der Anmeldung Lokales Systemkonto installiert. Abweichend kann in diesem Register Anmelden auf Wunsch auch ein Konto eines Users hinterlegt werden, unter dem der Dienst dann laufen soll. Wird dies gewählt, so empfehlen wir hier den User zu hinterlegen, unter dem auch die Instanz der myfactory.businessworld installiert ist. Seite 9 von 11
Automatisches Abrufen von Postfächern Nach der Installation des Timer-Dienstes kann das automatische Abrufen von Postfächern konfiguriert werden. Rufen Sie über den Button <Details> in einem entsprechenden Postfach-Dialog die Postfacheigenschaften eines Postfaches auf. Hier können Sie nun die Option <Postfach automatisch abrufen> aktivieren. Nach Bestätigung durch drücken des OK -Buttons werden die E-Mails für dieses Postfach automatisiert über den Timer-Dienst abgerufen. Seite 10 von 11
Hinweis für Entwickler Die Umsetzung erfolgt über ein SysEvent (siehe Datei TimerService.asmx im Verzeichnis C:\Programme\myfactory\myfactory30\ASP\services ). Hinweis für Administratoren Für Informationen, wie sich der automatisierte E-Mail-Abruf in dem SQL-Datenbanken der myfactory-instanz, insb. ab Version 3.2 (1617) wiederspiegelt, beachten Sie bitte den Eintrag Q000321 in der Kwonledge-Base des myfactory Partner Portals. Seite 11 von 11