[gelöst] Wie kann man per ServiceTier Verzeichnisse anlegen

3. Dezember 2012 12:54

Hallo zusammen,

in einer Batchverarbeitung sollen auf dem Service Tier in Nav2013 Verzeichnisse aufgebaut werden.
Das Automation-Control WindowsScriptingHost funktioniert ja nur lokal auf dem Client.
Welche Standard .NET-Komponente kann so etwas oder gibt es andere, einfache Möglichkeiten?

Gruß
Oliver
Zuletzt geändert von OlliK am 3. Dezember 2012 13:34, insgesamt 1-mal geändert.

Re: Wie kann man per ServiceTier Verzeichnisse anlegen

3. Dezember 2012 13:17

Hallo Oliver,
wenn ich deine Frage richtig interpretiere, dann soll auf dem Server, auf dem ein NAVServer läuft, automatisch Verzeichnisse angelegt werden.

Gegenfrage:
Wenn mehrere NAVServer für eine Datenbank laufen - auf welchem der Server werden dann die Verzeichnisse angelegt?

gruß
Jörg

Re: Wie kann man per ServiceTier Verzeichnisse anlegen

3. Dezember 2012 13:18

Zwei Möglichkeiten:

Wenn du die gewohnten File-Methoden CREATE, RENAME usw. verwendest, werden die ohnehin auf der Servermaschine ausgeführt. Diese kannst du also verwenden. [Umgekehrt darf man diese nie verwenden, wenn der Befehl auf der Clientmaschine ausgeführt werden soll.]

Alternativ gibt es DotNet-Variablen, siehe die globalen Variablen von Codeunit "File Management". Mit denen kann man auf Client und Server arbeiten, je nach Deklaration (Eigenschaft RunOnClient).

Re: Wie kann man per ServiceTier Verzeichnisse anlegen

3. Dezember 2012 13:32

Hallo,
Danke für die schnelle Antworten. Habe zwischenzeitlich bereits die .NET Assembly System.IO.Directory in mscorlib gefunden, welche auch in der Codeunit File Management als Helper verwendet werden.

@Jörg
Generell ist das sicher zu beachten - Guter Hinweis. Allerdings läuft unsere Batchverarbeitung nur auf einem Service Tier und somit auch nur auf einem Server.

@Natalie
Die Helpers werden in der Codeunit FileManagement offensichtlich nicht mit CREATE instanziert. Die Helper-Funktionen laufen also - glaube ich zumindest - immer auf dem Service Tier, oder? Ausnahme ist vielleicht Code in Pages - das müsste man mal testen...

Gruß
Oliver

Re: Wie kann man per ServiceTier Verzeichnisse anlegen

3. Dezember 2012 14:08

OlliK hat geschrieben:@Natalie
Die Helpers werden in der Codeunit FileManagement offensichtlich nicht mit CREATE instanziert.

Das ist bei diesen von dir benötigten DotNet-Variablen nicht notwendig. Nicht alle müssen instanziert werden.
Und wenn doch, dann wird dies nicht mit CREATE gemacht. CREATE war ein Automation-Befehl.

In der DotNet-Welt geht dies mit Hilfe der sog. Konstruktoren. Beispiel aus Report 11016:
Code:
IF ISNULL(XMLSubDoc) THEN
  XMLSubDoc := XMLSubDoc.XmlDocument;

Ob eine DotNet-Variable einen Konstruktor braucht, erkennst du daran, ob unter F5 für diese Variable überhaupt ein Konstruktor angegeben ist.

Die Helper-Funktionen laufen also - glaube ich zumindest - immer auf dem Service Tier, oder?

Bitte nochmal genau lesen:
Natalie hat geschrieben:Mit denen [diesen DotNet-Variablen] kann man auf Client und Server arbeiten, je nach Deklaration (Eigenschaft RunOnClient).